From 82b600dac5eb34b0c156302581303be834d655ce Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Tue, 24 May 2016 19:55:42 +0100 Subject: Cope better when asked to plot alpha only pixmaps. Converting a pixmap to an alpha only pixmap means "just keep the alpha". If there IS no alpha, then a solid alpha is assumed. --- source/fitz/colorspace.c | 7 +++++-- source/fitz/draw-affine.c | 2 +- source/fitz/draw-device.c | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'source') diff --git a/source/fitz/colorspace.c b/source/fitz/colorspace.c index 7923446a..298c4712 100644 --- a/source/fitz/colorspace.c +++ b/source/fitz/colorspace.c @@ -1633,9 +1633,12 @@ fz_convert_pixmap(fz_context *ctx, fz_pixmap *dp, fz_pixmap *sp) fz_colorspace *ss = sp->colorspace; fz_colorspace *ds = dp->colorspace; - if (ds == NULL && sp->alpha) + if (ds == NULL) { - fast_copy_alpha(dp, sp); + if (sp->alpha) + fast_copy_alpha(dp, sp); + else + fz_clear_pixmap_with_value(ctx, dp, 255); return; } diff --git a/source/fitz/draw-affine.c b/source/fitz/draw-affine.c index 70e05121..38679d6e 100644 --- a/source/fitz/draw-affine.c +++ b/source/fitz/draw-affine.c @@ -1365,7 +1365,7 @@ fz_paint_image_imp(fz_pixmap * restrict dst, const fz_irect *scissor, const fz_p /* Sometimes we can get an alpha only input to be * ploted. In this case treat it as a greyscale * input. */ - if (img->n == sa && n > 0) + if (img->n == sa && color) sa = 0; if (n == 3 && img->n == 1 + sa && !color) diff --git a/source/fitz/draw-device.c b/source/fitz/draw-device.c index 516e05bc..88e117c7 100644 --- a/source/fitz/draw-device.c +++ b/source/fitz/draw-device.c @@ -1227,7 +1227,7 @@ fz_draw_fill_image(fz_context *ctx, fz_device *devp, fz_image *image, const fz_m { fz_irect bbox; fz_pixmap_bbox(ctx, pixmap, &bbox); - converted = fz_new_pixmap_with_bbox(ctx, model, &bbox, pixmap->alpha); + converted = fz_new_pixmap_with_bbox(ctx, model, &bbox, (model ? pixmap->alpha : 1)); fz_convert_pixmap(ctx, converted, pixmap); pixmap = converted; } -- cgit v1.2.3