Nicolas Ramz
5e7e98cd3c
LibGfx/ILBMLoader: Add support for transparent color
2024-01-08 07:21:27 -07:00
Nicolas Ramz
fc5b6e4dda
LiGfx/ILBMLoader: Don't throw if malformed bitplane can be decoded
...
Some apps seem to generate malformed images that are accepted
by most readers. We now only throw if malformed data would lead to
a write outside the chunky buffer.
2024-01-08 07:21:27 -07:00
Lucas CHOLLET
f389c1cdba
LibGfx+LibPDF: Use LibCompress' implementation of the PackBits decoder
...
No need to have these three copies :^)
2023-12-27 17:40:11 +01:00
Nicolas Ramz
6ccdb1dc72
LibGfx/ILBMLoader: Add support for 24bit files
2023-12-21 09:19:30 +00:00
Nicolas Ramz
caa13d3960
LibGfx/ILBMLoader: Stop the decoding loop when plane buffer is full
...
This allows decoding files (eg. 24bit) that may have been badly encoded.
2023-12-21 09:19:30 +00:00
Nicolas Ramz
cd6c7f3fc4
LibGfx/ILBMLoader: Add support for PC DeluxePaint files
2023-12-13 10:39:13 +00:00
Nicolas Ramz
8d68f94282
LibGfx/ILBMLoader: Add HAM6/HAM8 support
2023-12-07 10:08:29 -07:00
Idan Horowitz
1a35621930
LibGfx: Eliminate multiplication integer overflow in planar_to_chunky
...
Multiplying two u16s will result in a i32 sized result, which will
overflow to negative values for large input values.
Fixes ossfuzz-64198.
2023-12-02 11:46:03 +01: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
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
e721c74598
LibGfx: Provide an implementation for ImageDecoderPlugin::icc_data()
2023-10-29 07:21:10 +00: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
Nicolas Ramz
7b4b5b735b
LibGfx/ILBMLoader: Add support for EHB mode
2023-10-03 16:09:55 -06:00
Nicolas Ramz
b8f8b22aa5
LibGfx/ILBM: Add support for uncompressed files
2023-09-14 21:00:54 +01:00
Nicolas Ramz
fda5590313
LibGfx/ILBM: Add an IFF-ILBM decoder :)
...
IFF was a generic container fileformat that was popular on the Amiga
since it was the only file format supported by Deluxe Paint.
ILBM is an image format popular in the late eighties/nineties
that uses the IFF container.
This is a very first version of the decoder that only supports
(byterun) compressed files with bpp <= 8.
Only the minimal chunks are decoded: CMAP, BODY, BMHD.
I am planning to add support for the following variants:
- EHB (32 colours + lighter 32 colours)
- HAM6 / HAM8 (special mode that allowed to display the whole Amiga
4096 colours / 262 144 colours palette)
- TrueColor (24bit)
Things that could be fun to do:
- Still images could be animated using color cycle information
2023-08-15 18:36:11 +01:00