aboutsummaryrefslogtreecommitdiff
path: root/engines/glk/raw_decoder.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2019-01-05 17:16:42 -0800
committerPaul Gilbert2019-01-05 17:16:42 -0800
commit81541a5f049c4dd8ec10a9c13b163cf478bdc921 (patch)
tree5e2beb823694ddb2c9b3d882d998ac0a0a4b59d9 /engines/glk/raw_decoder.cpp
parentbde504281311953bd99db087471b798da39ed143 (diff)
downloadscummvm-rg350-81541a5f049c4dd8ec10a9c13b163cf478bdc921.tar.gz
scummvm-rg350-81541a5f049c4dd8ec10a9c13b163cf478bdc921.tar.bz2
scummvm-rg350-81541a5f049c4dd8ec10a9c13b163cf478bdc921.zip
GLK: FROTZ: Properly handle picture transparency
Diffstat (limited to 'engines/glk/raw_decoder.cpp')
-rw-r--r--engines/glk/raw_decoder.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/engines/glk/raw_decoder.cpp b/engines/glk/raw_decoder.cpp
index 659b333cac..cf3700371b 100644
--- a/engines/glk/raw_decoder.cpp
+++ b/engines/glk/raw_decoder.cpp
@@ -26,7 +26,8 @@
namespace Glk {
-RawDecoder::RawDecoder() : Image::ImageDecoder(), _palette(nullptr), _paletteColorCount(0) {
+RawDecoder::RawDecoder() : Image::ImageDecoder(), _palette(nullptr), _paletteColorCount(0),
+ _transColor(0) {
}
RawDecoder::~RawDecoder() {
@@ -52,11 +53,15 @@ bool RawDecoder::loadStream(Common::SeekableReadStream &stream) {
_palette = new byte[_paletteColorCount * 3];
stream.read(_palette, _paletteColorCount * 3);
+ // Get the transparent color
+ byte transColor = stream.readByte();
+ if (transColor < _paletteColorCount)
+ _transColor = transColor;
+
// Set up the surface and read it in
- stream.readByte();
_surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8());
- assert((stream.size() - stream.pos()) <= (int)(width * height));
+ assert((stream.size() - stream.pos()) == (int)(width * height));
byte *pixels = (byte *)_surface.getPixels();
stream.read(pixels, width * height);