1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 15:37:34 +00:00
serenity/Userland/Libraries/LibGfx/ImageFormats
Lucas CHOLLET cd9bb985d4 LibGfx/JPEGXL: Add support for the self-correcting predictor
This predictor is much more complicated than the others. Indeed, to be
computed, it needs its own value but for other pixels. As you can guess,
implementing it involved the introduction of a structure to hold that
data.

Fundamentally, this predictor uses the value of the error between the
predicted value and the true value (aka decoded value) of pixels around.
One of this computed error (namely max_error) is used as a property, so
this patch also solves a FIXME in `get_properties`.

To ease the access to value that are close in the channel and moving
their values around, this patch adds a `Neighborhood` struct which holds
this data. It has been used in `prediction()` and it allowed to simplify
the signature and to remove the explicit retrieval of the underlying
data.

All this work allows us to decode the default image that appears when
loading `https://jxl-art.surma.technology`. However, we still render it
incorrectly due to the lack of support for orientation values different
from 1.
2023-08-05 06:30:59 +02:00
..
ISOBMFF LibGfx: Add initial ISO BMFF parsing and a utility to print file info 2023-07-27 12:02:37 +01:00
BMPLoader.cpp LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
BMPLoader.h LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
BMPWriter.cpp LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
BMPWriter.h LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
BooleanDecoder.cpp LibGfx/LibVideo: Check for overreads only at end of a VPX range decode 2023-06-10 07:17:12 +02:00
BooleanDecoder.h LibGfx/LibVideo: Check for overreads only at end of a VPX range decode 2023-06-10 07:17:12 +02:00
DDSLoader.cpp LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
DDSLoader.h LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
GIFLoader.cpp LibGfx/GIF: Decode the header in create() 2023-07-15 09:44:30 +02:00
GIFLoader.h LibGfx/GIF: Only use a FixedMemoryStream 2023-07-15 09:44:30 +02:00
ICOLoader.cpp LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
ICOLoader.h LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
ImageDecoder.cpp LibGfx/JPEGXL: Add a JPEG-XL decoder :^) 2023-07-21 10:47:34 -06:00
ImageDecoder.h LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
JPEGLoader.cpp LibGfx/JPEG: Don't fail to decode images with non-compliant ICC profile 2023-07-30 05:10:08 +02:00
JPEGLoader.h LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
JPEGShared.h LibGfx/JPEG: Put generic definitions in a shared header 2023-06-22 21:13:04 +02:00
JPEGWriter.cpp Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
JPEGWriter.h LibGfx/JPEG: Take the quality as an argument instead of hardcoding it 2023-07-04 00:01:06 +02:00
JPEGWriterTables.h LibGfx/JPEG: Add a JPEG encoder :^) 2023-06-22 21:13:04 +02:00
JPEGXLLoader.cpp LibGfx/JPEGXL: Add support for the self-correcting predictor 2023-08-05 06:30:59 +02:00
JPEGXLLoader.h LibGfx/JPEGXL: Add a JPEG-XL decoder :^) 2023-07-21 10:47:34 -06:00
PBMLoader.cpp LibGfx/PortableFormat: Simplify the State enum 2023-07-11 14:16:33 +01:00
PBMLoader.h LibGfx/PortableFormat: Propagate errors from read_image_data() 2023-03-24 10:56:58 +01:00
PGMLoader.cpp LibGfx/PortableFormat: Simplify the State enum 2023-07-11 14:16:33 +01:00
PGMLoader.h LibGfx/PortableFormat: Propagate errors from read_image_data() 2023-03-24 10:56:58 +01:00
PNGLoader.cpp LibGfx/PNG: Remove the useless HeaderDecoded state 2023-07-17 06:49:03 +01:00
PNGLoader.h LibGfx/PNG: Decode the header in create() and remove initialize() 2023-07-17 06:49:03 +01:00
PNGShared.h LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
PNGWriter.cpp LibGfx/PNGWriter: Use a better limit for scanline capactiy 2023-07-12 07:51:54 +01:00
PNGWriter.h LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
PortableFormatWriter.cpp LibGfx/PortableFormat: Use FixedArray::unchecked_at 2023-05-09 11:18:46 +02:00
PortableFormatWriter.h LibGfx/PortableFormat+image: Make encode take a Stream 2023-05-09 11:18:46 +02:00
PortableImageLoaderCommon.h LibGfx/PortableFormat: Read the header during initialization 2023-07-11 14:16:33 +01:00
PortableImageMapLoader.h LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
PPMLoader.cpp LibGfx/PortableFormat: Simplify the State enum 2023-07-11 14:16:33 +01:00
PPMLoader.h LibGfx/PortableFormat: Propagate errors from read_image_data() 2023-03-24 10:56:58 +01:00
QOILoader.cpp LibGfx/QOI: Decode the header in create() and remove initialize() 2023-07-14 06:17:12 +02:00
QOILoader.h LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
QOIWriter.cpp Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
QOIWriter.h LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
TGALoader.cpp AK+Libraries: Remove FixedMemoryStream::[readonly_]bytes() 2023-07-30 19:32:52 +01:00
TGALoader.h LibGfx/TGA: Simplify the code by converting it to use AK::Stream 2023-07-27 14:40:00 +01:00
TinyVGLoader.cpp LibGfx/TinyVG: Decode the header in create() and remove initialize() 2023-07-16 20:39:51 +02:00
TinyVGLoader.h LibGfx: Provide a default implementation for animation-related methods 2023-07-18 14:34:35 +01:00
WebPLoader.cpp LibGfx/WebP: Remove a typo 2023-07-15 09:34:07 +02:00
WebPLoader.h LibGfx/WebP: Decode the first chunk in create() 2023-07-15 09:34:07 +02:00
WebPLoaderLossless.cpp WebP/Lossless: Set alpha to 0xff if is_alpha_used is false in header 2023-06-18 18:47:47 +02:00
WebPLoaderLossless.h LibGfx/WebP: Minor cosmetical changes in WebPLoaderLossless.h 2023-05-09 06:35:56 +02:00
WebPLoaderLossy.cpp LibGfx/LibVideo: Check for overreads only at end of a VPX range decode 2023-06-10 07:17:12 +02:00
WebPLoaderLossy.h WebP/Lossy: Implement macroblock coefficient decoding 2023-05-29 10:41:53 -06:00
WebPLoaderLossyTables.h WebP/Lossy: Add const annotations to functions in Tables.h 2023-06-01 16:23:46 +02:00