mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
c176fc94fe
Currently we don't implement transparency at all in BMP images except for an odd-duck case of BMPs within ICOs. This patch does the following. - It implements transparency properly for 16bpp and 32bpp images via bitfield masking. (For 32bpp images this also requires handling colors via bitfield masking.) The patch maintains the existing BMP-within-ICO transparency handling. - It also reworks BitFields::Value::Set(). * It now works correctly if the run of 1s goes all the way to bit 31 (the old code didn't set mBitWidth). * If the mask is 0, will give an mRightShift of 0 (old code gave 32, and right-shifting by 32 is dodgy). * It's now easier to read. - It renames transparent.bmp as transparent-if-within-ico.bmp. Ironically enough this file currently uses BITFIELDS compression and is WinBMPv5 format, which means it contains well-specified alpha data. In order to use it to test the hacky BMP-within-ICO transparency scheme the patch changes it to be WinBMPv3 format with RGB compression (i.e. no compression). I left the now-excess bytes (including the bitfields) in the info header in place because that's allowed -- thanks to the start of the pixel data being specified by the |dataoffset| field -- they'll just be ignored. - It tweaks the naming of the relevant gtests and some of their finer details to work with the new way of doing things. This fixes all four remaining failures in bmpsuite. |
||
---|---|---|
.. | ||
apng | ||
blob | ||
bmp | ||
color-management | ||
downscaling | ||
encoders-lossless | ||
generic | ||
gif | ||
ico | ||
jpeg | ||
pngsuite-ancillary | ||
pngsuite-background | ||
pngsuite-basic-i | ||
pngsuite-basic-n | ||
pngsuite-chunkorder | ||
pngsuite-corrupted | ||
pngsuite-filtering | ||
pngsuite-gamma | ||
pngsuite-oddsizes | ||
pngsuite-palettes | ||
pngsuite-transparency | ||
pngsuite-zlib | ||
colordepth.html | ||
ImageDocument.css | ||
img2html.html | ||
reftest.list |