mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 01:53:45 +01:00
Settings: Purge getDefault, clean FontEngine
This commit is contained in:
parent
37a05ec8d6
commit
2760371d8e
@ -175,7 +175,7 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
g_fontengine = new FontEngine(g_settings, guienv);
|
||||
g_fontengine = new FontEngine(guienv);
|
||||
FATAL_ERROR_IF(g_fontengine == NULL, "Font engine creation failed.");
|
||||
|
||||
#if (IRRLICHT_VERSION_MAJOR >= 1 && IRRLICHT_VERSION_MINOR >= 8) || IRRLICHT_VERSION_MAJOR >= 2
|
||||
|
@ -42,8 +42,7 @@ static void font_setting_changed(const std::string &name, void *userdata)
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
FontEngine::FontEngine(Settings* main_settings, gui::IGUIEnvironment* env) :
|
||||
m_settings(main_settings),
|
||||
FontEngine::FontEngine(gui::IGUIEnvironment* env) :
|
||||
m_env(env)
|
||||
{
|
||||
|
||||
@ -51,34 +50,34 @@ FontEngine::FontEngine(Settings* main_settings, gui::IGUIEnvironment* env) :
|
||||
i = (FontMode) FONT_SIZE_UNSPECIFIED;
|
||||
}
|
||||
|
||||
assert(m_settings != NULL); // pre-condition
|
||||
assert(g_settings != NULL); // pre-condition
|
||||
assert(m_env != NULL); // pre-condition
|
||||
assert(m_env->getSkin() != NULL); // pre-condition
|
||||
|
||||
readSettings();
|
||||
|
||||
if (m_currentMode == FM_Standard) {
|
||||
m_settings->registerChangedCallback("font_size", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("font_bold", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("font_italic", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("font_path", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("font_path_bold", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("font_path_italic", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("font_path_bolditalic", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("font_shadow", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("font_shadow_alpha", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_size", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_bold", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_italic", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_path", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_path_bold", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_path_italic", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_path_bolditalic", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_shadow", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("font_shadow_alpha", font_setting_changed, NULL);
|
||||
}
|
||||
else if (m_currentMode == FM_Fallback) {
|
||||
m_settings->registerChangedCallback("fallback_font_size", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("fallback_font_path", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("fallback_font_shadow", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("fallback_font_shadow_alpha", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("fallback_font_size", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("fallback_font_path", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("fallback_font_shadow", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("fallback_font_shadow_alpha", font_setting_changed, NULL);
|
||||
}
|
||||
|
||||
m_settings->registerChangedCallback("mono_font_path", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("mono_font_size", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("screen_dpi", font_setting_changed, NULL);
|
||||
m_settings->registerChangedCallback("gui_scaling", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("mono_font_path", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("mono_font_size", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("screen_dpi", font_setting_changed, NULL);
|
||||
g_settings->registerChangedCallback("gui_scaling", font_setting_changed, NULL);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
@ -205,9 +204,9 @@ unsigned int FontEngine::getFontSize(FontMode mode)
|
||||
void FontEngine::readSettings()
|
||||
{
|
||||
if (USE_FREETYPE && g_settings->getBool("freetype")) {
|
||||
m_default_size[FM_Standard] = m_settings->getU16("font_size");
|
||||
m_default_size[FM_Fallback] = m_settings->getU16("fallback_font_size");
|
||||
m_default_size[FM_Mono] = m_settings->getU16("mono_font_size");
|
||||
m_default_size[FM_Standard] = g_settings->getU16("font_size");
|
||||
m_default_size[FM_Fallback] = g_settings->getU16("fallback_font_size");
|
||||
m_default_size[FM_Mono] = g_settings->getU16("mono_font_size");
|
||||
|
||||
/*~ DO NOT TRANSLATE THIS LITERALLY!
|
||||
This is a special string. Put either "no" or "yes"
|
||||
@ -220,15 +219,15 @@ void FontEngine::readSettings()
|
||||
m_currentMode = is_yes(gettext("needs_fallback_font")) ?
|
||||
FM_Fallback : FM_Standard;
|
||||
|
||||
m_default_bold = m_settings->getBool("font_bold");
|
||||
m_default_italic = m_settings->getBool("font_italic");
|
||||
m_default_bold = g_settings->getBool("font_bold");
|
||||
m_default_italic = g_settings->getBool("font_italic");
|
||||
|
||||
} else {
|
||||
m_currentMode = FM_Simple;
|
||||
}
|
||||
|
||||
m_default_size[FM_Simple] = m_settings->getU16("font_size");
|
||||
m_default_size[FM_SimpleMono] = m_settings->getU16("mono_font_size");
|
||||
m_default_size[FM_Simple] = g_settings->getU16("font_size");
|
||||
m_default_size[FM_SimpleMono] = g_settings->getU16("mono_font_size");
|
||||
|
||||
cleanCache();
|
||||
updateFontCache();
|
||||
@ -244,7 +243,7 @@ void FontEngine::updateSkin()
|
||||
m_env->getSkin()->setFont(font);
|
||||
else
|
||||
errorstream << "FontEngine: Default font file: " <<
|
||||
"\n\t\"" << m_settings->get("font_path") << "\"" <<
|
||||
"\n\t\"" << g_settings->get("font_path") << "\"" <<
|
||||
"\n\trequired for current screen configuration was not found" <<
|
||||
" or was invalid file format." <<
|
||||
"\n\tUsing irrlicht default font." << std::endl;
|
||||
@ -292,7 +291,7 @@ gui::IGUIFont *FontEngine::initFont(const FontSpec &spec)
|
||||
setting_suffix.append("_italic");
|
||||
|
||||
u32 size = std::floor(RenderingEngine::getDisplayDensity() *
|
||||
m_settings->getFloat("gui_scaling") * spec.size);
|
||||
g_settings->getFloat("gui_scaling") * spec.size);
|
||||
|
||||
if (size == 0) {
|
||||
errorstream << "FontEngine: attempt to use font size 0" << std::endl;
|
||||
@ -311,8 +310,8 @@ gui::IGUIFont *FontEngine::initFont(const FontSpec &spec)
|
||||
|
||||
std::string fallback_settings[] = {
|
||||
wanted_font_path,
|
||||
m_settings->get("fallback_font_path"),
|
||||
m_settings->getDefault(setting_prefix + "font_path")
|
||||
g_settings->get("fallback_font_path"),
|
||||
Settings::getLayer(SL_DEFAULTS)->get(setting_prefix + "font_path")
|
||||
};
|
||||
|
||||
#if USE_FREETYPE
|
||||
@ -346,7 +345,7 @@ gui::IGUIFont *FontEngine::initSimpleFont(const FontSpec &spec)
|
||||
assert(spec.mode == FM_Simple || spec.mode == FM_SimpleMono);
|
||||
assert(spec.size != FONT_SIZE_UNSPECIFIED);
|
||||
|
||||
const std::string &font_path = m_settings->get(
|
||||
const std::string &font_path = g_settings->get(
|
||||
(spec.mode == FM_SimpleMono) ? "mono_font_path" : "font_path");
|
||||
|
||||
size_t pos_dot = font_path.find_last_of('.');
|
||||
@ -364,7 +363,7 @@ gui::IGUIFont *FontEngine::initSimpleFont(const FontSpec &spec)
|
||||
|
||||
u32 size = std::floor(
|
||||
RenderingEngine::getDisplayDensity() *
|
||||
m_settings->getFloat("gui_scaling") *
|
||||
g_settings->getFloat("gui_scaling") *
|
||||
spec.size);
|
||||
|
||||
irr::gui::IGUIFont *font = nullptr;
|
||||
|
@ -62,7 +62,7 @@ class FontEngine
|
||||
{
|
||||
public:
|
||||
|
||||
FontEngine(Settings* main_settings, gui::IGUIEnvironment* env);
|
||||
FontEngine(gui::IGUIEnvironment* env);
|
||||
|
||||
~FontEngine();
|
||||
|
||||
@ -128,9 +128,6 @@ public:
|
||||
/** get font size for a specific mode */
|
||||
unsigned int getFontSize(FontMode mode);
|
||||
|
||||
/** initialize font engine */
|
||||
void initialize(Settings* main_settings, gui::IGUIEnvironment* env);
|
||||
|
||||
/** update internal parameters from settings */
|
||||
void readSettings();
|
||||
|
||||
@ -150,9 +147,6 @@ private:
|
||||
/** clean cache */
|
||||
void cleanCache();
|
||||
|
||||
/** pointer to settings for registering callbacks or reading config */
|
||||
Settings* m_settings = nullptr;
|
||||
|
||||
/** pointer to irrlicht gui environment */
|
||||
gui::IGUIEnvironment* m_env = nullptr;
|
||||
|
||||
|
@ -527,7 +527,6 @@ static bool read_config_file(const Settings &cmd_args)
|
||||
// Path of configuration file in use
|
||||
sanity_check(g_settings_path == ""); // Sanity check
|
||||
|
||||
|
||||
if (cmd_args.exists("config")) {
|
||||
bool r = g_settings->readConfigFile(cmd_args.get("config").c_str());
|
||||
if (!r) {
|
||||
|
@ -31,7 +31,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
extern "C" {
|
||||
#include "lualib.h"
|
||||
}
|
||||
#include "settings.h"
|
||||
#define MAINMENU_NUM_ASYNC_THREADS 4
|
||||
|
||||
|
||||
|
@ -33,7 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include <cctype>
|
||||
#include <algorithm>
|
||||
|
||||
Settings *g_settings = nullptr;
|
||||
Settings *g_settings = nullptr; // Populated in main()
|
||||
std::string g_settings_path;
|
||||
|
||||
Settings *Settings::s_layers[SL_TOTAL_COUNT] = {0}; // Zeroed by compiler
|
||||
@ -85,6 +85,7 @@ Settings & Settings::operator = (const Settings &other)
|
||||
if (&other == this)
|
||||
return *this;
|
||||
|
||||
// TODO: Avoid copying Settings objects. Make this private.
|
||||
FATAL_ERROR_IF(m_settingslayer != SL_TOTAL_COUNT && other.m_settingslayer != SL_TOTAL_COUNT,
|
||||
("Tried to copy unique Setting layer " + std::to_string(m_settingslayer)).c_str());
|
||||
|
||||
@ -208,6 +209,7 @@ void Settings::writeLines(std::ostream &os, u32 tab_depth) const
|
||||
for (const auto &setting_it : m_settings)
|
||||
printEntry(os, setting_it.first, setting_it.second, tab_depth);
|
||||
|
||||
// For groups this must be "}" !
|
||||
if (!m_end_tag.empty()) {
|
||||
for (u32 i = 0; i < tab_depth; i++)
|
||||
os << "\t";
|
||||
@ -458,20 +460,6 @@ const std::string &Settings::get(const std::string &name) const
|
||||
}
|
||||
|
||||
|
||||
const std::string &Settings::getDefault(const std::string &name) const
|
||||
{
|
||||
const SettingsEntry *entry;
|
||||
if (auto parent = getParent())
|
||||
entry = &parent->getEntry(name);
|
||||
else
|
||||
entry = &getEntry(name); // Bottom of the chain
|
||||
|
||||
if (entry->is_group)
|
||||
throw SettingNotFoundException("Setting [" + name + "] is a group.");
|
||||
return entry->value;
|
||||
}
|
||||
|
||||
|
||||
bool Settings::getBool(const std::string &name) const
|
||||
{
|
||||
return is_yes(get(name));
|
||||
|
@ -132,7 +132,6 @@ public:
|
||||
|
||||
Settings *getGroup(const std::string &name) const;
|
||||
const std::string &get(const std::string &name) const;
|
||||
const std::string &getDefault(const std::string &name) const;
|
||||
bool getBool(const std::string &name) const;
|
||||
u16 getU16(const std::string &name) const;
|
||||
s16 getS16(const std::string &name) const;
|
||||
|
@ -229,7 +229,7 @@ void TestSettings::testAllSettings()
|
||||
// Confirm settings
|
||||
Settings s2("[dummy_eof_end_tag]");
|
||||
std::istringstream is(config_text_after, std::ios_base::binary);
|
||||
s2.parseConfigLines(is);
|
||||
UASSERT(s2.parseConfigLines(is) == true);
|
||||
|
||||
compare_settings("(main)", &s, &s2);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user