[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