[Scummvm-git-logs] scummvm master -> 0d928bbd069b3991e419f2875237ea6ba66dcd5e

aquadran noreply at scummvm.org
Thu Oct 31 10:50:59 UTC 2024


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:
0d928bbd06 WINTERMUTE: Adapt color key to TGA decoder color components layout.


Commit: 0d928bbd069b3991e419f2875237ea6ba66dcd5e
    https://github.com/scummvm/scummvm/commit/0d928bbd069b3991e419f2875237ea6ba66dcd5e
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2024-10-31T11:50:53+01:00

Commit Message:
WINTERMUTE: Adapt color key to TGA decoder color components layout.

ScummVM TGA decoder interpreting pallete component as RGB, but TGA has GBR

Changed paths:
    engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
    engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp


diff --git a/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
index 5376eb2d44b..961e5e6ee6e 100644
--- a/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
@@ -137,6 +137,16 @@ bool BaseSurfaceOpenGL3D::create(const Common::String &filename, bool defaultCK,
 		ckBlue = 255;
 	}
 
+	//
+	// ScummVM TGA decoder interpreting palette as RGB, but TGA data has as BGR
+	// swap R and B color components
+	//
+	if (img.getPaletteCount() != 0 && _filename.hasSuffix(".tga")) {
+		byte tmp = ckBlue;
+		ckBlue = ckRed;
+		ckRed = tmp;
+	}
+
 	_ckDefault = defaultCK;
 	_ckRed = ckRed;
 	_ckGreen = ckGreen;
diff --git a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
index 1122ef0614e..8a8b119e5fc 100644
--- a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
@@ -121,6 +121,16 @@ bool BaseSurfaceOSystem::finishLoad() {
 	_surface->free();
 	delete _surface;
 
+	//
+	// ScummVM TGA decoder interpreting palette as RGB, but TGA data has as BGR
+	// swap R and B color components
+	//
+	if (image->getPaletteCount() != 0 && _filename.hasSuffix(".tga")) {
+		byte tmp = _ckBlue;
+		_ckBlue = _ckRed;
+		_ckRed = tmp;
+	}
+
 	bool needsColorKey = false;
 	bool replaceAlpha = true;
 	if (image->getSurface()->format.bytesPerPixel == 1) {




More information about the Scummvm-git-logs mailing list