Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								62f28d9968 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Teach the generator how to handle tags of type Undefined  
							
							... 
							
							
							
							This tag type is a bit different as even if it fits in the general
definition given in the TIFF specification. That is the value will be of
one specified type multiplied by a known count. Having a
`Vector<Variant<u8, ...>>` will be very painful to use. So let's deviate
a bit from the normal way and use a `ByteBuffer` directly instead this
complicated type. 
							
						 
						
							2023-12-02 10:36:02 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								e6fc18d96a 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Support TIFF 5.0 LZW images  
							
							... 
							
							
							
							This makes us decode `quad-lzw.tif` from libtiff's test suite:
https://libtiff.gitlab.io/libtiff/images.html  
							
						 
						
							2023-12-02 08:04:44 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								ce6cd4f45f 
								
							 
						 
						
							
							
								
								LibGfx/GIF: Use LZWDecoder::decode_all()  
							
							
							
						 
						
							2023-12-01 12:58:14 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								cc816b486c 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Use LZWDecoder::decode_all()  
							
							
							
						 
						
							2023-12-01 12:58:14 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Schumacher 
								
							 
						 
						
							
							
							
							
								
							
							
								197331c922 
								
							 
						 
						
							
							
								
								AK: Reject BitStream reads beyond EOF by default  
							
							... 
							
							
							
							The only exception to this is the lossless WebP decoder, which
legitimately relies on this behavior, even upstream. 
							
						 
						
							2023-12-01 12:48:18 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								9836a9ad0e 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Introduce a code generator  
							
							... 
							
							
							
							This will allow us to generate code that handle and provide easy access
to metadata stored in TIFF's tags. The generator is a Python script, and
it output both TIFFMetadata.h and TIFFTagHandler.cpp files.
The generator will definitely need some update to support all TIFF and
EXIF tags, but that will still be easier than writing everything
ourselves.
Some small modifications are needed in TIFFLoader.cpp to make it
compatible with the new `Metadata` class. 
							
						 
						
							2023-11-27 09:07:16 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Sam Atkins 
								
							 
						 
						
							
							
							
							
								
							
							
								2c24192e1f 
								
							 
						 
						
							
							
								
								LibGfx: Move FourCC to its own file  
							
							... 
							
							
							
							These are used in fonts too, so let's not limit them to ImageLoader. 
							
						 
						
							2023-11-24 08:42:46 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								1afdf7f3c7 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Take the TIFF value by rvalue reference in handle_tag()  
							
							
							
						 
						
							2023-11-18 11:14:37 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								4ab2903e25 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Make TIFFLoadingContext::handle_tag be a free function  
							
							... 
							
							
							
							And move it to another file. This code is going to be generated soon, so
let's put it in another file. 
							
						 
						
							2023-11-18 11:14:37 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								34d91dec5b 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Extract metadata-related definition to their own file  
							
							
							
						 
						
							2023-11-18 11:14:37 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								1d1e7abba7 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Put the TIFFLoadingContext class in a TIFF namespace  
							
							
							
						 
						
							2023-11-18 11:14:37 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								b78f93d0b5 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Put metadata fields in their own struct  
							
							
							
						 
						
							2023-11-18 11:14:37 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Nico Weber 
								
							 
						 
						
							
							
							
							
								
							
							
								bfe27228a3 
								
							 
						 
						
							
							
								
								LibPDF+LibGfx: Don't invert CMYK channels in JPEG data in PDFs  
							
							... 
							
							
							
							This is a hack: Ideally we'd have a CMYK Bitmap pixel format,
and we'd convert to rgb at blit time. Then we could also apply color
profiles (which for CMYK images are CMYK-based).
Also, the colors for our CMYK->RGB conversion are off for PDFs,
and we have distinct codepaths for this in Gfx::Color (for paths)
and JPEGs. So when we fix that, we'll have to fix it in two places.
But this doesn't require a lot of code and it's a huge visual
progression, so let's go with it for now. 
							
						 
						
							2023-11-17 22:32:40 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Nico Weber 
								
							 
						 
						
							
							
							
							
								
							
							
								000d9da73c 
								
							 
						 
						
							
							
								
								LibGfx: Allow passing FilterType::None to unfilter_scanline()  
							
							... 
							
							
							
							Makes calling this in LibPDF less awkward, and there's no reason
not to allow this. 
							
						 
						
							2023-11-17 19:09:50 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Nico Weber 
								
							 
						 
						
							
							
							
							
								
							
							
								574357ef00 
								
							 
						 
						
							
							
								
								LibGfx: Use ceil_div() in png decoder  
							
							... 
							
							
							
							No behavior change, arguably easier to read. 
							
						 
						
							2023-11-17 19:09:50 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Nico Weber 
								
							 
						 
						
							
							
							
							
								
							
							
								5a70813d11 
								
							 
						 
						
							
							
								
								LibGfx: Make unfilter_scanline() a static PNGImageDecoderPlugin method  
							
							... 
							
							
							
							That way, LibPDF will be able to call it.
No behavior change. 
							
						 
						
							2023-11-17 19:09:50 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Nico Weber 
								
							 
						 
						
							
							
							
							
								
							
							
								588d6fab22 
								
							 
						 
						
							
							
								
								LibGfx+LibPDF: Create filter_type() for converting u8 to FilterType  
							
							... 
							
							
							
							...and use it in LibPDF.
No behavior change. 
							
						 
						
							2023-11-17 19:09:50 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Nico Weber 
								
							 
						 
						
							
							
							
							
								
							
							
								6b2c60404d 
								
							 
						 
						
							
							
								
								LibGfx: Use PNG::paeth_predictor() in png decoding path  
							
							... 
							
							
							
							Increases code reuse between encoder and decoder a tiny bit.
No behavior change.
(We should use the vectorized version in the future! But first,
we should learn to do the prediction in-place.) 
							
						 
						
							2023-11-17 19:09:50 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								272be6b20a 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Add support for LZW compression  
							
							
							
						 
						
							2023-11-12 13:56:27 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								4f5a0227e2 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Add support for the differencing predictor  
							
							... 
							
							
							
							The differencing predictor is a different way to encode pixels in TIFF
images. Every pixel is encoded as a difference with the previous column
of the image, except the first column, obviously.
This parameter is materialized by a new tag for which reading was also
implemented. 
							
						 
						
							2023-11-12 13:56:27 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Nicolas Ramz 
								
							 
						 
						
							
							
							
							
								
							
							
								68e916490b 
								
							 
						 
						
							
							
								
								LibGfx/JPEGWriter: Fix crash on macOS when csize coefficient is 0  
							
							... 
							
							
							
							This fixes  #21108  
							
						 
						
							2023-11-09 16:07:28 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Schumacher 
								
							 
						 
						
							
							
							
							
								
							
							
								a2f60911fe 
								
							 
						 
						
							
							
								
								AK: Rename GenericTraits to DefaultTraits  
							
							... 
							
							
							
							This feels like a more fitting name for something that provides the
default values for Traits. 
							
						 
						
							2023-11-09 10:05:51 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								5e2b049de8 
								
							 
						 
						
							
							
								
								LibCompress/LZW: Use a LittleEndianBitStream  
							
							... 
							
							
							
							No need to manually implement bit stream logic when we have a helper for
this task. 
							
						 
						
							2023-11-08 18:19:34 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								00ad8419cf 
								
							 
						 
						
							
							
								
								LibGfx+LibCompress: Extract the LZW decoder and move it to LibCompress  
							
							... 
							
							
							
							Let's put this state-of-the-art decoder from the 80's in its own file in
order to reuse it with other formats, such as TIFF or PDF. 
							
						 
						
							2023-11-08 18:19:34 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								a86c0ac003 
								
							 
						 
						
							
							
								
								LibGfx/GIF: Use east-side const  
							
							
							
						 
						
							2023-11-08 18:19:34 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								b96a5f4265 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Avoid overflow when creating bitplane data buffer  
							
							
							
						 
						
							2023-11-08 09:36:01 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								5e1017bcf1 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Avoid buffer overrun when reading bitplane data  
							
							
							
						 
						
							2023-11-08 09:36:01 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								f56ae8c0e9 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Ensure CMAP chunk size matches expected value  
							
							... 
							
							
							
							The color map should be 3 bytes per pixel and should contain
`2^nPlanes` pixels. We now return an error if the color map isn't the
size we expect. 
							
						 
						
							2023-11-08 09:36:01 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								61eb754f63 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Add validation for header fields  
							
							... 
							
							
							
							We now exit early if a header field is set to a value that we don't
currently support. 
							
						 
						
							2023-11-08 09:36:01 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								bed7b33daa 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Don't attempt to decode a BODY chunk without a color map  
							
							... 
							
							
							
							While this isn't disallowed by the specification, it is not something
we currently support. Instead of crashing we now return an error in
this case. 
							
						 
						
							2023-11-08 09:36:01 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								75731f9c50 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Avoid buffer overruns when decompressing data  
							
							
							
						 
						
							2023-11-08 09:36:01 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								ae6c39e501 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Ensure decompressed body chunk data is the correct length  
							
							
							
						 
						
							2023-11-08 09:36:01 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								81794df280 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Add support for images with PackBits compression  
							
							
							
						 
						
							2023-11-08 09:28:36 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								472a886dfc 
								
							 
						 
						
							
							
								
								LibGfx/TIFF: Refactor the decoding loop  
							
							... 
							
							
							
							This is done to ease the introduction of the support of other
compressions. 
							
						 
						
							2023-11-08 09:28:36 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								75caccafa4 
								
							 
						 
						
							
							
								
								LibGfx: Add a TIFF loader  
							
							
							
						 
						
							2023-11-06 12:29:30 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								dc5bb5a4cc 
								
							 
						 
						
							
							
								
								LibGfx: Sort entries in the definition of ImagePluginInitializer  
							
							
							
						 
						
							2023-11-06 12:29:30 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								438e9e146c 
								
							 
						 
						
							
							
								
								LibGfx/JPEG: Refill reservoir if necessary when discarding bits  
							
							... 
							
							
							
							This condition was hit 157 times out of the 109,233 JPEG images in the
Govdocs1 corpus. This change allows all of these
images to load correctly. 
							
						 
						
							2023-11-05 09:01:15 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								9ed8c0b183 
								
							 
						 
						
							
							
								
								LibGfx/JPEG: Propagate errors when creating JPEGLoadingContext  
							
							... 
							
							
							
							This allows the JPEG fuzzer to make progress. 
							
						 
						
							2023-10-29 21:39:29 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lucas CHOLLET 
								
							 
						 
						
							
							
							
							
								
							
							
								e721c74598 
								
							 
						 
						
							
							
								
								LibGfx: Provide an implementation for ImageDecoderPlugin::icc_data()  
							
							
							
						 
						
							2023-10-29 07:21:10 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								2311e28d63 
								
							 
						 
						
							
							
								
								LibGfx/BMPLoader: Mitigate potential overflows when decoding bitmap DIB  
							
							
							
						 
						
							2023-10-25 05:52:29 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								8ec26f3b54 
								
							 
						 
						
							
							
								
								LibGfx/BMPLoader: Account for header size when checking DIB bounds  
							
							
							
						 
						
							2023-10-25 05:52:29 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								023309fdc4 
								
							 
						 
						
							
							
								
								LibGfx/JPEGLoader: Check array access bounds when building lookup table  
							
							
							
						 
						
							2023-10-20 07:17:27 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									circl 
								
							 
						 
						
							
							
							
							
								
							
							
								a9208a18ca 
								
							 
						 
						
							
							
								
								LibGfx/BMPLoader: Make sure height passed to Gfx::Bitmap is positive  
							
							... 
							
							
							
							BMP files encode the direction of the rows with the sign of the height.
Our BMP decoder already makes all the proper checks, however when
constructing the Gfx::Bitmap, didn't actually make the height positive.
Boog neutralized :^) 
							
						 
						
							2023-10-19 08:31:36 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								f4a89c31c6 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Explicitly fail decoding if body chunk isn't present  
							
							... 
							
							
							
							Previously, the decoder would crash in this case. 
							
						 
						
							2023-10-17 10:24:27 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								9e3ee0e2b5 
								
							 
						 
						
							
							
								
								LibGfx/ILBM: Avoid buffer overrun when reading header chunk  
							
							
							
						 
						
							2023-10-15 08:37:27 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a396bb0c0b 
								
							 
						 
						
							
							
								
								LibGfx: Remove indexed palette formats from Bitmap and Painter  
							
							... 
							
							
							
							Nobody was actually using these formats anymore, and this simplifies
and shrinks the code. :^) 
							
						 
						
							2023-10-12 07:39:05 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								bcbaad0b1d 
								
							 
						 
						
							
							
								
								LibGfx: Make BMP decoder always produce BGRA8888 or BGRx8888 bitmaps  
							
							... 
							
							
							
							This was the only remaining codec that produced IndexedN bitmaps.
By removing them, we'll be able to get rid of those formats and simplify
the Bitmap and Painter classes. 
							
						 
						
							2023-10-12 07:39:05 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								a673062084 
								
							 
						 
						
							
							
								
								LibGfx/BMPLoader: Ensure data offset cannot point past EOF  
							
							
							
						 
						
							2023-10-11 14:36:12 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								bc6638682d 
								
							 
						 
						
							
							
								
								LibGfx/BMPLoader: Ensure DIB size and offset are within expected range  
							
							
							
						 
						
							2023-10-10 05:50:02 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tim Ledbetter 
								
							 
						 
						
							
							
							
							
								
							
							
								4cc2fc4afa 
								
							 
						 
						
							
							
								
								LibGfx/PNGLoader: Remove redundant IHDR bit depth validation  
							
							
							
						 
						
							2023-10-08 10:46:00 +02:00