diff options
Diffstat (limited to 'source/pdf/pdf-interpret.c')
-rw-r--r-- | source/pdf/pdf-interpret.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/source/pdf/pdf-interpret.c b/source/pdf/pdf-interpret.c index c4dfaf88..c895478f 100644 --- a/source/pdf/pdf-interpret.c +++ b/source/pdf/pdf-interpret.c @@ -431,6 +431,7 @@ pdf_process_extgstate(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, pdf_ob pdf_obj *group, *s, *bc, *tr; float softmask_bc[FZ_MAX_COLORS]; fz_colorspace *colorspace; + int colorspace_n = 1; int k, luminosity; fz_var(xobj); @@ -442,17 +443,20 @@ pdf_process_extgstate(fz_context *ctx, pdf_processor *proc, pdf_csi *csi, pdf_ob fz_try(ctx) { - colorspace = xobj->colorspace; - if (!colorspace) - colorspace = fz_device_gray(ctx); + colorspace = pdf_xobject_colorspace(ctx, xobj); + if (colorspace) + { + colorspace_n = colorspace->n; + fz_drop_colorspace(ctx, colorspace); + } - for (k = 0; k < colorspace->n; k++) + for (k = 0; k < colorspace_n; k++) softmask_bc[k] = 0; bc = pdf_dict_get(ctx, obj, PDF_NAME_BC); if (pdf_is_array(ctx, bc)) { - for (k = 0; k < colorspace->n; k++) + for (k = 0; k < colorspace_n; k++) softmask_bc[k] = pdf_to_real(ctx, pdf_array_get(ctx, bc, k)); } |