diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2018-09-05 22:05:17 +0800 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2018-09-06 20:35:20 +0800 |
commit | 69790b1bd81642539a9eb0004818e7fce98d46b6 (patch) | |
tree | 67d4bd3ce65ae36db2f54d91e94bf2a1053f3b7a | |
parent | 62d3d8ca0e406e1a916ebcc8288d17d8058236af (diff) | |
download | mupdf-69790b1bd81642539a9eb0004818e7fce98d46b6.tar.xz |
jni: Add interface for snapping selection to structured text.
-rw-r--r-- | platform/java/mupdf_native.c | 27 | ||||
-rw-r--r-- | platform/java/mupdf_native.h | 14 | ||||
-rw-r--r-- | platform/java/src/com/artifex/mupdf/fitz/StructuredText.java | 5 |
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); |