summaryrefslogtreecommitdiff
path: root/android/jni/mupdf.c
diff options
context:
space:
mode:
authorPaul Gardiner <paulg.artifex@glidos.net>2012-12-10 14:18:46 +0000
committerRobin Watts <robin.watts@artifex.com>2012-12-13 11:27:54 +0000
commit709a75126bc3639205d4c5e9fcbf788721ae43c2 (patch)
tree9d7c701abbc29ffa795afa3ba44d65c011096ca7 /android/jni/mupdf.c
parent5d080feb9e84b8d544195aff18bac76cba34f846 (diff)
downloadmupdf-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.c16
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);