summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2017-03-25 17:39:45 -0400
committerRobin Watts <Robin.Watts@artifex.com>2017-03-27 10:50:17 -0400
commit66f878d1d7c580f9010e9f362399606989671a45 (patch)
treeb00058d13efff94b659230e05f3df485f2c42287
parentd3087bb261de53557572a49458a2ae88a2d38453 (diff)
downloadmupdf-66f878d1d7c580f9010e9f362399606989671a45.tar.xz
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.
-rw-r--r--include/mupdf/fitz/writer.h3
-rw-r--r--platform/java/mupdf_native.c6
-rw-r--r--platform/java/src/com/artifex/mupdf/fitz/DocumentWriter.java2
-rw-r--r--source/fitz/writer.c13
-rw-r--r--source/tools/muconvert.c2
-rw-r--r--source/tools/murun.c7
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");