summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGfx
AgeCommit message (Collapse)Author
2021-12-21LibGfx: Remove 'QOIImageDecoderPlugin: ' prefix from error messagesLinus Groh
What the component which did the actual decoding is called is not relevant for the error, and would be rather distracting once we show decoding error messages e.g. in ImageViewer (instead of just silently failing). Also makes them more consistent as many already don't include it - a mistake which is now turned into a feature :^)
2021-12-21LibGfx: Add support for "The Quite OK Image Format" (QOI)Linus Groh
The spec had its first stable release today, so I figured we should support it as well! As usual, by using the regular LibGfx image decoder plugin architecture, we immediately get support for it everywhere: ImageViewer, FileManager thumbnails, PixelPaint, and (with a small change in the subsequent commit) even the Browser :^)
2021-12-16LibGfx: Handle malformed Platform ID during TTF parsingBrian Gianforcaro
This should fix one of the OSS Fuzz crashes that occurs during TTF file format parsing. See: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37263
2021-11-30LibGfx+FontEditor: Consolidate BitmapFont width and height limitsthankyouverycool
And make them more self-documenting. Previously these constraints were duplicated across multiple files.
2021-11-30LibGfx+FontEditor: Add helper to determine raw glyph presencethankyouverycool
GlyphBitmaps are considered present if they have a width greater than zero. This adds a counterpart method for raw (unmasked) glyphs and makes intent more explicit throughout FontEditor.
2021-11-29LibGfx: Link against LibIPCHendiadyoin1
Gfx::Color implements an IPC::[en|de]code function, but we did not actually link against LibIPC to resolve the needed Symbols for that and were relying on LibGui or others to link against it for us. Having this linkage is unfortunate, but static inlining the functions in question is sadly not possible, due needed includes leading the IPC pipeline to initialize multiple times then, which leads to a compilation error.
2021-11-29LibGfx: Load default font lazilyHendiadyoin1
This is required when trying to use a Painter from lagom, due to /res/font not being present
2021-11-28LibIPC+IPCCompiler+AK: Make IPC value decoders return ErrorOr<void>Andreas Kling
This allows us to use TRY() in decoding helpers, leading to a nice reduction in line count.
2021-11-24LibGfx: Correct BitmapFont row indexing when un/masking fontsthankyouverycool
Now indexes by total bytes per glyph to account for changes made to row's pointer type in 3ca00c8. Fixes glyphs not showing and saving correctly in FontEditor.
2021-11-23LibGfx: Use Core::System::open() in Gfx::Bitmap :^)Andreas Kling
2021-11-23LibCore+AK: Move MappedFile from AK to LibCoreAndreas Kling
MappedFile is strictly a userspace thing, so it doesn't belong in AK (which is supposed to be user/kernel agnostic.)
2021-11-22LibGfx: Avoid unaligned loads and stores in GlyphBitmapAli Mohammad Pur
2021-11-21LibGfx: Use StringView for header constants in the GIF decoderAndreas Kling
2021-11-21LibGfx: Use ErrorOr<void> more internally in PNGImageDecoderPluginAndreas Kling
2021-11-21LibGfx: Make ImageDecoderPlugin::frame() return ErrorOr<>Andreas Kling
This is a first step towards better error propagation from image codecs.
2021-11-18LibGfx: Remove ImageDecoderPlugin::bitmap() in favor of frame(index)Andreas Kling
To encourage proper support for multi-frame images throughout the system, get rid of the single-frame convenience bitmap() API.
2021-11-17AK: Convert AK::Format formatting helpers to returning ErrorOr<void>Andreas Kling
This isn't a complete conversion to ErrorOr<void>, but a good chunk. The end goal here is to propagate buffer allocation failures to the caller, and allow the use of TRY() with formatting functions.
2021-11-16LibGfx: Remove scale factor option from try_load_from_fd_and_close()Karol Kosek
... and bring it back to try_load_from_file(). Prior to this change, changing the scaling option to x2 in the Display Settings resulted in the following crash: WindowServer(15:15): ASSERTION FAILED: bitmap->width() % scale_factor == 0 ./Userland/Libraries/LibGfx/Bitmap.cpp:126 That was caused by two minor overlooked yaks: - First, Bitmap::try_load_from_fd_and_close() tried to respect your scale factor. While requesting a bitmap from file can make a switcheroo to give you a higher resolution bitmap, doing the same when you already have an fd might violate the unveil agreement. ... but, it didn't do that. It read bitmaps from requested fds, but also pretended all system bitmaps in /res/ are the HiDPI ones when you enabled that mode. - d85d741c59 used this function to deduplicate try_load_from_file(). It actually made this bug a lot easier to replicate! Closes #10920
2021-11-13LibGfx: Remove all load_FORMAT_from_memory() decoder wrappersAndreas Kling
There are no more clients of these APIs, now that everyone has been made to use ImageDecoderPlugin objects instead.
2021-11-11LibGfx: Include Vector.h in PNGLoader.cppTimothy Flynn
This was being transitively included from Deflate.h on SerenityOS builds but not on Lagom builds.
2021-11-11LibGfx: Remove now-unused load_gif_from_memory()Andreas Kling
2021-11-11LibGfx: Use ImageDecoder in Bitmap::try_load_from_fd_and_close()Andreas Kling
Before this patch, both Bitmap and ImageDecoder had logic for guessing which image codec to use for a chunk of data. Bitmap now defers to ImageDecoder so that we only have to do this in one place. There's room for improvement in the ImageDecoder heuristic, but that's outside the scope of this change.
2021-11-11LibGfx: Remove load_FORMAT() image codec wrappersAndreas Kling
We had a bunch of old unused wrapper functions for each image codec that would load a supported image with a given path. Nobody actually used them, so let's just get rid of load_png(), load_gif(), etc.
2021-11-11Everywhere: Pass AK::ReadonlyBytes by valueAndreas Kling
2021-11-11Everywhere: Pass AK::StringView by valueAndreas Kling
2021-11-10AK: Make ByteBuffer::try_* functions return ErrorOr<void>Andreas Kling
Same as Vector, ByteBuffer now also signals allocation failure by returning an ENOMEM Error instead of a bool, allowing us to use the TRY() and MUST() patterns.
2021-11-10AK+Everywhere: Stop including Vector.h from StringView.hAndreas Kling
Preparation for using Error.h from Vector.h. This required moving some things out of line.
2021-11-08LibCore: Use ErrorOr<T> for Core::File::open()Andreas Kling
2021-11-08AK: Use ErrorOr<T> for MappedFile factoriesAndreas Kling
Replace Result<T, E> with ErrorOr<T> and propagate the error to callers.
2021-11-08LibGfx: Use ErrorOr<T> for try_create_from_serialized_byte_buffer()Andreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::try_create()Andreas Kling
Another one that was used in a fajillion places.
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::try_load_from_file()Andreas Kling
This was used in a lot of places, so this patch makes liberal use of ErrorOr<T>::release_value_but_fixme_should_propagate_errors().
2021-11-08LibGfx: Convert Gfx::Bitmap to east const styleAndreas Kling
2021-11-08LibGfx: Deduplicate code in Bitmap::try_load_from_file()Andreas Kling
This can share logic with try_load_from_fd_and_close(), we just need to open the file first. :^)
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap infrastructure used by ShareableBitmapAndreas Kling
This also allows us to get rid of the ShareableBitmap(Bitmap) constructor which was easy to misuse. Everyone now uses Bitmap's to_shareable_bitmap() helper instead.
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::cropped()Andreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::scaled()Andreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::flipped()Andreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::rotated()Andreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::clone()Andreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::try_create_shareable()Andreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::try_create_wrapper()Andreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Bitmap::try_create_with_anonymous_buffer()Andreas Kling
2021-11-08AK: Bring AK::Error into the global namespaceAndreas Kling
2021-11-08LibGfx: Use ErrorOr<T> for Gfx::Bitmap::allocate_backing_store()Andreas Kling
2021-11-08LibCore: Use ErrorOr<T> in Core::AnonymousBufferAndreas Kling
2021-11-05LibGfx: Add FlagRole to GUI::VariantSam Atkins
2021-11-05LibGfx: Use `read_bool_entry()` to read theme flagsSam Atkins
I didn't notice this function existed the first time around. Oops!
2021-10-31LibGfx: Add 'IsDark' flag to SystemTheme and PaletteSam Atkins
This explicitly states whether a given theme is a dark theme, so that applications not using the system palette colors can still attempt to match the overall theme.
2021-10-28LibGfx: Add to_string() functions for MetricRole and PathRoleSam Atkins