Age | Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
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.
|
|
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.
|
|
Remove objects and redundant functions that were introduced over the
past couple years. Found these while writing the documentation.
|
|
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.
|
|
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).
|
|
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.
|
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
properly concretized.
git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@11101 a1074d23-0009-0410-80fe-cf8c14f379e6
|
|
git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@11026 a1074d23-0009-0410-80fe-cf8c14f379e6
|
|
git-svn-id: http://svn.ghostscript.com/ghostscript/branches/icc_work@10581 a1074d23-0009-0410-80fe-cf8c14f379e6
|
|
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
|
|
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
|