Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Make freetype usage configureable by a setting
  • Loading branch information
PilzAdam committed Aug 4, 2013
1 parent 3fd84ed commit 2af5864
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 14 deletions.
File renamed without changes
File renamed without changes
3 changes: 3 additions & 0 deletions minetest.conf.example
Expand Up @@ -189,6 +189,9 @@
# File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab
#serverlist_file = favoriteservers.txt

# Whether freetype fonts are used, requires freetype support to be compiled in
#freetype = true
# Path to TrueTypeFont or bitmap
#font_path = fonts/liberationsans.ttf
#font_size = 13
#mono_font_path = fonts/liberationmono.ttf
Expand Down
8 changes: 8 additions & 0 deletions src/defaultsettings.cpp
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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.
Expand Down
17 changes: 11 additions & 6 deletions src/guiChatConsole.cpp
Expand Up @@ -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)
{
Expand All @@ -122,7 +126,8 @@ GUIChatConsole::GUIChatConsole(
GUIChatConsole::~GUIChatConsole()
{
#if USE_FREETYPE
m_font->drop();
if (m_use_freetype)
m_font->drop();
#endif
}

Expand Down
4 changes: 4 additions & 0 deletions src/guiChatConsole.h
Expand Up @@ -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;

Expand Down Expand Up @@ -121,6 +122,9 @@ class GUIChatConsole : public gui::IGUIElement
// font
gui::IGUIFont* m_font;
v2u32 m_fontsize;
#if USE_FREETYPE
bool m_use_freetype;
#endif
};


Expand Down
13 changes: 10 additions & 3 deletions src/guiTextInputMenu.cpp
Expand Up @@ -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>
Expand Down Expand Up @@ -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);

Expand Down
17 changes: 12 additions & 5 deletions src/main.cpp
Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 2af5864

Please sign in to comment.