[Scummvm-git-logs] scummvm master -> 410f1bad4166130bddbf96cba1085b7edbad7be1

OMGPizzaGuy 48367439+OMGPizzaGuy at users.noreply.github.com
Sun Feb 14 03:12:33 UTC 2021


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

Summary:
410f1bad41 ULTIMA8: Update font manager to all reset properly


Commit: 410f1bad4166130bddbf96cba1085b7edbad7be1
    https://github.com/scummvm/scummvm/commit/410f1bad4166130bddbf96cba1085b7edbad7be1
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2021-02-13T21:12:14-06:00

Commit Message:
ULTIMA8: Update font manager to all reset properly

Changed paths:
    engines/ultima/ultima8/graphics/fonts/font_manager.cpp
    engines/ultima/ultima8/graphics/fonts/font_manager.h
    engines/ultima/ultima8/ultima8.cpp


diff --git a/engines/ultima/ultima8/graphics/fonts/font_manager.cpp b/engines/ultima/ultima8/graphics/fonts/font_manager.cpp
index 64b61a005c..4639ef8a8b 100644
--- a/engines/ultima/ultima8/graphics/fonts/font_manager.cpp
+++ b/engines/ultima/ultima8/graphics/fonts/font_manager.cpp
@@ -40,7 +40,7 @@ namespace Ultima8 {
 
 FontManager *FontManager::_fontManager = nullptr;
 
-FontManager::FontManager(bool ttf_antialiasing) : _ttfAntialiasing(ttf_antialiasing) {
+FontManager::FontManager() {
 	debugN(MM_INFO, "Creating Font Manager...\n");
 
 	_fontManager = this;
@@ -53,15 +53,6 @@ FontManager::~FontManager() {
 
 	resetGameFonts();
 
-	for (unsigned int i = 0; i < _ttFonts.size(); ++i)
-		delete _ttFonts[i];
-	_ttFonts.clear();
-
-	TTFFonts::iterator iter;
-	for (iter = _ttfFonts.begin(); iter != _ttfFonts.end(); ++iter)
-		delete iter->_value;
-	_ttfFonts.clear();
-
 	assert(_fontManager == this);
 	_fontManager = nullptr;
 }
@@ -71,7 +62,15 @@ void FontManager::resetGameFonts() {
 	for (unsigned int i = 0; i < _overrides.size(); ++i)
 		delete _overrides[i];
 	_overrides.clear();
-}
+
+	for (unsigned int i = 0; i < _ttFonts.size(); ++i)
+		delete _ttFonts[i];
+	_ttFonts.clear();
+
+	TTFFonts::iterator iter;
+	for (iter = _ttfFonts.begin(); iter != _ttfFonts.end(); ++iter)
+		delete iter->_value;
+	_ttfFonts.clear();}
 
 Font *FontManager::getGameFont(unsigned int fontnum,
         bool allowOverride) {
@@ -88,7 +87,7 @@ Font *FontManager::getTTFont(unsigned int fontnum) {
 }
 
 
-Graphics::Font *FontManager::getTTF_Font(const Std::string &filename, int pointsize) {
+Graphics::Font *FontManager::getTTF_Font(const Std::string &filename, int pointsize, bool antialiasing) {
 	TTFId id;
 	id._filename = filename;
 	id._pointSize = pointsize;
@@ -109,7 +108,7 @@ Graphics::Font *FontManager::getTTF_Font(const Std::string &filename, int points
 #ifdef USE_FREETYPE2
 	// open font using ScummVM TTF API
 	// Note: The RWops and ReadStream will be deleted by the TTF_Font
-	Graphics::TTFRenderMode mode = _ttfAntialiasing ? Graphics::kTTFRenderModeNormal : Graphics::kTTFRenderModeMonochrome;
+	Graphics::TTFRenderMode mode = antialiasing ? Graphics::kTTFRenderModeNormal : Graphics::kTTFRenderModeMonochrome;
 	Graphics::Font *font = Graphics::loadTTFFont(*fontids, pointsize, Graphics::kTTFSizeModeCharacter, 0, mode, 0, false);
 
 	if (!font) {
@@ -143,11 +142,12 @@ void FontManager::setOverride(unsigned int fontnum, Font *newFont) {
 bool FontManager::addTTFOverride(unsigned int fontnum, const Std::string &filename,
                                  int pointsize, uint32 rgb, int bordersize,
                                  bool SJIS) {
-	Graphics::Font *f = getTTF_Font(filename, pointsize);
+	bool antialiasing = ConfMan.getBool("font_antialiasing");
+	Graphics::Font *f = getTTF_Font(filename, pointsize, antialiasing);
 	if (!f)
 		return false;
 
-	TTFont *font = new TTFont(f, rgb, bordersize, _ttfAntialiasing, SJIS);
+	TTFont *font = new TTFont(f, rgb, bordersize, antialiasing, SJIS);
 	bool highres = ConfMan.getBool("font_highres");
 	font->setHighRes(highres);
 
@@ -195,11 +195,12 @@ bool FontManager::addJPOverride(unsigned int fontnum,
 
 bool FontManager::loadTTFont(unsigned int fontnum, const Std::string &filename,
                              int pointsize, uint32 rgb, int bordersize) {
-	Graphics::Font *f = getTTF_Font(filename, pointsize);
+	bool antialiasing = ConfMan.getBool("font_antialiasing");
+	Graphics::Font *f = getTTF_Font(filename, pointsize, antialiasing);
 	if (!f)
 		return false;
 
-	TTFont *font = new TTFont(f, rgb, bordersize, _ttfAntialiasing, false);
+	TTFont *font = new TTFont(f, rgb, bordersize, antialiasing, false);
 
 	// TODO: check if this is indeed what we want for non-gamefonts
 	bool highres = ConfMan.getBool("font_highres");
diff --git a/engines/ultima/ultima8/graphics/fonts/font_manager.h b/engines/ultima/ultima8/graphics/fonts/font_manager.h
index 68319d19f6..bb96063bad 100644
--- a/engines/ultima/ultima8/graphics/fonts/font_manager.h
+++ b/engines/ultima/ultima8/graphics/fonts/font_manager.h
@@ -64,11 +64,10 @@ private:
 
 	typedef Std::map<TTFId, Graphics::Font *, TTFHash, TTFEqual> TTFFonts;
 	TTFFonts _ttfFonts;
-	bool _ttfAntialiasing;
 
 	//! Get a (possibly cached) TTF_Font structure for filename/pointsize,
 	//! loading it if necessary.
-	Graphics::Font *getTTF_Font(const Std::string &filename, int pointsize);
+	Graphics::Font *getTTF_Font(const Std::string &filename, int pointsize, bool antialiasing);
 
 	//! Override fontnum with specified font
 	void setOverride(unsigned int fontnum, Font *newFont);
@@ -79,7 +78,7 @@ private:
 
 	static FontManager *_fontManager;
 public:
-	FontManager(bool ttf_antialiasing);
+	FontManager();
 	~FontManager();
 
 	static FontManager *get_instance() {
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 8c48cd9696..a427519d8f 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -196,6 +196,7 @@ bool Ultima8Engine::startup() {
 	_gameInfo = nullptr;
 	_fileSystem = new FileSystem;
 	_configFileMan = new ConfigFileManager();
+	_fontManager = new FontManager();
 	_kernel = new Kernel();
 
 	//!! move this elsewhere
@@ -1147,16 +1148,12 @@ void Ultima8Engine::applyGameSettings() {
 	bool fontOverride = ConfMan.getBool("font_override");
 	bool fontAntialiasing = ConfMan.getBool("font_antialiasing");
 
-	if (!_fontManager || _fontOverride != fontOverride || _fontAntialiasing != fontAntialiasing) {
+	if (_fontOverride != fontOverride || _fontAntialiasing != fontAntialiasing) {
 		_fontOverride = fontOverride;
 		_fontAntialiasing = fontAntialiasing;
 
-		// TODO - update font manager to just need reset here.
-		if (_fontManager) {
-			FORGET_OBJECT(_fontManager);
-		}
+		_fontManager->resetGameFonts();
 
-		_fontManager = new FontManager(_fontAntialiasing);
 		// TODO: assign names to these fontnumbers somehow
 		_fontManager->loadTTFont(0, "Vera.ttf", 18, 0xFFFFFF, 0);
 		_fontManager->loadTTFont(1, "VeraBd.ttf", 12, 0xFFFFFF, 0);




More information about the Scummvm-git-logs mailing list