[Scummvm-git-logs] scummvm master -> d526f340fb7609bc9b4837f1cef269ecc71e7366

sev- sev at scummvm.org
Sat Apr 11 23:46:17 UTC 2020


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a2d7f975a1 DIRECTOR: Introduced editable flag to sprites
d6c839dc8c DIRECTOR: Removed redundant Sprite copy constructor
a3967ca048 GRAPHICS: MACGUI: Implemented abstract method stubs for MacEditableText
d526f340fb DIRECTOR: Initial plug in for MacEditableText


Commit: a2d7f975a16f3bf3db1e8d2a23614ce5ee8513e8
    https://github.com/scummvm/scummvm/commit/a2d7f975a16f3bf3db1e8d2a23614ce5ee8513e8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-12T01:46:02+02:00

Commit Message:
DIRECTOR: Introduced editable flag to sprites

Changed paths:
    engines/director/frame.cpp
    engines/director/sprite.cpp
    engines/director/sprite.h


diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 145e24805d..7de2a3ffa6 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -348,12 +348,13 @@ void Frame::readChannels(Common::ReadStreamEndian *stream) {
 
 			sprite._colorcode = stream->readByte();
 			sprite._blendAmount = stream->readByte();
-			sprite._moveable = ((sprite._colorcode & 0x80) == 0x80);
 			sprite._thickness = stream->readByte();
 			stream->readByte();	// unused
 		}
 
 		sprite._ink = static_cast<InkType>(sprite._inkData & 0x3f);
+		sprite._editable = ((sprite._colorcode & 0x40) == 0x40);
+		sprite._moveable = ((sprite._colorcode & 0x80) == 0x80);
 
 		if (sprite._inkData & 0x40)
 			sprite._trails = 1;
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 0ae47b6caf..c51ba69744 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -35,7 +35,8 @@ Sprite::Sprite() {
 	_height = 0;
 	_castId = 0;
 	_constraint = 0;
-	_moveable = 0;
+	_moveable = false;
+	_editable = false;
 	_castId = 0;
 	_castIndex = 0;
 	_backColor = 255;
@@ -95,6 +96,7 @@ Sprite::Sprite(const Sprite &sprite) {
 
 	_constraint = sprite._constraint;
 	_moveable = sprite._moveable;
+	_editable = sprite._editable;
 	_blend = sprite._blend;
 	_startTime = sprite._startTime;
 	_thickness = sprite._thickness;
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index 2ebd8fbaff..ca39aee265 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -89,7 +89,8 @@ public:
 	// TODO: default constraint = 0, if turned on, sprite is constrainted to the bounding rect
 	// As i know, constrainted != 0 only if sprite moveable
 	byte _constraint;
-	byte _moveable;
+	bool _moveable;
+	bool _editable;
 	byte _backColor;
 	byte _foreColor;
 


Commit: d6c839dc8ca8b6e2698c6e6bb574ac3205da31d1
    https://github.com/scummvm/scummvm/commit/d6c839dc8ca8b6e2698c6e6bb574ac3205da31d1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-12T01:46:02+02:00

Commit Message:
DIRECTOR: Removed redundant Sprite copy constructor

Changed paths:
    engines/director/sprite.cpp
    engines/director/sprite.h


diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index c51ba69744..af40871292 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -67,48 +67,6 @@ Sprite::Sprite() {
 	_spriteType = 0;
 }
 
-Sprite::Sprite(const Sprite &sprite) {
-	_enabled = sprite._enabled;
-	_castId = sprite._castId;
-	_castIndex = sprite._castIndex;
-	_trails = sprite._trails;
-	_ink = sprite._ink;
-	_inkData = sprite._inkData;
-	_width = sprite._width;
-	_height = sprite._height;
-	_startPoint.x = sprite._startPoint.x;
-	_startPoint.y = sprite._startPoint.y;
-	_backColor = sprite._backColor;
-	_foreColor = sprite._foreColor;
-	_left = sprite._left;
-	_right = sprite._right;
-	_top = sprite._top;
-	_bottom = sprite._bottom;
-	_visible = sprite._visible;
-	_movieRate = sprite._movieRate;
-	_movieTime = sprite._movieTime;
-	_stopTime = sprite._stopTime;
-	_volume = sprite._volume;
-	_stretch = sprite._stretch;
-	_type = sprite._type;
-
-	_cast = sprite._cast;
-
-	_constraint = sprite._constraint;
-	_moveable = sprite._moveable;
-	_editable = sprite._editable;
-	_blend = sprite._blend;
-	_startTime = sprite._startTime;
-	_thickness = sprite._thickness;
-
-	_scriptId = sprite._scriptId;
-	_scriptCastIndex = sprite._scriptCastIndex;
-	_colorcode = sprite._colorcode;
-	_blendAmount = sprite._blendAmount;
-	_unk3 = sprite._unk3;
-	_spriteType = sprite._spriteType;
-}
-
 Sprite::~Sprite() {
 }
 
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index ca39aee265..791c509d26 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -60,7 +60,6 @@ enum MainChannelsPosition {
 class Sprite {
 public:
 	Sprite();
-	Sprite(const Sprite &sprite);
 	~Sprite();
 
 	uint16 getPattern();


Commit: a3967ca0485bfae1a16bcf07e332659ae23055b8
    https://github.com/scummvm/scummvm/commit/a3967ca0485bfae1a16bcf07e332659ae23055b8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-12T01:46:02+02:00

Commit Message:
GRAPHICS: MACGUI: Implemented abstract method stubs for MacEditableText

Changed paths:
    graphics/macgui/maceditabletext.cpp
    graphics/macgui/maceditabletext.h


diff --git a/graphics/macgui/maceditabletext.cpp b/graphics/macgui/maceditabletext.cpp
index a141c60f67..bdf8a1186b 100644
--- a/graphics/macgui/maceditabletext.cpp
+++ b/graphics/macgui/maceditabletext.cpp
@@ -45,7 +45,7 @@ enum {
 
 static void cursorTimerHandler(void *refCon);
 
-MacEditableText::MacEditableText( MacWidget *parent,int x, int y, int w, int h, MacWindowManager *wm, Common::U32String s, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) :
+MacEditableText::MacEditableText(MacWidget *parent,int x, int y, int w, int h, MacWindowManager *wm, Common::U32String s, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) :
 		MacWidget(parent, x, y, w, h, true), MacText(s, wm, macFont, fgcolor, bgcolor, maxWidth, textAlignment, interlinear) {
 
 	_maxWidth = maxWidth;
diff --git a/graphics/macgui/maceditabletext.h b/graphics/macgui/maceditabletext.h
index d625e6e9c4..448cac358d 100644
--- a/graphics/macgui/maceditabletext.h
+++ b/graphics/macgui/maceditabletext.h
@@ -87,6 +87,9 @@ public:
 	Common::U32String cutSelection();
 	const SelectedText *getSelectedText() { return &_selectedText; }
 
+	void setActive(bool active) {}
+	bool hasAllFocus() { return false; }
+
 private:
 	void init();
 	bool isCutAllowed();


Commit: d526f340fb7609bc9b4837f1cef269ecc71e7366
    https://github.com/scummvm/scummvm/commit/d526f340fb7609bc9b4837f1cef269ecc71e7366
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-12T01:46:02+02:00

Commit Message:
DIRECTOR: Initial plug in for MacEditableText

Changed paths:
    engines/director/frame.cpp
    engines/director/sprite.cpp
    engines/director/sprite.h


diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 7de2a3ffa6..ea64f04783 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -25,6 +25,7 @@
 
 #include "graphics/macgui/macfontmanager.h"
 #include "graphics/macgui/macwindowmanager.h"
+#include "graphics/macgui/maceditabletext.h"
 #include "graphics/primitives.h"
 
 #include "director/director.h"
@@ -871,9 +872,11 @@ void Frame::renderButton(Graphics::ManagedSurface &surface, uint16 spriteId) {
 
 void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Common::Rect *textRect) {
 	TextCast *textCast = (TextCast*)_sprites[spriteId]->_cast;
+	Score *score = _vm->getCurrentScore();
+	Sprite *sprite = _sprites[spriteId];
 
-	int x = _sprites[spriteId]->_startPoint.x; // +rectLeft;
-	int y = _sprites[spriteId]->_startPoint.y; // +rectTop;
+	int x = sprite->_startPoint.x; // +rectLeft;
+	int y = sprite->_startPoint.y; // +rectTop;
 	int height = textCast->_initialRect.height(); //_sprites[spriteId]->_height;
 	int width;
 
@@ -898,6 +901,13 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Commo
 		return;
 	}
 
+	if (sprite->_editable) {
+		if (!sprite->_widget) {
+			sprite->_widget = new Graphics::MacEditableText(score->_window, x, y, width, height, g_director->_wm, "", nullptr, sprite->_foreColor, sprite->_backColor);
+			warning("Created MacEditableText");
+		}
+	}
+
 	debugC(3, kDebugText, "renderText: sprite: %d x: %d y: %d w: %d h: %d fontId: '%d' text: '%s'", spriteId, x, y, width, height, textCast->_fontId, Common::toPrintable(textCast->_ftext).c_str());
 
 	uint16 boxShadow = (uint16)textCast->_boxShadow;
@@ -954,9 +964,9 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Commo
 		if (width % 2 != 0)
 			x++;
 
-		if (_sprites[spriteId]->_spriteType != kCastMemberSprite) {
+		if (sprite->_spriteType != kCastMemberSprite) {
 			y += 2;
-			switch (_sprites[spriteId]->_spriteType) {
+			switch (sprite->_spriteType) {
 			case kCheckboxSprite:
 				textX += 16;
 				break;
@@ -1002,7 +1012,7 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Commo
 	}
 
 	Graphics::ManagedSurface textWithFeatures(width + (borderSize * 2) + boxShadow + textShadow, height + borderSize + boxShadow + textShadow);
-	textWithFeatures.fillRect(Common::Rect(textWithFeatures.w, textWithFeatures.h), _vm->getCurrentScore()->getStageColor());
+	textWithFeatures.fillRect(Common::Rect(textWithFeatures.w, textWithFeatures.h), score->getStageColor());
 
 	if (textRect == NULL && boxShadow > 0) {
 		textWithFeatures.fillRect(Common::Rect(boxShadow, boxShadow, textWithFeatures.w + boxShadow, textWithFeatures.h), 0);
@@ -1021,9 +1031,9 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Commo
 
 	textWithFeatures.transBlitFrom(textSurface->rawSurface(), Common::Point(textX, textY), 0xff);
 
-	InkType ink = _sprites[spriteId]->_ink;
+	InkType ink = sprite->_ink;
 
-	if (spriteId == _vm->getCurrentScore()->_currentMouseDownSpriteId)
+	if (spriteId == score->_currentMouseDownSpriteId)
 		ink = kInkTypeReverse;
 
 	inkBasedBlit(surface, textWithFeatures, ink, Common::Rect(x, y, x + width, y + height), spriteId);
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index af40871292..ef94f56dae 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -55,6 +55,7 @@ Sprite::Sprite() {
 	_type = kInactiveSprite;
 
 	_cast = nullptr;
+	_widget = nullptr;
 
 	_blend = 0;
 	_thickness = 0;
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index 791c509d26..a532b70daf 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -23,6 +23,10 @@
 #ifndef DIRECTOR_SPRITE_H
 #define DIRECTOR_SPRITE_H
 
+namespace Graphics {
+class MacWidget;
+}
+
 namespace Director {
 
 class BitmapCast;
@@ -110,6 +114,8 @@ public:
 
 	// Using in text sprites
 	Common::String _editableText;
+
+	Graphics::MacWidget *_widget;
 };
 
 } // End of namespace Director




More information about the Scummvm-git-logs mailing list