[Scummvm-git-logs] scummvm master -> b8fb4548670d546fd8f08543ba44d0d782621f4e
npjg
nathanael.gentrydb8 at gmail.com
Thu Jun 11 12:32:25 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
d70fed560d GRAPHICS: MACGUI: MacEditableText: Properly set MacText align
b8fb454867 DIRECTOR: LINGO: Begin implementing kTheField properties
Commit: d70fed560db7eccf6e8bc32fe56417bb3a424fd0
https://github.com/scummvm/scummvm/commit/d70fed560db7eccf6e8bc32fe56417bb3a424fd0
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-11T08:32:20-04:00
Commit Message:
GRAPHICS: MACGUI: MacEditableText: Properly set MacText align
Changed paths:
graphics/macgui/maceditabletext.cpp
graphics/macgui/maceditabletext.h
diff --git a/graphics/macgui/maceditabletext.cpp b/graphics/macgui/maceditabletext.cpp
index c0dadba278..adc9f81a4f 100644
--- a/graphics/macgui/maceditabletext.cpp
+++ b/graphics/macgui/maceditabletext.cpp
@@ -49,9 +49,10 @@ MacEditableText::MacEditableText(MacWidget *parent, int x, int y, int w, int h,
setDefaultFormatting(macFont->getId(), macFont->getSlant(), macFont->getSize(), 0, 0, 0);
- MacText::render();
+ reallocSurface();
setAlignOffset(_textAlignment);
updateCursorPos();
+ MacText::render();
}
MacEditableText::MacEditableText(MacWidget *parent, int x, int y, int w, int h, MacWindowManager *wm, const Common::String &s, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear, uint16 border, uint16 gutter, uint16 boxShadow, uint16 textShadow) :
@@ -63,9 +64,10 @@ MacEditableText::MacEditableText(MacWidget *parent, int x, int y, int w, int h,
setDefaultFormatting(macFont->getId(), macFont->getSlant(), macFont->getSize(), 0, 0, 0);
- MacText::render();
+ reallocSurface();
setAlignOffset(_textAlignment);
updateCursorPos();
+ MacText::render();
}
void MacEditableText::init() {
@@ -102,18 +104,27 @@ MacEditableText::~MacEditableText() {
}
void MacEditableText::setAlignOffset(TextAlign align) {
+ Common::Point offset;
switch(align) {
case kTextAlignLeft:
default:
- _alignOffset = Common::Point(0, 0);
+ offset = Common::Point(0, 0);
break;
case kTextAlignCenter:
- _alignOffset = Common::Point((_maxWidth / 2) - (_surface->w / 2), 0);
+ offset = Common::Point((_maxWidth / 2) - (_surface->w / 2), 0);
break;
case kTextAlignRight:
- _alignOffset = Common::Point(_maxWidth - (_surface->w + 1), 0);
+ offset = Common::Point(_maxWidth - (_surface->w + 1), 0);
break;
}
+
+ if (offset != _alignOffset) {
+ _contentIsDirty = true;
+ _fullRefresh = true;
+ _alignOffset = offset;
+ _textAlignment = align;
+ MacText::render();
+ }
}
Common::Point MacEditableText::calculateOffset() {
diff --git a/graphics/macgui/maceditabletext.h b/graphics/macgui/maceditabletext.h
index 62ef25fd19..5ece65b7ab 100644
--- a/graphics/macgui/maceditabletext.h
+++ b/graphics/macgui/maceditabletext.h
@@ -66,6 +66,7 @@ public:
virtual bool draw(bool forceRedraw = false) override;
void setAlignOffset(TextAlign align);
+ TextAlign getAlign() { return _textAlignment; }
Common::Point calculateOffset();
virtual void setActive(bool active) override;
void setEditable(bool editable);
Commit: b8fb4548670d546fd8f08543ba44d0d782621f4e
https://github.com/scummvm/scummvm/commit/b8fb4548670d546fd8f08543ba44d0d782621f4e
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-11T08:32:20-04:00
Commit Message:
DIRECTOR: LINGO: Begin implementing kTheField properties
Changed paths:
engines/director/lingo/lingo-the.cpp
engines/director/lingo/lingo.h
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 9a3daf4ab5..c5d4e4bed5 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -591,6 +591,9 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
// bpp. 1, 2, 4, 8, 32
warning("STUB: Lingo::setTheEntity(): Set color depth to %d", _vm->_colorDepth);
break;
+ case kTheField:
+ setTheField(id, field, d);
+ break;
case kTheFloatPrecision:
_floatPrecision = d.asInt();
_floatPrecision = MAX(0, MIN(_floatPrecision, 19)); // 0 to 19
@@ -1125,6 +1128,89 @@ void Lingo::setTheCast(Datum &id1, int field, Datum &d) {
}
}
+Datum Lingo::getTheField(Datum &id1, int field) {
+ Datum d;
+ int id = g_lingo->castIdFetch(id1);
+
+ Cast *member = _vm->getCastMember(id);
+ if (!member) {
+ warning("Lingo::getTheField(): Cast id %d doesn't exist", id);
+ return d;
+ } else if (member->_type != kCastText) {
+ warning("Lingo::getTheField(): Cast id %d is not a field", id);
+ return d;
+ }
+
+ switch (field) {
+ case kTheTextAlign:
+ d.type = STRING;
+ switch (((Graphics::MacEditableText *)member->_widget)->getAlign()) {
+ case Graphics::kTextAlignLeft:
+ d.u.s = new Common::String("left");
+ break;
+ case Graphics::kTextAlignCenter:
+ d.u.s = new Common::String("center");
+ break;
+ case Graphics::kTextAlignRight:
+ d.u.s = new Common::String("right");
+ break;
+ case Graphics::kTextAlignInvalid:
+ warning("Lingo::getTheField: Invalid text align spec");
+ break;
+ }
+ break;
+ default:
+ warning("Lingo::getTheField(): Unprocessed getting field \"%s\" of field %d", field2str(field), id);
+ }
+
+ return d;
+}
+
+void Lingo::setTheField(Datum &id1, int field, Datum &d) {
+ int id = 0;
+
+ if (id1.type == INT) {
+ id = id1.u.i;
+ } else {
+ warning("Lingo::setTheField(): Unknown the cast id type: %s", id1.type2str());
+ return;
+ }
+
+ Cast *member = _vm->getCastMember(id);
+ if (!member) {
+ warning("Lingo::setTheField(): Cast id %d doesn't exist", id);
+ return;
+ } else if (member->_type != kCastText) {
+ warning("Lingo::setTheField(): Cast id %d is not a field", id);
+ }
+
+ switch (field) {
+ case kTheTextAlign: {
+ Common::String select = d.asString(true);
+ select.toLowercase();
+
+ Graphics::TextAlign align;
+ if (select == "\"left\"") {
+ align = Graphics::kTextAlignLeft;
+ } else if (select == "\"center\"") {
+ align = Graphics::kTextAlignCenter;
+ } else if (select == "\"right\"") {
+ align = Graphics::kTextAlignRight;
+ } else {
+ warning("Lingo::setTheField: Unknown text align spec: %s", d.asString(true).c_str());
+ break;
+ }
+
+ ((Graphics::MacEditableText *)member->_widget)->setAlignOffset(align);
+ ((Graphics::MacEditableText *)member->_widget)->draw();
+ member->_modified = true;
+ break;
+ }
+ default:
+ warning("Lingo::setTheField(): Unprocessed setting field \"%s\" of field %d", field2str(field), id);
+ }
+}
+
Datum Lingo::getObjectField(Common::String &obj, int field) {
warning("STUB: getObjectField(\"%s\", %d)", obj.c_str(), field);
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 621f9ca7db..15477ea2bb 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -433,8 +433,10 @@ public:
void setTheSprite(Datum &id, int field, Datum &d);
void setTheCast(Datum &id, int field, Datum &d);
Datum getTheEntity(int entity, Datum &id, int field);
+ void setTheField(Datum &id1, int field, Datum &d);
Datum getTheSprite(Datum &id, int field);
Datum getTheCast(Datum &id, int field);
+ Datum getTheField(Datum &id1, int field);
Datum getObjectField(Common::String &obj, int field);
void setObjectField(Common::String &obj, int field, Datum &d);
Datum getObjectRef(Common::String &obj, Common::String &field);
More information about the Scummvm-git-logs
mailing list