From 66f878d1d7c580f9010e9f362399606989671a45 Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Sat, 25 Mar 2017 17:39:45 -0400 Subject: Tweak document_writer - don't pass dev back in. It seems odd for a document writer to pass a device pointer out, and then require it to be passed back in. Hide that in the public API. --- include/mupdf/fitz/writer.h | 3 ++- platform/java/mupdf_native.c | 6 ++---- .../java/src/com/artifex/mupdf/fitz/DocumentWriter.java | 2 +- source/fitz/writer.c | 13 +++++++++++-- source/tools/muconvert.c | 2 +- source/tools/murun.c | 7 +++---- 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/include/mupdf/fitz/writer.h b/include/mupdf/fitz/writer.h index 2c2f967f..dedb064a 100644 --- a/include/mupdf/fitz/writer.h +++ b/include/mupdf/fitz/writer.h @@ -20,6 +20,7 @@ struct fz_document_writer_s fz_document_writer_end_page_fn *end_page; fz_document_writer_close_writer_fn *close_writer; fz_document_writer_drop_writer_fn *drop_writer; + fz_device *dev; }; fz_document_writer *fz_new_document_writer_of_size(fz_context *ctx, size_t size, fz_document_writer_begin_page_fn *begin_page, @@ -50,7 +51,7 @@ fz_document_writer *fz_new_pbm_pixmap_writer(fz_context *ctx, const char *path, fz_document_writer *fz_new_pkm_pixmap_writer(fz_context *ctx, const char *path, const char *options); fz_device *fz_begin_page(fz_context *ctx, fz_document_writer *wri, const fz_rect *mediabox); -void fz_end_page(fz_context *ctx, fz_document_writer *wri, fz_device *dev); +void fz_end_page(fz_context *ctx, fz_document_writer *wri); void fz_close_document_writer(fz_context *ctx, fz_document_writer *wri); void fz_drop_document_writer(fz_context *ctx, fz_document_writer *wri); diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index 311560fd..a7ebddee 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -5521,17 +5521,15 @@ FUN(DocumentWriter_beginPage)(JNIEnv *env, jobject self, jobject jmediabox) } JNIEXPORT void JNICALL -FUN(DocumentWriter_endPage)(JNIEnv *env, jobject self, jobject jdev) +FUN(DocumentWriter_endPage)(JNIEnv *env, jobject self) { fz_context *ctx = get_context(env); fz_document_writer *wri = from_DocumentWriter(env, self); - fz_device *device = from_Device(env, jdev); if (!ctx || !wri) return; - if (!device) { jni_throw_arg(env, "device must not be null"); return; } fz_try(ctx) - fz_end_page(ctx, wri, device); + fz_end_page(ctx, wri); fz_catch(ctx) jni_rethrow(env, ctx); } diff --git a/platform/java/src/com/artifex/mupdf/fitz/DocumentWriter.java b/platform/java/src/com/artifex/mupdf/fitz/DocumentWriter.java index dce9d73d..bb22ca2f 100644 --- a/platform/java/src/com/artifex/mupdf/fitz/DocumentWriter.java +++ b/platform/java/src/com/artifex/mupdf/fitz/DocumentWriter.java @@ -22,6 +22,6 @@ public class DocumentWriter } public native Device beingPage(Rect mediabox); - public native void endPage(Device device); + public native void endPage(); public native void close(); } diff --git a/source/fitz/writer.c b/source/fitz/writer.c index 67a1d5ef..6c774d47 100644 --- a/source/fitz/writer.c +++ b/source/fitz/writer.c @@ -165,11 +165,20 @@ fz_drop_document_writer(fz_context *ctx, fz_document_writer *wri) fz_device * fz_begin_page(fz_context *ctx, fz_document_writer *wri, const fz_rect *mediabox) { - return wri->begin_page(ctx, wri, mediabox); + if (!wri) + return NULL; + wri->dev = wri->begin_page(ctx, wri, mediabox); + return wri->dev; } void -fz_end_page(fz_context *ctx, fz_document_writer *wri, fz_device *dev) +fz_end_page(fz_context *ctx, fz_document_writer *wri) { + fz_device *dev; + + if (!wri) + return; + dev = wri->dev; + wri->dev = NULL; wri->end_page(ctx, wri, dev); } diff --git a/source/tools/muconvert.c b/source/tools/muconvert.c index 8d4f4dd6..054f8b25 100644 --- a/source/tools/muconvert.c +++ b/source/tools/muconvert.c @@ -66,7 +66,7 @@ static void runpage(int number) fz_bound_page(ctx, page, &mediabox); dev = fz_begin_page(ctx, out, &mediabox); fz_run_page(ctx, page, dev, &fz_identity, NULL); - fz_end_page(ctx, out, dev); + fz_end_page(ctx, out); fz_drop_page(ctx, page); } diff --git a/source/tools/murun.c b/source/tools/murun.c index 75f5d19f..9ee0f0da 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -2755,9 +2755,8 @@ static void ffi_DocumentWriter_endPage(js_State *J) { fz_context *ctx = js_getcontext(J); fz_document_writer *wri = js_touserdata(J, 0, "fz_document_writer"); - fz_device *device = js_touserdata(J, 1, "fz_device"); fz_try(ctx) - fz_end_page(ctx, wri, device); + fz_end_page(ctx, wri); fz_catch(ctx) rethrow(J); } @@ -4360,8 +4359,8 @@ int murun_main(int argc, char **argv) js_newobject(J); { jsB_propfun(J, "DocumentWriter.beginPage", ffi_DocumentWriter_beginPage, 1); - jsB_propfun(J, "DocumentWriter.endPage", ffi_DocumentWriter_endPage, 1); - jsB_propfun(J, "DocumentWriter.close", ffi_DocumentWriter_close, 1); + jsB_propfun(J, "DocumentWriter.endPage", ffi_DocumentWriter_endPage, 0); + jsB_propfun(J, "DocumentWriter.close", ffi_DocumentWriter_close, 0); } js_setregistry(J, "fz_document_writer"); -- cgit v1.2.3