mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 20:25:44 +00:00
c5432f6a1e
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. --HG-- rename : image/test/gtest/transparent.bmp => image/test/gtest/transparent-if-within-ico.bmp extra : rebase_source : 2f4838d04bbae4fac00cc69e8d75469105a5de3b
42 lines
957 B
Python
42 lines
957 B
Python
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
Library('imagetest')
|
|
|
|
UNIFIED_SOURCES = [
|
|
'Common.cpp',
|
|
'TestCopyOnWrite.cpp',
|
|
'TestDecoders.cpp',
|
|
'TestDecodeToSurface.cpp',
|
|
'TestMetadata.cpp',
|
|
'TestStreamingLexer.cpp',
|
|
]
|
|
|
|
TEST_HARNESS_FILES.gtest += [
|
|
'corrupt.jpg',
|
|
'first-frame-green.gif',
|
|
'first-frame-green.png',
|
|
'first-frame-padding.gif',
|
|
'green.bmp',
|
|
'green.gif',
|
|
'green.ico',
|
|
'green.icon',
|
|
'green.jpg',
|
|
'green.png',
|
|
'no-frame-delay.gif',
|
|
'rle4.bmp',
|
|
'rle8.bmp',
|
|
'transparent-if-within-ico.bmp',
|
|
'transparent.gif',
|
|
'transparent.png',
|
|
]
|
|
|
|
LOCAL_INCLUDES += [
|
|
'/image',
|
|
]
|
|
|
|
FINAL_LIBRARY = 'xul-gtest'
|