[gs-cvs] rev 8553 - trunk/gs/src
leonardo at ghostscript.com
leonardo at ghostscript.com
Wed Feb 27 11:22:58 PST 2008
Author: leonardo
Date: 2008-02-27 11:22:57 -0800 (Wed, 27 Feb 2008)
New Revision: 8553
Modified:
trunk/gs/src/gdevp14.c
trunk/gs/src/gdevpdft.c
trunk/gs/src/gstrans.c
trunk/gs/src/gstrans.h
trunk/gs/src/ztrans.c
Log:
Fix (clist interpreter) : Improve transparency performance, step 4.
DETAILS :
Bug 689708 "Long processing time of PDF file"
Bug 689714 "Severe performance penalty for PDF transparency through to clist"
The patch completely removes .inittransparencymask because it is noop.
With the test case of the bug 689708 at 144 dpi
with default band size it reduces
the temp file size from 64.8Meg to 36.5 Meg,
and speeds up the rendering in 11 times.
With the test case of the bug 689714 at 144 dpi
with default band size it reduces
the temp file size from 12.0Meg to 3.3 Meg,
and speeds up the rendering in 11 times.
The speed factor depends on resolution.
EXPECTED DIFFERENCES :
None.
Modified: trunk/gs/src/gdevp14.c
===================================================================
--- trunk/gs/src/gdevp14.c 2008-02-27 18:39:31 UTC (rev 8552)
+++ trunk/gs/src/gdevp14.c 2008-02-27 19:22:57 UTC (rev 8553)
@@ -2063,9 +2063,6 @@
case PDF14_END_TRANS_GROUP:
code = gx_end_transparency_group(pis, pdev);
break;
- case PDF14_INIT_TRANS_MASK:
- code = gx_init_transparency_mask(pis, ¶ms);
- break;
case PDF14_BEGIN_TRANS_MASK:
code = gx_begin_transparency_mask(pis, pdev, ¶ms);
break;
@@ -2889,9 +2886,6 @@
put_value(pbuf, pparams->shape.alpha);
put_value(pbuf, pparams->bbox);
break;
- case PDF14_INIT_TRANS_MASK:
- *pbuf++ = pparams->csel;
- break;
case PDF14_BEGIN_TRANS_MASK:
put_value(pbuf, pparams->subtype);
*pbuf++ = pparams->replacing;
@@ -3000,9 +2994,6 @@
read_value(data, params.shape.alpha);
read_value(data, params.bbox);
break;
- case PDF14_INIT_TRANS_MASK:
- params.csel = *data++;
- break;
case PDF14_BEGIN_TRANS_MASK:
/* This is the largest transparency parameter at this time (potentially
* 1275 bytes in size if Background_components =
@@ -3134,7 +3125,7 @@
*ppcte = pcte;
if (op == opening_op)
return return_code;
- if (op != PDF14_INIT_TRANS_MASK && op != PDF14_SET_BLEND_PARAMS) {
+ if (op != PDF14_SET_BLEND_PARAMS) {
if (opening_op == PDF14_BEGIN_TRANS_MASK)
return 0;
if (opening_op == PDF14_BEGIN_TRANS_GROUP) {
@@ -3210,10 +3201,6 @@
if (*ppcte == NULL)
return 2;
return find_opening_op(PDF14_BEGIN_TRANS_GROUP, ppcte, 6);
- case PDF14_INIT_TRANS_MASK:
- if (*ppcte == NULL)
- return 0;
- return find_same_op(this, PDF14_INIT_TRANS_MASK, ppcte);
case PDF14_BEGIN_TRANS_MASK:
return 0;
case PDF14_END_TRANS_MASK:
Modified: trunk/gs/src/gdevpdft.c
===================================================================
--- trunk/gs/src/gdevpdft.c 2008-02-27 18:39:31 UTC (rev 8552)
+++ trunk/gs/src/gdevpdft.c 2008-02-27 19:22:57 UTC (rev 8553)
@@ -346,8 +346,6 @@
return pdf_begin_transparency_group(pis, pdev, params);
case PDF14_END_TRANS_GROUP:
return pdf_end_transparency_group(pis, pdev);
- case PDF14_INIT_TRANS_MASK:
- return gx_init_transparency_mask(pis, params);
case PDF14_BEGIN_TRANS_MASK:
return pdf_begin_transparency_mask(pis, pdev, params);
case PDF14_END_TRANS_MASK:
Modified: trunk/gs/src/gstrans.c
===================================================================
--- trunk/gs/src/gstrans.c 2008-02-27 18:39:31 UTC (rev 8552)
+++ trunk/gs/src/gstrans.c 2008-02-27 19:22:57 UTC (rev 8553)
@@ -408,36 +408,6 @@
return 0;
}
-int
-gs_init_transparency_mask(gs_state *pgs,
- gs_transparency_channel_selector_t csel)
-{
- gs_pdf14trans_params_t params = { 0 };
-
- if_debug2('v', "[v](0x%lx)gs_init_transparency_mask(%d)\n", (ulong)pgs,
- (int)csel);
-
- params.pdf14_op = PDF14_INIT_TRANS_MASK;
- params.csel = csel;
- return gs_state_update_pdf14trans(pgs, ¶ms);
-}
-
-int
-gx_init_transparency_mask(gs_imager_state * pis,
- const gs_pdf14trans_params_t * pparams)
-{
- gs_transparency_source_t *ptm;
-
- if_debug2('v', "[v](0x%lx)gx_init_transparency_mask(%d)\n", (ulong)pis,
- (int)pparams->csel);
- switch (pparams->csel) {
- case TRANSPARENCY_CHANNEL_Opacity: ptm = &pis->opacity; break;
- case TRANSPARENCY_CHANNEL_Shape: ptm = &pis->shape; break;
- default: return_error(gs_error_rangecheck);
- }
- return 0;
-}
-
/*
* We really only care about the number of spot colors when we have
* a device which supports spot colors. With the other devices we use
Modified: trunk/gs/src/gstrans.h
===================================================================
--- trunk/gs/src/gstrans.h 2008-02-27 18:39:31 UTC (rev 8552)
+++ trunk/gs/src/gstrans.h 2008-02-27 19:22:57 UTC (rev 8553)
@@ -29,7 +29,6 @@
PDF14_POP_DEVICE,
PDF14_BEGIN_TRANS_GROUP,
PDF14_END_TRANS_GROUP,
- PDF14_INIT_TRANS_MASK,
PDF14_BEGIN_TRANS_MASK,
PDF14_END_TRANS_MASK,
PDF14_SET_BLEND_PARAMS
@@ -41,7 +40,6 @@
"PDF14_POP_DEVICE ",\
"PDF14_BEGIN_TRANS_GROUP",\
"PDF14_END_TRANS_GROUP ",\
- "PDF14_INIT_TRANS_MASK ",\
"PDF14_BEGIN_TRANS_MASK ",\
"PDF14_END_TRANS_MASK ",\
"PDF14_SET_BLEND_PARAMS "\
@@ -154,9 +152,6 @@
int gs_end_transparency_mask(gs_state *pgs,
gs_transparency_channel_selector_t csel);
-int gs_init_transparency_mask(gs_state *pgs,
- gs_transparency_channel_selector_t csel);
-
int gs_discard_transparency_layer(gs_state *pgs);
/*
@@ -167,9 +162,6 @@
int gx_end_transparency_group(gs_imager_state * pis, gx_device * pdev);
-int gx_init_transparency_mask(gs_imager_state * pis,
- const gs_pdf14trans_params_t * pparams);
-
int gx_begin_transparency_mask(gs_imager_state * pis, gx_device * pdev,
const gs_pdf14trans_params_t * pparams);
Modified: trunk/gs/src/ztrans.c
===================================================================
--- trunk/gs/src/ztrans.c 2008-02-27 18:39:31 UTC (rev 8552)
+++ trunk/gs/src/ztrans.c 2008-02-27 19:22:57 UTC (rev 8553)
@@ -337,13 +337,6 @@
return mask_op(i_ctx_p, gs_end_transparency_mask);
}
-/* <mask#> .inittransparencymask - */
-static int
-zinittransparencymask(i_ctx_t *i_ctx_p)
-{
- return mask_op(i_ctx_p, gs_init_transparency_mask);
-}
-
/* ------ Soft-mask images ------ */
/* <dict> .image3x - */
@@ -478,7 +471,6 @@
{"5.begintransparencymaskimage", zbegintransparencymaskimage},
{"0.discardtransparencymask", zdiscardtransparencymask},
{"1.endtransparencymask", zendtransparencymask},
- {"1.inittransparencymask", zinittransparencymask},
{"1.image3x", zimage3x},
{"1.pushpdf14devicefilter", zpushpdf14devicefilter},
{"0.poppdf14devicefilter", zpoppdf14devicefilter},
More information about the gs-cvs
mailing list