[Scummvm-git-logs] scummvm master -> e693076558f25128aea23630f4dbf24dba2eabba
sev-
sev at scummvm.org
Tue Jul 21 16:53:53 UTC 2020
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
d759ca6271 DIRECTOR: Store cast member size
2bf6850e8f DIRECTOR: LINGO: Implement 'the size of cast'
e693076558 DIRECTOR: Set the cast size for bitmaps, sounds and texts
Commit: d759ca62715a69e6d2f22459e863f1d46d6f4e5d
https://github.com/scummvm/scummvm/commit/d759ca62715a69e6d2f22459e863f1d46d6f4e5d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-21T18:28:17+02:00
Commit Message:
DIRECTOR: Store cast member size
Changed paths:
engines/director/castmember.cpp
engines/director/castmember.h
diff --git a/engines/director/castmember.cpp b/engines/director/castmember.cpp
index 14eed61c36..96f1801536 100644
--- a/engines/director/castmember.cpp
+++ b/engines/director/castmember.cpp
@@ -31,7 +31,7 @@
namespace Director {
-CastMember::CastMember(Cast* cast, uint16 castId) {
+CastMember::CastMember(Cast* cast, uint16 castId, Common::SeekableReadStreamEndian &stream) {
_type = kCastTypeNull;
_cast = cast;
_castId = castId;
@@ -39,6 +39,7 @@ CastMember::CastMember(Cast* cast, uint16 castId) {
_hilite = false;
_autoHilite = false;
_purgePriority = 3;
+ _size = stream.size();
_modified = true;
}
@@ -48,8 +49,8 @@ CastMember::~CastMember() {
delete _widget;
}
-BitmapCastMember::BitmapCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint32 castTag, uint16 version)
- : CastMember(cast, castId) {
+BitmapCastMember::BitmapCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint32 castTag, uint16 version)
+ : CastMember(cast, castId, stream) {
_type = kCastBitmap;
_img = nullptr;
_matte = nullptr;
@@ -233,8 +234,8 @@ Graphics::Surface *BitmapCastMember::getMatte() {
return _matte ? _matte->getMask() : nullptr;
}
-DigitalVideoCastMember::DigitalVideoCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version)
- : CastMember(cast, castId) {
+DigitalVideoCastMember::DigitalVideoCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version)
+ : CastMember(cast, castId, stream) {
_type = kCastDigitalVideo;
if (version < 4) {
@@ -283,8 +284,8 @@ DigitalVideoCastMember::~DigitalVideoCastMember() {
}
-SoundCastMember::SoundCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version)
- : CastMember(cast, castId) {
+SoundCastMember::SoundCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version)
+ : CastMember(cast, castId, stream) {
_type = kCastSound;
_audio = nullptr;
_looping = 0;
@@ -297,8 +298,8 @@ SoundCastMember::SoundCastMember(Cast *cast, uint16 castId, Common::ReadStreamEn
}
}
-TextCastMember::TextCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version, bool asButton)
- : CastMember(cast, castId) {
+TextCastMember::TextCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version, bool asButton)
+ : CastMember(cast, castId, stream) {
_type = kCastText;
_borderSize = kSizeNone;
@@ -558,8 +559,8 @@ bool TextCastMember::setEditable(bool editable) {
return true;
}
-ShapeCastMember::ShapeCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version)
- : CastMember(cast, castId) {
+ShapeCastMember::ShapeCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version)
+ : CastMember(cast, castId, stream) {
_type = kCastShape;
byte flags, unk1;
@@ -614,8 +615,8 @@ ShapeCastMember::ShapeCastMember(Cast *cast, uint16 castId, Common::ReadStreamEn
_initialRect.debugPrint(0, "ShapeCastMember: rect:");
}
-ScriptCastMember::ScriptCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version)
- : CastMember(cast, castId) {
+ScriptCastMember::ScriptCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version)
+ : CastMember(cast, castId, stream) {
_type = kCastLingoScript;
_scriptType = kNoneScript;
@@ -651,7 +652,7 @@ ScriptCastMember::ScriptCastMember(Cast *cast, uint16 castId, Common::ReadStream
}
}
-RTECastMember::RTECastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version)
+RTECastMember::RTECastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version)
: TextCastMember(cast, castId, stream, version) {
_type = kCastRTE;
diff --git a/engines/director/castmember.h b/engines/director/castmember.h
index 61032c69d3..153ae2110b 100644
--- a/engines/director/castmember.h
+++ b/engines/director/castmember.h
@@ -39,7 +39,7 @@ class MacWidget;
namespace Common {
class SeekableReadStream;
-class ReadStreamEndian;
+class SeekableReadStreamEndian;
}
namespace Image {
@@ -54,7 +54,7 @@ struct Resource;
class CastMember {
public:
- CastMember(Cast *cast, uint16 castId);
+ CastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream);
virtual ~CastMember();
Cast *getCast() { return _cast; }
@@ -78,6 +78,7 @@ public:
bool _hilite;
bool _autoHilite;
int _purgePriority;
+ uint32 _size;
Graphics::MacWidget *_widget;
@@ -88,7 +89,7 @@ private:
class BitmapCastMember : public CastMember {
public:
- BitmapCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint32 castTag, uint16 version);
+ BitmapCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint32 castTag, uint16 version);
~BitmapCastMember();
virtual void createWidget() override;
@@ -113,7 +114,7 @@ public:
class DigitalVideoCastMember : public CastMember {
public:
- DigitalVideoCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version);
+ DigitalVideoCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
~DigitalVideoCastMember();
bool _looping;
@@ -132,7 +133,7 @@ public:
class SoundCastMember : public CastMember {
public:
- SoundCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version);
+ SoundCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
bool _looping;
AudioDecoder *_audio;
@@ -140,7 +141,7 @@ public:
class ShapeCastMember : public CastMember {
public:
- ShapeCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version);
+ ShapeCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
virtual uint getForeColor() override { return _fgCol; }
virtual uint getBackColor() override { return _bgCol; }
@@ -158,7 +159,7 @@ private:
class TextCastMember : public CastMember {
public:
- TextCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version, bool asButton = false);
+ TextCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version, bool asButton = false);
virtual void setColors(int *fgcolor, int *bgcolor) override;
void setText(const char *text);
@@ -205,14 +206,14 @@ private:
class ScriptCastMember : public CastMember {
public:
- ScriptCastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version);
+ ScriptCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
ScriptType _scriptType;
};
class RTECastMember : public TextCastMember {
public:
- RTECastMember(Cast *cast, uint16 castId, Common::ReadStreamEndian &stream, uint16 version);
+ RTECastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
void loadChunks();
};
Commit: 2bf6850e8f30fc64927eea36da4396ee612f84a9
https://github.com/scummvm/scummvm/commit/2bf6850e8f30fc64927eea36da4396ee612f84a9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-21T18:53:07+02:00
Commit Message:
DIRECTOR: LINGO: Implement 'the size of cast'
Changed paths:
engines/director/lingo/lingo-the.cpp
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index d907d62bbc..2bd3455965 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -1508,7 +1508,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
d = Datum(castInfo->script);
break;
case kTheSize:
- warning("STUB: Lingo::getTheCast(): Unprocessed getting field \"%s\" of cast %d", field2str(field), id);
+ d.u.i = member->_size;
break;
case kTheSound:
if (castType == kCastDigitalVideo) {
Commit: e693076558f25128aea23630f4dbf24dba2eabba
https://github.com/scummvm/scummvm/commit/e693076558f25128aea23630f4dbf24dba2eabba
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-21T18:53:28+02:00
Commit Message:
DIRECTOR: Set the cast size for bitmaps, sounds and texts
Changed paths:
engines/director/cast.cpp
engines/director/stxt.cpp
engines/director/stxt.h
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 941772359e..fc835aa2c4 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -429,6 +429,7 @@ void Cast::copyCastStxts() {
TextCastMember *tc = (TextCastMember *)c->_value;
tc->importStxt(stxt);
+ tc->_size = stxt->_size;
}
}
}
@@ -521,9 +522,11 @@ void Cast::loadSpriteImages() {
img->loadStream(*pic);
- delete pic;
-
bitmapCast->_img = img;
+ const Graphics::Surface *surf = img->getSurface();
+ bitmapCast->_size = surf->pitch * surf->h + img->getPaletteColorCount() * 3;
+
+ delete pic;
debugC(4, kDebugImages, "Cast::loadSpriteImages(): id: %d, w: %d, h: %d, flags1: %x, flags2: %x bytes: %x, bpp: %d clut: %x", imgId, w, h, bitmapCast->_flags1, bitmapCast->_flags2, bitmapCast->_bytes, bitmapCast->_bitsPerPixel, bitmapCast->_clut);
}
@@ -574,6 +577,7 @@ void Cast::loadSpriteSounds() {
SNDDecoder *audio = new SNDDecoder();
audio->loadStream(*sndData);
soundCast->_audio = audio;
+ soundCast->_size = sndData->size();
}
delete sndData;
}
@@ -915,7 +919,7 @@ void Cast::loadLingoContext(Common::SeekableSubReadStreamEndian &stream) {
for (Common::HashMap<uint16, CastMemberInfo *>::iterator it = _castsInfo.begin(); it != _castsInfo.end(); ++it) {
if (it->_value->scriptId == 0)
continue;
-
+
ScriptType type = kCastScript;
CastMember *member = _loadedCast->getVal(it->_key);
if (member->_type == kCastLingoScript) {
diff --git a/engines/director/stxt.cpp b/engines/director/stxt.cpp
index 199cc2dd1a..319cb381ba 100644
--- a/engines/director/stxt.cpp
+++ b/engines/director/stxt.cpp
@@ -35,6 +35,7 @@ Stxt::Stxt(Cast *cast, Common::SeekableSubReadStreamEndian &textStream) : _cast(
_textShadow = kSizeNone;
_unk1f = _unk2f = 0;
_unk3f = 0;
+ _size = textStream.size();
// D4+ variant
if (textStream.size() == 0)
diff --git a/engines/director/stxt.h b/engines/director/stxt.h
index 03829e354d..d2f19f08b6 100644
--- a/engines/director/stxt.h
+++ b/engines/director/stxt.h
@@ -57,6 +57,8 @@ public:
TextAlignType _textAlign;
SizeType _textShadow;
+ uint32 _size;
+
FontStyle _style;
uint16 _unk1f;
uint16 _unk2f;
More information about the Scummvm-git-logs
mailing list