diff options
author | Michael Vrhel <michael.vrhel@artifex.com> | 2021-03-11 15:14:21 -0800 |
---|---|---|
committer | Michael Vrhel <michael.vrhel@artifex.com> | 2021-03-12 11:32:35 -0800 |
commit | 16e985473982a1a7ca9f2a52d1ee2c6225008524 (patch) | |
tree | 2a97918108879e784ba297476032a90ae0ec33bb /base/gxdcconv.h | |
parent | 4f996d315eb9e2d2b371a5e92d983ae0fcd05d2c (diff) | |
download | ghostpdl-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 'base/gxdcconv.h')
0 files changed, 0 insertions, 0 deletions