summaryrefslogtreecommitdiff
path: root/Libraries/LibGfx
AgeCommit message (Collapse)Author
2020-07-17WindowServer: New title bar vars for themesNullspeak
The theming system can now control title bar height, title button size, title stripe color and the title text shadow color. The implemented theme metrics system could be later extended to LibGUI to allow themes to change widget padding, border width, etc.
2020-07-16LibGfx: Set correct frame type on JPEG imagesstelar7
2020-07-15LibGfx: Minor IntRect::shatter and FloatRect::shatter optimizationTom
All the shards always intersect unless they're empty. So rather than checking for intersection, just check whether they're empty or not.
2020-06-28LibGfx+JPGLoader: Print failure message for progressive JPEGsdevashish
2020-06-27LibGfx+JPGLoader: Fix decoding outside of LibWebdevashish
The DC reset interval was initialized to garbage :)
2020-06-27LibGfx: Add PGM image file type supportHüseyin ASLITÜRK
2020-06-26LibGfx: Teach AffineTransform how to rotate and multiplyAndreas Kling
2020-06-23JPGLoader: Move JPGLoader internal structs and #defines to JPGLoader.cppdevashish
2020-06-23LibGfx: Integrate JPEG decoder with rest of the systemdevashish
This patch adds functions like `load_jpeg` to JPGLoader to make the JPEG decoder conform to the API that bitmap loader uses :^)
2020-06-23LibGfx+LibWeb: Add JPEG decoder and integrate with LibWebDevashish
This patch adds support for JPEG decoding. The JPEG decoder is capable of handling standard 2x1 horizontal, 2x1 vertical and quartered chroma subsampling. The implemented Inverse DCT performs with a decent speed. As of interchange formats, since we tend to ignore the metadata in APPn markers, the decoder can handle any format compatible with JFIF, which includes EXIFs and sometimes WebMs too. The decoder does not support progressive JPEGs yet.
2020-06-22ImageDecoder: Add a new service for out-of-process image decoding :^)Andreas Kling
The new ImageDecoder service (available for members of "image" via /tmp/portal/image) allows you to decode images in a separate process. This will allow programs to confidently load untrusted images, since the bulk of the security concerns are sandboxed to a separate process. The only API right now is a synchronous IPC DecodeImage() call that takes a shbuf with encoded image data and returns a shared buffer and metadata for the decoded image. It also comes with a very simple library for interfacing with the ImageDecoder service: LibImageDecoderClient. The name is a bit of a mouthful but I guess we can rename it later if we think of something nicer to call it. There's obviously a bit of overhead to spawning a separate process for every image decode, so this is mostly only appropriate for untrusted images (e.g stuff downloaded from the web) and not necessary for trusted local images (e.g stuff in /res)
2020-06-22LibGfx: Add PPM image file type supportHüseyin ASLITÜRK
2020-06-21LibGfx: Prefer the largest image in the file when loading an ICOPaul Roukema
Since the current image handling APIs don't provide a way to handle a file which can contain multiple images, we just pick the largest one. This gives the best chance of a good looking result.
2020-06-21 LibGfx: Add support for uncompressed/classic ICO filesPaul Roukema
This add support to the ICO file decoder for loading uncompressed bitmap icon files. It is limited to 32-bit color icons, no 4/8/16 bit or paletted formats yet. This is in addition to the PNG compressed ICO format support added previously. With this we can now load the favicons for github, google and twitter.
2020-06-21LibGfx: Initial support for ICO image files.Paul Roukema
This adds support for loading the first image from ICO format images only if they are PNG encoded. This is useful for loading favicons, which are sometimes PNGs with an ICO extension and sometimes actual ICO files. In particular we can now load the favicon from new.ycombinator.com
2020-06-21LibGfx: Add PBM image file type supportHüseyin ASLITÜRK
2020-06-21LibGfx: Add BMP loaderMatthew Olsson
Adds an *almost fully featured BMP loader to process .bmp files. Features: - All header formats are supported - Full RLE4/8/24 support - Color scaling (e.g. distributing a 5-bit color throughout the 8-bit color spectrum, so 5-bit white is still 0xffffff) - Full BITMASK/ALPHABITMASK support *Not included: - 1D Huffman compression. Good luck actually finding a bmp in the wild that uses this - Use of any field in the V4/V5 header. Color spaces? Endpoints? No thanks :) This loader was tested with the images at https://entropymine.com/jason/bmpsuite/bmpsuite/html/bmpsuite.html. This loader correctly displays 81 out of the 90 total images (for reference, firefox displays 64 correctly). Note that not rendering the images at the bottom is counted as displaying correctly.
2020-06-18LibGfx: Fix color alfa for transparent color in GIFLoaderHüseyin ASLITÜRK
2020-06-15LibGfx: Add a new Bitmap::is_path_a_supported_image_format() methodHüseyin ASLITÜRK
Move the image file detection code to the File class to prevent code duplication.
2020-06-13LibGfx: Painter::draw_line() can just return early if alpha == 0Andreas Kling
2020-06-13LibGfx: Add Color::Transparent as a named colorAndreas Kling
2020-06-13LibGfx: Implement support for decoding interlaced PNGsPaul Roukema
This adds support for decoding the Adam7 interlacing used in some PNGs. Notably this includes many of the images (such as the eyes) used in the acid2 test :^) Note that the HTML engine still doesn't understand the <object> tag well enough to show the eyes on the test.
2020-06-13LibGfx: Fix PNG decoder handling of 16-bit RGB imagesPaul Roukema
2020-06-13LibGfx: Silence debug spam in the PNG decoderAndreas Kling
2020-06-13LibGfx: Don't keep an unused GIF decoder plugin in failed ImageDecodersAndreas Kling
If we can't decode the input data, just have a null decoder. In this state we simply return a null bitmap and whatever empty values make sense for each API. This way, we don't try to decode the same thing over and over since it's not gonna work anyway. :^)
2020-06-12AK: Make string-to-number conversion helpers return OptionalAndreas Kling
Get rid of the weird old signature: - int StringType::to_int(bool& ok) const And replace it with sensible new signature: - Optional<int> StringType::to_int() const
2020-06-11LibGfx: Return paint_button() earlier and replace overdrawn rectthankyouverycool
Return StylePainter::paint_button() before color initializations when possible and replace an overdrawn rect in paint_button_new() with more explicit shadow lines. Also standardize some comments.
2020-06-11LibGfx: Fail PNG decoding on invalid scanline filterAndreas Kling
Only filter types 0 thru 4 are valid.
2020-06-11LibGfx: Minor tweaks in PNG decoderAndreas Kling
2020-06-10LibGfx: Return correct color for palette.hover_highlight()thankyouverycool
Now correctly returns HoverHighlight instead of ThreedHighlight.
2020-06-10LibGfx: Visual enhancement to buttonsthankyouverycool
This adds a "shine" effect to the bottom-right edges of pressed and checked buttons, complementing the sunken shadow already present at top-left and creating greater illusion of depth. It is similar to the effect used in classic Windows and is theme agnostic in Serenity, but produces the best result when ThreedHighlight is a radiant color of Button.
2020-06-10LibGfx: Use size_t for the Streamer offset and sizesAndreas Kling
2020-06-10LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSizeAndreas Kling
This fits nicer with FloatRect,FloatPoint,FloatSize and gives a much better visual clue about what type of metric is being used.
2020-06-10LibGfx: Add FloatSize::to_int_size()Andreas Kling
2020-06-08LibIPC+LibGfx+IPCCompiler: Drop some unused includesSergey Bugaev
2020-06-06LibGfx: Make Painter::add_clip_rect() use logical coordinatesAndreas Kling
It was really confusing that add_clip_rect() didn't apply transforms to the new clip rect, but instead interpreted it as an absolute rect. This makes web pages with <iframe> render correctly when scrolled. Something might break from this, but we'll find it soon enough. :^)
2020-06-02LibGfx: Fix debug-printing colorsSergey Bugaev
The operator has to live in the namespace Gfx.
2020-06-02LibGfx: Templatize some of the scanline unpacking codeAndreas Kling
2020-06-02LibGfx: Consolidate some types in the PNG decoderAndreas Kling
2020-06-01LibGfx: Add ImageDecoder factory overload for ByteBuffersAndreas Kling
2020-05-30LibGfx: Use a bit of constexpr in ColorAndreas Kling
This avoids a bunch of strlen()'s when we're parsing web colors.
2020-05-29Meta: Add a script check the presence of "#pragma once" in header filesEmanuele Torre
.. and make travis run it. I renamed check-license-headers.sh to check-style.sh and expanded it so that it now also checks for the presence of "#pragma once" in .h files. It also checks the presence of a (single) blank line above and below the "#pragma once" line. I also added "#pragma once" to all the files that need it: even the ones we are not check. I also added/removed blank lines in order to make the script not fail. I also ran clang-format on the files I modified.
2020-05-26AK: Rename FileSystemPath -> LexicalPathSergey Bugaev
And move canonicalized_path() to a static method on LexicalPath. This is to make it clear that FileSystemPath/canonicalized_path() only perform *lexical* canonicalization.
2020-05-24LibGfx: Add Painter::fill_ellipse()Sergey Bugaev
2020-05-21LibGfx: Font, extend fonts to 384 character to support LatinExtendedAHüseyin ASLITÜRK
2020-05-21LibGfx: Painter, extend fonts to 384 character to support LatinExtendedAHüseyin ASLITÜRK
Replace codepoint variable type from char to u32.
2020-05-17LibGfx: Add UTF-32 version of the text painting code pathsAndreas Kling
There's a large amount of code duplication here right now, which will need to be reduced.
2020-05-17LibGfx: Let's make it Font::width(Utf32View)Andreas Kling
2020-05-17LibGfx: Add Font::width(u32* codepoints, size_t)Andreas Kling
This allows you to measure the width of a UTF-32 sequence.
2020-05-14Build: Switch to CMake :^)Sergey Bugaev
Closes https://github.com/SerenityOS/serenity/issues/2080