mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Implemented cFont::CreateFont()
This commit is contained in:
		
							
								
								
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -5246,3 +5246,5 @@ Video Disk Recorder Revision History | ||||
|   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. | ||||
| - The new function cFont::CreateFont() can be used by plugins to create and use | ||||
|   fonts of their own, independent of VDR's standard fonts. | ||||
|   | ||||
							
								
								
									
										24
									
								
								font.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								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.18 2007/06/17 11:54:10 kls Exp $ | ||||
|  * $Id: font.c 1.19 2007/06/17 12:13:49 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "font.h" | ||||
| @@ -309,15 +309,11 @@ cFont *cFont::fonts[eDvbFontSize] = { NULL }; | ||||
|  | ||||
| void cFont::SetFont(eDvbFont Font, const char *Name, int 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; | ||||
|      } | ||||
|   cFont *f = CreateFont(Name, CharHeight); | ||||
|   if (!f || !f->Height()) | ||||
|      f = new cDummyFont; | ||||
|   delete fonts[Font]; | ||||
|   fonts[Font] = f; | ||||
| } | ||||
|  | ||||
| const cFont *cFont::GetFont(eDvbFont Font) | ||||
| @@ -336,6 +332,14 @@ const cFont *cFont::GetFont(eDvbFont Font) | ||||
|   return fonts[Font]; | ||||
| } | ||||
|  | ||||
| cFont *cFont::CreateFont(const char *Name, int CharHeight) | ||||
| { | ||||
|   cString fn = GetFontFileName(Name); | ||||
|   if (*fn) | ||||
|      return new cFreetypeFont(fn, CharHeight); | ||||
|   return NULL; | ||||
| } | ||||
|  | ||||
| bool cFont::GetAvailableFontNames(cStringList *FontNames, bool Monospaced) | ||||
| { | ||||
|   if (!FontNames->Size()) { | ||||
|   | ||||
							
								
								
									
										13
									
								
								font.h
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								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 1.18 2007/06/17 11:53:55 kls Exp $ | ||||
|  * $Id: font.h 1.19 2007/06/17 12:11:31 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #ifndef __FONT_H | ||||
| @@ -49,14 +49,21 @@ public: | ||||
|           ///< Draws the given text into the Bitmap at position (x, y) with the given colors. | ||||
|           ///< The text will not exceed the given Width (if > 0), and will end with a complete character. | ||||
|   static void SetFont(eDvbFont Font, const char *Name, int CharHeight); | ||||
|           ///< Sets the given Font to use the font data from the file Name and make its characters | ||||
|           ///< CharHeight pixels high. | ||||
|           ///< Sets the given Font to use the font data according to Name (see CreateFont()) | ||||
|           ///< and make its characters CharHeight pixels high. | ||||
|   static const cFont *GetFont(eDvbFont Font); | ||||
|           ///< Gets the given Font, which was previously set by a call to SetFont(). | ||||
|           ///< If no SetFont() call has been made, the font as defined in the setup is returned. | ||||
|           ///< The caller must not use the returned font outside the scope in which | ||||
|           ///< it was retrieved by the call to GetFont(), because a call to SetFont() | ||||
|           ///< may delete an existing font. | ||||
|   static cFont *CreateFont(const char *Name, int CharHeight); | ||||
|           ///< Creates a new font object with the given Name and makes its characters | ||||
|           ///< CharHeight pixels high. 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. | ||||
|           ///< 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, | ||||
|           ///< which is returned in FontNames. If Monospaced is true, only | ||||
|   | ||||
		Reference in New Issue
	
	Block a user