summaryrefslogtreecommitdiff
path: root/gs/base/gscsepr.c
AgeCommit message (Collapse)AuthorFilesLines
2012-05-10Delay of obtaining handles from CMM for default profilesMichael Vrhel1-1/+2
Obtaining the profiles handles for all the default profiles in the ICC manager eats up a tiny amount of time on startup. For some customers that start and stop gs over and over instead of running in server mode, this startup time is an issue. This fix performs the initialization in a lazy manner, obtaining the profile handle only when finally needed. This commit also fixed some issues with images that are in the LAB color space.
2012-04-29* Change of the tiffsep and psdcmyk device to planar devices.Robin Watts1-1/+1
This change in these devices was made to remove the 64 bit limitation of our existing color encoding which limits us to 8 colorants without compressed color encoding. The motivation for this work is that even with compressed color encoding we were starting to encounter files with transparency in particular that exceeded the capabilities of encoding, leading to dropped colors. With this fix, we encode through the clist the DeviceN color values. The buffers for the devices are maintained as planar buffers and fills occur with the high level device colors. Support was added to handle the devn color type through the shading code. The old code would have supported only 8 colorants in a shading. Support was also added to the transparency code to enable the use of the put_image procedure which for the planar device saves quite a bit of time since we can do the copy_planes proc directly from the pdf14 planar buffer to the planar memory device buffer. The pdf14 device also had to support fill_rectangle_hl_color. Changes were also made to the pattern tiling code so that we avoid any planar to chunky and back to planar conversions. These were being done to handle ROPs. Even when there were not any ROPs to perform we were going through strip_tile_rop operations since the gx_default_strip_tile_rectangle did not support planar to planar. That support is added with this commit. Support had to be added to the overprint compositor to support the new color type with fill_rectangle_hl_color. Support had to be added to the clist for fill_rectangle_hl_color. This required changes on both the writing and reading side. It is possible that the amount of data written for these commands could be reduced and that is commented in the code. Support also had to be added to the clip device and the mask_clip device as well for uncolored patterns. Also the tile clip device required support and the transparency device required support for copy_planes. This last function needs to be optimized. Both of the separation devices (tiffsep and psdcmyk) that we currently have are updated to support this method. There is an #if option in each device file to return the code back to the old chunky format. A new device procedure for handling strip tiling of masks with devn colors had to be added. Functionality was only required for the mem planar and clist devices. Also, it was found that the tiffsep and psdcmyk devices were maintaining separations (spot colors) across pages. That is if page 1 had a spot color, subsequent pages created a separation for that spot even if those pages did not contain it. This was fixed so that separations for a page are only created for the spots that occur on that page. A fix was also made to ensure that we had proper handling for the None colorants when they are part of the DeviceN color space.
2012-03-09colour handling - ensure ink names are maintained in the name table while in useKen Sharp1-0/+1
Bug #692884 "Empty Spotcolor Name in generated PDF" The ink name wasn't being marked as 'in use' by the colour space structure and so was being freed by a garbage collection, resulting in an empty name. Robin Watts supplied this patch which allows us to *much* more easily mark names as in use, and also kindly updated the colour handling as well. No differences expected.
2012-01-10Clean up of the icc color code.Michael Vrhel1-1/+1
Remove objects and redundant functions that were introduced over the past couple years. Found these while writing the documentation.
2011-07-08Rename object_tag to graphics_type_tag and move to the device for MT rendering.Ray Johnston1-1/+1
The memory->gs_lib_ctx->BITTAG hack was inherently NOT safe for use by multiple rendering threads. Devices that want to encode the tag info in the gx_color_index need the tag, so we have moved this to the device structure. Multiple rendering threads each have unique buffer devices, so this allows clist playback to set and use the appropriate tag as the bands are played back without thread interference. Rename the gs_object_tag_type_t to gs_graphics_type_t to make it more unique for grep based searching and prevent confusion with other uses of the term 'object'. Move the enum to gscms.h with the 'set' functions prototyped in gxdevcli.h. Just as for the device's cmm_dev_profile_t information, the tag needs to be forwarded by devices in the chain (clipper, compositor) so that these 'helper' filtering devices don't interfere with the setting of the tag. The tag value is maintained in all devices in the chain so a 'get_graphics_type_tag' dev_proc is not needed -- the dev->graphics_type_tag can be access directly. Previously, tags were not recorded except for devices that enabled tags. Now tags are tracked for all devices for use in selecting an ICC profile and a device can signal that it maintains tags by setting GS_DEVICE_ENCODES_TAGS for use by compositors that want to know whether or not to maintain a tag plane, such as the pdf14 device. Also replace the old 'get_object_type' that the anti-aliasing used with the single approach for consistency and to cure problems (not identifed) with using AA when other devices are interposed in the chain (clipper, compositor). EXPECTED_DIFFERENCES: Various 12-07D.PS PS LL3 CET files will show color differences on page 3 (GLOBINT) as described in Bug692334.
2011-05-15Change in device ICC profile handlingMichael Vrhel1-5/+2
This is the major portion of the code needed to achieve object dependent color management. This fixes the problems that existed in the previous code with the device parameters and introduces an array of ICC profiles in the device structure. The code was cluster pushed and showed some very minor differences in a couple files but they appear to be OK with bmpcmp. I still need to do further testing to verify that all the functionality is correct (e.g. make sure setting the text profile properly affects the text only). In addition, the rendering intent options need to be implemented. I also need to check that nothing was broken with respect to MT rendering and some of the devices that are not tested with cluster pushing (e.g. the display device and the x11alpha device).
2011-05-07Significant change in how the device profile is handled in ghostscript. ThisMichael Vrhel1-1/+5
change adds in a new device procedure called get_profile, which is going to typically be set to gx_forward_get_profile or gx_default_get_profile. Most internal devices like the pattern accumulator, the clip device, memory devices, will use the gx_forward_get_profile procedure. In this way, the profile is typically only maintained by the the target device. The gdevp14 device is the significant internal device that takes special handling due to the way that it can change its ICC profile based upon the current transparency group color space. The get_profile procedure also passes along information about the object type so that we will be able to easily add in the device dependent color management. The rendering intent, which can also be object dependent is also returned by the call. This change has been cluster tested and showed no differences.
2011-04-19Indent with spaces and strip trailing whitespace.Tor Andersson1-78/+77
2010-08-10Commit to move the ICC profile for the device within the device structure. ↵Michael Vrhel1-4/+4
This will make it easier to handle dynamic changes that may occur to the process color model for the device. Also a move of device profiles into non gc memory and removal of any references to profiles to the GC. A few progressions occur with this commit including Bug689918.pdf testpage.pdf. git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@11619 a1074d23-0009-0410-80fe-cf8c14f379e6
2010-06-23Fix for bug691415. When equivalent ICC profile is already created we should ↵Michael Vrhel1-2/+6
just use it. Thanks to Ken for getting the details together. git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@11424 a1074d23-0009-0410-80fe-cf8c14f379e6
2010-06-05Fix for indeterminisms in some PS files where the alternate tint transform ↵Michael Vrhel1-0/+9
color space for a DeviceN or Separation color space is CIE based. Previously we were returning either CMYK, or RGB based based upon the channel count for the CIE space. Now we are returning an equivalent ICC based color space. Also minor fix for uninitialized memory in generated profile. git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@11356 a1074d23-0009-0410-80fe-cf8c14f379e6
2010-06-01Rename of gsicccache.c/h to gsicc_cache.c/h and gsiccmanage.c/h to ↵Michael Vrhel1-1/+1
gsicc_manage.c/h to fall in line with the name space of the other files that came from the icc branch. Currently working on the documentation and it is clear that this is needed (and I wish I had done it earlier). git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@11346 a1074d23-0009-0410-80fe-cf8c14f379e6
2010-04-29Initial hooks for handing named colors in the icc work flow. When finished, ↵Michael Vrhel1-2/+30
this will demonstrate the use of a look-up-table to map from named colors to either CIELAB or device values. If CIELAB values are used, as they will be in this example, they will be scaled according to the tint value to a value between 100% colorant and the D50 white point. Obviously more accurate results could be achieved through the use of a 1-D lut from tint values to CIELAB values. In any event, the resulting CIELAB value will be transformed through the current device profile to obtain device values . Note that this entire process only occurs when we would normally be using the alternate tint transform and it is essentially a replacement for that transform. Full separation devices will not go through this process. git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@11152 a1074d23-0009-0410-80fe-cf8c14f379e6
2010-04-23Fix so that if base color space of Separation space is PS CIE color space, ↵Michael Vrhel1-1/+7
then the proper ICC profile is use. Fixes crash in 09-34.PS git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@11111 a1074d23-0009-0410-80fe-cf8c14f379e6
2010-04-22Fix so that spot colors that have a CIELAB alternate color space are ↵Michael Vrhel1-0/+6
properly concretized. git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@11101 a1074d23-0009-0410-80fe-cf8c14f379e6
2010-04-06Merge trunk into branch through rev 11025Michael Vrhel1-2/+2
git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@11026 a1074d23-0009-0410-80fe-cf8c14f379e6
2010-01-04Removal of most of the custom color callback ifdef'sMichael Vrhel1-28/+0
git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@10581 a1074d23-0009-0410-80fe-cf8c14f379e6
2009-11-11Fixes to have the ICC profile reference count properly set and updated when ↵Michael Vrhel1-1/+1
it is assigned to a color space and when the color space reference count is incremented or decremented. Also change so that an nclr ICC profile will drive the laydown order of the deviceN colors when it is so specified. git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@10309 a1074d23-0009-0410-80fe-cf8c14f379e6
2008-08-29Split the source tree into two new directories.Ralph Giles1-0/+492
PSSRC files are now in 'gs/psi'. GLSRC files are now in 'gs/base'. This is to facilitate build modularization and merging in the ghostpdl tree. NOTE: msvc32.mak is now in psi, not src. git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@9048 a1074d23-0009-0410-80fe-cf8c14f379e6