diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-06-23 12:33:30 +0200 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2016-06-23 16:10:29 +0100 |
commit | cf7b2cbbfe6192fbf697237735ab45bc951304e4 (patch) | |
tree | eac1231a33e79e7f8afa99d63e203b8fededecc4 /source | |
parent | 38ffc7fefeadb87929c2006d1e91394a516c3c9d (diff) | |
download | mupdf-cf7b2cbbfe6192fbf697237735ab45bc951304e4.tar.xz |
Update JNI code. Take explicit alpha argument in toPixmap functions.
Diffstat (limited to 'source')
-rw-r--r-- | source/fitz/util.c | 31 | ||||
-rw-r--r-- | source/tools/murun.c | 5 |
2 files changed, 23 insertions, 13 deletions
diff --git a/source/fitz/util.c b/source/fitz/util.c index d17cb18c..e1e17c25 100644 --- a/source/fitz/util.c +++ b/source/fitz/util.c @@ -80,7 +80,7 @@ fz_new_pixmap_from_display_list(fz_context *ctx, fz_display_list *list, const fz } fz_pixmap * -fz_new_pixmap_from_page_contents(fz_context *ctx, fz_page *page, const fz_matrix *ctm, fz_colorspace *cs) +fz_new_pixmap_from_page_contents(fz_context *ctx, fz_page *page, const fz_matrix *ctm, fz_colorspace *cs, int alpha) { fz_rect rect; fz_irect irect; @@ -91,8 +91,11 @@ fz_new_pixmap_from_page_contents(fz_context *ctx, fz_page *page, const fz_matrix fz_transform_rect(&rect, ctm); fz_round_rect(&irect, &rect); - pix = fz_new_pixmap_with_bbox(ctx, cs, &irect, 0); - fz_clear_pixmap_with_value(ctx, pix, 0xFF); + pix = fz_new_pixmap_with_bbox(ctx, cs, &irect, alpha); + if (alpha) + fz_clear_pixmap(ctx, pix); + else + fz_clear_pixmap_with_value(ctx, pix, 0xFF); fz_try(ctx) { @@ -113,7 +116,7 @@ fz_new_pixmap_from_page_contents(fz_context *ctx, fz_page *page, const fz_matrix } fz_pixmap * -fz_new_pixmap_from_annot(fz_context *ctx, fz_annot *annot, const fz_matrix *ctm, fz_colorspace *cs) +fz_new_pixmap_from_annot(fz_context *ctx, fz_annot *annot, const fz_matrix *ctm, fz_colorspace *cs, int alpha) { fz_rect rect; fz_irect irect; @@ -124,8 +127,11 @@ fz_new_pixmap_from_annot(fz_context *ctx, fz_annot *annot, const fz_matrix *ctm, fz_transform_rect(&rect, ctm); fz_round_rect(&irect, &rect); - pix = fz_new_pixmap_with_bbox(ctx, cs, &irect, 1); - fz_clear_pixmap(ctx, pix); + pix = fz_new_pixmap_with_bbox(ctx, cs, &irect, alpha); + if (alpha) + fz_clear_pixmap(ctx, pix); + else + fz_clear_pixmap_with_value(ctx, pix, 0xFF); fz_try(ctx) { @@ -146,7 +152,7 @@ fz_new_pixmap_from_annot(fz_context *ctx, fz_annot *annot, const fz_matrix *ctm, } fz_pixmap * -fz_new_pixmap_from_page(fz_context *ctx, fz_page *page, const fz_matrix *ctm, fz_colorspace *cs) +fz_new_pixmap_from_page(fz_context *ctx, fz_page *page, const fz_matrix *ctm, fz_colorspace *cs, int alpha) { fz_rect rect; fz_irect irect; @@ -157,8 +163,11 @@ fz_new_pixmap_from_page(fz_context *ctx, fz_page *page, const fz_matrix *ctm, fz fz_transform_rect(&rect, ctm); fz_round_rect(&irect, &rect); - pix = fz_new_pixmap_with_bbox(ctx, cs, &irect, 0); - fz_clear_pixmap_with_value(ctx, pix, 0xFF); + pix = fz_new_pixmap_with_bbox(ctx, cs, &irect, alpha); + if (alpha) + fz_clear_pixmap(ctx, pix); + else + fz_clear_pixmap_with_value(ctx, pix, 0xFF); fz_try(ctx) { @@ -179,14 +188,14 @@ fz_new_pixmap_from_page(fz_context *ctx, fz_page *page, const fz_matrix *ctm, fz } fz_pixmap * -fz_new_pixmap_from_page_number(fz_context *ctx, fz_document *doc, int number, const fz_matrix *ctm, fz_colorspace *cs) +fz_new_pixmap_from_page_number(fz_context *ctx, fz_document *doc, int number, const fz_matrix *ctm, fz_colorspace *cs, int alpha) { fz_page *page; fz_pixmap *pix; page = fz_load_page(ctx, doc, number); fz_try(ctx) - pix = fz_new_pixmap_from_page(ctx, page, ctm, cs); + pix = fz_new_pixmap_from_page(ctx, page, ctm, cs, alpha); fz_always(ctx) fz_drop_page(ctx, page); fz_catch(ctx) diff --git a/source/tools/murun.c b/source/tools/murun.c index 5315a4f3..1f2f5e5f 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -1457,10 +1457,11 @@ static void ffi_Page_toPixmap(js_State *J) fz_page *page = js_touserdata(J, 0, "fz_page"); fz_matrix ctm = ffi_tomatrix(J, 1); fz_colorspace *colorspace = js_touserdata(J, 2, "fz_colorspace"); + int alpha = js_toboolean(J, 3); fz_pixmap *pixmap; fz_try(ctx) - pixmap = fz_new_pixmap_from_page(ctx, page, &ctm, colorspace); + pixmap = fz_new_pixmap_from_page(ctx, page, &ctm, colorspace, alpha); fz_catch(ctx) rethrow(J); @@ -3100,7 +3101,7 @@ int murun_main(int argc, char **argv) { jsB_propfun(J, "Page.bound", ffi_Page_bound, 0); jsB_propfun(J, "Page.run", ffi_Page_run, 2); - jsB_propfun(J, "Page.toPixmap", ffi_Page_toPixmap, 1); + jsB_propfun(J, "Page.toPixmap", ffi_Page_toPixmap, 3); jsB_propfun(J, "Page.toDisplayList", ffi_Page_toDisplayList, 0); jsB_propfun(J, "Page.search", ffi_Page_search, 0); } |