From d8125a13c05eef69a3fd3b6a9512dc573b23cc05 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 9 Mar 2016 22:37:00 +0100 Subject: Remove begin_page and end_page device calls. To be moved into a new document writer interface later. --- include/mupdf/fitz/device.h | 5 -- include/mupdf/pdf/document.h | 2 +- include/mupdf/pdf/output-pdf.h | 2 +- platform/java/TraceDevice.java | 8 --- platform/java/com/artifex/mupdf/fitz/Device.java | 2 - .../java/com/artifex/mupdf/fitz/NativeDevice.java | 3 - platform/java/mupdf_native.c | 71 ---------------------- platform/java/mupdf_native.h | 16 ----- platform/x11/pdfapp.c | 2 - source/fitz/device.c | 14 ----- source/fitz/document.c | 6 -- source/fitz/list-device.c | 58 ------------------ source/fitz/stext-device.c | 26 +------- source/fitz/trace-device.c | 19 ------ source/gprf/gprf-doc.c | 8 --- source/pdf/pdf-device.c | 30 ++------- source/tools/mudraw.c | 8 ++- source/tools/murun.c | 54 ---------------- 18 files changed, 14 insertions(+), 320 deletions(-) diff --git a/include/mupdf/fitz/device.h b/include/mupdf/fitz/device.h index 0e6b55f1..34faa06e 100644 --- a/include/mupdf/fitz/device.h +++ b/include/mupdf/fitz/device.h @@ -103,9 +103,6 @@ struct fz_device_s void (*drop_imp)(fz_context *, fz_device *); - void (*begin_page)(fz_context *, fz_device *, const fz_rect *area, const fz_matrix *ctm); - void (*end_page)(fz_context *, fz_device *); - void (*fill_path)(fz_context *, fz_device *, const fz_path *, int even_odd, const fz_matrix *, fz_colorspace *, const float *color, float alpha); void (*stroke_path)(fz_context *, fz_device *, const fz_path *, const fz_stroke_state *, const fz_matrix *, fz_colorspace *, const float *color, float alpha); void (*clip_path)(fz_context *, fz_device *, const fz_path *, int even_odd, const fz_matrix *, const fz_rect *scissor); @@ -144,8 +141,6 @@ struct fz_device_s fz_device_container_stack *container; }; -void fz_begin_page(fz_context *ctx, fz_device *dev, const fz_rect *area, const fz_matrix *ctm); -void fz_end_page(fz_context *ctx, fz_device *dev); void fz_fill_path(fz_context *ctx, fz_device *dev, const fz_path *path, int even_odd, const fz_matrix *ctm, fz_colorspace *colorspace, const float *color, float alpha); void fz_stroke_path(fz_context *ctx, fz_device *dev, const fz_path *path, const fz_stroke_state *stroke, const fz_matrix *ctm, fz_colorspace *colorspace, const float *color, float alpha); void fz_clip_path(fz_context *ctx, fz_device *dev, const fz_path *path, int even_odd, const fz_matrix *ctm, const fz_rect *scissor); diff --git a/include/mupdf/pdf/document.h b/include/mupdf/pdf/document.h index 1f6088e7..f8ef0cd6 100644 --- a/include/mupdf/pdf/document.h +++ b/include/mupdf/pdf/document.h @@ -274,7 +274,7 @@ void pdf_insert_page(fz_context *ctx, pdf_document *doc, int at, pdf_obj *page); void pdf_delete_page(fz_context *ctx, pdf_document *doc, int number); void pdf_delete_page_range(fz_context *ctx, pdf_document *doc, int start, int end); -fz_device *pdf_page_write(fz_context *ctx, pdf_document *doc, fz_rect *pmediabox, fz_buffer **pcontents, pdf_obj **presources); +fz_device *pdf_page_write(fz_context *ctx, pdf_document *doc, const fz_rect *mediabox, fz_buffer **pcontents, pdf_obj **presources); void pdf_finish_edit(fz_context *ctx, pdf_document *doc); diff --git a/include/mupdf/pdf/output-pdf.h b/include/mupdf/pdf/output-pdf.h index d7d54049..48789a1a 100644 --- a/include/mupdf/pdf/output-pdf.h +++ b/include/mupdf/pdf/output-pdf.h @@ -11,7 +11,7 @@ is not an array, and that is it not shared with other objects/pages. */ fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, - fz_rect *mediabox, fz_buffer *buf, pdf_obj *resources); + const fz_rect *mediabox, fz_buffer *buf, pdf_obj *resources); void pdf_localise_page_resources(fz_context *ctx, pdf_document *doc); diff --git a/platform/java/TraceDevice.java b/platform/java/TraceDevice.java index 6eb28cbf..36ed6cd3 100644 --- a/platform/java/TraceDevice.java +++ b/platform/java/TraceDevice.java @@ -42,14 +42,6 @@ public class TraceDevice extends Device implements PathWalker, TextWalker text.walk(this); } - public void beginPage(Rect r, Matrix m) { - System.out.println("beginPage " + r + " " + m); - } - - public void endPage() { - System.out.println("endPage"); - } - public void fillPath(Path path, boolean evenOdd, Matrix ctm, ColorSpace cs, float color[], float alpha) { System.out.println("fillPath " + evenOdd + " " + ctm + " " + traceColor(cs, color, alpha)); tracePath(path); diff --git a/platform/java/com/artifex/mupdf/fitz/Device.java b/platform/java/com/artifex/mupdf/fitz/Device.java index 45dea62d..b4e87481 100644 --- a/platform/java/com/artifex/mupdf/fitz/Device.java +++ b/platform/java/com/artifex/mupdf/fitz/Device.java @@ -38,8 +38,6 @@ public class Device * }; */ - public void beginPage(Rect area, Matrix ctm) {} - public void endPage() {} public void fillPath(Path path, boolean evenOdd, Matrix ctm, ColorSpace cs, float color[], float alpha) {} public void strokePath(Path path, StrokeState stroke, Matrix ctm, ColorSpace cs, float color[], float alpha) {} public void clipPath(Path path, boolean evenOdd, Matrix ctm) {} diff --git a/platform/java/com/artifex/mupdf/fitz/NativeDevice.java b/platform/java/com/artifex/mupdf/fitz/NativeDevice.java index e9e351a9..968c5f09 100644 --- a/platform/java/com/artifex/mupdf/fitz/NativeDevice.java +++ b/platform/java/com/artifex/mupdf/fitz/NativeDevice.java @@ -17,9 +17,6 @@ public class NativeDevice extends Device super(p); } - public native final void beginPage(Rect area, Matrix ctm); - public native final void endPage(); - public native final void fillPath(Path path, boolean evenOdd, Matrix ctm, ColorSpace cs, float color[], float alpha); public native final void strokePath(Path path, StrokeState stroke, Matrix ctm, ColorSpace cs, float color[], float alpha); public native final void clipPath(Path path, boolean evenOdd, Matrix ctm); diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index bf10ff9d..97052771 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -107,7 +107,6 @@ static jmethodID mid_ColorSpace_fromPointer; static jmethodID mid_ColorSpace_init; static jmethodID mid_Device_beginGroup; static jmethodID mid_Device_beginMask; -static jmethodID mid_Device_beginPage; static jmethodID mid_Device_beginTile; static jmethodID mid_Device_clipImageMask; static jmethodID mid_Device_clipPath; @@ -116,7 +115,6 @@ static jmethodID mid_Device_clipStrokeText; static jmethodID mid_Device_clipText; static jmethodID mid_Device_endGroup; static jmethodID mid_Device_endMask; -static jmethodID mid_Device_endPage; static jmethodID mid_Device_endTile; static jmethodID mid_Device_fillImage; static jmethodID mid_Device_fillImageMask; @@ -296,8 +294,6 @@ static int find_fids(JNIEnv *env) cls_Device = get_class(&err, env, PKG"Device"); fid_Device_pointer = get_field(&err, env, "pointer", "J"); - mid_Device_beginPage = get_method(&err, env, "beginPage", "(L"PKG"Rect;L"PKG"Matrix;)V"); - mid_Device_endPage = get_method(&err, env, "endPage", "()V"); mid_Device_fillPath = get_method(&err, env, "fillPath", "(L"PKG"Path;ZL"PKG"Matrix;L"PKG"ColorSpace;[FF)V"); mid_Device_strokePath = get_method(&err, env, "strokePath", "(L"PKG"Path;L"PKG"StrokeState;L"PKG"Matrix;L"PKG"ColorSpace;[FF)V"); mid_Device_clipPath = get_method(&err, env, "clipPath", "(L"PKG"Path;ZL"PKG"Matrix;)V"); @@ -1017,30 +1013,6 @@ typedef struct } fz_java_device; -static void -fz_java_device_begin_page(fz_context *ctx, fz_device *dev, const fz_rect *rect, const fz_matrix *ctm) -{ - fz_java_device *jdev = (fz_java_device *)dev; - JNIEnv *env = jdev->env; - jobject jrect = to_Rect(ctx, env, rect); - jobject jctm = to_Matrix(ctx, env, ctm); - - (*env)->CallVoidMethod(env, jdev->self, mid_Device_beginPage, jrect, jctm); - if ((*env)->ExceptionCheck(env)) - fz_throw_java(ctx, env); -} - -static void -fz_java_device_end_page(fz_context *ctx, fz_device *dev) -{ - fz_java_device *jdev = (fz_java_device *)dev; - JNIEnv *env = jdev->env; - - (*env)->CallVoidMethod(env, jdev->self, mid_Device_endPage); - if ((*env)->ExceptionCheck(env)) - fz_throw_java(ctx, env); -} - static void fz_java_device_fill_path(fz_context *ctx, fz_device *dev, const fz_path *path, int even_odd, const fz_matrix *ctm, fz_colorspace *cs, const float *color, float alpha) { @@ -1333,9 +1305,6 @@ static fz_device *fz_new_java_device(fz_context *ctx, JNIEnv *env, jobject self) dev->super.drop_imp = fz_java_device_drop_imp; - dev->super.begin_page = fz_java_device_begin_page; - dev->super.end_page = fz_java_device_end_page; - dev->super.fill_path = fz_java_device_fill_path; dev->super.stroke_path = fz_java_device_stroke_path; dev->super.clip_path = fz_java_device_clip_path; @@ -1476,46 +1445,6 @@ FUN(NativeDevice_finalize)(JNIEnv *env, jobject self) } } -JNIEXPORT void JNICALL -FUN(NativeDevice_beginPage)(JNIEnv *env, jobject self, jobject jrect, jobject jctm) -{ - fz_context *ctx = get_context(env); - fz_device *dev = from_Device(env, self, ctx); - fz_rect rect = from_Rect(env, jrect); - fz_matrix ctm = from_Matrix(env, jctm); - NativeDeviceInfo *info; - - if (ctx == NULL || dev == NULL) - return; - - info = lockNativeDevice(env, self); - fz_try(ctx) - fz_begin_page(ctx, dev, &rect, &ctm); - fz_always(ctx) - unlockNativeDevice(env, info); - fz_catch(ctx) - jni_rethrow(env, ctx); -} - -JNIEXPORT void JNICALL -FUN(NativeDevice_endPage)(JNIEnv *env, jobject self) -{ - fz_context *ctx = get_context(env); - fz_device *dev = from_Device(env, self, ctx); - NativeDeviceInfo *info; - - if (ctx == NULL || dev == NULL) - return; - - info = lockNativeDevice(env, self); - fz_try(ctx) - fz_end_page(ctx, dev); - fz_always(ctx) - unlockNativeDevice(env, info); - fz_catch(ctx) - jni_rethrow(env, ctx); -} - JNIEXPORT void JNICALL FUN(NativeDevice_fillPath)(JNIEnv *env, jobject self, jobject jpath, jboolean even_odd, jobject jctm, jobject jcs, jfloatArray jcolor, float alpha) { diff --git a/platform/java/mupdf_native.h b/platform/java/mupdf_native.h index 6a9c3a0c..95f17084 100644 --- a/platform/java/mupdf_native.h +++ b/platform/java/mupdf_native.h @@ -838,22 +838,6 @@ extern "C" { JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_NativeDevice_finalize (JNIEnv *, jobject); -/* - * Class: com_artifex_mupdf_fitz_NativeDevice - * Method: beginPage - * Signature: (Lcom/artifex/mupdf/fitz/Rect;Lcom/artifex/mupdf/fitz/Matrix;)V - */ -JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_NativeDevice_beginPage - (JNIEnv *, jobject, jobject, jobject); - -/* - * Class: com_artifex_mupdf_fitz_NativeDevice - * Method: endPage - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_NativeDevice_endPage - (JNIEnv *, jobject); - /* * Class: com_artifex_mupdf_fitz_NativeDevice * Method: fillPath diff --git a/platform/x11/pdfapp.c b/platform/x11/pdfapp.c index d764a152..37ef2181 100644 --- a/platform/x11/pdfapp.c +++ b/platform/x11/pdfapp.c @@ -771,12 +771,10 @@ static void pdfapp_recreate_annotationslist(pdfapp_t *app) static void pdfapp_runpage(pdfapp_t *app, fz_device *dev, const fz_matrix *ctm, const fz_rect *rect, fz_cookie *cookie) { - fz_begin_page(app->ctx, dev, rect, ctm); if (app->page_list) fz_run_display_list(app->ctx, app->page_list, dev, ctm, rect, cookie); if (app->annotations_list) fz_run_display_list(app->ctx, app->annotations_list, dev, ctm, rect, cookie); - fz_end_page(app->ctx, dev); } #define MAX_TITLE 256 diff --git a/source/fitz/device.c b/source/fitz/device.c index fdee2042..5a293bce 100644 --- a/source/fitz/device.c +++ b/source/fitz/device.c @@ -29,20 +29,6 @@ fz_disable_device_hints(fz_context *ctx, fz_device *dev, int hints) dev->hints &= ~hints; } -void -fz_begin_page(fz_context *ctx, fz_device *dev, const fz_rect *rect, const fz_matrix *ctm) -{ - if (dev->begin_page) - dev->begin_page(ctx, dev, rect, ctm); -} - -void -fz_end_page(fz_context *ctx, fz_device *dev) -{ - if (dev->end_page) - dev->end_page(ctx, dev); -} - static void push_clip_stack(fz_context *ctx, fz_device *dev, const fz_rect *rect, int flags) { diff --git a/source/fitz/document.c b/source/fitz/document.c index 4cc5dbba..1719aaf6 100644 --- a/source/fitz/document.c +++ b/source/fitz/document.c @@ -330,10 +330,6 @@ void fz_run_page(fz_context *ctx, fz_page *page, fz_device *dev, const fz_matrix *transform, fz_cookie *cookie) { fz_annot *annot; - fz_rect mediabox; - - fz_bound_page(ctx, page, &mediabox); - fz_begin_page(ctx, dev, &mediabox, transform); fz_run_page_contents(ctx, page, dev, transform, cookie); @@ -357,8 +353,6 @@ fz_run_page(fz_context *ctx, fz_page *page, fz_device *dev, const fz_matrix *tra fz_run_annot(ctx, annot, dev, transform, cookie); } - - fz_end_page(ctx, dev); } void * diff --git a/source/fitz/list-device.c b/source/fitz/list-device.c index 1d416073..156e50f6 100644 --- a/source/fitz/list-device.c +++ b/source/fitz/list-device.c @@ -7,8 +7,6 @@ typedef struct fz_list_device_s fz_list_device; typedef enum fz_display_command_e { - FZ_CMD_BEGIN_PAGE, - FZ_CMD_END_PAGE, FZ_CMD_FILL_PATH, FZ_CMD_STROKE_PATH, FZ_CMD_CLIP_PATH, @@ -631,52 +629,6 @@ fz_append_display_node( list->len += size; } -static void -fz_list_begin_page(fz_context *ctx, fz_device *dev, const fz_rect *mediabox, const fz_matrix *ctm) -{ - fz_list_device *writer = (fz_list_device *)dev; - fz_display_list *list = writer->list; - fz_rect rect = *mediabox; - - fz_transform_rect(&rect, ctm); - - fz_union_rect(&list->mediabox, &rect); - - fz_append_display_node( - ctx, - dev, - FZ_CMD_BEGIN_PAGE, - 0, /* flags */ - &rect, - NULL, /* path */ - NULL, /* color */ - NULL, /* colorspace */ - NULL, /* alpha */ - ctm, - NULL, /* stroke_state */ - NULL, /* private_data */ - 0); /* private_data_len */ -} - -static void -fz_list_end_page(fz_context *ctx, fz_device *dev) -{ - fz_append_display_node( - ctx, - dev, - FZ_CMD_END_PAGE, - 0, /* flags */ - NULL, /* rect */ - NULL, /* path */ - NULL, /* color */ - NULL, /* colorspace */ - NULL, /* alpha */ - NULL, /* ctm */ - NULL, /* stroke_state */ - NULL, /* private_data */ - 0); /* private_data_len */ -} - static void fz_list_fill_path(fz_context *ctx, fz_device *dev, const fz_path *path, int even_odd, const fz_matrix *ctm, fz_colorspace *colorspace, const float *color, float alpha) @@ -1263,9 +1215,6 @@ fz_new_list_device(fz_context *ctx, fz_display_list *list) dev = fz_new_device(ctx, sizeof(fz_list_device)); - dev->super.begin_page = fz_list_begin_page; - dev->super.end_page = fz_list_end_page; - dev->super.fill_path = fz_list_fill_path; dev->super.stroke_path = fz_list_stroke_path; dev->super.clip_path = fz_list_clip_path; @@ -1615,7 +1564,6 @@ fz_run_display_list(fz_context *ctx, fz_display_list *list, fz_device *dev, cons if (tiled || n.cmd == FZ_CMD_BEGIN_TILE || n.cmd == FZ_CMD_END_TILE || - n.cmd == FZ_CMD_BEGIN_PAGE || n.cmd == FZ_CMD_END_PAGE || n.cmd == FZ_CMD_RENDER_FLAGS) { empty = 0; @@ -1662,12 +1610,6 @@ visible: { switch (n.cmd) { - case FZ_CMD_BEGIN_PAGE: - fz_begin_page(ctx, dev, &trans_rect, &trans_ctm); - break; - case FZ_CMD_END_PAGE: - fz_end_page(ctx, dev); - break; case FZ_CMD_FILL_PATH: fz_fill_path(ctx, dev, path, n.flags, &trans_ctm, colorspace, color, alpha); break; diff --git a/source/fitz/stext-device.c b/source/fitz/stext-device.c index 83bde371..c5b4c897 100644 --- a/source/fitz/stext-device.c +++ b/source/fitz/stext-device.c @@ -1021,22 +1021,7 @@ fz_bidi_reorder_stext_page(fz_context *ctx, fz_stext_page *page) } static void -fz_stext_begin_page(fz_context *ctx, fz_device *dev, const fz_rect *mediabox, const fz_matrix *ctm) -{ - fz_stext_device *tdev = (fz_stext_device*)dev; - - if (tdev->page->len) - { - tdev->page->next = fz_new_stext_page(ctx); - tdev->page = tdev->page->next; - } - - tdev->page->mediabox = *mediabox; - fz_transform_rect(&tdev->page->mediabox, ctm); -} - -static void -fz_stext_end_page(fz_context *ctx, fz_device *dev) +fz_stext_drop_imp(fz_context *ctx, fz_device *dev) { fz_stext_device *tdev = (fz_stext_device*)dev; @@ -1053,13 +1038,6 @@ fz_stext_end_page(fz_context *ctx, fz_device *dev) fz_bidi_reorder_stext_page(ctx, tdev->page); } -static void -fz_stext_drop_imp(fz_context *ctx, fz_device *dev) -{ - fz_stext_device *tdev = (fz_stext_device*)dev; - free_span_soup(ctx, tdev->spans); -} - fz_device * fz_new_stext_device(fz_context *ctx, fz_stext_sheet *sheet, fz_stext_page *page) { @@ -1068,8 +1046,6 @@ fz_new_stext_device(fz_context *ctx, fz_stext_sheet *sheet, fz_stext_page *page) dev->super.hints = FZ_IGNORE_IMAGE | FZ_IGNORE_SHADE; dev->super.drop_imp = fz_stext_drop_imp; - dev->super.begin_page = fz_stext_begin_page; - dev->super.end_page = fz_stext_end_page; dev->super.fill_text = fz_stext_fill_text; dev->super.stroke_text = fz_stext_stroke_text; dev->super.clip_text = fz_stext_clip_text; diff --git a/source/fitz/trace-device.c b/source/fitz/trace-device.c index fd9adcb5..86a1e60e 100644 --- a/source/fitz/trace-device.c +++ b/source/fitz/trace-device.c @@ -99,22 +99,6 @@ fz_trace_path(fz_context *ctx, fz_output *out, const fz_path *path) fz_walk_path(ctx, path, &trace_path_walker, out); } -static void -fz_trace_begin_page(fz_context *ctx, fz_device *dev, const fz_rect *rect, const fz_matrix *ctm) -{ - fz_output *out = ((fz_trace_device*)dev)->out; - fz_printf(ctx, out, "x0, rect->y0, rect->x1, rect->y1); - fz_trace_matrix(ctx, out, ctm); - fz_printf(ctx, out, ">\n"); -} - -static void -fz_trace_end_page(fz_context *ctx, fz_device *dev) -{ - fz_output *out = ((fz_trace_device*)dev)->out; - fz_printf(ctx, out, "\n"); -} - static void fz_trace_fill_path(fz_context *ctx, fz_device *dev, const fz_path *path, int even_odd, const fz_matrix *ctm, fz_colorspace *colorspace, const float *color, float alpha) @@ -352,9 +336,6 @@ fz_device *fz_new_trace_device(fz_context *ctx, fz_output *out) { fz_trace_device *dev = fz_new_device(ctx, sizeof *dev); - dev->super.begin_page = fz_trace_begin_page; - dev->super.end_page = fz_trace_end_page; - dev->super.fill_path = fz_trace_fill_path; dev->super.stroke_path = fz_trace_stroke_path; dev->super.clip_path = fz_trace_clip_path; diff --git a/source/gprf/gprf-doc.c b/source/gprf/gprf-doc.c index b859856a..d09248b1 100644 --- a/source/gprf/gprf-doc.c +++ b/source/gprf/gprf-doc.c @@ -719,7 +719,6 @@ gprf_run_page(fz_context *ctx, fz_page *page_, fz_device *dev, const fz_matrix * { gprf_page *page = (gprf_page*)page_; gprf_document *doc = page->doc; - fz_rect page_rect; int i, y, x; /* If we have no page, generate it. */ @@ -734,13 +733,7 @@ gprf_run_page(fz_context *ctx, fz_page *page_, fz_device *dev, const fz_matrix * } /* Send the images to the page */ - page_rect.x0 = 0; - page_rect.y0 = 0; - page_rect.x1 = 72.0 * page->width / doc->res; - page_rect.y1 = 72.0 * page->height / doc->res; fz_render_flags(ctx, dev, FZ_DEVFLAG_GRIDFIT_AS_TILED, 0); - fz_begin_page(ctx, dev, &page_rect, ctm); - i = 0; for (y = 0; y < page->tile_height; y++) { @@ -760,7 +753,6 @@ gprf_run_page(fz_context *ctx, fz_page *page_, fz_device *dev, const fz_matrix * fz_fill_image(ctx, dev, page->tiles[i++], &local, 1.0); } } - fz_end_page(ctx, dev); fz_render_flags(ctx, dev, 0, FZ_DEVFLAG_GRIDFIT_AS_TILED); } diff --git a/source/pdf/pdf-device.c b/source/pdf/pdf-device.c index bd11ecc9..5d3654a0 100644 --- a/source/pdf/pdf-device.c +++ b/source/pdf/pdf-device.c @@ -70,7 +70,6 @@ struct pdf_device_s fz_device super; pdf_document *doc; - fz_rect *mediabox; pdf_obj *resources; fz_buffer *buffer; @@ -1037,23 +1036,6 @@ pdf_dev_end_tile(fz_context *ctx, fz_device *dev) pdf_dev_end_text(ctx, pdev); } -static void -pdf_dev_begin_page(fz_context *ctx, fz_device *dev, const fz_rect *mediabox, const fz_matrix *ctm) -{ - pdf_device *pdev = (pdf_device*)dev; - gstate *gs = CURRENT_GSTATE(pdev); - pdev->mediabox->x0 = 0; - pdev->mediabox->y0 = 0; - pdev->mediabox->x1 = mediabox->x1 - mediabox->x0; - pdev->mediabox->y1 = mediabox->y1 - mediabox->y0; - fz_buffer_printf(ctx, gs->buf, "1 0 0 -1 %f %f cm\n", 0 - mediabox->x0, mediabox->y1); -} - -static void -pdf_dev_end_page(fz_context *ctx, fz_device *dev) -{ -} - static void pdf_dev_drop_imp(fz_context *ctx, fz_device *dev) { @@ -1078,15 +1060,12 @@ pdf_dev_drop_imp(fz_context *ctx, fz_device *dev) fz_free(ctx, pdev->gstates); } -fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, fz_rect *mediabox, fz_buffer *buf, pdf_obj *resources) +fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, const fz_rect *mediabox, fz_buffer *buf, pdf_obj *resources) { pdf_device *dev = fz_new_device(ctx, sizeof *dev); dev->super.drop_imp = pdf_dev_drop_imp; - dev->super.begin_page = pdf_dev_begin_page; - dev->super.end_page = pdf_dev_end_page; - dev->super.fill_path = pdf_dev_fill_path; dev->super.stroke_path = pdf_dev_stroke_path; dev->super.clip_path = pdf_dev_clip_path; @@ -1119,7 +1098,6 @@ fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, fz_rect *media if (!buf) buf = fz_new_buffer(ctx, 256); dev->doc = doc; - dev->mediabox = mediabox; dev->resources = pdf_keep_obj(ctx, resources); dev->gstates = fz_malloc_struct(ctx, gstate); dev->gstates[0].buf = buf; @@ -1134,6 +1112,8 @@ fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, fz_rect *media dev->gstates[0].horizontal_scaling = 100; dev->num_gstates = 1; dev->max_gstates = 1; + + fz_buffer_printf(ctx, buf, "1 0 0 -1 %f %f cm\n", 0 - mediabox->x0, mediabox->y1); } fz_catch(ctx) { @@ -1147,9 +1127,9 @@ fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, fz_rect *media } fz_device *pdf_page_write(fz_context *ctx, pdf_document *doc, - fz_rect *pmediabox, fz_buffer **pcontents, pdf_obj **presources) + const fz_rect *mediabox, fz_buffer **pcontents, pdf_obj **presources) { *presources = pdf_new_dict(ctx, doc, 0); *pcontents = fz_new_buffer(ctx, 0); - return pdf_new_pdf_device(ctx, doc, pmediabox, *pcontents, *presources); + return pdf_new_pdf_device(ctx, doc, mediabox, *pcontents, *presources); } diff --git a/source/tools/mudraw.c b/source/tools/mudraw.c index d96b0a55..e00a6d23 100644 --- a/source/tools/mudraw.c +++ b/source/tools/mudraw.c @@ -247,6 +247,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) fz_device *dev = NULL; int start; fz_cookie cookie = { 0 }; + fz_rect mediabox; fz_var(list); fz_var(dev); @@ -262,6 +263,8 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) if (showmd5 || showtime || showfeatures) fprintf(stderr, "page %s %d", filename, pagenum); + fz_bound_page(ctx, page, &mediabox); + if (uselist) { fz_try(ctx) @@ -310,11 +313,14 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) { fz_try(ctx) { + fz_printf(ctx, out, "\n", + mediabox.x0, mediabox.y0, mediabox.x1, mediabox.y1); dev = fz_new_trace_device(ctx, out); if (list) fz_run_display_list(ctx, list, dev, &fz_identity, &fz_infinite_rect, &cookie); else fz_run_page(ctx, page, dev, &fz_identity, &cookie); + fz_printf(ctx, out, "\n"); } fz_always(ctx) { @@ -380,7 +386,6 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) { fz_buffer *contents; pdf_obj *resources; - fz_rect mediabox; dev = pdf_page_write(ctx, pdfout, &mediabox, &contents, &resources); fz_try(ctx) @@ -392,7 +397,6 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) else fz_run_page(ctx, page, dev, &fz_identity, &cookie); - fz_bound_page(ctx, page, &mediabox); page_obj = pdf_add_page(ctx, pdfout, &mediabox, rotation, contents, resources); pdf_insert_page(ctx, pdfout, -1, page_obj); pdf_drop_obj(ctx, page_obj); diff --git a/source/tools/murun.c b/source/tools/murun.c index e0207332..5275bfe2 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -756,32 +756,6 @@ typedef struct js_device_s js_State *J; } js_device; -static void -js_dev_begin_page(fz_context *ctx, fz_device *dev, const fz_rect *rect, const fz_matrix *ctm) -{ - js_State *J = ((js_device*)dev)->J; - if (js_hasproperty(J, -1, "beginPage")) { - js_copy(J, -2); /* copy the 'this' object */ - ffi_pushrect(J, *rect); - ffi_pushmatrix(J, *ctm); - if (js_pcall(J, 2)) - fz_warn(ctx, "%s", js_tostring(J, -1)); - js_pop(J, 1); - } -} - -static void -js_dev_end_page(fz_context *ctx, fz_device *dev) -{ - js_State *J = ((js_device*)dev)->J; - if (js_hasproperty(J, -1, "endPage")) { - js_copy(J, -2); /* copy the 'this' object */ - if (js_pcall(J, 0)) - fz_warn(ctx, "%s", js_tostring(J, -1)); - js_pop(J, 1); - } -} - static void js_dev_fill_path(fz_context *ctx, fz_device *dev, const fz_path *path, int even_odd, const fz_matrix *ctm, fz_colorspace *colorspace, const float *color, float alpha) @@ -1101,9 +1075,6 @@ static fz_device *new_js_device(fz_context *ctx, js_State *J) { js_device *dev = fz_new_device(ctx, sizeof *dev); - dev->super.begin_page = js_dev_begin_page; - dev->super.end_page = js_dev_end_page; - dev->super.fill_path = js_dev_fill_path; dev->super.stroke_path = js_dev_stroke_path; dev->super.clip_path = js_dev_clip_path; @@ -1136,28 +1107,6 @@ static fz_device *new_js_device(fz_context *ctx, js_State *J) /* device calling into c from js */ -static void ffi_Device_beginPage(js_State *J) -{ - fz_context *ctx = js_getcontext(J); - fz_device *dev = js_touserdata(J, 0, "fz_device"); - fz_rect rect = ffi_torect(J, 1); - fz_matrix ctm = ffi_tomatrix(J, 2); - fz_try(ctx) - fz_begin_page(ctx, dev, &rect, &ctm); - fz_catch(ctx) - rethrow(J); -} - -static void ffi_Device_endPage(js_State *J) -{ - fz_context *ctx = js_getcontext(J); - fz_device *dev = js_touserdata(J, 0, "fz_device"); - fz_try(ctx) - fz_end_page(ctx, dev); - fz_catch(ctx) - rethrow(J); -} - static void ffi_Device_fillPath(js_State *J) { fz_context *ctx = js_getcontext(J); @@ -2947,9 +2896,6 @@ int murun_main(int argc, char **argv) js_newobject(J); { - jsB_propfun(J, "Device.beginPage", ffi_Device_beginPage, 2); - jsB_propfun(J, "Device.endPage", ffi_Device_endPage, 0); - jsB_propfun(J, "Device.fillPath", ffi_Device_fillPath, 6); jsB_propfun(J, "Device.strokePath", ffi_Device_strokePath, 6); jsB_propfun(J, "Device.clipPath", ffi_Device_clipPath, 3); -- cgit v1.2.3