[Scummvm-git-logs] scummvm master -> 43b1306bcd60c3c716d38f2b78288f6697c772c0

sev- noreply at scummvm.org
Mon Jun 13 23:03:16 UTC 2022


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:
43b1306bcd DIRECTOR: Simplify builtin tiles decompressing


Commit: 43b1306bcd60c3c716d38f2b78288f6697c772c0
    https://github.com/scummvm/scummvm/commit/43b1306bcd60c3c716d38f2b78288f6697c772c0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2022-06-14T01:03:02+02:00

Commit Message:
DIRECTOR: Simplify builtin tiles decompressing

Changed paths:
    engines/director/director.h
    engines/director/graphics.cpp
    engines/director/tests.cpp


diff --git a/engines/director/director.h b/engines/director/director.h
index 3551632908f..e9d93db2dc7 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -237,7 +237,7 @@ private:
 	Graphics::MacPatterns _director3Patterns;
 	Graphics::MacPatterns _director3QuickDrawPatterns;
 public:
-	Graphics::Surface *_builtinTiles[kNumBuiltinTiles];
+	Image::ImageDecoder *_builtinTiles[kNumBuiltinTiles];
 
 private:
 	Common::HashMap<int, PaletteV4> _loadedPalettes;
diff --git a/engines/director/graphics.cpp b/engines/director/graphics.cpp
index 5993766dc2f..7dcc07b0608 100644
--- a/engines/director/graphics.cpp
+++ b/engines/director/graphics.cpp
@@ -24,6 +24,7 @@
 #include "graphics/macgui/macwindowmanager.h"
 
 #include "director/director.h"
+#include "director/images.h"
 
 namespace Director {
 
@@ -50,40 +51,13 @@ void DirectorEngine::loadPatterns() {
 	for (int i = 0; i < ARRAYSIZE(director3QuickDrawPatterns); i++)
 		_director3QuickDrawPatterns.push_back(director3QuickDrawPatterns[i]);
 
+	_pixelformat = Graphics::PixelFormat::createFormatCLUT8();
+
 	for (int i = 0; i < ARRAYSIZE(builtinTiles); i++) {
 		Common::MemoryReadStream stream(builtinTiles[i].ptr, builtinTiles[i].size);
-		Common::Array<uint> pixels;
-
-		while (!stream.eos()) {
-			int data = stream.readByte();
-			int len = data + 1;
-			if ((data & 0x80) != 0) {
-				len = ((data ^ 0xFF) & 0xff) + 2;
-				data = stream.readByte();
-				for (int p = 0; p < len; p++) {
-					pixels.push_back(data);
-				}
-			} else {
-				for (int p = 0; p < len; p++) {
-					data = stream.readByte();
-					pixels.push_back(data);
-				}
-			}
-		}
 
-		warning("Tile%d, size: %d, expecting: %d", i + 1, pixels.size(), builtinTiles[i].w * builtinTiles[i].h);
-
-		for (uint s = pixels.size(); s < builtinTiles[i].w * builtinTiles[i].h; s++)
-			pixels.push_back(0);
-
-		_builtinTiles[i] = new Graphics::Surface();
-		_builtinTiles[i]->create(builtinTiles[i].w, builtinTiles[i].h, Graphics::PixelFormat::createFormatCLUT8());
-
-		for (uint y = 0; y < _builtinTiles[i]->h; y++) {
-			for (uint x = 0; x < _builtinTiles[i]->w; x++) {
-				*((byte *)_builtinTiles[i]->getBasePtr(x, y)) = 255 - pixels[y * _builtinTiles[i]->w + x];
-			}
-		}
+		_builtinTiles[i] = new BITDDecoder(builtinTiles[i].w, builtinTiles[i].h, 8, builtinTiles[i].w, macPalette, kFileVer300);
+		_builtinTiles[i]->loadStream(stream);
 	}
 }
 
diff --git a/engines/director/tests.cpp b/engines/director/tests.cpp
index 43c38bd67d0..be5e5d9840e 100644
--- a/engines/director/tests.cpp
+++ b/engines/director/tests.cpp
@@ -101,9 +101,9 @@ void Window::testFontScaling() {
 
 	x = 10;
 	for (int i = 0; i < kNumBuiltinTiles; i++) {
-		surface.blitFrom(*g_director->_builtinTiles[i], Common::Point(x, 250));
+		surface.blitFrom(g_director->_builtinTiles[i]->getSurface(), Common::Point(x, 250));
 
-		x += g_director->_builtinTiles[i]->w + 10;
+		x += g_director->_builtinTiles[i]->getSurface()->w + 10;
 	}
 
 	g_system->copyRectToScreen(surface.getPixels(), surface.pitch, 0, 0, w, h); // testing fonts




More information about the Scummvm-git-logs mailing list