summaryrefslogtreecommitdiff
path: root/base/gsicc_cache.c
diff options
context:
space:
mode:
authorMichael Vrhel <michael.vrhel@artifex.com>2020-05-01 16:24:38 -0700
committerMichael Vrhel <michael.vrhel@artifex.com>2020-05-01 16:24:38 -0700
commit8c432810d36e24613b84f8506ab3929f9d13e612 (patch)
treed72318d3ee6e5deb96a0a388c288ef157ed7cea5 /base/gsicc_cache.c
parentd41990615baaee9bba6ce7ae3e5a025a71744c51 (diff)
downloadghostpdl-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.c6
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.