aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPilzAdam <pilzadam@minetest.net>2013-08-04 20:18:56 +0200
committerPilzAdam <pilzadam@minetest.net>2013-08-04 20:35:14 +0200
commit2af5864534c7615aeaff7e66c4dfb9618809c173 (patch)
tree2b429cd7b78ecb54484b50baf3990c5484b67d91 /src
parent3fd84edb615692cc26ea9528fb7b68387f6c471f (diff)
downloadminetest-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.cpp8
-rw-r--r--src/guiChatConsole.cpp17
-rw-r--r--src/guiChatConsole.h4
-rw-r--r--src/guiTextInputMenu.cpp13
-rw-r--r--src/main.cpp17
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