[Scummvm-git-logs] scummvm master -> 30c11071c4abc13383db399ad42a4fb367edfc48

sev- sev at scummvm.org
Sat Oct 19 17:44:35 CEST 2019


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:
2d1dc5d1c4 GRAPHICS: MACGUI: Added default font for MacText
30c11071c4 PINK: Enable text rendering for localized versions


Commit: 2d1dc5d1c4a2de31e925ecff45e177ff1c6a7f7c
    https://github.com/scummvm/scummvm/commit/2d1dc5d1c4a2de31e925ecff45e177ff1c6a7f7c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-19T17:43:47+02:00

Commit Message:
GRAPHICS: MACGUI: Added default font for MacText

Changed paths:
    graphics/macgui/macfontmanager.cpp
    graphics/macgui/macfontmanager.h
    graphics/macgui/mactext.cpp


diff --git a/graphics/macgui/macfontmanager.cpp b/graphics/macgui/macfontmanager.cpp
index 259fd15..ac58b80 100644
--- a/graphics/macgui/macfontmanager.cpp
+++ b/graphics/macgui/macfontmanager.cpp
@@ -99,6 +99,11 @@ MacFontManager::MacFontManager(uint32 mode) : _mode(mode) {
 	}
 }
 
+MacFontManager::~MacFontManager() {
+	for(Common::HashMap<int, const Graphics::Font *>::iterator it = _uniFonts.begin(); it != _uniFonts.end(); it++)
+		delete it->_value;
+}
+
 void MacFontManager::loadFontsBDF() {
 	Common::Archive *dat;
 
@@ -287,7 +292,17 @@ const Font *MacFontManager::getFont(MacFont macFont) {
 #ifdef USE_FREETYPE2
 	if (!font) {
 		if (_mode & kWMModeUnicode) {
-			font = Graphics::loadTTFFontFromArchive("FreeSans.ttf", 16, Graphics::kTTFSizeModeCell, 0, Graphics::kTTFRenderModeMonochrome);
+			if (macFont.getSize() <= 0) {
+				debug(1, "MacFontManager::getFont() - Font size <= 0!");
+			}
+			Common::HashMap<int, const Graphics::Font *>::iterator pFont = _uniFonts.find(macFont.getSize());
+
+			if (pFont != _uniFonts.end()) {
+				font = pFont->_value;
+			} else {
+				font = Graphics::loadTTFFontFromArchive("FreeSans.ttf", macFont.getSize(), Graphics::kTTFSizeModeCharacter, 0, Graphics::kTTFRenderModeMonochrome);
+				_uniFonts[macFont.getSize()] = font;
+			}
 		}
 	}
 #endif
diff --git a/graphics/macgui/macfontmanager.h b/graphics/macgui/macfontmanager.h
index d274657..a8a3e3a 100644
--- a/graphics/macgui/macfontmanager.h
+++ b/graphics/macgui/macfontmanager.h
@@ -103,6 +103,7 @@ private:
 class MacFontManager {
 public:
 	MacFontManager(uint32 mode);
+	~MacFontManager();
 
 	/**
 	 * Accessor method to check the presence of built-in fonts.
@@ -154,6 +155,9 @@ private:
 	Common::HashMap<Common::String, int> _extraFontIds;
 
 	int parseFontSlant(Common::String slant);
+
+	/* Unicode font */
+	Common::HashMap<int, const Graphics::Font *> _uniFonts;
 };
 
 } // End of namespace Graphics
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index fa2b92f..6dfdee3 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -66,6 +66,7 @@ MacText::MacText(Common::U32String s, MacWindowManager *wm, const MacFont *macFo
 	_interLinear = interlinear;
 
 	if (macFont) {
+		_defaultFormatting = MacFontRun(_wm, macFont->getId(), macFont->getSlant(), macFont->getSize(), 0, 0, 0);
 		_defaultFormatting.font = wm->_fontMan->getFont(*macFont);
 	} else {
 		_defaultFormatting.font = NULL;
@@ -97,6 +98,7 @@ MacText::MacText(const Common::String &s, MacWindowManager *wm, const MacFont *m
 	_interLinear = interlinear;
 
 	if (macFont) {
+		_defaultFormatting = MacFontRun(_wm, macFont->getId(), macFont->getSlant(), macFont->getSize(), 0, 0, 0);
 		_defaultFormatting.font = wm->_fontMan->getFont(*macFont);
 	} else {
 		_defaultFormatting.font = NULL;
@@ -310,7 +312,7 @@ void MacText::render(int from, int to) {
 
 		// TODO: _textMaxWidth, when -1, was not rendering ANY text.
 		for (uint j = 0; j < _textLines[i].chunks.size(); j++) {
-			debug(5, "line %d[%d]/%d at %d,%d (%s)", i, j, xOffset, _textLines[i].chunks[j].fontId, _textLines[i].y, _textLines[i].chunks[j].text.c_str());
+			debug(5, "line %d[%d]/%d at %d,%d (%s)", i, j, xOffset, _textLines[i].chunks[j].fontId, _textLines[i].y, _textLines[i].chunks[j].text.encode().c_str());
 
 			if (_textLines[i].chunks[j].text.empty())
 				continue;
@@ -324,7 +326,7 @@ void MacText::render(int from, int to) {
 		debugN(4, "%2d ", i);
 
 		for (uint j = 0; j < _textLines[i].chunks.size(); j++)
-			debugN(4, "[%d (%d)] \"%s\" ", _textLines[i].chunks[j].fontId, _textLines[i].chunks[j].textSlant, _textLines[i].chunks[j].text.c_str());
+			debugN(4, "[%d (%d)] \"%s\" ", _textLines[i].chunks[j].fontId, _textLines[i].chunks[j].textSlant, _textLines[i].chunks[j].text.encode().c_str());
 
 		debug(4, "%s", "");
 	}


Commit: 30c11071c4abc13383db399ad42a4fb367edfc48
    https://github.com/scummvm/scummvm/commit/30c11071c4abc13383db399ad42a4fb367edfc48
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-19T17:44:05+02:00

Commit Message:
PINK: Enable text rendering for localized versions

Changed paths:
    engines/pink/objects/actions/action_text.cpp
    engines/pink/objects/actions/action_text.h


diff --git a/engines/pink/objects/actions/action_text.cpp b/engines/pink/objects/actions/action_text.cpp
index 4ee9cf6..70aef5b 100644
--- a/engines/pink/objects/actions/action_text.cpp
+++ b/engines/pink/objects/actions/action_text.cpp
@@ -91,6 +91,22 @@ void ActionText::start() {
 	stream->read(str, stream->size());
 	delete stream;
 
+	switch(_actor->getPage()->getGame()->getLanguage()) {
+	case Common::RU_RUS:
+		_text = Common::String(str).decode(Common::kWindows1251);
+		break;
+
+	case Common::EN_ANY:
+	default:
+		_text = Common::String(str);
+		break;
+	}
+
+	delete[] str;
+
+	while ( _text.size() > 0 && (_text[ _text.size() - 1 ] == '\n' || _text[ _text.size() - 1 ] == '\r') )
+		_text.deleteLastChar();
+
 	if (_scrollBar) {
 		Graphics::MacFont *font = new Graphics::MacFont;
 		_txtWnd = director->getWndManager().addTextWindow(font, _textColorIndex, _backgroundColorIndex,
@@ -114,12 +130,11 @@ void ActionText::start() {
 		Graphics::TransparentSurface *noborder2 = new Graphics::TransparentSurface(*noborder, true);
 		_txtWnd->setBorder(noborder2, false);
 
-		if (_actor->getPage()->getGame()->getLanguage() == Common::EN_ANY)
-			_txtWnd->appendText(str, font);
+		_txtWnd->appendText(_text, font);
+
 	} else {
 		director->addTextAction(this);
 	}
-	delete[] str;
 }
 
 void ActionText::end() {
@@ -134,12 +149,11 @@ void ActionText::end() {
 
 void ActionText::draw(Graphics::ManagedSurface *surface) {
 	// not working
-	/*Graphics::TextAlign alignment = _centered ? Graphics::kTextAlignCenter : Graphics::kTextAlignLeft;
-	Graphics::MacFont *font = new Graphics::MacFont;
+	Graphics::TextAlign alignment = _centered ? Graphics::kTextAlignCenter : Graphics::kTextAlignLeft;
+	Graphics::MacFont *font = new Graphics::MacFont();
 	Director *director = _actor->getPage()->getGame()->getDirector();
-	Graphics::MacText text("", &director->getWndManager(), font, _textColorIndex, _backgroundColorIndex, _xRight - _xLeft, alignment);
-	text.appendText("TESTING", font->getId(), font->getSize(), font->getSlant(), 0);
-	text.draw(surface, _xLeft, _yTop, _xRight - _xLeft, _yBottom - _yTop, 0, 0);*/
+	Graphics::MacText text(_text, &director->getWndManager(), font, _textColorIndex, _backgroundColorIndex, _xRight - _xLeft, alignment);
+	text.draw(surface, 0, 0, _xRight - _xLeft, _yBottom - _yTop, _xLeft, _yTop);
 }
 
 #define RED(rgb) ((rgb) & 0xFF)
diff --git a/engines/pink/objects/actions/action_text.h b/engines/pink/objects/actions/action_text.h
index 6a3a966..0b6e78c 100644
--- a/engines/pink/objects/actions/action_text.h
+++ b/engines/pink/objects/actions/action_text.h
@@ -52,6 +52,7 @@ private:
 
 private:
 	Common::String _fileName;
+	Common::U32String _text;
 	Graphics::MacTextWindow *_txtWnd;
 
 	uint32 _xLeft;





More information about the Scummvm-git-logs mailing list