summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--platform/java/mupdf_native.c37
-rw-r--r--platform/java/mupdf_native.h8
-rw-r--r--platform/java/src/com/artifex/mupdf/fitz/StructuredText.java4
3 files changed, 36 insertions, 13 deletions
diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c
index 4a2274f7..6efa4f7f 100644
--- a/platform/java/mupdf_native.c
+++ b/platform/java/mupdf_native.c
@@ -18,6 +18,7 @@
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#ifdef HAVE_ANDROID
#include <android/log.h>
@@ -128,6 +129,8 @@ static jfieldID fid_PDFGraftMap_pointer;
static jfieldID fid_PDFObject_pointer;
static jfieldID fid_PDFObject_Null;
static jfieldID fid_Pixmap_pointer;
+static jfieldID fid_Point_x;
+static jfieldID fid_Point_y;
static jfieldID fid_Rect_x0;
static jfieldID fid_Rect_x1;
static jfieldID fid_Rect_y0;
@@ -539,6 +542,8 @@ static int find_fids(JNIEnv *env)
cls_Point = get_class(&err, env, PKG"Point");
mid_Point_init = get_method(&err, env, "<init>", "(FF)V");
+ fid_Point_x = get_field(&err, env, "x", "F");
+ fid_Point_y = get_field(&err, env, "y", "F");
cls_Rect = get_class(&err, env, PKG"Rect");
fid_Rect_x0 = get_field(&err, env, "x0", "F");
@@ -1667,6 +1672,22 @@ static inline fz_matrix from_Matrix(JNIEnv *env, jobject jmat)
return mat;
}
+static inline fz_point from_Point(JNIEnv *env, jobject jpt)
+{
+ fz_point pt;
+
+ if (!jpt)
+ {
+ pt.x = pt.y = 0;
+ return pt;
+ }
+
+ pt.x = (*env)->GetFloatField(env, jpt, fid_Point_x);
+ pt.y = (*env)->GetFloatField(env, jpt, fid_Point_y);
+
+ return pt;
+}
+
static inline fz_rect from_Rect(JNIEnv *env, jobject jrect)
{
fz_rect rect;
@@ -5760,18 +5781,19 @@ FUN(StructuredText_search)(JNIEnv *env, jobject self, jstring jneedle)
}
JNIEXPORT jobject JNICALL
-FUN(StructuredText_highlight)(JNIEnv *env, jobject self, jobject jrect)
+FUN(StructuredText_highlight)(JNIEnv *env, jobject self, jobject jpt1, jobject jpt2)
{
fz_context *ctx = get_context(env);
fz_stext_page *text = from_StructuredText(env, self);
- fz_rect rect = from_Rect(env, jrect);
- fz_rect hits[256];
+ fz_point pt1 = from_Point(env, jpt1);
+ fz_point pt2 = from_Point(env, jpt2);
+ fz_rect hits[1000];
int n = 0;
if (!ctx || !text) return NULL;
fz_try(ctx)
- n = fz_highlight_selection(ctx, text, rect, hits, nelem(hits));
+ n = fz_highlight_selection(ctx, text, pt1, pt2, hits, nelem(hits));
fz_catch(ctx)
{
jni_rethrow(env, ctx);
@@ -5782,11 +5804,12 @@ FUN(StructuredText_highlight)(JNIEnv *env, jobject self, jobject jrect)
}
JNIEXPORT jobject JNICALL
-FUN(StructuredText_copy)(JNIEnv *env, jobject self, jobject jrect)
+FUN(StructuredText_copy)(JNIEnv *env, jobject self, jobject jpt1, jobject jpt2)
{
fz_context *ctx = get_context(env);
fz_stext_page *text = from_StructuredText(env, self);
- fz_rect rect = from_Rect(env, jrect);
+ fz_point pt1 = from_Point(env, jpt1);
+ fz_point pt2 = from_Point(env, jpt2);
jobject jstring = NULL;
char *s = NULL;
@@ -5795,7 +5818,7 @@ FUN(StructuredText_copy)(JNIEnv *env, jobject self, jobject jrect)
fz_var(s);
fz_try(ctx)
- s = fz_copy_selection(ctx, text, rect);
+ s = fz_copy_selection(ctx, text, pt1, pt2, 0);
fz_catch(ctx)
{
jni_rethrow(env, ctx);
diff --git a/platform/java/mupdf_native.h b/platform/java/mupdf_native.h
index d6a3251a..ee715713 100644
--- a/platform/java/mupdf_native.h
+++ b/platform/java/mupdf_native.h
@@ -3041,18 +3041,18 @@ JNIEXPORT jobjectArray JNICALL Java_com_artifex_mupdf_fitz_StructuredText_search
/*
* Class: com_artifex_mupdf_fitz_StructuredText
* Method: highlight
- * Signature: (Lcom/artifex/mupdf/fitz/Rect;)[Lcom/artifex/mupdf/fitz/Rect;
+ * Signature: (Lcom/artifex/mupdf/fitz/Point;Lcom/artifex/mupdf/fitz/Point;)[Lcom/artifex/mupdf/fitz/Rect;
*/
JNIEXPORT jobjectArray JNICALL Java_com_artifex_mupdf_fitz_StructuredText_highlight
- (JNIEnv *, jobject, jobject);
+ (JNIEnv *, jobject, jobject, jobject);
/*
* Class: com_artifex_mupdf_fitz_StructuredText
* Method: copy
- * Signature: (Lcom/artifex/mupdf/fitz/Rect;)Ljava/lang/String;
+ * Signature: (Lcom/artifex/mupdf/fitz/Point;Lcom/artifex/mupdf/fitz/Point;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_artifex_mupdf_fitz_StructuredText_copy
- (JNIEnv *, jobject, jobject);
+ (JNIEnv *, jobject, jobject, jobject);
/*
* Class: com_artifex_mupdf_fitz_StructuredText
diff --git a/platform/java/src/com/artifex/mupdf/fitz/StructuredText.java b/platform/java/src/com/artifex/mupdf/fitz/StructuredText.java
index 7407f0ae..8633e9b3 100644
--- a/platform/java/src/com/artifex/mupdf/fitz/StructuredText.java
+++ b/platform/java/src/com/artifex/mupdf/fitz/StructuredText.java
@@ -16,8 +16,8 @@ public class StructuredText
}
public native Rect[] search(String needle);
- public native Rect[] highlight(Rect rect);
- public native String copy(Rect rect);
+ public native Rect[] highlight(Point a, Point b);
+ public native String copy(Point a, Point b);
public native TextBlock[] getBlocks();