[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