[gs-cvs] rev 8854 - trunk/gs/lib

alexcher at ghostscript.com alexcher at ghostscript.com
Mon Jul 21 11:55:31 PDT 2008


Author: alexcher
Date: 2008-07-21 11:55:31 -0700 (Mon, 21 Jul 2008)
New Revision: 8854

Modified:
   trunk/gs/lib/gs_img.ps
Log:
Wrap string data source into a procedure when /ImscaleDecode filter is
installed, to ensure repeated reading of the string when the imagemask
needs more data than has the string. Allocate new composite objects
with the same global status as old ones. Bug 689889, customer 330.

DIFFERENCES:
None


Modified: trunk/gs/lib/gs_img.ps
===================================================================
--- trunk/gs/lib/gs_img.ps	2008-07-18 20:53:54 UTC (rev 8853)
+++ trunk/gs/lib/gs_img.ps	2008-07-21 18:55:31 UTC (rev 8854)
@@ -707,15 +707,19 @@
 	    2 index /Interpolate .knownget not { false } if and
 	    //filterdict /ImscaleDecode known and {
 	      % Apply interpolated imagemask scaling filter
-	      exch dup length dict .copydict
+	      exch .currentglobal exch dup .gcheck .setglobal
+              dup length dict .copydict
 	      dup dup /DataSource get
-	      mark /Width 3 index /Width get /Height 5 index /Height get .dicttomark
+              dup type /stringtype eq {
+                1 array astore cvx        % image.* operators read strings repeatesly
+              } if
+       	      mark /Width 3 index /Width get /Height 5 index /Height get .dicttomark
 	      /ImscaleDecode filter /DataSource exch put
 	      dup dup /Width get 4 mul /Width exch put
 	      dup dup /Height get 4 mul /Height exch put
 	      dup dup /ImageMatrix get
-	        4 4 matrix scale matrix concatmatrix /ImageMatrix exch put
-	      exch
+              { 4 0 0 4 0 0 } matrix concatmatrix /ImageMatrix exch put
+	      3 1 roll .setglobal
 	    } if
 	    exec
           }



More information about the gs-cvs mailing list