summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2007-06-17 11:47:18 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2007-06-17 11:47:18 +0200
commit3c68ef28d0518579c4269c3545699c623d8df47b (patch)
tree9c7ed2ff269beab8e7428d546dbd098592bf0ac8
parent79b1c68ffbe11ada50d8e288efc0255eba268185 (diff)
downloadvdr-3c68ef28d0518579c4269c3545699c623d8df47b.tar.gz
vdr-3c68ef28d0518579c4269c3545699c623d8df47b.tar.bz2
Using dummy font if no fonts are installed
-rw-r--r--HISTORY2
-rw-r--r--font.c25
-rw-r--r--vdr.c8
3 files changed, 31 insertions, 4 deletions
diff --git a/HISTORY b/HISTORY
index 33795add..30adc15e 100644
--- a/HISTORY
+++ b/HISTORY
@@ -5244,3 +5244,5 @@ Video Disk Recorder Revision History
- Replaced strn0cpy() with Utf8Strn0Cpy() where necessary.
- Now using 'fontconfig' to determine which fonts to use (thanks to Anssi Hannula
for code and hints on how to do this).
+- If no fonts are installed, VDR now uses a dummy font that doesn't actually draw
+ any text, and logs an error message.
diff --git a/font.c b/font.c
index f0722744..f2933e64 100644
--- a/font.c
+++ b/font.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: font.c 1.16 2007/06/17 11:03:33 kls Exp $
+ * $Id: font.c 1.17 2007/06/17 11:46:25 kls Exp $
*/
#include "font.h"
@@ -287,14 +287,33 @@ void cFreetypeFont::DrawText(cBitmap *Bitmap, int x, int y, const char *s, tColo
}
}
+// --- cDummyFont ------------------------------------------------------------
+
+// A dummy font, in case there are no fonts installed:
+
+class cDummyFont : public cFont {
+public:
+ virtual int Width(uint c) const { return 10; }
+ virtual int Width(const char *s) const { return 50; }
+ virtual int Height(void) const { return 20; }
+ virtual void DrawText(cBitmap *Bitmap, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, int Width) const {}
+ };
+
// --- cFont -----------------------------------------------------------------
cFont *cFont::fonts[eDvbFontSize] = { NULL };
void cFont::SetFont(eDvbFont Font, const char *Name, int CharHeight)
{
- delete fonts[Font];
- fonts[Font] = new cFreetypeFont(GetFontFileName(Name), CharHeight);
+ cString fn = GetFontFileName(Name);
+ if (*fn) {
+ delete fonts[Font];
+ fonts[Font] = new cFreetypeFont(fn, CharHeight);
+ }
+ if (!fonts[Font] || !fonts[Font]->Height()) {
+ delete fonts[Font];
+ fonts[Font] = new cDummyFont;
+ }
}
const cFont *cFont::GetFont(eDvbFont Font)
diff --git a/vdr.c b/vdr.c
index f3218eb2..e28c7281 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/vdr
*
- * $Id: vdr.c 1.292 2007/06/15 13:20:34 kls Exp $
+ * $Id: vdr.c 1.293 2007/06/17 11:23:08 kls Exp $
*/
#include <getopt.h>
@@ -550,6 +550,12 @@ int main(int argc, char *argv[])
))
EXIT(2);
+ if (!*cFont::GetFontFileName(Setup.FontOsd)) {
+ const char *msg = "no fonts available - OSD will not show any text!";
+ fprintf(stderr, "vdr: %s\n", msg);
+ esyslog("ERROR: %s", msg);
+ }
+
// Recordings:
Recordings.Update();