From 69790b1bd81642539a9eb0004818e7fce98d46b6 Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Wed, 5 Sep 2018 22:05:17 +0800 Subject: jni: Add interface for snapping selection to structured text. --- platform/java/mupdf_native.c | 27 ++++++++++++++++++++++ platform/java/mupdf_native.h | 14 +++++++++++ .../src/com/artifex/mupdf/fitz/StructuredText.java | 5 ++++ 3 files changed, 46 insertions(+) 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 @@ -6462,6 +6462,33 @@ FUN(StructuredText_highlight)(JNIEnv *env, jobject self, jobject jpt1, jobject j return to_jQuadArray_safe(ctx, env, hits, n); } +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) { 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 @@ -3225,6 +3231,14 @@ JNIEXPORT jobjectArray JNICALL Java_com_artifex_mupdf_fitz_StructuredText_search JNIEXPORT jobjectArray JNICALL Java_com_artifex_mupdf_fitz_StructuredText_highlight (JNIEnv *, jobject, jobject, jobject); +/* + * 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 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); -- cgit v1.2.3