summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2015-08-20 12:39:31 +0100
committerRobin Watts <robin.watts@artifex.com>2015-08-21 19:10:01 +0100
commit79358b9f05196807b427734a9b209e70e270a61f (patch)
tree4f9848d10ef781efe98d9261d5f8a660140d794d
parent574732c2534f5da73701fd322f72a5590bb32258 (diff)
downloadmupdf-79358b9f05196807b427734a9b209e70e270a61f.tar.xz
GProof: Fix Android JNI functions for multipage files.
Explicitly pass the page number into separation related functions.
-rw-r--r--platform/android/jni/mupdf.c41
-rw-r--r--platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java23
2 files changed, 49 insertions, 15 deletions
diff --git a/platform/android/jni/mupdf.c b/platform/android/jni/mupdf.c
index 6abb805f..1af19433 100644
--- a/platform/android/jni/mupdf.c
+++ b/platform/android/jni/mupdf.c
@@ -2791,25 +2791,45 @@ JNI_FN(MuPDFCore_gprfSupportedInternal)(JNIEnv * env)
}
JNIEXPORT int JNICALL
-JNI_FN(MuPDFCore_getNumSepsOnPageInternal)(JNIEnv *env, jobject thiz)
+JNI_FN(MuPDFCore_getNumSepsOnPageInternal)(JNIEnv *env, jobject thiz, int page)
{
globals *glo = get_globals(env, thiz);
fz_context *ctx = glo->ctx;
+ int i;
- return fz_count_separations_on_page(ctx, glo->pages[glo->current].page);
+ for (i = 0; i < NUM_CACHE; i++)
+ {
+ if (glo->pages[i].page != NULL && glo->pages[i].number == page)
+ break;
+ }
+ if (i == NUM_CACHE)
+ return 0;
+
+ LOGE("Counting seps on page %d", page);
+
+ return fz_count_separations_on_page(ctx, glo->pages[i].page);
}
JNIEXPORT void JNICALL
-JNI_FN(MuPDFCore_controlSepOnPageInternal)(JNIEnv *env, jobject thiz, int sep, jboolean disable)
+JNI_FN(MuPDFCore_controlSepOnPageInternal)(JNIEnv *env, jobject thiz, int page, int sep, jboolean disable)
{
globals *glo = get_globals(env, thiz);
fz_context *ctx = glo->ctx;
+ int i;
+
+ for (i = 0; i < NUM_CACHE; i++)
+ {
+ if (glo->pages[i].page != NULL && glo->pages[i].number == page)
+ break;
+ }
+ if (i == NUM_CACHE)
+ return;
- fz_control_separation_on_page(ctx, glo->pages[glo->current].page, sep, disable);
+ fz_control_separation_on_page(ctx, glo->pages[i].page, sep, disable);
}
JNIEXPORT jobject JNICALL
-JNI_FN(MuPDFCore_getSepInternal)(JNIEnv *env, jobject thiz, int sep)
+JNI_FN(MuPDFCore_getSepInternal)(JNIEnv *env, jobject thiz, int page, int sep)
{
globals *glo = get_globals(env, thiz);
fz_context *ctx = glo->ctx;
@@ -2819,8 +2839,17 @@ JNI_FN(MuPDFCore_getSepInternal)(JNIEnv *env, jobject thiz, int sep)
jobject jname;
jclass sepClass;
jmethodID ctor;
+ int i;
+
+ for (i = 0; i < NUM_CACHE; i++)
+ {
+ if (glo->pages[i].page != NULL && glo->pages[i].number == page)
+ break;
+ }
+ if (i == NUM_CACHE)
+ return NULL;
- name = fz_get_separation_on_page(ctx, glo->pages[glo->current].page, sep, &rgb, &cmyk);
+ name = fz_get_separation_on_page(ctx, glo->pages[i].page, sep, &rgb, &cmyk);
jname = name ? (*env)->NewStringUTF(env, name) : NULL;
sepClass = (*env)->FindClass(env, PACKAGENAME "/Separation");
diff --git a/platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java b/platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java
index 29e443c0..53b9d565 100644
--- a/platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java
+++ b/platform/android/src/com/artifex/mupdfdemo/MuPDFCore.java
@@ -92,9 +92,9 @@ public class MuPDFCore
private native void abortCookie(long cookie);
private native String startProofInternal();
private native void endProofInternal(String filename);
- private native int getNumSepsOnPageInternal();
- private native int controlSepOnPageInternal(int sep, boolean disable);
- private native Separation getSepInternal(int sep);
+ private native int getNumSepsOnPageInternal(int page);
+ private native int controlSepOnPageInternal(int page, int sep, boolean disable);
+ private native Separation getSepInternal(int page, int sep);
public native boolean javascriptSupported();
@@ -379,15 +379,20 @@ public class MuPDFCore
return gprfSupportedInternal();
}
- public synchronized int getNumSepsOnPage() {
- return getNumSepsOnPageInternal();
+ public static boolean isProofing()
+ {
+ return mIsProofing;
+ }
+
+ public synchronized int getNumSepsOnPage(int page) {
+ return getNumSepsOnPageInternal(page);
}
- public synchronized int controlSepOnPage(int sep, boolean disable) {
- return controlSepOnPageInternal(sep, disable);
+ public synchronized int controlSepOnPage(int page, int sep, boolean disable) {
+ return controlSepOnPageInternal(page, sep, disable);
}
- public synchronized Separation getSep(int sep) {
- return getSepInternal(sep);
+ public synchronized Separation getSep(int page, int sep) {
+ return getSepInternal(page, sep);
}
}