[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