[Scummvm-git-logs] scummvm master -> e2fb531863d8cbe6f7791077888535b5840cc6ba

aquadran noreply at scummvm.org
Thu Jun 12 10:24:13 UTC 2025


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

Summary:
e2fb531863 WINTERMUTE: Implement greyscale conversion for some savegame images


Commit: e2fb531863d8cbe6f7791077888535b5840cc6ba
    https://github.com/scummvm/scummvm/commit/e2fb531863d8cbe6f7791077888535b5840cc6ba
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-06-12T12:24:07+02:00

Commit Message:
WINTERMUTE: Implement greyscale conversion for some savegame images

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 e70e7e04ab6..1ccd415cba4 100644
--- a/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
@@ -146,6 +146,17 @@ bool BaseSurfaceOpenGL3D::create(const Common::String &filename, bool defaultCK,
 	_imageData = img.getSurface()->convertTo(Graphics::PixelFormat(4, 8, 8, 8, 8, 0, 8, 16, 24), img.getPalette(), img.getPaletteCount());
 #endif
 
+	if (_filename.matchString("savegame:*g", true)) {
+		uint8 r, g, b, a;
+		for (int x = 0; x < _imageData->w; x++) {
+			for (int y = 0; y < _imageData->h; y++) {
+				_imageData->format.colorToARGB(_imageData->getPixel(x, y), a, r, g, b);
+				uint8 grey = (uint8)(0.2126f * r + 0.7152f * g + 0.0722f * b);
+				_imageData->setPixel(x, y, _imageData->format.ARGBToColor(a, grey, grey, grey));
+			}
+		}
+	}
+
 	if (_filename.hasSuffix(".bmp")) {
 		// Ignores alpha channel for BMPs
 		needsColorKey = true;
diff --git a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
index 485874e94a7..09456314f57 100644
--- a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
@@ -110,12 +110,6 @@ bool BaseSurfaceOSystem::finishLoad() {
 	_width = image->getSurface()->w;
 	_height = image->getSurface()->h;
 
-	bool isSaveGameGrayscale = _filename.matchString("savegame:*g", true);
-	if (isSaveGameGrayscale) {
-		warning("grayscaleConversion not yet implemented");
-		// FIBITMAP *newImg = FreeImage_ConvertToGreyscale(img); TODO
-	}
-
 	_surface->free();
 	delete _surface;
 
@@ -133,6 +127,17 @@ bool BaseSurfaceOSystem::finishLoad() {
 		_surface->copyFrom(*image->getSurface());
 	}
 
+	if (_filename.matchString("savegame:*g", true)) {
+		uint8 r, g, b, a;
+		for (int x = 0; x < _surface->w; x++) {
+			for (int y = 0; y < _surface->h; y++) {
+				_surface->format.colorToARGB(_surface->getPixel(x, y), a, r, g, b);
+				uint8 grey = (uint8)(0.2126f * r + 0.7152f * g + 0.0722f * b);
+				_surface->setPixel(x, y, _surface->format.ARGBToColor(a, grey, grey, grey));
+			}
+		}
+	}
+	
 	if (_filename.hasSuffix(".bmp")) {
 		// Ignores alpha channel for BMPs
 		needsColorKey = true;




More information about the Scummvm-git-logs mailing list