serenity/Libraries
Matthew Olsson 4e093a7c23 LibGfx: Add BMP loader
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-21 10:08:25 +02:00
..
LibAudio WavLoader: Search for DATA marker by reading single bytes 2020-06-18 23:13:48 +02:00
LibC LibC: In posix_spawn(), use _exit instead of exit on child error 2020-06-20 14:43:27 +02:00
LibCore LibCore: Add File::read_link() :^) 2020-06-17 15:02:03 +02:00
LibCrypto LibCrypto: Add bitwise operations (and/or/xor) 2020-06-07 19:29:40 +02:00
LibDebug LibDebug: Add all Dwarf v5 attributes, tags, and form enum values 2020-06-03 08:12:50 +02:00
LibDesktop LibIPC+Services: Support URL as a native IPC type 2020-06-07 22:55:33 +02:00
LibELF Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
LibGemini AK: Make string-to-number conversion helpers return Optional 2020-06-12 21:28:55 +02:00
LibGfx LibGfx: Add BMP loader 2020-06-21 10:08:25 +02:00
LibGUI LibGUI: Add a new Window::is_maximized method 2020-06-18 23:18:11 +02:00
LibHTTP AK: Make string-to-number conversion helpers return Optional 2020-06-12 21:28:55 +02:00
LibIPC LibIPC: Only start responsiveness timer after sending client a message 2020-06-13 13:47:01 +02:00
LibJS LibWeb+LibJS: Add a naive way to check if a wrapper "is" a certain type 2020-06-21 00:58:55 +02:00
LibKeyboard LibKeyboard: Replace char data type to u32 for code point 2020-06-16 13:15:17 +02:00
LibLine AK: Make string-to-number conversion helpers return Optional 2020-06-12 21:28:55 +02:00
LibM LibM: Add exp2() and exp2f() 2020-06-04 15:45:11 +02:00
LibMarkdown LibMarkdown: Change internal MD API to return OwnPtrs 2020-05-30 00:32:12 +02:00
LibPCIDB Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibProtocol ProtocolServer+LibProtocol: Propagate HTTP status codes to clients 2020-06-13 22:20:37 +02:00
LibPthread Revert "Build: Include headers from LibC, LibM, and LibPthread with -isystem" 2020-05-20 16:24:26 +02:00
LibTextCodec LibTextCodec: Improve Latin-1 decoder so it decodes everything 2020-05-27 19:52:18 +02:00
LibThread Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
LibTLS LibTLS: Simplify record padding logic and ASSERT more assumptions 2020-06-04 15:58:04 +02:00
LibUnwind LibUnwind: Create UnwindBase.h to capture the EH ABI in code 2020-05-14 08:50:10 +02:00
LibVT LibVT: Replace u8 type to u32 for code point 2020-06-16 13:15:17 +02:00
LibWeb LibGfx: Add BMP loader 2020-06-21 10:08:25 +02:00
LibX86 Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
CMakeLists.txt LibKeyboard: Add new library for keyboard applications 2020-06-03 21:52:40 +02:00