[Scummvm-cvs-logs] scummvm master -> 575f81da5f11e7b73236beeca5518f4fd054516d

fuzzie fuzzie at fuzzie.org
Tue Nov 12 11:02:03 CET 2013


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
575f81da5f GRAPHICS: Set PNG alpha bits to 0 if there's no alpha present.


Commit: 575f81da5f11e7b73236beeca5518f4fd054516d
    https://github.com/scummvm/scummvm/commit/575f81da5f11e7b73236beeca5518f4fd054516d
Author: Alyssa Milburn (fuzzie at fuzzie.org)
Date: 2013-11-12T01:57:25-08:00

Commit Message:
GRAPHICS: Set PNG alpha bits to 0 if there's no alpha present.

This fixes the color-keying checks in Wintermute for PNG images.

Changed paths:
    graphics/decoders/png.cpp



diff --git a/graphics/decoders/png.cpp b/graphics/decoders/png.cpp
index 5acb7b3..c4fee46 100644
--- a/graphics/decoders/png.cpp
+++ b/graphics/decoders/png.cpp
@@ -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);






More information about the Scummvm-git-logs mailing list