Lucas CHOLLET
38dd4168be
LibGfx/ICO: Decode the header in create()
and remove initialize()
...
This is done as a part of #19893 .
2023-07-17 20:17:08 +01:00
Lucas CHOLLET
5d94bb4fcc
LibGfx/PNG: Remove the useless HeaderDecoded
state
2023-07-17 06:49:03 +01:00
Lucas CHOLLET
a173275afa
LibGfx/PNG: Reject files that doesn't start with a IHDr chunk
2023-07-17 06:49:03 +01:00
Lucas CHOLLET
8d907b6535
LibGfx/PNG: Don't use a loop to read chunks in decode_png_ihdr()
...
This chunk is the first one, so we can remove that loop.
2023-07-17 06:49:03 +01:00
Lucas CHOLLET
ff6d82c3e7
LibGfx/PNG: Decode the header in create()
and remove initialize()
...
This is done as a part of #19893 . As `create()` is now the last user of
`decode_png_ihdr()`, we can easily make it return an `ErrorOr`.
2023-07-17 06:49:03 +01:00
Lucas CHOLLET
07f72b6d41
LibGfx/PNG: Don't try to guess if IHDR has been decoded
2023-07-17 06:49:03 +01:00
Lucas CHOLLET
07d3232f2d
LibGfx/PNG: Use PNG specific vocabulary over a generic name
2023-07-17 06:49:03 +01:00
Lucas CHOLLET
0520490577
LibGfx/DDS: Read the header in create()
and remove initialize()
...
This is done as a part of #19893 .
2023-07-17 06:44:37 +01:00
Lucas CHOLLET
aa9470880f
LibGfx/DDS: Prefer static constexpr Array
over Vector<u32>
2023-07-17 06:44:37 +01:00
Lucas CHOLLET
742897519d
LibGfx/DDS: Move the code to read the header in its own function
2023-07-17 06:44:37 +01:00
Lucas CHOLLET
76efdaeecd
LibGfx/DDS: Save the format in the context
...
This allows us to simplify the signature of a few functions.
2023-07-17 06:44:37 +01:00
Lucas CHOLLET
4cb7573582
LibGfx/DDS: Only use a FixedMemoryStream
...
This allows us to drop the data pointer in the `DDSLoadingContext`.
2023-07-17 06:44:37 +01:00
Lucas CHOLLET
8946c0c104
LibGfx/DDS: Don't double-check the magic number
...
This is already done in `decode_dds()`.
2023-07-17 06:44:37 +01:00
Lucas CHOLLET
c336cef065
LibGfx/BMP: Decode the header in create()
and remove initialize()
...
This is done as a part of #19893 .
2023-07-17 06:39:57 +01:00
Lucas CHOLLET
7b72bf2910
LibGfx: Don't assume that image decoder plugin creation succeeds
...
An image with an incorrect header should fail at this step, so we have
to handle that without crashing.
2023-07-17 06:39:57 +01:00
Lucas CHOLLET
35dcd16ea6
LibGfx/TinyVG: Decode the header in create()
and remove initialize()
...
This is done as a part of #19893 .
2023-07-16 20:39:51 +02:00
MacDue
cf05da131f
LibGfx/TinyVG: Close polygon path in OutlineFillPolygon
2023-07-15 21:36:28 +02:00
MacDue
a853f7b133
LibGfx/TinyVG: Map gradients to equivalent SVG gradients
2023-07-15 21:36:28 +02:00
MacDue
fb61082a6c
LibGfx/TinyVG: Don't move fill/stroke styles that are used in a loop
2023-07-15 21:36:28 +02:00
MacDue
bebfb81c85
LibGfx/TinyVG: Parse and ignore line_width
in paths
...
TinyVG allows varying the line width along a path, this is not supported
in LibGfx so we just ignore this (but still need to parse the field).
2023-07-15 21:36:28 +02:00
Lucas CHOLLET
500097de82
LibGfx/GIF: Decode the header in create()
...
Again, header includes the logical screen descriptor here. This is done
as a part of #19893 .
2023-07-15 09:44:30 +02:00
Lucas CHOLLET
294217586b
LibGfx/GIF: Move the code to read the header to its own function
...
By header, I include the logical screen descriptor here, so all the
information that is not specific to each frame.
2023-07-15 09:44:30 +02:00
Lucas CHOLLET
b8bc84a3e8
LibGfx/GIF: Only use a FixedMemoryStream
...
This allows us to drop the data pointer in the `GIFLoadingContext`.
2023-07-15 09:44:30 +02:00
Lucas CHOLLET
1192e46c09
LibGfx/GIF: Don't read the header twice
...
This is already done in `load_gif_frame_descriptors()`. As the method
`initialize()` is now empty, we can delete it.
2023-07-15 09:44:30 +02:00
Lucas CHOLLET
8ef5170bd5
LibGfx/WebP: Remove a typo
...
:redthakis:
2023-07-15 09:34:07 +02:00
Lucas CHOLLET
4adef05e6d
LibGfx/WebP: Decode the first chunk in create()
...
And remove `initialize()`.
This is done as a part of #19893 .
2023-07-15 09:34:07 +02:00
MacDue
57c81c1719
LibGfx: Lazily load TinyVG image data
...
This matches the behavior of other decoders, and ensures just getting
the size (e.g. for the `file` command) does not read the whole file.
2023-07-14 06:51:05 +02:00
MacDue
753cf04be8
LibGfx: Allow requesting vector graphic frames from ImageDecoder
...
Only supported for plugins that set is_vector() to true. This returns
the frames as Gfx::VectorGraphics, which allows painting/rasterizing
them with arbitrary transforms and scales.
2023-07-14 06:51:05 +02:00
Lucas CHOLLET
b14d51ba1b
LibGfx/QOI: Decode the header in create()
and remove initialize()
...
This is done as a part of #19893 .
2023-07-14 06:17:12 +02:00
Lucas CHOLLET
5fd1ee0365
LibGfx/QOI: Remove useless parameters from member functions
...
Both `decode_[header,image]_and_update_context()` used to take a
`Stream&` as parameter, but they are always called with the field
`m_context.stream` so no need to take it as a parameter.
2023-07-14 06:17:12 +02:00
Lucas CHOLLET
1ae772c7d3
LibGfx/JPEG: Decode the header in create()
...
This is done as a part of #19893 .
2023-07-14 06:16:56 +02:00
Lucas CHOLLET
2f125b86aa
LibGfx/JPEG: Remove the unused method initialize()
2023-07-14 06:16:56 +02:00
Lucas CHOLLET
92fa1efc76
LibGfx/TGA: Decode the header in create()
and remove initialize()
...
This is done as a part of #19893 .
2023-07-12 23:37:32 +02:00
Lucas CHOLLET
a05516bb3e
LibGfx/TGA: Make TGAImageDecoderPlugin::decode_tga_header()
fallible
2023-07-12 23:37:32 +02:00
Lucas CHOLLET
e0ff3fbfad
LibGfx/TGA: Default initialize the TGAHeader
in the context
2023-07-12 23:37:32 +02:00
Nico Weber
8c13b83a84
LibGfx/PNGWriter: Use a better limit for scanline capactiy
...
One scanline is width pixels long, not height pixels.
No measurable performance difference, but it annoys me every time I look
at this file.
2023-07-12 07:51:54 +01:00
Lucas CHOLLET
9ff706339b
LibGfx/PortableFormat: Read the header during initialization
...
This is done as a part of #19893 .
2023-07-11 14:16:33 +01:00
Lucas CHOLLET
f3ff9c26bc
LibGfx/PortableFormat: Simplify the State enum
...
This enum used to store very precise state about the decoding process,
let's simplify that by only including two steps: HeaderDecoder and
BitmapDecoded.
2023-07-11 14:16:33 +01:00
Lucas CHOLLET
f6ce06d56b
LibGfx/PortableFormat: Extract header reading in its own function
2023-07-11 14:16:33 +01:00
Lucas CHOLLET
e72293fbc7
LibGfx/PortableFormat: Remove PortableImageDecoderPlugin::initialize()
2023-07-11 14:16:33 +01:00
Nico Weber
f7f9f1f47f
LibGfx/PNG: Make invalid sRGB chunk size non-fatal
...
https://www.haiku-os.org/images/bg-page.png has a size of 0 for
example.
Just ignoring the chunk instead of assuming that the image is sRGB
and has Perceptual rendering intent matches what libpng does
(cf `png_handle_sRGB()`), so let's do that too.
(All other chunk handlers are still strict about size.)
2023-07-11 15:07:42 +02:00
Lucas CHOLLET
babe924da1
LibGfx: Provide a default implementation for ImageDecoder::initialize
...
In order to ease the removal of this function, let's provide a no-op
default implementation so decoders can stop implementing it one by one.
First step of #19893
2023-07-09 09:16:28 +01:00
Lucas CHOLLET
35599605c1
LibGfx/BMP: Move some const
to the east
2023-07-08 22:56:30 +01:00
Lucas CHOLLET
fd765d2031
LibGfx/ICO: Fix an erroneous condition
...
This is a remnant of the conversion to `ErrorOr` done in 492d5d7c
.
2023-07-08 22:56:30 +01:00
Timothy Flynn
c911781c21
Everywhere: Remove needless trailing semi-colons after functions
...
This is a new option in clang-format-16.
2023-07-08 10:32:56 +01:00
Lucas CHOLLET
e5b70837de
LibGfx: Remove ImageDecoder::set_[non]volatile()
...
These methods are unused so let's remove them.
2023-07-08 01:45:46 +01:00
Lucas CHOLLET
243e91f5de
LibGfx/JPEG: Don't return an error on empty icc profiles
...
An empty icc profile shouldn't stop our brave decoder.
2023-07-05 17:41:17 +01:00
Lucas CHOLLET
0ef61ab895
LibGfx/JPEG: Convert some west-consts to east-consts
2023-07-05 12:10:56 +01:00
Lucas CHOLLET
af14ed6b2e
LibGfx/JPEG: Accept grayscale images with an App14 segment
...
The adobe specification doesn't even consider JPEG images with a single
component. So let's not consider the content of the App14 segment for
grayscale images.
2023-07-05 12:10:56 +01:00
Lucas CHOLLET
a58c7fe322
LibGfx/JPEG: Take the quality as an argument instead of hardcoding it
2023-07-04 00:01:06 +02:00