From 3e6e2464b32ca6d9fdc9cfc8c80c33aace8ec5e0 Mon Sep 17 00:00:00 2001 From: Michael Vrhel Date: Tue, 1 Aug 2017 14:39:01 -0700 Subject: Only do proof conversion in final pop. The proof conversion should only be done after we have done all our drawing in the separations group. Fixes issue in page 7 of Altona test. --- include/mupdf/fitz/pixmap.h | 2 +- include/mupdf/fitz/shade.h | 4 +-- source/fitz/draw-device.c | 67 ++++++++++++++++++++------------------------- source/fitz/draw-mesh.c | 6 ++-- source/fitz/separation.c | 4 +-- source/fitz/stext-device.c | 2 +- source/fitz/svg-device.c | 2 +- 7 files changed, 39 insertions(+), 48 deletions(-) diff --git a/include/mupdf/fitz/pixmap.h b/include/mupdf/fitz/pixmap.h index a555a046..a7bb4354 100644 --- a/include/mupdf/fitz/pixmap.h +++ b/include/mupdf/fitz/pixmap.h @@ -407,7 +407,7 @@ int fz_valgrind_pixmap(const fz_pixmap *pix); fz_clone_pixmap_area_with_different_seps: Convert between different separation results. */ -fz_pixmap *fz_clone_pixmap_area_with_different_seps(fz_context *ctx, fz_pixmap *src, const fz_irect *bbox, fz_colorspace *dcs, fz_separations *seps, const fz_color_params *color_params, fz_colorspace *prf, fz_default_colorspaces *default_cs); +fz_pixmap *fz_clone_pixmap_area_with_different_seps(fz_context *ctx, fz_pixmap *src, const fz_irect *bbox, fz_colorspace *dcs, fz_separations *seps, const fz_color_params *color_params, fz_default_colorspaces *default_cs); fz_pixmap *fz_copy_pixmap_area_converting_seps(fz_context *ctx, fz_pixmap *dst, fz_pixmap *src, const fz_color_params *color_params, fz_colorspace *prf, fz_default_colorspaces *default_cs); diff --git a/include/mupdf/fitz/shade.h b/include/mupdf/fitz/shade.h index 1a9a174d..5604e762 100644 --- a/include/mupdf/fitz/shade.h +++ b/include/mupdf/fitz/shade.h @@ -126,8 +126,6 @@ fz_rect *fz_bound_shade(fz_context *ctx, fz_shade *shade, const fz_matrix *ctm, dest: The pixmap to render into. - prf: Proofing color space. - color_params: The color rendering settings bbox: Pointer to a bounding box to limit the rendering @@ -135,7 +133,7 @@ fz_rect *fz_bound_shade(fz_context *ctx, fz_shade *shade, const fz_matrix *ctm, op: NULL, or pointer to overprint bitmap. */ -void fz_paint_shade(fz_context *ctx, fz_shade *shade, const fz_matrix *ctm, fz_pixmap *dest, fz_colorspace *prf, const fz_color_params *color_params, const fz_irect *bbox, const fz_overprint *op); +void fz_paint_shade(fz_context *ctx, fz_shade *shade, const fz_matrix *ctm, fz_pixmap *dest, const fz_color_params *color_params, const fz_irect *bbox, const fz_overprint *op); /* * Handy routine for processing mesh based shades diff --git a/source/fitz/draw-device.c b/source/fitz/draw-device.c index a26e5986..7274200f 100644 --- a/source/fitz/draw-device.c +++ b/source/fitz/draw-device.c @@ -397,7 +397,7 @@ set_op_from_spaces(fz_context *ctx, fz_overprint *op, const fz_pixmap *dest, con } static fz_overprint * -resolve_color(fz_context *ctx, fz_overprint *op, const float *color, fz_colorspace *colorspace, float alpha, const fz_color_params *color_params, unsigned char *colorbv, fz_pixmap *dest, fz_colorspace *prf) +resolve_color(fz_context *ctx, fz_overprint *op, const float *color, fz_colorspace *colorspace, float alpha, const fz_color_params *color_params, unsigned char *colorbv, fz_pixmap *dest) { float colorfv[FZ_MAX_COLORS]; int i; @@ -425,7 +425,7 @@ resolve_color(fz_context *ctx, fz_overprint *op, const float *color, fz_colorspa else { int c = n - dest->s; - fz_convert_color(ctx, color_params, prf, dest->colorspace, colorfv, colorspace, color); + fz_convert_color(ctx, color_params, NULL, dest->colorspace, colorfv, colorspace, color); for (i = 0; i < c; i++) colorbv[i] = colorfv[i] * 255; for (; i < n; i++) @@ -452,7 +452,7 @@ resolve_color(fz_context *ctx, fz_overprint *op, const float *color, fz_colorspa } static fz_draw_state * -push_group_for_separations(fz_context *ctx, fz_draw_device *dev, const fz_color_params *color_params, fz_colorspace *prf, fz_default_colorspaces *default_cs) +push_group_for_separations(fz_context *ctx, fz_draw_device *dev, const fz_color_params *color_params, fz_default_colorspaces *default_cs) { fz_separations *clone = fz_clone_separations_for_overprint(ctx, dev->stack[0].dest->seps); @@ -468,7 +468,7 @@ push_group_for_separations(fz_context *ctx, fz_draw_device *dev, const fz_color_ { dev->stack[1] = dev->stack[0]; dev->stack[1].dest = NULL; /* So we are safe to destroy */ - dev->stack[1].dest = fz_clone_pixmap_area_with_different_seps(ctx, dev->stack[0].dest, &dev->stack[0].scissor, fz_device_cmyk(ctx), clone, color_params, prf, default_cs); + dev->stack[1].dest = fz_clone_pixmap_area_with_different_seps(ctx, dev->stack[0].dest, &dev->stack[0].scissor, fz_device_cmyk(ctx), clone, color_params, default_cs); dev->top++; } fz_always(ctx) @@ -487,7 +487,6 @@ fz_draw_fill_path(fz_context *ctx, fz_device *devp, const fz_path *path, int eve fz_matrix ctm = concat(in_ctm, &dev->transform); fz_rasterizer *rast = dev->rast; fz_colorspace *colorspace = fz_default_colorspace(ctx, dev->default_cs, colorspace_in); - fz_colorspace *prf = fz_proof_cs(ctx, dev); float expansion = fz_matrix_expansion(&ctm); float flatness = 0.3f / expansion; unsigned char colorbv[FZ_MAX_COLORS + 1]; @@ -497,7 +496,7 @@ fz_draw_fill_path(fz_context *ctx, fz_device *devp, const fz_path *path, int eve fz_overprint *eop; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, color_params, prf, dev->default_cs); + state = push_group_for_separations(ctx, dev, color_params, dev->default_cs); if (flatness < 0.001f) flatness = 0.001f; @@ -509,7 +508,7 @@ fz_draw_fill_path(fz_context *ctx, fz_device *devp, const fz_path *path, int eve if (state->blendmode & FZ_BLEND_KNOCKOUT) state = fz_knockout_begin(ctx, dev); - eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest, prf); + eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest); fz_convert_rasterizer(ctx, rast, even_odd, state->dest, colorbv, eop); if (state->shape) @@ -533,7 +532,6 @@ fz_draw_stroke_path(fz_context *ctx, fz_device *devp, const fz_path *path, const fz_matrix ctm = concat(in_ctm, &dev->transform); fz_rasterizer *rast = dev->rast; fz_colorspace *colorspace = fz_default_colorspace(ctx, dev->default_cs, colorspace_in); - fz_colorspace *prf = fz_proof_cs(ctx, dev); float expansion = fz_matrix_expansion(&ctm); float flatness = 0.3f / expansion; float linewidth = stroke->linewidth; @@ -546,7 +544,7 @@ fz_draw_stroke_path(fz_context *ctx, fz_device *devp, const fz_path *path, const fz_overprint *eop; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, color_params, prf, dev->default_cs); + state = push_group_for_separations(ctx, dev, color_params, dev->default_cs); if (mlw > aa_level) aa_level = mlw; @@ -562,7 +560,7 @@ fz_draw_stroke_path(fz_context *ctx, fz_device *devp, const fz_path *path, const if (state->blendmode & FZ_BLEND_KNOCKOUT) state = fz_knockout_begin(ctx, dev); - eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest, prf); + eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest); #ifdef DUMP_GROUP_BLENDS dump_spaces(dev->top, ""); @@ -608,7 +606,7 @@ fz_draw_clip_path(fz_context *ctx, fz_device *devp, const fz_path *path, int eve fz_irect *scissor_ptr = &state->scissor; if (dev->top == 0 && dev->resolve_spots) - (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, fz_proof_cs(ctx, dev), dev->default_cs); + (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, dev->default_cs); if (flatness < 0.001f) flatness = 0.001f; @@ -679,7 +677,7 @@ fz_draw_clip_stroke_path(fz_context *ctx, fz_device *devp, const fz_path *path, fz_irect *scissor_ptr = &state->scissor; if (dev->top == 0 && dev->resolve_spots) - (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx) /* FIXME */, fz_proof_cs(ctx, dev), dev->default_cs); + (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx) /* FIXME */, dev->default_cs); if (mlw > aa_level) aa_level = mlw; @@ -825,13 +823,12 @@ fz_draw_fill_text(fz_context *ctx, fz_device *devp, const fz_text *text, const f fz_text_span *span; int i; fz_colorspace *colorspace = NULL; - fz_colorspace *prf = fz_proof_cs(ctx, dev); fz_rasterizer *rast = dev->rast; fz_overprint op = { { 0 } }; fz_overprint *eop; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, color_params, prf, dev->default_cs); + state = push_group_for_separations(ctx, dev, color_params, dev->default_cs); if (colorspace_in) colorspace = fz_default_colorspace(ctx, dev->default_cs, colorspace_in); @@ -845,7 +842,7 @@ fz_draw_fill_text(fz_context *ctx, fz_device *devp, const fz_text *text, const f if (state->blendmode & FZ_BLEND_KNOCKOUT) state = fz_knockout_begin(ctx, dev); - eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest, prf); + eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest); shapebv = 255; for (span = text->head; span; span = span->next) @@ -918,13 +915,12 @@ fz_draw_stroke_text(fz_context *ctx, fz_device *devp, const fz_text *text, const fz_text_span *span; int i; fz_colorspace *colorspace = NULL; - fz_colorspace *prf = fz_proof_cs(ctx, dev); int aa = fz_rasterizer_text_aa_level(dev->rast); fz_overprint op = { { 0 } }; fz_overprint *eop; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, color_params, prf, dev->default_cs); + state = push_group_for_separations(ctx, dev, color_params, dev->default_cs); if (colorspace_in) colorspace = fz_default_colorspace(ctx, dev->default_cs, colorspace_in); @@ -932,7 +928,7 @@ fz_draw_stroke_text(fz_context *ctx, fz_device *devp, const fz_text *text, const if (state->blendmode & FZ_BLEND_KNOCKOUT) state = fz_knockout_begin(ctx, dev); - eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest, prf); + eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest); for (span = text->head; span; span = span->next) { @@ -999,7 +995,7 @@ fz_draw_clip_text(fz_context *ctx, fz_device *devp, const fz_text *text, const f fz_rasterizer *rast = dev->rast; if (dev->top == 0 && dev->resolve_spots) - (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, fz_proof_cs(ctx, dev), dev->default_cs); + (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, dev->default_cs); state = push_stack(ctx, dev); STACK_PUSHED("clip text"); @@ -1131,7 +1127,7 @@ fz_draw_clip_stroke_text(fz_context *ctx, fz_device *devp, const fz_text *text, int aa = fz_rasterizer_text_aa_level(dev->rast); if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, fz_proof_cs(ctx, dev), dev->default_cs); + state = push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, dev->default_cs); STACK_PUSHED("clip stroke text"); /* make the mask the exact size needed */ @@ -1255,12 +1251,11 @@ fz_draw_fill_shade(fz_context *ctx, fz_device *devp, fz_shade *shade, const fz_m fz_pixmap *dest, *shape; unsigned char colorbv[FZ_MAX_COLORS + 1]; fz_draw_state *state = &dev->stack[dev->top]; - fz_colorspace *prf = fz_proof_cs(ctx, dev); fz_overprint op = { { 0 } }; fz_overprint *eop; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, color_params, prf, dev->default_cs); + state = push_group_for_separations(ctx, dev, color_params, dev->default_cs); fz_bound_shade(ctx, shade, &ctm, &bounds); scissor = state->scissor; @@ -1307,7 +1302,7 @@ fz_draw_fill_shade(fz_context *ctx, fz_device *devp, fz_shade *shade, const fz_m cp = &local_cp; } - eop = resolve_color(ctx, &op, shade->background, fz_default_colorspace(ctx, dev->default_cs, shade->colorspace), alpha, cp, colorbv, state->dest, prf); + eop = resolve_color(ctx, &op, shade->background, fz_default_colorspace(ctx, dev->default_cs, shade->colorspace), alpha, cp, colorbv, state->dest); n = dest->n; if (eop) @@ -1356,7 +1351,7 @@ fz_draw_fill_shade(fz_context *ctx, fz_device *devp, fz_shade *shade, const fz_m else eop = NULL; - fz_paint_shade(ctx, shade, &ctm, dest, prf, color_params, &bbox, eop); + fz_paint_shade(ctx, shade, &ctm, dest, color_params, &bbox, eop); if (shape) fz_clear_pixmap_rect_with_value(ctx, shape, 255, &bbox); @@ -1462,7 +1457,6 @@ fz_draw_fill_image(fz_context *ctx, fz_device *devp, fz_image *image, const fz_m fz_matrix inverse; fz_irect src_area; fz_colorspace *src_cs; - fz_colorspace *prf = fz_proof_cs(ctx, dev); fz_overprint op = { { 0 } }; fz_overprint *eop = &op; @@ -1470,7 +1464,7 @@ fz_draw_fill_image(fz_context *ctx, fz_device *devp, fz_image *image, const fz_m return; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, color_params, prf, dev->default_cs); + state = push_group_for_separations(ctx, dev, color_params, dev->default_cs); model = state->dest->colorspace; @@ -1548,11 +1542,11 @@ fz_draw_fill_image(fz_context *ctx, fz_device *devp, fz_image *image, const fz_m * then we can't lose the spots during color conversion. */ if (fz_colorspace_is_device_n(ctx, src_cs) && state->dest->seps) { - converted = fz_clone_pixmap_area_with_different_seps(ctx, pixmap, NULL, model, state->dest->seps, color_params, prf, dev->default_cs); + converted = fz_clone_pixmap_area_with_different_seps(ctx, pixmap, NULL, model, state->dest->seps, color_params, dev->default_cs); set_op_from_spaces(ctx, eop, state->dest, src_cs, color_params->opm); } else - converted = fz_convert_pixmap(ctx, pixmap, model, prf, dev->default_cs, color_params, 1); + converted = fz_convert_pixmap(ctx, pixmap, model, NULL, dev->default_cs, color_params, 1); fz_drop_pixmap(ctx, pixmap); pixmap = converted; } @@ -1591,12 +1585,12 @@ fz_draw_fill_image(fz_context *ctx, fz_device *devp, fz_image *image, const fz_m fz_pixmap *converted; if (fz_colorspace_is_device_n(ctx, src_cs) && state->dest->seps) { - converted = fz_clone_pixmap_area_with_different_seps(ctx, pixmap, NULL, model, state->dest->seps, color_params, prf, dev->default_cs); + converted = fz_clone_pixmap_area_with_different_seps(ctx, pixmap, NULL, model, state->dest->seps, color_params, dev->default_cs); set_op_from_spaces(ctx, eop, state->dest, src_cs, color_params->opm); } else { - converted = fz_convert_pixmap(ctx, pixmap, model, prf, dev->default_cs, color_params, 1); + converted = fz_convert_pixmap(ctx, pixmap, model, NULL, dev->default_cs, color_params, 1); if (eop && !fz_colorspace_is_device_n(ctx, pixmap->colorspace) && fz_colorspace_n(ctx, model) == 4) { int i; @@ -1636,7 +1630,6 @@ fz_draw_fill_image_mask(fz_context *ctx, fz_device *devp, fz_image *image, const fz_matrix inverse; fz_irect src_area; fz_colorspace *colorspace = NULL; - fz_colorspace *prf = fz_proof_cs(ctx, dev); fz_overprint op = { { 0 } }; fz_overprint *eop; @@ -1644,7 +1637,7 @@ fz_draw_fill_image_mask(fz_context *ctx, fz_device *devp, fz_image *image, const return; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, color_params, prf, dev->default_cs); + state = push_group_for_separations(ctx, dev, color_params, dev->default_cs); if (colorspace_in) colorspace = fz_default_colorspace(ctx, dev->default_cs, colorspace_in); @@ -1718,7 +1711,7 @@ fz_draw_fill_image_mask(fz_context *ctx, fz_device *devp, fz_image *image, const } } - eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest, prf); + eop = resolve_color(ctx, &op, color, colorspace, alpha, color_params, colorbv, state->dest); fz_paint_image_with_color(state->dest, &state->scissor, state->shape, pixmap, &local_ctm, colorbv, !(devp->hints & FZ_DONT_INTERPOLATE_IMAGES), devp->flags & FZ_DEVFLAG_GRIDFIT_AS_TILED, eop); @@ -1746,7 +1739,7 @@ fz_draw_clip_image_mask(fz_context *ctx, fz_device *devp, fz_image *image, const fz_rect urect; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, fz_proof_cs(ctx, dev), dev->default_cs); + state = push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, dev->default_cs); STACK_PUSHED("clip image mask"); fz_pixmap_bbox(ctx, state->dest, &clip); @@ -1910,7 +1903,7 @@ fz_draw_begin_mask(fz_context *ctx, fz_device *devp, const fz_rect *rect, int lu fz_colorspace *colorspace = NULL; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, color_params, fz_proof_cs(ctx, dev), dev->default_cs); + state = push_group_for_separations(ctx, dev, color_params, dev->default_cs); if (colorspace_in) colorspace = fz_default_colorspace(ctx, dev->default_cs, colorspace_in); @@ -2049,7 +2042,7 @@ fz_draw_begin_group(fz_context *ctx, fz_device *devp, const fz_rect *rect, fz_co fz_rect trect = *rect; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, fz_proof_cs(ctx, dev), dev->default_cs); + state = push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, dev->default_cs); if (cs != NULL) model = fz_default_colorspace(ctx, dev->default_cs, cs); @@ -2301,7 +2294,7 @@ fz_draw_begin_tile(fz_context *ctx, fz_device *devp, const fz_rect *area, const fz_rect local_view = *view; if (dev->top == 0 && dev->resolve_spots) - state = push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, fz_proof_cs(ctx, dev), dev->default_cs); + state = push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, dev->default_cs); /* area, view, xstep, ystep are in pattern space */ /* ctm maps from pattern space to device space */ diff --git a/source/fitz/draw-mesh.c b/source/fitz/draw-mesh.c index cd88d996..eaca9c64 100644 --- a/source/fitz/draw-mesh.c +++ b/source/fitz/draw-mesh.c @@ -211,7 +211,7 @@ do_paint_tri(fz_context *ctx, void *arg, fz_vertex *av, fz_vertex *bv, fz_vertex } void -fz_paint_shade(fz_context *ctx, fz_shade *shade, const fz_matrix *ctm, fz_pixmap *dest, fz_colorspace *prf, const fz_color_params *color_params, const fz_irect *bbox, const fz_overprint *op) +fz_paint_shade(fz_context *ctx, fz_shade *shade, const fz_matrix *ctm, fz_pixmap *dest, const fz_color_params *color_params, const fz_irect *bbox, const fz_overprint *op) { unsigned char clut[256][FZ_MAX_COLORS]; fz_pixmap *temp = NULL; @@ -292,7 +292,7 @@ fz_paint_shade(fz_context *ctx, fz_shade *shade, const fz_matrix *ctm, fz_pixmap temp = conv; /* Now Change from our device_n colorspace into the target colorspace/spots. */ - conv = fz_clone_pixmap_area_with_different_seps(ctx, temp, NULL, dest->colorspace, dest->seps, color_params, prf, NULL); + conv = fz_clone_pixmap_area_with_different_seps(ctx, temp, NULL, dest->colorspace, dest->seps, color_params, NULL); } else { @@ -306,7 +306,7 @@ fz_paint_shade(fz_context *ctx, fz_shade *shade, const fz_matrix *ctm, fz_pixmap int cn = fz_colorspace_n(ctx, shade->colorspace); int m = dest->n - dest->alpha; int n = fz_colorspace_n(ctx, dest->colorspace); - fz_find_color_converter(ctx, &cc, prf, dest->colorspace, shade->colorspace, color_params); + fz_find_color_converter(ctx, &cc, NULL, dest->colorspace, shade->colorspace, color_params); for (i = 0; i < 256; i++) { cc.convert(ctx, &cc, color, shade->function[i]); diff --git a/source/fitz/separation.c b/source/fitz/separation.c index 45049951..ba3ab96e 100644 --- a/source/fitz/separation.c +++ b/source/fitz/separation.c @@ -238,7 +238,7 @@ fz_separations *fz_clone_separations_for_overprint(fz_context *ctx, fz_separatio } fz_pixmap * -fz_clone_pixmap_area_with_different_seps(fz_context *ctx, fz_pixmap *src, const fz_irect *bbox, fz_colorspace *dcs, fz_separations *dseps, const fz_color_params *color_params, fz_colorspace *prf, fz_default_colorspaces *default_cs) +fz_clone_pixmap_area_with_different_seps(fz_context *ctx, fz_pixmap *src, const fz_irect *bbox, fz_colorspace *dcs, fz_separations *dseps, const fz_color_params *color_params, fz_default_colorspaces *default_cs) { fz_irect local_bbox; fz_pixmap *dst; @@ -262,7 +262,7 @@ fz_clone_pixmap_area_with_different_seps(fz_context *ctx, fz_pixmap *src, const else dst->flags &= ~FZ_PIXMAP_FLAG_INTERPOLATE; - return fz_copy_pixmap_area_converting_seps(ctx, dst, src, color_params, prf, default_cs); + return fz_copy_pixmap_area_converting_seps(ctx, dst, src, color_params, NULL, default_cs); } fz_pixmap * diff --git a/source/fitz/stext-device.c b/source/fitz/stext-device.c index 03369940..b2bd7a8f 100644 --- a/source/fitz/stext-device.c +++ b/source/fitz/stext-device.c @@ -603,7 +603,7 @@ fz_new_image_from_shade(fz_context *ctx, fz_shade *shade, fz_matrix *in_out_ctm, fz_fill_pixmap_with_color(ctx, pix, shade->colorspace, shade->background, color_params); else fz_clear_pixmap(ctx, pix); - fz_paint_shade(ctx, shade, &ctm, pix, NULL, color_params, &bbox, NULL); + fz_paint_shade(ctx, shade, &ctm, pix, color_params, &bbox, NULL); img = fz_new_image_from_pixmap(ctx, pix, NULL); } fz_always(ctx) diff --git a/source/fitz/svg-device.c b/source/fitz/svg-device.c index d7b144ed..3860b5c5 100644 --- a/source/fitz/svg-device.c +++ b/source/fitz/svg-device.c @@ -921,7 +921,7 @@ svg_dev_fill_shade(fz_context *ctx, fz_device *dev, fz_shade *shade, const fz_ma fz_try(ctx) { - fz_paint_shade(ctx, shade, ctm, pix, NULL, color_params, &bbox, NULL); + fz_paint_shade(ctx, shade, ctm, pix, color_params, &bbox, NULL); buf = fz_new_buffer_from_pixmap_as_png(ctx, pix, color_params); if (alpha != 1.0f) fz_write_printf(ctx, out, "\n", alpha); -- cgit v1.2.3