summaryrefslogtreecommitdiff
path: root/psi/iscannum.h
diff options
context:
space:
mode:
authorMichael Vrhel <michael.vrhel@artifex.com>2021-03-11 15:14:21 -0800
committerMichael Vrhel <michael.vrhel@artifex.com>2021-03-12 11:32:35 -0800
commit16e985473982a1a7ca9f2a52d1ee2c6225008524 (patch)
tree2a97918108879e784ba297476032a90ae0ec33bb /psi/iscannum.h
parent4f996d315eb9e2d2b371a5e92d983ae0fcd05d2c (diff)
downloadghostpdl-16e985473982a1a7ca9f2a52d1ee2c6225008524.tar.gz
Bug 703414 : Halftone artifacts
There are two different representations of the turn-on-sequence in GS. One of them uses an array of unsigned short integers that indicate what bits get turned on. The array stores an address offset into the bitmap tile that is created for a particular level. The decision to use this representation is made in gsht.c in the gx_ht_alloc_theshold_order method and is based upon the width and height of the threshold array which indicates the total number of addresses or offsets into the tile to reference which bits get turned on in the tile by the turn-on-sequence. The tiles themselves however are forced to have their rows raster aligned meaning that if w*h <= 65535 the offsets into the tile dots can be larger than 65535, which will not fit in the short turn-on-sequence array. The code uses a different representation for the TOS if the number of elements is less than 2000. Then it stores a pointer to a structure for every element. That is the "default" implementation. Here a uint (32-bit) implementation is added for cases where the tile is larger than 65536 (e.g. bigger than 256 x 256). The implementation is the same as the ushort case, but just uses four byte offsets for the TOS.
Diffstat (limited to 'psi/iscannum.h')
0 files changed, 0 insertions, 0 deletions