[gs-commits] mupdf/android-muso-signing 1.16.1.12 Add target page coor

[email protected] (Fred Ross-Perry) Tue, 10 Dec 2019 23:20:44 +0000 (UTC)
Newsgroups gmane.comp.printing.ghostscript.cvs
Message-ID <[email protected]>
commit 3ec3c24592aa3674cd3a4726a1dec9f7e85f80a8
Author: Fred Ross-Perry <[email protected]>
Date:   Tue Dec 10 15:18:34 2019 -0800

    Add target page coordinates to the Link object.
    These are needed by Java clients when the link is internal.

diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c
index 2733181..3e0db41 100644
--- a/platform/java/mupdf_native.c
+++ b/platform/java/mupdf_native.c
@@ -623,7 +623,7 @@ static int find_fids(JNIEnv *env)
 	fid_Link_bounds = get_field(&err, env, "bounds", "L"PKG"Rect;");
 	fid_Link_page = get_field(&err, env, "page", "I");
 	fid_Link_uri = get_field(&err, env, "uri", "Ljava/lang/String;");
-	mid_Link_init = get_method(&err, env, "<init>", "(L"PKG"Rect;ILjava/lang/String;)V");
+	mid_Link_init = get_method(&err, env, "<init>", "(L"PKG"Rect;ILjava/lang/String;FF)V");
 
 	cls_Matrix = get_class(&err, env, PKG"Matrix");
 	fid_Matrix_a = get_field(&err, env, "a", "F");
@@ -5814,15 +5814,20 @@ FUN(Page_getLinks)(JNIEnv *env, jobject self)
 		jbounds = to_Rect_safe(ctx, env, link->rect);
 		if (!jbounds) return NULL;
 
+		float x = 0;
+		float y = 0;
 		if (fz_is_external_link(ctx, link->uri))
 		{
 			juri = (*env)->NewStringUTF(env, link->uri);
 			if (!juri) return NULL;
 		}
 		else
-			page = fz_resolve_link(ctx, link->doc, link->uri, NULL, NULL);
+			//  resolve the link and get the page coordinates
+			page = fz_resolve_link(ctx, link->doc, link->uri, &x, &y);
+
+		//  put the page coordinates in the link
+		jlink = (*env)->NewObject(env, cls_Link, mid_Link_init, jbounds, page, juri, x, y);
 
-		jlink = (*env)->NewObject(env, cls_Link, mid_Link_init, jbounds, page, juri);
 		(*env)->DeleteLocalRef(env, jbounds);
 		if (!jlink) return NULL;
 		if (juri)
diff --git a/platform/java/src/com/artifex/mupdf/fitz/Link.java b/platform/java/src/com/artifex/mupdf/fitz/Link.java
index 1f7eddb..c2ffc90 100644
--- a/platform/java/src/com/artifex/mupdf/fitz/Link.java
+++ b/platform/java/src/com/artifex/mupdf/fitz/Link.java
@@ -6,13 +6,19 @@ public class Link
 	public int page;
 	public String uri;
 
-	public Link(Rect bounds, int page, String uri) {
+	//  for internal links, the page coordinates
+	public float x;
+	public float y;
+
+	public Link(Rect bounds, int page, String uri, float x, float y) {
 		this.bounds = bounds;
 		this.page = page;
 		this.uri = uri;
+		this.x = x;
+		this.y = y;
 	}
 
 	public String toString() {
-		return "Link(b="+bounds+",page="+page+",uri="+uri+")";
+		return "Link(b="+bounds+",page="+page+",uri="+uri+",x="+x+",y="+y+")";
 	}
 }

http://git.ghostscript.com/?p=mupdf.git;a=commit;h=3ec3c24592aa3674cd3a4726a1dec9f7e85f80a8

--
MuPDF library
Artifex Software, Inc.