summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2018-09-05 22:05:17 +0800
committerSebastian Rasmussen <sebras@gmail.com>2018-09-06 20:35:20 +0800
commit69790b1bd81642539a9eb0004818e7fce98d46b6 (patch)
tree67d4bd3ce65ae36db2f54d91e94bf2a1053f3b7a
parent62d3d8ca0e406e1a916ebcc8288d17d8058236af (diff)
downloadmupdf-69790b1bd81642539a9eb0004818e7fce98d46b6.tar.xz
jni: Add interface for snapping selection to structured text.
-rw-r--r--platform/java/mupdf_native.c27
-rw-r--r--platform/java/mupdf_native.h14
-rw-r--r--platform/java/src/com/artifex/mupdf/fitz/StructuredText.java5
3 files changed, 46 insertions, 0 deletions
diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c
index 08679fbd..b5586e31 100644
--- a/platform/java/mupdf_native.c
+++ b/platform/java/mupdf_native.c
@@ -6463,6 +6463,33 @@ FUN(StructuredText_highlight)(JNIEnv *env, jobject self, jobject jpt1, jobject j
}
JNIEXPORT jobject JNICALL
+FUN(StructuredText_snapSelection)(JNIEnv *env, jobject self, jobject jpt1, jobject jpt2, jint mode)
+{
+ fz_context *ctx = get_context(env);
+ fz_stext_page *text = from_StructuredText(env, self);
+ fz_point pt1 = from_Point(env, jpt1);
+ fz_point pt2 = from_Point(env, jpt2);
+ fz_quad quad;
+
+ if (!ctx || !text) return NULL;
+
+ fz_try(ctx)
+ quad = fz_snap_selection(ctx, text, &pt1, &pt2, mode);
+ fz_catch(ctx)
+ {
+ jni_rethrow(env, ctx);
+ return NULL;
+ }
+
+ (*env)->SetFloatField(env, jpt1, fid_Point_x, pt1.x);
+ (*env)->SetFloatField(env, jpt1, fid_Point_y, pt1.y);
+ (*env)->SetFloatField(env, jpt2, fid_Point_x, pt2.x);
+ (*env)->SetFloatField(env, jpt2, fid_Point_y, pt2.y);
+
+ return to_Quad_safe(ctx, env, quad);
+}
+
+JNIEXPORT jobject JNICALL
FUN(StructuredText_copy)(JNIEnv *env, jobject self, jobject jpt1, jobject jpt2)
{
fz_context *ctx = get_context(env);
diff --git a/platform/java/mupdf_native.h b/platform/java/mupdf_native.h
index 6411bcc8..83b8317c 100644
--- a/platform/java/mupdf_native.h
+++ b/platform/java/mupdf_native.h
@@ -3201,6 +3201,12 @@ JNIEXPORT jfloatArray JNICALL Java_com_artifex_mupdf_fitz_StrokeState_getDashes
#ifdef __cplusplus
extern "C" {
#endif
+#undef com_artifex_mupdf_fitz_StructuredText_SELECT_CHARS
+#define com_artifex_mupdf_fitz_StructuredText_SELECT_CHARS 0L
+#undef com_artifex_mupdf_fitz_StructuredText_SELECT_WORDS
+#define com_artifex_mupdf_fitz_StructuredText_SELECT_WORDS 1L
+#undef com_artifex_mupdf_fitz_StructuredText_SELECT_LINES
+#define com_artifex_mupdf_fitz_StructuredText_SELECT_LINES 2L
/*
* Class: com_artifex_mupdf_fitz_StructuredText
* Method: finalize
@@ -3227,6 +3233,14 @@ JNIEXPORT jobjectArray JNICALL Java_com_artifex_mupdf_fitz_StructuredText_highli
/*
* Class: com_artifex_mupdf_fitz_StructuredText
+ * Method: snapSelection
+ * Signature: (Lcom/artifex/mupdf/fitz/Point;Lcom/artifex/mupdf/fitz/Point;I)Lcom/artifex/mupdf/fitz/Quad;
+ */
+JNIEXPORT jobject JNICALL Java_com_artifex_mupdf_fitz_StructuredText_snapSelection
+ (JNIEnv *, jobject, jobject, jobject, jint);
+
+/*
+ * Class: com_artifex_mupdf_fitz_StructuredText
* Method: copy
* Signature: (Lcom/artifex/mupdf/fitz/Point;Lcom/artifex/mupdf/fitz/Point;)Ljava/lang/String;
*/
diff --git a/platform/java/src/com/artifex/mupdf/fitz/StructuredText.java b/platform/java/src/com/artifex/mupdf/fitz/StructuredText.java
index 19b85335..5d73c5f5 100644
--- a/platform/java/src/com/artifex/mupdf/fitz/StructuredText.java
+++ b/platform/java/src/com/artifex/mupdf/fitz/StructuredText.java
@@ -8,6 +8,10 @@ public class StructuredText
Context.init();
}
+ public static final int SELECT_CHARS = 0;
+ public static final int SELECT_WORDS = 1;
+ public static final int SELECT_LINES = 2;
+
private long pointer;
protected native void finalize();
@@ -23,6 +27,7 @@ public class StructuredText
public native Quad[] search(String needle);
public native Quad[] highlight(Point a, Point b);
+ public native Quad snapSelection(Point a, Point b, int mode);
public native String copy(Point a, Point b);
public native void walk(StructuredTextWalker walker);