- yaft: allow new shell.ttf in yaft-widget too

Signed-off-by: Thilo Graf <dbt@novatux.de>
This commit is contained in:
svenhoefer
2018-01-28 23:54:39 +01:00
committed by Thilo Graf
parent 4680503a0e
commit c0b433c83d
3 changed files with 20 additions and 6 deletions

View File

@@ -193,6 +193,17 @@ void CNeutrinoFonts::SetupNeutrinoFonts(bool initRenderClass/*=true*/)
g_SignalFont = g_fontRenderer->getFont(fontDescr.name.c_str(), fontStyle[signal_font.style].c_str(), fontSize); g_SignalFont = g_fontRenderer->getFont(fontDescr.name.c_str(), fontStyle[signal_font.style].c_str(), fontSize);
} }
std::string CNeutrinoFonts::getShellTTF()
{
const char *shell_ttf[2] = { FONTDIR_VAR "/shell.ttf", FONTDIR "/shell.ttf" };
for (unsigned int i = 0; i < 2; i++)
{
if (access(shell_ttf[i], F_OK) == 0)
return (std::string)shell_ttf[i];
}
return "";
}
void CNeutrinoFonts::SetupShellFont() void CNeutrinoFonts::SetupShellFont()
{ {
if (g_ShellFont) if (g_ShellFont)
@@ -201,10 +212,8 @@ void CNeutrinoFonts::SetupShellFont()
g_ShellFont = NULL; g_ShellFont = NULL;
} }
std::string shell_ttf = FONTDIR_VAR "/shell.ttf"; std::string shell_ttf = getShellTTF();
if (access(shell_ttf.c_str(), F_OK) != 0) if (shell_ttf.empty())
shell_ttf = FONTDIR "/shell.ttf";
if (access(shell_ttf.c_str(), F_OK) != 0)
return; return;
if (g_shellFontRenderer != NULL) if (g_shellFontRenderer != NULL)

View File

@@ -131,6 +131,7 @@ class CNeutrinoFonts
void SetupNeutrinoFonts(bool initRenderClass = true); void SetupNeutrinoFonts(bool initRenderClass = true);
void SetupDynamicFonts(bool initRenderClass = true); void SetupDynamicFonts(bool initRenderClass = true);
void SetupShellFont(); void SetupShellFont();
std::string getShellTTF();
void refreshDynFonts(); void refreshDynFonts();
Font **getDynFont(int &dx, int &dy, std::string text="", int style=FONT_STYLE_REGULAR, int share=FONT_ID_SHARE); Font **getDynFont(int &dx, int &dy, std::string text="", int style=FONT_STYLE_REGULAR, int share=FONT_ID_SHARE);
void setFontUseDigitHeight(bool set=true) {useDigitOffset = set;} void setFontUseDigitHeight(bool set=true) {useDigitOffset = set;}

View File

@@ -26,6 +26,7 @@
#include "yaft_priv.h" #include "yaft_priv.h"
#include <driver/framebuffer.h> #include <driver/framebuffer.h>
#include <driver/neutrinofonts.h>
#include <driver/abstime.h> #include <driver/abstime.h>
#include <xmltree/xmlinterface.h> /* UTF8 conversion */ #include <xmltree/xmlinterface.h> /* UTF8 conversion */
@@ -124,13 +125,16 @@ bool YaFT_p::init()
* try to get a font size that fits about LINES x COLS into the terminal. * try to get a font size that fits about LINES x COLS into the terminal.
* NOTE: this is not guaranteed to work! Terminal might be smaller or bigger * NOTE: this is not guaranteed to work! Terminal might be smaller or bigger
*/ */
std::string shell_ttf = CNeutrinoFonts::getInstance()->getShellTTF();
if (shell_ttf.empty())
shell_ttf = ttx_font_file;
if (paint) { if (paint) {
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
delete font; delete font;
delete fr; delete fr;
fr = new FBFontRenderClass(scalex, scaley); fr = new FBFontRenderClass(scalex, scaley);
fontstyle = fr->AddFont(ttx_font_file.c_str()); fontstyle = fr->AddFont(shell_ttf.c_str());
font = fr->getFont(fr->getFamily(ttx_font_file.c_str()).c_str(), fontstyle, height / LINES); font = fr->getFont(fr->getFamily(shell_ttf.c_str()).c_str(), fontstyle, height / LINES);
/* getWidth() does not return good values, leading to "out of box" rendering later /* getWidth() does not return good values, leading to "out of box" rendering later
fw = font->getWidth(); fw = font->getWidth();
... so just let's get the width of a wide glyph (it's a monospace font after all */ ... so just let's get the width of a wide glyph (it's a monospace font after all */