summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGfx
AgeCommit message (Collapse)Author
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
2021-10-28LibGfx+WindowServer: Move shadow-painting code to StylePainterSam Atkins
Specifically, this is to make it accessible to ThemeEditor, but there's nothing about it that is especially window-specific.
2021-10-28LibGfx: Make style painters use east const and virtual specifiersSam Atkins
2021-10-24LibGfx: Make Color::from_string() case-insensitiveSam Atkins
This function implements CSS color syntax, which is case-insensitive in HTML contexts. Making it insensitive here means not having to remember to do it in every user, (many of the HTML elements do not do this,) and means they don't have to produce a lowercase copy of the input string before passing it.
2021-10-24LibGfx: Make Color use east-constSam Atkins
2021-10-23LibGfx+LibWeb: Move "transparent" keyword into Color::from_string()Sam Atkins
It seemed odd to have this one color handled separately, when `Color::from_string()` implements all other CSS colors.
2021-10-22LibGfx: Restrict cleared area to GIF framebufferBen Wiederhake
Found by OSS Fuzz, long-standing issue https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=34824 The discovered testcase attempts to clear the framebuffer of size 1056x32 from the previous image, which has size 16416x32.
2021-10-10LibGfx: Implement copy-assign for MatrixBen Wiederhake
This used to generate a warning about using a deprecated copy-assign, default-generated by the compiler, and deprecated because we hand- implement the copy-constructor. This warning is correct, since the default-generated copy-assign may or may not be as efficient as memcpy. This patch gets rid of the warning, and has either no performance impact or a slightly positive one. If this turns out to be wrong, we should probably also fix the copy-constructor.