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

sev- noreply at scummvm.org
Mon Oct 30 00:26:20 UTC 2023


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

Summary:
ca299d7ae1 GRAPHICS: MACGUI: Fix MacTexCanvas rendereing debug output
0652a4c246 GRAPHICS: MACGUI: Do not add extra line at end of the text when splitting MacText
526c116bbe GRAPHICS: MACGUI: Break infinite loop triggered in some cases
3d237bccf1 GRAPHCS: MACGUI: Made MacText::setMaxWidth() use reshuffleParagraph()
ad5fe9f2bc GRAPHICS: MACGUI: Factored out MacTextCanvas::setMaxWidth()
85ea0aa22e GRAPHICS: MACGUI: Wrap MaxTexCanvas table cell contents
d4cea997f8 GRAPHICS: MACGUI: Hid noisy debug output in table rendering


Commit: ca299d7ae1749888f12cdb0dae5a548516da1022
    https://github.com/scummvm/scummvm/commit/ca299d7ae1749888f12cdb0dae5a548516da1022
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-10-30T00:28:05+01:00

Commit Message:
GRAPHICS: MACGUI: Fix MacTexCanvas rendereing debug output

Changed paths:
    graphics/macgui/mactext-canvas.cpp


diff --git a/graphics/macgui/mactext-canvas.cpp b/graphics/macgui/mactext-canvas.cpp
index dd668cfd5b4..36135c481e9 100644
--- a/graphics/macgui/mactext-canvas.cpp
+++ b/graphics/macgui/mactext-canvas.cpp
@@ -26,12 +26,14 @@
 
 namespace Graphics {
 
-#define DEBUG 0
+#define DEBUG 1
 
 #if DEBUG
 #define D(...)  debug(__VA_ARGS__)
+#define DN(...)  debugN(__VA_ARGS__)
 #else
 #define D(...)  ;
+#define DN(...)  ;
 #endif
 
 // Adds the given string to the end of the last line/chunk
@@ -1144,23 +1146,23 @@ void MacTextCanvas::processTable(int line, int maxWidth) {
 }
 
 void MacFontRun::debugPrint() {
-	D(8, "{%d}[%d (%d)] \"%s\" ", text.size(), fontId, textSlant, Common::toPrintable(text.encode()).c_str());
+	DN(8, "{%d}[%d (%d)] \"%s\" ", text.size(), fontId, textSlant, Common::toPrintable(text.encode()).c_str());
 }
 
 void MacTextCanvas::debugPrint(const char *prefix) {
 	for (uint i = 0; i < _text.size(); i++) {
 		if (prefix)
-			D(8, "%s: ", prefix);
-		D(8, "%2d, %c fi: %d, i: %d ", i, _text[i].paragraphEnd ? '$' : '.', _text[i].firstLineIndent, _text[i].indent);
+			DN(8, "%s: ", prefix);
+		DN(8, "%2d, %c fi: %d, i: %d ", i, _text[i].paragraphEnd ? '$' : '.', _text[i].firstLineIndent, _text[i].indent);
 
 		for (uint j = 0; j < _text[i].chunks.size(); j++)
 			_text[i].chunks[j].debugPrint();
 
-		D(8, "\n");
+		DN(8, "\n");
 	}
 
 	if (prefix)
-		D(8, "%s: ", prefix);
+		DN(8, "%s: ", prefix);
 	D(8, "[done]");
 }
 


Commit: 0652a4c246e367f1e99a8a094cc1df727eae1843
    https://github.com/scummvm/scummvm/commit/0652a4c246e367f1e99a8a094cc1df727eae1843
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-10-30T00:33:47+01:00

Commit Message:
GRAPHICS: MACGUI: Do not add extra line at end of the text when splitting MacText

Changed paths:
    graphics/macgui/mactext-canvas.cpp


diff --git a/graphics/macgui/mactext-canvas.cpp b/graphics/macgui/mactext-canvas.cpp
index 36135c481e9..ac455a67813 100644
--- a/graphics/macgui/mactext-canvas.cpp
+++ b/graphics/macgui/mactext-canvas.cpp
@@ -463,11 +463,13 @@ const Common::U32String::value_type *MacTextCanvas::splitString(const Common::U3
 			curTextLine->chunks.push_back(defaultFormatting);
 		}
 
-		curLine++;
-		_text.insert_at(curLine, MacTextLine());
-		_text[curLine].chunks.push_back(chunk);
+		if (*s) {
+			curLine++;
+			_text.insert_at(curLine, MacTextLine());
+			_text[curLine].chunks.push_back(chunk);
 
-		curTextLine = &_text[curLine];
+			curTextLine = &_text[curLine];
+		}
 	}
 
 #if DEBUG


Commit: 526c116bbea146ca139d01de386b9b91d937c003
    https://github.com/scummvm/scummvm/commit/526c116bbea146ca139d01de386b9b91d937c003
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-10-30T00:40:21+01:00

Commit Message:
GRAPHICS: MACGUI: Break infinite loop triggered in some cases

Triggered in wage:afm on attempt to go to the shop

Changed paths:
    graphics/macgui/mactext.cpp


diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 1999e106fe4..3cda1149794 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -320,6 +320,10 @@ void MacText::setMaxWidth(int maxWidth) {
 	_cursorRow = 0;
 	while (ppos > _canvas.getLineCharWidth(_cursorRow, true)) {
 		ppos -= _canvas.getLineCharWidth(_cursorRow, true);
+
+		if (_cursorRow == (int)_canvas._text.size() - 1)
+			break;
+
 		_cursorRow++;
 	}
 	_cursorCol = ppos;
@@ -1722,6 +1726,10 @@ void MacText::insertTextFromClipboard() {
 
 	while (ppos > _canvas.getLineCharWidth(_cursorRow, true)) {
 		ppos -= _canvas.getLineCharWidth(_cursorRow, true);
+
+		if (_cursorRow == (int)_canvas._text.size() - 1)
+			break;
+
 		_cursorRow++;
 	}
 	_cursorCol = ppos;


Commit: 3d237bccf13686e72aa2153c4ec6e36d14f20e22
    https://github.com/scummvm/scummvm/commit/3d237bccf13686e72aa2153c4ec6e36d14f20e22
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-10-30T01:08:40+01:00

Commit Message:
GRAPHCS: MACGUI: Made MacText::setMaxWidth() use reshuffleParagraph()

This preserves all formatting

Changed paths:
    graphics/macgui/mactext.cpp


diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 3cda1149794..480b0b9eaf1 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -303,8 +303,6 @@ void MacText::setMaxWidth(int maxWidth) {
 		return;
 	}
 
-	Common::U32String str = _canvas.getTextChunk(0, 0, -1, -1, true, true);
-
 	// keep the cursor pos
 	int ppos = 0;
 	for (int i = 0; i < _cursorRow; i++)
@@ -312,16 +310,23 @@ void MacText::setMaxWidth(int maxWidth) {
 	ppos += _cursorCol;
 
 	_canvas._maxWidth = maxWidth;
-	_canvas._text.clear();
 
-	_canvas.splitString(str, -1, _defaultFormatting);
+	int row, col = 0;
+
+	for (uint i = 0; i < _canvas._text.size(); i++) {
+		row = i;
+		_canvas.reshuffleParagraph(&row, &col, _defaultFormatting);
+
+		while (i < _canvas._text.size() - 1 && !_canvas._text[i].paragraphEnd)
+			i++;
+	}
 
 	// restore the cursor pos
 	_cursorRow = 0;
 	while (ppos > _canvas.getLineCharWidth(_cursorRow, true)) {
 		ppos -= _canvas.getLineCharWidth(_cursorRow, true);
 
-		if (_cursorRow == (int)_canvas._text.size() - 1)
+		if (_cursorRow >= (int)_canvas._text.size() - 1)
 			break;
 
 		_cursorRow++;


Commit: ad5fe9f2bc2df8aa3c816be159aef48ab8c0b7a1
    https://github.com/scummvm/scummvm/commit/ad5fe9f2bc2df8aa3c816be159aef48ab8c0b7a1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-10-30T01:14:29+01:00

Commit Message:
GRAPHICS: MACGUI: Factored out MacTextCanvas::setMaxWidth()

Changed paths:
    graphics/macgui/mactext-canvas.cpp
    graphics/macgui/mactext-canvas.h
    graphics/macgui/mactext.cpp


diff --git a/graphics/macgui/mactext-canvas.cpp b/graphics/macgui/mactext-canvas.cpp
index ac455a67813..024c9c897db 100644
--- a/graphics/macgui/mactext-canvas.cpp
+++ b/graphics/macgui/mactext-canvas.cpp
@@ -993,6 +993,28 @@ void MacTextCanvas::reshuffleParagraph(int *row, int *col, MacFontRun &defaultFo
 	*col = ppos;
 }
 
+void MacTextCanvas::setMaxWidth(int maxWidth, MacFontRun &defaultFormatting) {
+	if (maxWidth == _maxWidth)
+		return;
+
+	if (maxWidth < 0) {
+		warning("MacTextCanvas::setMaxWidth(): trying to set maxWidth to %d", maxWidth);
+		return;
+	}
+
+	_maxWidth = maxWidth;
+
+	int row, col = 0;
+
+	for (uint i = 0; i < _text.size(); i++) {
+		row = i;
+		reshuffleParagraph(&row, &col, defaultFormatting);
+
+		while (i < _text.size() - 1 && !_text[i].paragraphEnd)
+			i++;
+	}
+}
+
 void MacTextCanvas::processTable(int line, int maxWidth) {
 	Common::Array<MacTextTableRow> *table = _text[line].table;
 	uint numCols = table->front().cells.size();
diff --git a/graphics/macgui/mactext-canvas.h b/graphics/macgui/mactext-canvas.h
index 21e0541ea74..00f3372a456 100644
--- a/graphics/macgui/mactext-canvas.h
+++ b/graphics/macgui/mactext-canvas.h
@@ -160,6 +160,7 @@ public:
 	 * other paragraphs. Also, cursor position is returned in the arguments
 	 */
 	void reshuffleParagraph(int *row, int *col, MacFontRun &defaultFormatting);
+	void setMaxWidth(int maxWidth, MacFontRun &defaultFormatting);
 
 	void processTable(int line, int maxWidth);
 
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 480b0b9eaf1..f3a5dd575fd 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -309,17 +309,7 @@ void MacText::setMaxWidth(int maxWidth) {
 		ppos += _canvas.getLineCharWidth(i);
 	ppos += _cursorCol;
 
-	_canvas._maxWidth = maxWidth;
-
-	int row, col = 0;
-
-	for (uint i = 0; i < _canvas._text.size(); i++) {
-		row = i;
-		_canvas.reshuffleParagraph(&row, &col, _defaultFormatting);
-
-		while (i < _canvas._text.size() - 1 && !_canvas._text[i].paragraphEnd)
-			i++;
-	}
+	_canvas.setMaxWidth(maxWidth, _defaultFormatting);
 
 	// restore the cursor pos
 	_cursorRow = 0;


Commit: 85ea0aa22eadcb2848a54d51410aedeec55ab90f
    https://github.com/scummvm/scummvm/commit/85ea0aa22eadcb2848a54d51410aedeec55ab90f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-10-30T01:22:30+01:00

Commit Message:
GRAPHICS: MACGUI: Wrap MaxTexCanvas table cell contents

Changed paths:
    graphics/macgui/mactext-canvas.cpp
    graphics/macgui/mactext-canvas.h


diff --git a/graphics/macgui/mactext-canvas.cpp b/graphics/macgui/mactext-canvas.cpp
index 024c9c897db..d596be3b514 100644
--- a/graphics/macgui/mactext-canvas.cpp
+++ b/graphics/macgui/mactext-canvas.cpp
@@ -376,7 +376,7 @@ const Common::U32String::value_type *MacTextCanvas::splitString(const Common::U3
 						inTable = false;
 
 						D(9, "** splitString[body end]");
-						processTable(curLine, _maxWidth);
+						processTable(curLine, _maxWidth, defaultFormatting);
 
 						continue;
 					} else if (cmd == 'r') { // Row
@@ -1015,7 +1015,7 @@ void MacTextCanvas::setMaxWidth(int maxWidth, MacFontRun &defaultFormatting) {
 	}
 }
 
-void MacTextCanvas::processTable(int line, int maxWidth) {
+void MacTextCanvas::processTable(int line, int maxWidth, MacFontRun &defaultFormatting) {
 	Common::Array<MacTextTableRow> *table = _text[line].table;
 	uint numCols = table->front().cells.size();
 	uint numRows = table->size();
@@ -1109,7 +1109,7 @@ void MacTextCanvas::processTable(int line, int maxWidth) {
 		int c = 0;
 		rowH[r] = 0;
 		for (auto &cell : row.cells) {
-			cell._maxWidth = colW[c];
+			cell.setMaxWidth(colW[c], defaultFormatting);
 
 			cell.recalcDims();
 			cell.reallocSurface();
diff --git a/graphics/macgui/mactext-canvas.h b/graphics/macgui/mactext-canvas.h
index 00f3372a456..fd2079fe23a 100644
--- a/graphics/macgui/mactext-canvas.h
+++ b/graphics/macgui/mactext-canvas.h
@@ -162,7 +162,7 @@ public:
 	void reshuffleParagraph(int *row, int *col, MacFontRun &defaultFormatting);
 	void setMaxWidth(int maxWidth, MacFontRun &defaultFormatting);
 
-	void processTable(int line, int maxWidth);
+	void processTable(int line, int maxWidth, MacFontRun &defaultFormatting);
 
 	void debugPrint(const char *prefix = nullptr);
 };


Commit: d4cea997f8bd210dae541842ba02fcbb1d1e3aef
    https://github.com/scummvm/scummvm/commit/d4cea997f8bd210dae541842ba02fcbb1d1e3aef
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-10-30T01:25:41+01:00

Commit Message:
GRAPHICS: MACGUI: Hid noisy debug output in table rendering

Changed paths:
    graphics/macgui/mactext-canvas.cpp


diff --git a/graphics/macgui/mactext-canvas.cpp b/graphics/macgui/mactext-canvas.cpp
index d596be3b514..461403f1e3e 100644
--- a/graphics/macgui/mactext-canvas.cpp
+++ b/graphics/macgui/mactext-canvas.cpp
@@ -26,7 +26,7 @@
 
 namespace Graphics {
 
-#define DEBUG 1
+#define DEBUG 0
 
 #if DEBUG
 #define D(...)  debug(__VA_ARGS__)
@@ -1045,7 +1045,7 @@ void MacTextCanvas::processTable(int line, int maxWidth, MacFontRun &defaultForm
 	}
 
 	for (uint i = 0; i < numCols; i++) {
-		warning("%d: %d - %d", i, maxL[i], maxW[i]);
+		D(8, "cell #%d: width range: %d - %d", i, maxL[i], maxW[i]);
 
 		wrap[i] = (maxW[i] != maxL[i]);
 	}
@@ -1101,7 +1101,7 @@ void MacTextCanvas::processTable(int line, int maxWidth, MacFontRun &defaultForm
 	}
 
 	for (uint i = 0; i < numCols; i++) {
-		warning("%d: %d", i, colW[i]);
+		D(8, "Table cell #%d: width: %d", i, colW[i]);
 	}
 
 	int r = 0;




More information about the Scummvm-git-logs mailing list