GRAPHICS: Set PNG alpha bits to 0 if there's no alpha present.
This fixes the color-keying checks in Wintermute for PNG images.
This commit is contained in:
parent
07d9e67ea4
commit
575f81da5f
1 changed files with 7 additions and 3 deletions
|
@ -163,7 +163,13 @@ bool PNGDecoder::loadStream(Common::SeekableReadStream &stream) {
|
|||
_outputSurface->create(width, height, Graphics::PixelFormat::createFormatCLUT8());
|
||||
png_set_packing(pngPtr);
|
||||
} else {
|
||||
_outputSurface->create(width, height, Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0));
|
||||
bool isAlpha = (colorType & PNG_COLOR_MASK_ALPHA);
|
||||
if (png_get_valid(pngPtr, infoPtr, PNG_INFO_tRNS)) {
|
||||
isAlpha = true;
|
||||
png_set_expand(pngPtr);
|
||||
}
|
||||
_outputSurface->create(width, height, Graphics::PixelFormat(4,
|
||||
8, 8, 8, isAlpha ? 8 : 0, 24, 16, 8, 0));
|
||||
if (!_outputSurface->getPixels()) {
|
||||
error("Could not allocate memory for output image.");
|
||||
}
|
||||
|
@ -171,8 +177,6 @@ bool PNGDecoder::loadStream(Common::SeekableReadStream &stream) {
|
|||
png_set_strip_16(pngPtr);
|
||||
if (bitDepth < 8)
|
||||
png_set_expand(pngPtr);
|
||||
if (png_get_valid(pngPtr, infoPtr, PNG_INFO_tRNS))
|
||||
png_set_expand(pngPtr);
|
||||
if (colorType == PNG_COLOR_TYPE_GRAY ||
|
||||
colorType == PNG_COLOR_TYPE_GRAY_ALPHA)
|
||||
png_set_gray_to_rgb(pngPtr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue