[gs-cvs] rev 7861 - trunk/gs/src

leonardo at ghostscript.com leonardo at ghostscript.com
Tue Apr 17 07:28:46 PDT 2007


Author: leonardo
Date: 2007-04-17 07:28:46 -0700 (Tue, 17 Apr 2007)
New Revision: 7861

Modified:
   trunk/gs/src/gxpcmap.c
Log:
Implementing high level patterns, step 9.

DETAILS : 

This fixes the bug 688396, step 9
It switches on the clist-based implementation of patterns.
We arbitrary set the 1Mb threshold for large patterns.
The threshold is not perfect - see (3) below.

Rather it fixes the bug, we would like to do further improvements someday :

1. Large uncolored patterns are not implemented. Need a color substitution forwarding device.
2. Get rid of non_gc_memory in the pattern clist.
3. For CET tests the choice of image-based or clist-based representation must be smarter than 
   MAX_BITMAP_PATTERN_SIZE threshold. While rendering a small pattern to memory device,
   check whether PaintProc applies another apttern. If so, discard the image and
   convert to the clist representation with running PaintProc at second time.
   Need a special forwarding device for the pattern color detection.
4. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of imagemask inside a pattern stream with ppmraw -r600 245-13.ps, 269-01.ps
5. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a wrong rendering of image inside a pattern stream with pkmraw -r600 035-07.ps
6. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   a minor coordinate difference (+-1 pixel) appeared with pkmraw -r600 244-01.ps
7. When compiled with MAX_BITMAP_PATTERN_SIZE 0,
   the rendeting is slow with pkmraw -r600 245-13.ps, 269-01.ps 
8. (time optimization) clist_init is called twice when creating a clist-based pattern.
9. (time optimization) While a clist playback for a large pattern cell,
   set the bbox for the current clipping path for the clist device,
   to allow a faster skipping of elements outside the bbox.
10. (space optimization) Store pattern stream in the pattern cache memory; properly 
   account the stream size while computing the cache memory usage.
11. (space optimization, 32K per pattern) Purge and free clist buffer 
   (which includes a tile cache) when a clist-based pattern is not active
   between reading and writing. Why the tile cace is a property of a clist object ?
   We would like to have a single global tile cache.

EXPECTED DIFFERENCES :

None.


Modified: trunk/gs/src/gxpcmap.c
===================================================================
--- trunk/gs/src/gxpcmap.c	2007-04-17 14:09:50 UTC (rev 7860)
+++ trunk/gs/src/gxpcmap.c	2007-04-17 14:28:46 UTC (rev 7861)
@@ -173,7 +173,7 @@
 {
 }
 
-#define MAX_BITMAP_PATTERN_SIZE max_long
+#define MAX_BITMAP_PATTERN_SIZE (1024*1024)
 
 /* Allocate a pattern accumulator, with an initial refct of 0. */
 gx_device_forward *



More information about the gs-cvs mailing list