diff options
Diffstat (limited to 'devices/vector/gdevpdfi.c')
-rw-r--r-- | devices/vector/gdevpdfi.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/devices/vector/gdevpdfi.c b/devices/vector/gdevpdfi.c index 1e1a9daa..1de48cee 100644 --- a/devices/vector/gdevpdfi.c +++ b/devices/vector/gdevpdfi.c @@ -1872,7 +1872,7 @@ use_image_as_pattern(gx_device_pdf *pdev, pdf_resource_t *pres1, } if (code >= 0) code = (*dev_proc(pdev, dev_spec_op))((gx_device *)pdev, - gxdso_pattern_load, &inst, id); + gxdso_pattern_load, &id, sizeof(gs_id)); if (code >= 0) { stream_puts(pdev->strm, "q "); code = pdf_cs_Pattern_colored(pdev, &v); @@ -2032,7 +2032,7 @@ pdf_image_end_image(gx_image_enum_common_t * info, bool draw_last) static int pdf_image_end_image_cvd(gx_image_enum_common_t * info, bool draw_last) { pdf_lcvd_t *cvd = (pdf_lcvd_t *)info->dev; - int code = pdf_dump_converted_image(cvd->pdev, cvd); + int code = pdf_dump_converted_image(cvd->pdev, cvd, 0); int code1 = gx_image1_end_image(info, draw_last); int code2 = gs_closedevice((gx_device *)cvd->mask); int code3 = gs_closedevice((gx_device *)cvd); @@ -2214,8 +2214,10 @@ pdf_image3x_make_mcde(gx_device *dev, const gs_gstate *pgs, code = pdf_begin_typed_image ((gx_device_pdf *)dev, pgs, pmat, pic, prect, pdcolor, pcpath, mem, pinfo, PDF_IMAGE_TYPE3_DATA); - if (code < 0) + if (code < 0) { + rc_decrement(*pmcdev, "pdf_image3x_make_mcde"); return code; + } if ((*pinfo)->procs != &pdf_image_enum_procs) { /* We couldn't handle the image. Bail out. */ gx_image_end(*pinfo, false); @@ -2695,7 +2697,6 @@ gdev_pdf_dev_spec_op(gx_device *pdev1, int dev_spec_op, void *data, int size) gs_pattern1_instance_t *pinst = param->pinst; gs_gstate *pgs = param->graphics_state; - id = param->pinst_id; code = pdf_check_soft_mask(pdev, (gs_gstate *)pgs); if (code < 0) return code; @@ -2735,7 +2736,7 @@ gdev_pdf_dev_spec_op(gx_device *pdev1, int dev_spec_op, void *data, int size) memset(pdev->initial_pattern_states[pdev->PatternDepth], 0x00, sizeof(gs_gstate)); reset_gstate_for_pattern(pdev, pdev->initial_pattern_states[pdev->PatternDepth], pgs); - code = pdf_enter_substream(pdev, resourcePattern, id, &pres, false, + code = pdf_enter_substream(pdev, resourcePattern, pinst->id, &pres, false, pdev->CompressStreams); if (code < 0) { gs_free_object(pdev->pdf_memory->non_gc_memory, pdev->initial_pattern_states[pdev->PatternDepth], "Freeing dangling pattern state"); @@ -2751,7 +2752,7 @@ gdev_pdf_dev_spec_op(gx_device *pdev1, int dev_spec_op, void *data, int size) * the ID is restored when we finish capturing the pattern. */ pdev->state.soft_mask_id = pgs->soft_mask_id; - pres->rid = id; + pres->rid = pinst->id; code = pdf_store_pattern1_params(pdev, pres, pinst); if (code < 0) { gs_free_object(pdev->pdf_memory->non_gc_memory, pdev->initial_pattern_states[pdev->PatternDepth], "Freeing dangling pattern state"); @@ -2830,7 +2831,7 @@ gdev_pdf_dev_spec_op(gx_device *pdev1, int dev_spec_op, void *data, int size) } return 1; case gxdso_pattern_load: - pres = pdf_find_resource_by_gs_id(pdev, resourcePattern, id); + pres = pdf_find_resource_by_gs_id(pdev, resourcePattern, *((gx_bitmap_id *)data)); if (pres == 0) return 0; pres = pdf_substitute_pattern(pres); |