diff options
author | Paul Gardiner <paulg.artifex@glidos.net> | 2012-12-10 14:18:46 +0000 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2012-12-13 11:27:54 +0000 |
commit | 709a75126bc3639205d4c5e9fcbf788721ae43c2 (patch) | |
tree | 9d7c701abbc29ffa795afa3ba44d65c011096ca7 /android/jni/mupdf.c | |
parent | 5d080feb9e84b8d544195aff18bac76cba34f846 (diff) | |
download | mupdf-709a75126bc3639205d4c5e9fcbf788721ae43c2.tar.xz |
Android: add hooks to the app to handle GoToR links
Diffstat (limited to 'android/jni/mupdf.c')
-rw-r--r-- | android/jni/mupdf.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/android/jni/mupdf.c b/android/jni/mupdf.c index 7e18b3e7..69257051 100644 --- a/android/jni/mupdf.c +++ b/android/jni/mupdf.c @@ -1039,8 +1039,10 @@ Java_com_artifex_mupdf_MuPDFCore_getPageLinksInternal(JNIEnv * env, jobject thiz jclass linkInfoClass; jclass linkInfoInternalClass; jclass linkInfoExternalClass; + jclass linkInfoRemoteClass; jmethodID ctorInternal; jmethodID ctorExternal; + jmethodID ctorRemote; jobjectArray arr; jobject linkInfo; fz_matrix ctm; @@ -1057,10 +1059,14 @@ Java_com_artifex_mupdf_MuPDFCore_getPageLinksInternal(JNIEnv * env, jobject thiz if (linkInfoInternalClass == NULL) return NULL; linkInfoExternalClass = (*env)->FindClass(env, "com/artifex/mupdf/LinkInfoExternal"); if (linkInfoExternalClass == NULL) return NULL; + linkInfoRemoteClass = (*env)->FindClass(env, "com/artifex/mupdf/LinkInfoRemote"); + if (linkInfoRemoteClass == NULL) return NULL; ctorInternal = (*env)->GetMethodID(env, linkInfoInternalClass, "<init>", "(FFFFI)V"); if (ctorInternal == NULL) return NULL; ctorExternal = (*env)->GetMethodID(env, linkInfoExternalClass, "<init>", "(FFFFLjava/lang/String;)V"); if (ctorExternal == NULL) return NULL; + ctorRemote = (*env)->GetMethodID(env, linkInfoRemoteClass, "<init>", "(FFFFLjava/lang/String;IZ)V"); + if (ctorRemote == NULL) return NULL; Java_com_artifex_mupdf_MuPDFCore_gotoPageInternal(env, thiz, pageNumber); pc = &glo->pages[glo->current]; @@ -1077,6 +1083,7 @@ Java_com_artifex_mupdf_MuPDFCore_getPageLinksInternal(JNIEnv * env, jobject thiz switch (link->dest.kind) { case FZ_LINK_GOTO: + case FZ_LINK_GOTOR: case FZ_LINK_URI: count++ ; } @@ -1100,6 +1107,15 @@ Java_com_artifex_mupdf_MuPDFCore_getPageLinksInternal(JNIEnv * env, jobject thiz break; } + case FZ_LINK_GOTOR: + { + jstring juri = (*env)->NewStringUTF(env, link->dest.ld.gotor.file_spec); + linkInfo = (*env)->NewObject(env, linkInfoRemoteClass, ctorRemote, + (float)rect.x0, (float)rect.y0, (float)rect.x1, (float)rect.y1, + juri, link->dest.ld.gotor.page, link->dest.ld.gotor.new_window ? JNI_TRUE : JNI_FALSE); + break; + } + case FZ_LINK_URI: { jstring juri = (*env)->NewStringUTF(env, link->dest.ld.uri.uri); |