[Scummvm-git-logs] scummvm master -> 68158a9de05692b4e6b64502d4fea91d7a2f33ce

sev- noreply at scummvm.org
Tue Mar 18 05:33:01 UTC 2025


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:
1e763a8afe GRAPHICS: MACGUI: Adding getLineHeight() to MacTextWindow
68158a9de0 DIRECTOR: Implement text line height


Commit: 1e763a8afe00ad8724f9ac612032ae60b9212f1a
    https://github.com/scummvm/scummvm/commit/1e763a8afe00ad8724f9ac612032ae60b9212f1a
Author: rinevard (rinevard at outlook.com)
Date: 2025-03-18T13:32:56+08:00

Commit Message:
GRAPHICS: MACGUI: Adding getLineHeight() to MacTextWindow

Changed paths:
    graphics/macgui/mactextwindow.h


diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index ba8df1ddc0f..194ed7f7d04 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -72,6 +72,7 @@ public:
 	int getTextSlant() { return _mactext->getTextSlant(); }
 	int getTextSlant(int start, int end) { return _mactext->getTextSlant(start, end); }
 	int getTextHeight() { return _mactext->getTextHeight(); }
+	int getLineHeight(int line) { return _mactext->getLineHeight(line); }
 	Common::U32String getTextChunk(int startRow, int startCol, int endRow, int endCol, bool formatted = false, bool newlines = true) { return _mactext->getTextChunk(startRow, startCol, endRow, endCol, formatted, newlines); }
 	Common::U32String getPlainText() { return _mactext->getPlainText(); }
 	Common::U32String getEditedString() { return _mactext->getEditedString(); };


Commit: 68158a9de05692b4e6b64502d4fea91d7a2f33ce
    https://github.com/scummvm/scummvm/commit/68158a9de05692b4e6b64502d4fea91d7a2f33ce
Author: rinevard (rinevard at outlook.com)
Date: 2025-03-18T13:32:56+08:00

Commit Message:
DIRECTOR: Implement text line height

Changed paths:
    engines/director/castmember/text.cpp
    engines/director/castmember/text.h
    engines/director/lingo/lingo-builtins.cpp


diff --git a/engines/director/castmember/text.cpp b/engines/director/castmember/text.cpp
index a27536d3d37..8ed44a61ba9 100644
--- a/engines/director/castmember/text.cpp
+++ b/engines/director/castmember/text.cpp
@@ -444,6 +444,19 @@ int TextCastMember::getLineCount() {
 	return 0;
 }
 
+int TextCastMember::getLineHeight(int line) {
+	Graphics::MacWidget *target = getWidget();
+	if (target) {
+		if (_textType == kTextTypeScrolling) {
+			return ((Graphics::MacTextWindow *)target)->getLineHeight(line);
+		} else {
+			return ((Graphics::MacText *)target)->getLineHeight(line);
+		}
+	}
+	warning("TextCastMember::getLineHeight(): no widget available, returning 0");
+	return 0;
+}
+
 // D4 dictionary book said this is line spacing
 int TextCastMember::getTextHeight() {
 	Graphics::MacWidget *target = getWidget();
diff --git a/engines/director/castmember/text.h b/engines/director/castmember/text.h
index 1b7d6a63fa5..3e6582df9e5 100644
--- a/engines/director/castmember/text.h
+++ b/engines/director/castmember/text.h
@@ -57,6 +57,7 @@ public:
 	bool setChunkField(int field, int start, int end, const Datum &value);
 
 	int getLineCount();
+	int getLineHeight(int line);
 
 	int getTextHeight();
 
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 196feab0f9e..66a6680bb35 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -3663,10 +3663,26 @@ void LB::b_scrollByPage(int nargs) {
 }
 
 void LB::b_lineHeight(int nargs) {
-	g_lingo->printSTUBWithArglist("b_lineHeight", nargs);
-	g_lingo->dropStack(nargs);
-	Datum res(1);
-	g_lingo->push(res);
+	Datum lineNum = g_lingo->pop();
+	Datum castRef = g_lingo->pop();
+
+	if (castRef.type != CASTREF) {
+		g_lingo->lingoError("Incorrect argument type for lineHeight");
+		g_lingo->push(1);
+        return;
+	}
+
+	CastMember *member = g_director->getCurrentMovie()->getCastMember(*castRef.u.cast);
+
+	if (member->_type != kCastText) {
+		g_lingo->lingoError("Incorrect member type for lineHeight");
+		g_lingo->push(1);
+		return;
+	}
+
+	// MacText::getLineHeigt() is zero-indexed, we are one-indexed
+	int lineHeight = ((TextCastMember *)member)->getLineHeight(lineNum.u.i - 1);
+	g_lingo->push(lineHeight);
 }
 
 void LB::b_numberofchars(int nargs) {




More information about the Scummvm-git-logs mailing list