The doc comments of read_samples, with_room and extra_samples_tiff_rgba
name the SampleFormat check, and those of tiff_source and tiff_inks name
the 64-sample limit, the SampleFormat check and the decoder row check.
read_samples gives the decoder's limit as 256 MiB.
the_planar_copy_is_allocated_at_its_length copies 33 samples and checks
that the copy has room for at least 33 and fewer than 64, the room a
copy grown as it was filled ends with, rather than an exact capacity.
A CMYK TIFF with two or more samples past its inks and its ExtraSamples
values, or with no ExtraSamples tag, which the decoder gives no color
type, now opens opaque when none of those values names an alpha. It
failed to open before; one that names an alpha already read with it.
The 64-sample limit is now checked against the file's SamplesPerPixel
before anything is decoded. It was checked against the samples the
decoder gives, which is five for any CMYK file whose first ExtraSamples
value is alpha, so a small file with 65,535 samples a pixel was read and
the decoder took a row of every sample (1 GiB for a 16-bit file 8,192
pixels wide) before reading its data.
- The row the decoder reads each strip or tile into, when the file has
more samples a pixel than it gives, counts in the allowance.
- Files whose samples aren't unsigned integers are refused from their
tags; no reader takes them.
- The same checks run before CMYK inks and plates are decoded.
- The copy that puts a planar file's samples pixel by pixel is allocated
once, at its length, so the reader holds no more than it counts.
A CMYK or grayscale TIFF with extra samples is now read only when its
decoded samples, the copy that puts a planar file's samples pixel by
pixel and the RGBA pixels together fit the decoding allowance; the
check counted the decoded samples alone, so a small compressed file
could make the reader hold about twice the allowance plus the RGBA
image.
- The decoder may decode no more than the counted samples, and reads no
strip or tile of more compressed bytes than the file holds.
- A pixel of more than 64 samples is not read (VectorCraft's own limit).
The doc comments of with_room and of the large-file test, and the
progress-doc line, gave the tiff decoder's default decoding buffer
(268,435,456 bytes) as 256 MB.
A document saved with a CMYK TIFF whose alpha follows another extra
sample keeps it as a CMYK image with its ink amounts, so EPS and PDF
export write the same inks as before; Open and Place still read such a
file with its alpha.
- A CMYK file with two or more samples past its inks and its
ExtraSamples values, which the decoder gives no color type, reads the
alpha that one of those values names, and its Orientation tag is read.
- A TIFF with extra samples whose samples take more than the decoder's
256 MB buffer reads, up to the decoding allowance.
- A file read as black-is-zero gray is read in place instead of copied.
A CMYK or grayscale TIFF reads its alpha from the first extra sample whose
ExtraSamples value is 1 or 2, wherever it comes among the extra samples, at
8 and 16 bits, chunky or planar. TIFF 6.0 gives each extra sample its own
ExtraSamples value, in order, and asks readers to skip extra samples they do
not use.
- A CMYK file with alpha after an unspecified extra sample was kept as
opaque inks; it is now shown as RGB with its alpha.
- A grayscale file with alpha after an unspecified extra sample opened
opaque.
- A six-sample CMYK file whose ExtraSamples tag lists only an unspecified
value no longer reads that sample as transparency.
- A white-is-zero grayscale file with an alpha channel opens; it failed to
read before.