summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2017-10-24 15:41:38 +0200
committerTor Andersson <tor.andersson@artifex.com>2017-11-22 23:09:51 +0100
commitf5ac2007f11147cdc59bd1a9a3f8d43d72690b2d (patch)
tree7d4a98bd54e6c8d3a5dd518cfc03a7a0650c927a
parent4dbc82dac40cc8fa4c97a9835e4c4b80a13f5dac (diff)
downloadmupdf-f5ac2007f11147cdc59bd1a9a3f8d43d72690b2d.tar.xz
jni: Return correct quadpoints coordinates.
-rw-r--r--platform/java/mupdf_native.c2
-rw-r--r--source/pdf/pdf-annot-edit.c10
-rw-r--r--source/tools/murun.c2
3 files changed, 5 insertions, 9 deletions
diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c
index 1845f4b9..4bf035ff 100644
--- a/platform/java/mupdf_native.c
+++ b/platform/java/mupdf_native.c
@@ -8403,7 +8403,7 @@ FUN(PDFAnnotation_setQuadPoints)(JNIEnv *env, jobject self, jobject jqps)
if (m > 8)
m = 8;
- (*env)->GetFloatArrayRegion(env, jqp, i * 8, m, qp);
+ (*env)->GetFloatArrayRegion(env, jqp, 0, m, &qp[i * 8]);
if ((*env)->ExceptionCheck(env)) return;
if (m < 8)
diff --git a/source/pdf/pdf-annot-edit.c b/source/pdf/pdf-annot-edit.c
index dbca68c6..d0ad0915 100644
--- a/source/pdf/pdf-annot-edit.c
+++ b/source/pdf/pdf-annot-edit.c
@@ -654,29 +654,25 @@ pdf_annot_quad_point_count(fz_context *ctx, pdf_annot *annot)
pdf_obj *quad_points;
check_allowed_subtypes(ctx, annot, PDF_NAME_QuadPoints, quad_point_subtypes);
quad_points = pdf_dict_get(ctx, annot->obj, PDF_NAME_QuadPoints);
- return pdf_array_len(ctx, quad_points);
+ return pdf_array_len(ctx, quad_points) / 8;
}
void
pdf_annot_quad_point(fz_context *ctx, pdf_annot *annot, int idx, float v[8])
{
pdf_obj *quad_points;
- pdf_obj *quad_point;
fz_matrix page_ctm;
int i;
check_allowed_subtypes(ctx, annot, PDF_NAME_QuadPoints, quad_point_subtypes);
-
quad_points = pdf_dict_get(ctx, annot->obj, PDF_NAME_QuadPoints);
- quad_point = pdf_array_get(ctx, quad_points, idx);
-
pdf_page_transform(ctx, annot->page, NULL, &page_ctm);
for (i = 0; i < 8; i += 2)
{
fz_point point;
- point.x = pdf_to_real(ctx, pdf_array_get(ctx, quad_point, i+0));
- point.y = pdf_to_real(ctx, pdf_array_get(ctx, quad_point, i+1));
+ point.x = pdf_to_real(ctx, pdf_array_get(ctx, quad_points, idx * 8 + i + 0));
+ point.y = pdf_to_real(ctx, pdf_array_get(ctx, quad_points, idx * 8 + i + 1));
fz_transform_point(&point, &page_ctm);
v[i+0] = point.x;
v[i+1] = point.y;
diff --git a/source/tools/murun.c b/source/tools/murun.c
index 2e407c99..a4c25791 100644
--- a/source/tools/murun.c
+++ b/source/tools/murun.c
@@ -4117,7 +4117,7 @@ static void ffi_PDFAnnotation_setQuadPoints(js_State *J)
fz_context *ctx = js_getcontext(J);
pdf_annot *annot = js_touserdata(J, 0, "pdf_annot");
float *qp = NULL;
- int k, i, n = 0;
+ int k, i, n;
n = js_getlength(J, 1);