[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