diff options
author | PilzAdam <pilzadam@minetest.net> | 2013-08-04 20:18:56 +0200 |
---|---|---|
committer | PilzAdam <pilzadam@minetest.net> | 2013-08-04 20:35:14 +0200 |
commit | 2af5864534c7615aeaff7e66c4dfb9618809c173 (patch) | |
tree | 2b429cd7b78ecb54484b50baf3990c5484b67d91 /src | |
parent | 3fd84edb615692cc26ea9528fb7b68387f6c471f (diff) | |
download | minetest-2af5864534c7615aeaff7e66c4dfb9618809c173.tar.gz minetest-2af5864534c7615aeaff7e66c4dfb9618809c173.tar.bz2 minetest-2af5864534c7615aeaff7e66c4dfb9618809c173.zip |
Make freetype usage configureable by a setting
Diffstat (limited to 'src')
-rw-r--r-- | src/defaultsettings.cpp | 8 | ||||
-rw-r--r-- | src/guiChatConsole.cpp | 17 | ||||
-rw-r--r-- | src/guiChatConsole.h | 4 | ||||
-rw-r--r-- | src/guiTextInputMenu.cpp | 13 | ||||
-rw-r--r-- | src/main.cpp | 17 |
5 files changed, 45 insertions, 14 deletions
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 33adf102f..aac2516b5 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -19,6 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "settings.h" #include "filesys.h" +#include "config.h" void set_default_settings(Settings *settings) { @@ -141,10 +142,17 @@ void set_default_settings(Settings *settings) settings->setDefault("server_name", ""); settings->setDefault("server_description", ""); +#if USE_FREETYPE + settings->setDefault("freetype", "true"); settings->setDefault("font_path", porting::getDataPath("fonts" DIR_DELIM "liberationsans.ttf")); settings->setDefault("font_size", "13"); settings->setDefault("mono_font_path", porting::getDataPath("fonts" DIR_DELIM "liberationmono.ttf")); settings->setDefault("mono_font_size", "13"); +#else + settings->setDefault("freetype", "false"); + settings->setDefault("font_path", porting::getDataPath("fonts" DIR_DELIM "fontlucida.png")); + settings->setDefault("mono_font_path", porting::getDataPath("textures" DIR_DELIM "fontdejavusansmono.png")); +#endif // Server stuff // "map-dir" doesn't exist by default. diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp index daec18efc..d8881dbd1 100644 --- a/src/guiChatConsole.cpp +++ b/src/guiChatConsole.cpp @@ -94,13 +94,17 @@ GUIChatConsole::GUIChatConsole( // load the font // FIXME should a custom texture_path be searched too? - #if USE_FREETYPE std::string font_name = g_settings->get("mono_font_path"); - u16 font_size = g_settings->getU16("mono_font_size"); - m_font = gui::CGUITTFont::createTTFont(env, font_name.c_str(), font_size); + #if USE_FREETYPE + m_use_freetype = g_settings->getBool("freetype"); + if (m_use_freetype) { + u16 font_size = g_settings->getU16("mono_font_size"); + m_font = gui::CGUITTFont::createTTFont(env, font_name.c_str(), font_size); + } else { + m_font = env->getFont(font_name.c_str()); + } #else - std::string font_name = "fontdejavusansmono.png"; - m_font = env->getFont(getTexturePath(font_name).c_str()); + m_font = env->getFont(font_name.c_str()); #endif if (m_font == NULL) { @@ -122,7 +126,8 @@ GUIChatConsole::GUIChatConsole( GUIChatConsole::~GUIChatConsole() { #if USE_FREETYPE - m_font->drop(); + if (m_use_freetype) + m_font->drop(); #endif } diff --git a/src/guiChatConsole.h b/src/guiChatConsole.h index 5991157b2..2bf45fdf4 100644 --- a/src/guiChatConsole.h +++ b/src/guiChatConsole.h @@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irrlichttypes_extrabloated.h" #include "chat.h" +#include "config.h" class Client; @@ -121,6 +122,9 @@ private: // font gui::IGUIFont* m_font; v2u32 m_fontsize; +#if USE_FREETYPE + bool m_use_freetype; +#endif }; diff --git a/src/guiTextInputMenu.cpp b/src/guiTextInputMenu.cpp index d5229f415..9285aaa81 100644 --- a/src/guiTextInputMenu.cpp +++ b/src/guiTextInputMenu.cpp @@ -20,6 +20,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "guiTextInputMenu.h" #include "debug.h" #include "serialization.h" +#include "main.h" // for g_settings +#include "settings.h" #include <string> #include <IGUICheckBox.h> #include <IGUIEditBox.h> @@ -109,11 +111,16 @@ void GUITextInputMenu::regenerateGui(v2u32 screensize) { core::rect<s32> rect(0, 0, 300, 30); rect = rect + v2s32(size.X/2-300/2, size.Y/2-30/2-25); + gui::IGUIElement *e; #if USE_FREETYPE - gui::IGUIElement *e = (gui::IGUIElement *) new gui::intlGUIEditBox(text.c_str(), true, Environment, this, 256, rect); - e->drop(); + if (g_settings->getBool("freetype")) { + e = (gui::IGUIElement *) new gui::intlGUIEditBox(text.c_str(), true, Environment, this, 256, rect); + e->drop(); + } else { + e = Environment->addEditBox(text.c_str(), rect, true, this, 256); + } #else - gui::IGUIElement *e = Environment->addEditBox(text.c_str(), rect, true, this, 256); + e = Environment->addEditBox(text.c_str(), rect, true, this, 256); #endif Environment->setFocus(e); diff --git a/src/main.cpp b/src/main.cpp index b3aa9c92f..f495a6ba2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1388,12 +1388,18 @@ int main(int argc, char *argv[]) guienv = device->getGUIEnvironment(); gui::IGUISkin* skin = guienv->getSkin(); - #if USE_FREETYPE std::string font_path = g_settings->get("font_path"); - u16 font_size = g_settings->getU16("font_size"); - gui::IGUIFont *font = gui::CGUITTFont::createTTFont(guienv, font_path.c_str(), font_size); + gui::IGUIFont *font; + bool use_freetype = g_settings->getBool("freetype"); + #if USE_FREETYPE + if (use_freetype) { + u16 font_size = g_settings->getU16("font_size"); + font = gui::CGUITTFont::createTTFont(guienv, font_path.c_str(), font_size); + } else { + font = guienv->getFont(font_path.c_str()); + } #else - gui::IGUIFont* font = guienv->getFont(getTexturePath("fontlucida.png").c_str()); + font = guienv->getFont(font_path.c_str()); #endif if(font) skin->setFont(font); @@ -1736,7 +1742,8 @@ int main(int argc, char *argv[]) device->drop(); #if USE_FREETYPE - font->drop(); + if (use_freetype) + font->drop(); #endif #endif // !SERVER |