From 0abcccc4aab4d893ac2a0ef116ff1f0c006fbc30 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Fri, 6 Jul 2018 14:20:26 +0200 Subject: 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. --- platform/java/mupdf_native.c | 38 +++++++++++++++++++--- platform/java/mupdf_native.h | 16 +++++++++ .../src/com/artifex/mupdf/fitz/PDFAnnotation.java | 2 ++ .../java/src/com/artifex/mupdf/fitz/PDFPage.java | 2 ++ 4 files changed, 54 insertions(+), 4 deletions(-) (limited to 'platform/java') 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(); } -- cgit v1.2.3