summaryrefslogtreecommitdiff
path: root/platform/java
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2018-07-06 14:20:26 +0200
committerTor Andersson <tor.andersson@artifex.com>2018-08-10 12:09:10 +0200
commit0abcccc4aab4d893ac2a0ef116ff1f0c006fbc30 (patch)
tree8fe312208afaf28e2d759f4a1c53ec4ef131124f /platform/java
parent6f8cb5606e426084160eaec82e9c11966e7fb5f4 (diff)
downloadmupdf-0abcccc4aab4d893ac2a0ef116ff1f0c006fbc30.tar.xz
Rejig pdf_update_page and pdf_update_annot.
The intent is for a user to iterate over the annotations on a page calling pdf_update_annot for each one. If this function returns true, then the annotation has changed since the last time it was called, and the user needs to re-render. pdf_update_page is a simple loop over the annotations on a page, for use if you only care about page level granularity. Users should no longer look at or change the pdf_annot.has_new_ap field.
Diffstat (limited to 'platform/java')
-rw-r--r--platform/java/mupdf_native.c38
-rw-r--r--platform/java/mupdf_native.h16
-rw-r--r--platform/java/src/com/artifex/mupdf/fitz/PDFAnnotation.java2
-rw-r--r--platform/java/src/com/artifex/mupdf/fitz/PDFPage.java2
4 files changed, 54 insertions, 4 deletions
diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c
index 07331db4..1af5cb1f 100644
--- a/platform/java/mupdf_native.c
+++ b/platform/java/mupdf_native.c
@@ -8761,6 +8761,23 @@ FUN(PDFPage_deleteAnnotation)(JNIEnv *env, jobject self, jobject jannot)
jni_rethrow(env, ctx);
}
+JNIEXPORT jboolean JNICALL
+FUN(PDFPage_update)(JNIEnv *env, jobject self)
+{
+ fz_context *ctx = get_context(env);
+ pdf_page *page = from_PDFPage(env, self);
+ jboolean changed = 0;
+
+ if (!ctx || !page) return 0;
+
+ fz_try(ctx)
+ changed = pdf_update_page(ctx, page);
+ fz_catch(ctx)
+ jni_rethrow(env, ctx);
+
+ return changed;
+}
+
/* PDFAnnotation interface */
JNIEXPORT jint JNICALL
@@ -9211,15 +9228,28 @@ FUN(PDFAnnotation_updateAppearance)(JNIEnv *env, jobject self)
if (!ctx || !annot) return;
fz_try(ctx)
- {
- pdf_dict_del(ctx, annot->obj, PDF_NAME(AP)); /* nuke old AP */
pdf_update_appearance(ctx, annot);
- pdf_update_annot(ctx, annot); /* ensure new AP is put into annot */
- }
fz_catch(ctx)
jni_rethrow(env, ctx);
}
+JNIEXPORT jboolean JNICALL
+FUN(PDFAnnotation_update)(JNIEnv *env, jobject self)
+{
+ fz_context *ctx = get_context(env);
+ pdf_annot *annot = from_PDFAnnotation(env, self);
+ jboolean changed = 0;
+
+ if (!ctx || !annot) return 0;
+
+ fz_try(ctx)
+ changed = pdf_update_annot(ctx, annot);
+ fz_catch(ctx)
+ jni_rethrow(env, ctx);
+
+ return changed;
+}
+
JNIEXPORT jobject JNICALL
FUN(PDFAnnotation_getInkList)(JNIEnv *env, jobject self)
{
diff --git a/platform/java/mupdf_native.h b/platform/java/mupdf_native.h
index 37ea6ed2..07eac765 100644
--- a/platform/java/mupdf_native.h
+++ b/platform/java/mupdf_native.h
@@ -1689,6 +1689,14 @@ JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_PDFAnnotation_setIsOpen
JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_PDFAnnotation_updateAppearance
(JNIEnv *, jobject);
+/*
+ * Class: com_artifex_mupdf_fitz_PDFAnnotation
+ * Method: update
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_com_artifex_mupdf_fitz_PDFAnnotation_update
+ (JNIEnv *, jobject);
+
#ifdef __cplusplus
}
#endif
@@ -2469,6 +2477,14 @@ JNIEXPORT jobject JNICALL Java_com_artifex_mupdf_fitz_PDFPage_createAnnotation
JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_PDFPage_deleteAnnotation
(JNIEnv *, jobject, jobject);
+/*
+ * Class: com_artifex_mupdf_fitz_PDFPage
+ * Method: update
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_com_artifex_mupdf_fitz_PDFPage_update
+ (JNIEnv *, jobject);
+
#ifdef __cplusplus
}
#endif
diff --git a/platform/java/src/com/artifex/mupdf/fitz/PDFAnnotation.java b/platform/java/src/com/artifex/mupdf/fitz/PDFAnnotation.java
index 2e4a83cd..93c564b6 100644
--- a/platform/java/src/com/artifex/mupdf/fitz/PDFAnnotation.java
+++ b/platform/java/src/com/artifex/mupdf/fitz/PDFAnnotation.java
@@ -92,4 +92,6 @@ public class PDFAnnotation extends Annotation
public native void setIsOpen(boolean open);
public native void updateAppearance();
+
+ public native boolean update();
}
diff --git a/platform/java/src/com/artifex/mupdf/fitz/PDFPage.java b/platform/java/src/com/artifex/mupdf/fitz/PDFPage.java
index ca63d54a..ac8c6688 100644
--- a/platform/java/src/com/artifex/mupdf/fitz/PDFPage.java
+++ b/platform/java/src/com/artifex/mupdf/fitz/PDFPage.java
@@ -10,4 +10,6 @@ public class PDFPage extends Page
public native PDFAnnotation createAnnotation(int subtype);
public native void deleteAnnotation(Annotation annot);
+
+ public native boolean update();
}