[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