[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