mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	cFont::CreateFont() now returns a dummy font in case there are no fonts installed
This commit is contained in:
		
							
								
								
									
										4
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -7870,9 +7870,11 @@ Video Disk Recorder Revision History | ||||
|   and also to use the correct directory with --edit (the latter reported by Marko | ||||
|   M<>kel<65>). | ||||
|  | ||||
| 2014-01-16: Version 2.0.6 | ||||
| 2014-01-25: Version 2.0.6 | ||||
|  | ||||
| - Updated 'sources.conf' (thanks to Antti Hartikainen). | ||||
| - cFont::CreateFont() now returns a dummy font in case there are no fonts installed. | ||||
|   This prevents a crash with the LCARS skin on a system that has no fonts. | ||||
| - Increased MIN_TS_PACKETS_FOR_FRAME_DETECTOR to 10 in order to be able to record | ||||
|   channels that need more than 5 TS packets for detecting frame borders (reported by | ||||
|   Eike Sauer). | ||||
|   | ||||
							
								
								
									
										23
									
								
								font.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								font.c
									
									
									
									
									
								
							| @@ -6,7 +6,7 @@ | ||||
|  * | ||||
|  * BiDi support by Osama Alrawab <alrawab@hotmail.com> @2008 Tripoli-Libya. | ||||
|  * | ||||
|  * $Id: font.c 2.13.1.1 2013/04/07 14:54:15 kls Exp $ | ||||
|  * $Id: font.c 2.13.1.2 2014/01/25 14:25:29 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "font.h" | ||||
| @@ -382,10 +382,13 @@ void cFreetypeFont::DrawText(cPixmap *Pixmap, int x, int y, const char *s, tColo | ||||
| // A dummy font, in case there are no fonts installed: | ||||
|  | ||||
| class cDummyFont : public cFont { | ||||
| private: | ||||
|   int height; | ||||
| 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; } | ||||
|   cDummyFont(int CharHeight) { height = CharHeight; } | ||||
|   virtual int Width(uint c) const { return height; } | ||||
|   virtual int Width(const char *s) const { return height; } | ||||
|   virtual int Height(void) const { return height; } | ||||
|   virtual void DrawText(cBitmap *Bitmap, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, int Width) const {} | ||||
|   virtual void DrawText(cPixmap *Pixmap, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, int Width) const {}; | ||||
|   }; | ||||
| @@ -396,11 +399,8 @@ cFont *cFont::fonts[eDvbFontSize] = { NULL }; | ||||
|  | ||||
| void cFont::SetFont(eDvbFont Font, const char *Name, int CharHeight) | ||||
| { | ||||
|   cFont *f = CreateFont(Name, constrain(CharHeight, MINFONTSIZE, MAXFONTSIZE)); | ||||
|   if (!f || !f->Height()) | ||||
|      f = new cDummyFont; | ||||
|   delete fonts[Font]; | ||||
|   fonts[Font] = f; | ||||
|   fonts[Font] = CreateFont(Name, constrain(CharHeight, MINFONTSIZE, MAXFONTSIZE)); | ||||
| } | ||||
|  | ||||
| const cFont *cFont::GetFont(eDvbFont Font) | ||||
| @@ -423,9 +423,10 @@ const cFont *cFont::GetFont(eDvbFont Font) | ||||
| cFont *cFont::CreateFont(const char *Name, int CharHeight, int CharWidth) | ||||
| { | ||||
|   cString fn = GetFontFileName(Name); | ||||
|   if (*fn) | ||||
|      return new cFreetypeFont(fn, CharHeight, CharWidth); | ||||
|   return NULL; | ||||
|   cFont *f = *fn ? new cFreetypeFont(fn, CharHeight, CharWidth) : NULL; | ||||
|   if (!f || !f->Height()) | ||||
|      f = new cDummyFont(CharHeight); | ||||
|   return f; | ||||
| } | ||||
|  | ||||
| bool cFont::GetAvailableFontNames(cStringList *FontNames, bool Monospaced) | ||||
|   | ||||
							
								
								
									
										4
									
								
								font.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								font.h
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: font.h 2.7 2013/02/17 13:17:42 kls Exp $ | ||||
|  * $Id: font.h 2.7.1.1 2014/01/25 14:24:51 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #ifndef __FONT_H | ||||
| @@ -75,7 +75,7 @@ public: | ||||
|           ///< default width. Name is of the form "Family:Style", for instance | ||||
|           ///< "Verdana:Bold Italic" or "Times New Roman". See GetAvailableFontNames() | ||||
|           ///< for how to get a list of all available font names. | ||||
|           ///< If the requested font can't be created, NULL is returned. | ||||
|           ///< If the requested font can't be created, a dummy font is returned. | ||||
|           ///< The caller must delete the font when it is no longer needed. | ||||
|   static bool GetAvailableFontNames(cStringList *FontNames, bool Monospaced = false); | ||||
|           ///< Queries the font configuration for a list of available font names, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user