diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-02-24 21:04:09 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2016-02-29 15:56:45 +0100 |
commit | ff162fe493a331151edf11e3b2cf4da62f79b811 (patch) | |
tree | 54c3b3b3c2930b54656d045fe39e8dffe677950a | |
parent | 6252873329e14ab1b0460bf2a6cecc9eb3044aa1 (diff) | |
download | mupdf-ff162fe493a331151edf11e3b2cf4da62f79b811.tar.xz |
Pass mediabox to pdf_create_page by const pointer, and pass resources.
-rw-r--r-- | include/mupdf/pdf/document.h | 2 | ||||
-rw-r--r-- | platform/x11/pdfapp.c | 2 | ||||
-rw-r--r-- | source/pdf/pdf-page.c | 25 | ||||
-rw-r--r-- | source/tools/mudraw.c | 2 |
4 files changed, 22 insertions, 9 deletions
diff --git a/include/mupdf/pdf/document.h b/include/mupdf/pdf/document.h index 8e8df1b3..e8d0f07e 100644 --- a/include/mupdf/pdf/document.h +++ b/include/mupdf/pdf/document.h @@ -269,7 +269,7 @@ struct pdf_document_s */ pdf_document *pdf_create_document(fz_context *ctx); -pdf_page *pdf_create_page(fz_context *ctx, pdf_document *doc, fz_rect rect, int rotate, fz_buffer *contents); +pdf_page *pdf_create_page(fz_context *ctx, pdf_document *doc, const fz_rect *mediabox, int rotate, fz_buffer *contents, pdf_obj *resources); void pdf_insert_page(fz_context *ctx, pdf_document *doc, pdf_page *page, int at); diff --git a/platform/x11/pdfapp.c b/platform/x11/pdfapp.c index f28f595d..9b0b3e2b 100644 --- a/platform/x11/pdfapp.c +++ b/platform/x11/pdfapp.c @@ -255,7 +255,7 @@ static int make_fake_doc(pdfapp_t *app) bounds.x1 = app->winw; bounds.y1 = app->winh; - newpage = pdf_create_page(ctx, pdf, bounds, 0, NULL); + newpage = pdf_create_page(ctx, pdf, &bounds, 0, NULL, NULL); dev = pdf_page_write(ctx, pdf, newpage); diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c index 281b146c..f327bfab 100644 --- a/source/pdf/pdf-page.c +++ b/source/pdf/pdf-page.c @@ -697,7 +697,8 @@ pdf_delete_page_range(fz_context *ctx, pdf_document *doc, int start, int end) } pdf_page * -pdf_create_page(fz_context *ctx, pdf_document *doc, fz_rect mediabox, int rotate, fz_buffer *contents) +pdf_create_page(fz_context *ctx, pdf_document *doc, const fz_rect *mediabox, int rotate, + fz_buffer *contents, pdf_obj *resources) { pdf_page *page = NULL; pdf_obj *pageobj, *obj; @@ -715,10 +716,10 @@ pdf_create_page(fz_context *ctx, pdf_document *doc, fz_rect mediabox, int rotate pdf_dict_put_drop(ctx, pageobj, PDF_NAME_Type, PDF_NAME_Page); - page->mediabox.x0 = fz_min(mediabox.x0, mediabox.x1) * userunit; - page->mediabox.y0 = fz_min(mediabox.y0, mediabox.y1) * userunit; - page->mediabox.x1 = fz_max(mediabox.x0, mediabox.x1) * userunit; - page->mediabox.y1 = fz_max(mediabox.y0, mediabox.y1) * userunit; + page->mediabox.x0 = fz_min(mediabox->x0, mediabox->x1) * userunit; + page->mediabox.y0 = fz_min(mediabox->y0, mediabox->y1) * userunit; + page->mediabox.x1 = fz_max(mediabox->x0, mediabox->x1) * userunit; + page->mediabox.y1 = fz_max(mediabox->y0, mediabox->y1) * userunit; pdf_dict_put_drop(ctx, pageobj, PDF_NAME_MediaBox, pdf_new_rect(ctx, doc, &page->mediabox)); /* Snap page->rotate to 0, 90, 180 or 270 */ @@ -745,7 +746,19 @@ pdf_create_page(fz_context *ctx, pdf_document *doc, fz_rect mediabox, int rotate pdf_update_stream(ctx, doc, page->contents, contents, 0); pdf_drop_obj(ctx, obj); obj = NULL; - pdf_dict_puts(ctx, pageobj, "Contents", page->contents); + pdf_dict_put(ctx, pageobj, PDF_NAME_Contents, page->contents); + } + + if (resources != NULL) + { + if (pdf_is_indirect(ctx, resources)) + pdf_dict_put(ctx, pageobj, PDF_NAME_Resources, resources); + else + { + pdf_obj *ref = pdf_new_ref(ctx, doc, resources); + pdf_dict_put(ctx, pageobj, PDF_NAME_Resources, ref); + pdf_drop_obj(ctx, ref); + } } } fz_catch(ctx) diff --git a/source/tools/mudraw.c b/source/tools/mudraw.c index aecc6368..62e587e8 100644 --- a/source/tools/mudraw.c +++ b/source/tools/mudraw.c @@ -387,7 +387,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) tbounds = bounds; fz_transform_rect(&tbounds, &ctm); - newpage = pdf_create_page(ctx, pdfout, bounds, 0, NULL); + newpage = pdf_create_page(ctx, pdfout, &bounds, 0, NULL, NULL); fz_try(ctx) { |