mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-07 21:59:54 +00:00
LibGfx+Tests: Load bmp files with unpremultiplied alpha
From what I can tell BMP files with an alpha channel always store unpremultiplied alpha. So let's load them as such to avoid rendering artifacts from using the wrong alpha type.
This commit is contained in:
parent
949053cee7
commit
bc44203744
Notes:
github-actions[bot]
2025-11-28 16:01:33 +00:00
Author: https://github.com/InvalidUsernameException
Commit: bc44203744
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6963
Reviewed-by: https://github.com/gmta ✅
3 changed files with 24 additions and 1 deletions
|
|
@ -1298,7 +1298,7 @@ static ErrorOr<void> decode_bmp_pixel_data(BMPLoadingContext& context)
|
|||
u32 const width = abs(context.dib.core.width);
|
||||
u32 const height = !context.is_included_in_ico ? abs(context.dib.core.height) : (abs(context.dib.core.height) / 2);
|
||||
|
||||
context.bitmap = TRY(Bitmap::create(format, { static_cast<int>(width), static_cast<int>(height) }));
|
||||
context.bitmap = TRY(Bitmap::create(format, Gfx::AlphaType::Unpremultiplied, { static_cast<int>(width), static_cast<int>(height) }));
|
||||
|
||||
ByteBuffer rle_buffer;
|
||||
ReadonlyBytes bytes { context.file_bytes + context.data_offset, context.file_size - context.data_offset };
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
body {
|
||||
color: white;
|
||||
background-color: black;
|
||||
}
|
||||
</style>
|
||||
<p>All three images should render the same</p>
|
||||
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAS1BMVEUAAAAAgAAAqgAA+QAA/QAA/QAA/QAA/QAA/QAA/QAA/QAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/wDNmTtpAAAAGHRSTlMAAQIkXF11d3h6foCBiImXnZ7Iy87S3d5CsE4PAAAAZ0lEQVQY02VPwRaAIAijSMvSsrLa/39pil6KPQ5s8MYgEvDzMDV0w9CRA1ztiAwQ+wVY+giYKiB6wGcuQhkgSeVVMdnQsBfOdpyOys9ptEw3Pri1wHMIqZJrDTNrU31WBVPR1XO/918rbA2ED1iblwAAAABJRU5ErkJggg==">
|
||||
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAS1BMVEUAAAAAgAAAqgAA+QAA/QAA/QAA/QAA/QAA/QAA/QAA/QAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/wDNmTtpAAAAGHRSTlMAAQIkXF11d3h6foCBiImXnZ7Iy87S3d5CsE4PAAAAZ0lEQVQY02VPwRaAIAijSMvSsrLa/39pil6KPQ5s8MYgEvDzMDV0w9CRA1ztiAwQ+wVY+giYKiB6wGcuQhkgSeVVMdnQsBfOdpyOys9ptEw3Pri1wHMIqZJrDTNrU31WBVPR1XO/918rbA2ED1iblwAAAABJRU5ErkJggg==">
|
||||
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAS1BMVEUAAAAAgAAAqgAA+QAA/QAA/QAA/QAA/QAA/QAA/QAA/QAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/wDNmTtpAAAAGHRSTlMAAQIkXF11d3h6foCBiImXnZ7Iy87S3d5CsE4PAAAAZ0lEQVQY02VPwRaAIAijSMvSsrLa/39pil6KPQ5s8MYgEvDzMDV0w9CRA1ztiAwQ+wVY+giYKiB6wGcuQhkgSeVVMdnQsBfOdpyOys9ptEw3Pri1wHMIqZJrDTNrU31WBVPR1XO/918rbA2ED1iblwAAAABJRU5ErkJggg==">
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="match" href="../expected/bmp-load-as-unpremultiplied-alpha-ref.html" />
|
||||
<style>
|
||||
body {
|
||||
color: white;
|
||||
background-color: black;
|
||||
}
|
||||
</style>
|
||||
<p>All three images should render the same</p>
|
||||
<img src="data:image/vnd.microsoft.icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+QAkAP4A3gD+AN4A+QAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEA/QBcAP0AXACAAAEAAAAAAP0AegD/AP8A/wD/AP0AegAAAAAAgAABAP0AXAD9AFwAgAABAAAAAAAAAAAA/QBdAP8A/wD/AP8A/gCdAKoAAgD+AIAA/wD/AP8A/wD+AIAAqgACAP4AnQD/AP8A/wD/AP0AXQAAAAAAAAAAAP0AXQD/AP8A/wD/AP8A/wD+AJ0A/gCBAP8A/wD/AP8A/gCBAP4AnQD/AP8A/wD/AP8A/wD9AF0AAAAAAAAAAACqAAIA/gCdAP8A/wD/AP8A/wD/AP4AzgD/AP8A/wD/AP4AzgD/AP8A/wD/AP8A/wD+AJ0AqgACAAAAAAAAAAAAAAAAAIAAAQD+AJcA/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD+AJ4AqgACAAAAAAAAAAAA+QAkAP0AfgD+AIgA/gCIAP4AzgD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD+ANIA/gCJAP4AiAD9AH4A+QAkAP4A3QD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP4A3QD+AN0A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD+AN0A+QAkAP0AdQD9AHcA/QB4AP4AyAD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD+AMsA/QB4AP0AdwD9AHUA+QAkAAAAAAAAAAAAgAABAP4AlwD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP4AngCqAAIAAAAAAAAAAAAAAAAAqgACAP4AnQD/AP8A/wD/AP8A/wD+AM4A/wD/AP8A/wD+AM4A/wD/AP8A/wD/AP8A/gCdAKoAAgAAAAAAAAAAAP0AXQD/AP8A/wD/AP8A/wD+AJ0A/gCBAP8A/wD/AP8A/gCBAP4AnQD/AP8A/wD/AP8A/wD9AF0AAAAAAAAAAAD9AF0A/wD/AP8A/wD+AJ0AqgACAP4AgAD/AP8A/wD/AP4AgACqAAIA/gCdAP8A/wD/AP8A/QBdAAAAAAAAAAAAgAABAP0AXAD9AFwAgAABAAAAAAD9AHoA/wD/AP8A/wD9AHoAAAAAAIAAAQD9AFwA/QBcAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+QAkAP4A3gD+AN4A+QAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/D8AAIQhAACAAQAAgAEAAIABAADAAwAAAAAAAAAAAAAAAAAAAAAAAMADAACAAQAAgAEAAIABAACEIQAA/D8AAA==">
|
||||
<img src="data:image/bmp;base64,Qk2KBAAAAAAAAIoAAAB8AAAAEAAAABAAAAABACAAAwAAAAAEAAAjLgAAIy4AAAAAAAAAAAAAAAD/AAD/AAD/AAAAAAAA/0JHUnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPkAJAD+AN4A/gDeAPkAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAP0AXAD9AFwAgAABAAAAAAD9AHoA/wD/AP8A/wD9AHoAAAAAAIAAAQD9AFwA/QBcAIAAAQAAAAAAAAAAAP0AXQD/AP8A/wD/AP4AnQCqAAIA/gCAAP8A/wD/AP8A/gCAAKoAAgD+AJ0A/wD/AP8A/wD9AF0AAAAAAAAAAAD9AF0A/wD/AP8A/wD/AP8A/gCdAP4AgQD/AP8A/wD/AP4AgQD+AJ0A/wD/AP8A/wD/AP8A/QBdAAAAAAAAAAAAqgACAP4AnQD/AP8A/wD/AP8A/wD+AM4A/wD/AP8A/wD+AM4A/wD/AP8A/wD/AP8A/gCdAKoAAgAAAAAAAAAAAAAAAACAAAEA/gCXAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/gCeAKoAAgAAAAAAAAAAAPkAJAD9AH4A/gCIAP4AiAD+AM4A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/gDSAP4AiQD+AIgA/QB+APkAJAD+AN0A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD+AN0A/gDdAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/gDdAPkAJAD9AHUA/QB3AP0AeAD+AMgA/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/gDLAP0AeAD9AHcA/QB1APkAJAAAAAAAAAAAAIAAAQD+AJcA/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD+AJ4AqgACAAAAAAAAAAAAAAAAAKoAAgD+AJ0A/wD/AP8A/wD/AP8A/gDOAP8A/wD/AP8A/gDOAP8A/wD/AP8A/wD/AP4AnQCqAAIAAAAAAAAAAAD9AF0A/wD/AP8A/wD/AP8A/gCdAP4AgQD/AP8A/wD/AP4AgQD+AJ0A/wD/AP8A/wD/AP8A/QBdAAAAAAAAAAAA/QBdAP8A/wD/AP8A/gCdAKoAAgD+AIAA/wD/AP8A/wD+AIAAqgACAP4AnQD/AP8A/wD/AP0AXQAAAAAAAAAAAIAAAQD9AFwA/QBcAIAAAQAAAAAA/QB6AP8A/wD/AP8A/QB6AAAAAACAAAEA/QBcAP0AXACAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPkAJAD+AN4A/gDeAPkAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==">
|
||||
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAS1BMVEUAAAAAgAAAqgAA+QAA/QAA/QAA/QAA/QAA/QAA/QAA/QAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/gAA/wDNmTtpAAAAGHRSTlMAAQIkXF11d3h6foCBiImXnZ7Iy87S3d5CsE4PAAAAZ0lEQVQY02VPwRaAIAijSMvSsrLa/39pil6KPQ5s8MYgEvDzMDV0w9CRA1ztiAwQ+wVY+giYKiB6wGcuQhkgSeVVMdnQsBfOdpyOys9ptEw3Pri1wHMIqZJrDTNrU31WBVPR1XO/918rbA2ED1iblwAAAABJRU5ErkJggg==">
|
||||
Loading…
Add table
Add a link
Reference in a new issue