diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/pdf/pdf-annot-edit.c | 12 | ||||
-rw-r--r-- | source/tools/murun.c | 14 |
2 files changed, 14 insertions, 12 deletions
diff --git a/source/pdf/pdf-annot-edit.c b/source/pdf/pdf-annot-edit.c index 20cc8edd..15541d45 100644 --- a/source/pdf/pdf-annot-edit.c +++ b/source/pdf/pdf-annot-edit.c @@ -720,7 +720,7 @@ pdf_annot_vertex(fz_context *ctx, pdf_annot *annot, int i) } void -pdf_set_annot_vertices(fz_context *ctx, pdf_annot *annot, int n, const float *v) +pdf_set_annot_vertices(fz_context *ctx, pdf_annot *annot, int n, const fz_point *v) { pdf_document *doc = annot->page->doc; fz_matrix page_ctm, inv_page_ctm; @@ -738,8 +738,7 @@ pdf_set_annot_vertices(fz_context *ctx, pdf_annot *annot, int n, const float *v) vertices = pdf_new_array(ctx, doc, n * 2); for (i = 0; i < n; ++i) { - point.x = v[i * 2]; - point.y = v[i * 2 + 1]; + point = v[i]; fz_transform_point(&point, &inv_page_ctm); pdf_array_push_drop(ctx, vertices, pdf_new_real(ctx, doc, point.x)); pdf_array_push_drop(ctx, vertices, pdf_new_real(ctx, doc, point.y)); @@ -974,7 +973,7 @@ pdf_annot_ink_list_stroke_vertex(fz_context *ctx, pdf_annot *annot, int i, int k } void -pdf_set_annot_ink_list(fz_context *ctx, pdf_annot *annot, int n, const int *count, const float *v) +pdf_set_annot_ink_list(fz_context *ctx, pdf_annot *annot, int n, const int *count, const fz_point *v) { pdf_document *doc = annot->page->doc; fz_matrix page_ctm, inv_page_ctm; @@ -992,11 +991,10 @@ pdf_set_annot_ink_list(fz_context *ctx, pdf_annot *annot, int n, const int *coun ink_list = pdf_new_array(ctx, doc, n); for (i = 0; i < n; ++i) { - stroke = pdf_new_array(ctx, doc, count[i]); + stroke = pdf_new_array(ctx, doc, count[i] * 2); for (k = 0; k < count[i]; ++k) { - point.x = *v++; - point.y = *v++; + point = *v++; fz_transform_point(&point, &inv_page_ctm); pdf_array_push_drop(ctx, stroke, pdf_new_real(ctx, doc, point.x)); pdf_array_push_drop(ctx, stroke, pdf_new_real(ctx, doc, point.y)); diff --git a/source/tools/murun.c b/source/tools/murun.c index fd6c2c0d..bed686a7 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -4281,7 +4281,7 @@ static void ffi_PDFAnnotation_setInkList(js_State *J) { fz_context *ctx = js_getcontext(J); pdf_annot *annot = js_touserdata(J, 0, "pdf_annot"); - float *points = NULL; + fz_point *points = NULL; int *counts = NULL; int n, nv, k, i, v; @@ -4298,7 +4298,7 @@ static void ffi_PDFAnnotation_setInkList(js_State *J) fz_try(ctx) { counts = fz_malloc(ctx, n * sizeof(int)); - points = fz_malloc(ctx, nv * 2 * sizeof(float)); + points = fz_malloc(ctx, nv * sizeof(fz_point)); } fz_catch(ctx) { fz_free(ctx, counts); fz_free(ctx, points); @@ -4313,10 +4313,14 @@ static void ffi_PDFAnnotation_setInkList(js_State *J) for (i = v = 0; i < n; ++i) { js_getindex(J, 1, i); counts[i] = js_getlength(J, -1) / 2; - for (k = 0; k < counts[i] * 2; ++k) { - js_getindex(J, -1, k); - points[v++] = js_tonumber(J, -1); + for (k = 0; k < counts[i]; ++k) { + js_getindex(J, -1, k*2); + points[v].x = js_tonumber(J, -1); + js_pop(J, 1); + js_getindex(J, -1, k*2+1); + points[v].y = js_tonumber(J, -1); js_pop(J, 1); + ++v; } js_pop(J, 1); } |