diff options
author | Michael Vrhel <michael.vrhel@artifex.com> | 2020-05-01 16:24:38 -0700 |
---|---|---|
committer | Michael Vrhel <michael.vrhel@artifex.com> | 2020-05-01 16:24:38 -0700 |
commit | 8c432810d36e24613b84f8506ab3929f9d13e612 (patch) | |
tree | d72318d3ee6e5deb96a0a388c288ef157ed7cea5 /base/gsicc_cache.c | |
parent | d41990615baaee9bba6ce7ae3e5a025a71744c51 (diff) | |
download | ghostpdl-8c432810d36e24613b84f8506ab3929f9d13e612.tar.gz |
Squashed commit of the page_group branchghostpdl-9.52-test-base-4
The issue this branch is trying to solve is to ensure
that the alpha blending occurs in the proper page group
color space. If the page group is CMYK and the device is
RGB then the final alpha blend must occur prior to the
color conversion. Currently with the head code this is
not the case. This work required a significant rework
of how the transparency group pop occurred since if it
is the final group, the blend will not occur until the
put_image operation. The group color handling was
completely reworked and simplified. The reworked code
now maintains a group_color object that is related to
its own color rather than the parent as before.
In addition, during the push_device operation, a buffer
is not created. Previously an entire page buffer was
created. If we have a page group that is smaller than
the whole page, this will save us in space. The downside
of this is that we need to ensure we have a buffer in place
when the first drawing operation occurs.
There were several issues with the bitrgbtags devices as
well as the pngalpha and psdcmyk16 devices that had to
be considered during the put_image operation.
operation
Diffstat (limited to 'base/gsicc_cache.c')
-rw-r--r-- | base/gsicc_cache.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/base/gsicc_cache.c b/base/gsicc_cache.c index f77232e10..bc1d7a9f5 100644 --- a/base/gsicc_cache.c +++ b/base/gsicc_cache.c @@ -1790,9 +1790,11 @@ gsicc_init_buffer(gsicc_bufferdesc_t *buffer_desc, unsigned char num_chan, unsig buffer_desc->num_rows = num_rows; buffer_desc->pixels_per_row = pixels_per_row; - /* sample endianess is consistent across platforms */ +#if ARCH_IS_BIG_ENDIAN + buffer_desc->little_endian = false; +#else buffer_desc->little_endian = true; - +#endif } /* Return the proper component numbers based upon the profiles of the device. |