mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 01:53:45 +01:00
Add configurable font shadow.
This commit is contained in:
parent
4ccaa6d0af
commit
76036abdb0
@ -205,12 +205,15 @@
|
|||||||
# Path to TrueTypeFont or bitmap
|
# Path to TrueTypeFont or bitmap
|
||||||
#font_path = fonts/liberationsans.ttf
|
#font_path = fonts/liberationsans.ttf
|
||||||
#font_size = 13
|
#font_size = 13
|
||||||
|
# Font shadow offset, if 0 then shadow will not be drawn.
|
||||||
|
#font_shadow = 1
|
||||||
#mono_font_path = fonts/liberationmono.ttf
|
#mono_font_path = fonts/liberationmono.ttf
|
||||||
#mono_font_size = 13
|
#mono_font_size = 13
|
||||||
|
|
||||||
# This font will be used for certain languages
|
# This font will be used for certain languages
|
||||||
#fallback_font_path = fonts/DroidSansFallbackFull.ttf
|
#fallback_font_path = fonts/DroidSansFallbackFull.ttf
|
||||||
#fallback_font_size = 13
|
#fallback_font_size = 13
|
||||||
|
#fallback_font_shadow = 1
|
||||||
|
|
||||||
#
|
#
|
||||||
# Server stuff
|
# Server stuff
|
||||||
|
@ -199,7 +199,7 @@ void SGUITTGlyph::unload()
|
|||||||
|
|
||||||
//////////////////////
|
//////////////////////
|
||||||
|
|
||||||
CGUITTFont* CGUITTFont::createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias, const bool transparency)
|
CGUITTFont* CGUITTFont::createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias, const bool transparency, const u32 shadow)
|
||||||
{
|
{
|
||||||
if (!c_libraryLoaded)
|
if (!c_libraryLoaded)
|
||||||
{
|
{
|
||||||
@ -216,6 +216,8 @@ CGUITTFont* CGUITTFont::createTTFont(IGUIEnvironment *env, const io::path& filen
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
font->shadow_offset = shadow;
|
||||||
|
|
||||||
return font;
|
return font;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -625,6 +627,14 @@ void CGUITTFont::draw(const core::stringw& text, const core::rect<s32>& position
|
|||||||
CGUITTGlyphPage* page = n->getValue();
|
CGUITTGlyphPage* page = n->getValue();
|
||||||
|
|
||||||
if (!use_transparency) color.color |= 0xff000000;
|
if (!use_transparency) color.color |= 0xff000000;
|
||||||
|
|
||||||
|
if (shadow_offset) {
|
||||||
|
for (size_t i = 0; i < page->render_positions.size(); ++i)
|
||||||
|
page->render_positions[i] += core::vector2di(shadow_offset, shadow_offset);
|
||||||
|
Driver->draw2DImageBatch(page->texture, page->render_positions, page->render_source_rects, clip, video::SColor(255, 0, 0, 0), true);
|
||||||
|
for (size_t i = 0; i < page->render_positions.size(); ++i)
|
||||||
|
page->render_positions[i] -= core::vector2di(shadow_offset, shadow_offset);
|
||||||
|
}
|
||||||
Driver->draw2DImageBatch(page->texture, page->render_positions, page->render_source_rects, clip, color, true);
|
Driver->draw2DImageBatch(page->texture, page->render_positions, page->render_source_rects, clip, color, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -207,7 +207,7 @@ namespace gui
|
|||||||
//! \param antialias set the use_monochrome (opposite to antialias) flag
|
//! \param antialias set the use_monochrome (opposite to antialias) flag
|
||||||
//! \param transparency set the use_transparency flag
|
//! \param transparency set the use_transparency flag
|
||||||
//! \return Returns a pointer to a CGUITTFont. Will return 0 if the font failed to load.
|
//! \return Returns a pointer to a CGUITTFont. Will return 0 if the font failed to load.
|
||||||
static CGUITTFont* createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
static CGUITTFont* createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true, const u32 shadow = 0);
|
||||||
static CGUITTFont* createTTFont(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
static CGUITTFont* createTTFont(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
||||||
static CGUITTFont* create(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
static CGUITTFont* create(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
||||||
static CGUITTFont* create(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
static CGUITTFont* create(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
||||||
@ -369,6 +369,7 @@ namespace gui
|
|||||||
s32 GlobalKerningWidth;
|
s32 GlobalKerningWidth;
|
||||||
s32 GlobalKerningHeight;
|
s32 GlobalKerningHeight;
|
||||||
core::ustring Invisible;
|
core::ustring Invisible;
|
||||||
|
u32 shadow_offset;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace gui
|
} // end namespace gui
|
||||||
|
@ -153,10 +153,12 @@ void set_default_settings(Settings *settings)
|
|||||||
settings->setDefault("freetype", "true");
|
settings->setDefault("freetype", "true");
|
||||||
settings->setDefault("font_path", porting::getDataPath("fonts" DIR_DELIM "liberationsans.ttf"));
|
settings->setDefault("font_path", porting::getDataPath("fonts" DIR_DELIM "liberationsans.ttf"));
|
||||||
settings->setDefault("font_size", "13");
|
settings->setDefault("font_size", "13");
|
||||||
|
settings->setDefault("font_shadow", "1");
|
||||||
settings->setDefault("mono_font_path", porting::getDataPath("fonts" DIR_DELIM "liberationmono.ttf"));
|
settings->setDefault("mono_font_path", porting::getDataPath("fonts" DIR_DELIM "liberationmono.ttf"));
|
||||||
settings->setDefault("mono_font_size", "13");
|
settings->setDefault("mono_font_size", "13");
|
||||||
settings->setDefault("fallback_font_path", porting::getDataPath("fonts" DIR_DELIM "DroidSansFallbackFull.ttf"));
|
settings->setDefault("fallback_font_path", porting::getDataPath("fonts" DIR_DELIM "DroidSansFallbackFull.ttf"));
|
||||||
settings->setDefault("fallback_font_size", "13");
|
settings->setDefault("fallback_font_size", "13");
|
||||||
|
settings->setDefault("fallback_font_shadow", "1");
|
||||||
#else
|
#else
|
||||||
settings->setDefault("freetype", "false");
|
settings->setDefault("freetype", "false");
|
||||||
settings->setDefault("font_path", porting::getDataPath("fonts" DIR_DELIM "fontlucida.png"));
|
settings->setDefault("font_path", porting::getDataPath("fonts" DIR_DELIM "fontlucida.png"));
|
||||||
|
@ -1481,7 +1481,8 @@ int main(int argc, char *argv[])
|
|||||||
fallback = "fallback_";
|
fallback = "fallback_";
|
||||||
u16 font_size = g_settings->getU16(fallback + "font_size");
|
u16 font_size = g_settings->getU16(fallback + "font_size");
|
||||||
font_path = g_settings->get(fallback + "font_path");
|
font_path = g_settings->get(fallback + "font_path");
|
||||||
font = gui::CGUITTFont::createTTFont(guienv, font_path.c_str(), font_size);
|
u32 font_shadow = g_settings->getU16(fallback + "font_shadow");
|
||||||
|
font = gui::CGUITTFont::createTTFont(guienv, font_path.c_str(), font_size, true, true, font_shadow);
|
||||||
} else {
|
} else {
|
||||||
font = guienv->getFont(font_path.c_str());
|
font = guienv->getFont(font_path.c_str());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user