mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
- Fixed resetting the file size when regenerating the index file. - The new function cDevice::PatPmtParser() can be used in derived devices to access the PAT/PMT of the currently replayed material. - Updated the Italian OSD texts (thanks to Diego Pierotto). - The PCR pid in generated PMTs is now set to 0x1FFF ("no PCR pid") in cPatPmtGenerator::GeneratePmt(), because VDR doesn't record the PCR pid. - Updated the Estonian OSD texts (thanks to Arthur Konovalov). - The 'sky' plugin is no longer part of the VDR source. - Improved SPU handling on devices with limited OSD capabilities (thanks to Matthieu Castet). - Several code modifications to avoid compiler warnings (thanks to Winfried Köhler). - Added stream type 11172 AUDIO to cPatPmtParser::ParsePmt() (thanks to Johann Friedrichs). - Removed debug output of '-' from cTransfer::Receive(). - Added defines for large files to the 'newplugin' script (reported by Udo Richter). - Removed the workaround for short channel names of "Kabel Deutschland", because apparently they now have their data according to the DVB standard (thanks to Johann Friedrichs). - Some fixes to dvbspu.[hc] (thanks to Johann Friedrichs). - Fixed a busy loop when moving editing marks (thanks to Johann Friedrichs). - Updated sources.conf (thanks to Derek Kelly). - Modified cCharSetConv so that it can be used to convert from "whatever VDR uses" to a given code (thanks to Joachim Wilke). - Channel names containing commas are now handled correctly in channels.conf. If a channel's short name contains a comma, it is replaced with a '.'. - cDevice now logs the device number when a new device is created. - Fixed handling STREAMTYPE_11172_AUDIO in cPatPmtParser::ParsePmt(). - cParsePatPmt now has functions to retrieve the audio, dolby and subtitle pids. - cPatFilter::Process() now only stores CA descriptors for video and audio pids (thanks to Francesco Saverio Schiavarelli for reporting a problem with channels that have some encrypted components that VDR doesn't use). - cDevice::AddPid() now stores the stream type of the given pid (thanks to Andreas Regel). - Added cFont::FontName() and cFont::Size() (thanks to Andreas Regel). - cPatPmtParser now also stores the audio stream types. - The support for full featured DVB cards of the TT/FuSi design has been moved into the new plugin 'dvbsddevice'. On systems that use such a card as their primary device, this plugin now needs to be loaded when running VDR in order to view live or recorded video. If the plugin is not loaded, the card will be treated like a budget DVB card, and there will be no OSD or viewing capability. - Fixed handling the "CA PMT" generation (revised a change not mentioned in version 1.7.9's changes, which caused a malfunction with Conax and Viaccess CAMs). - Fixed stopping subtitle display when switching the primary device (thanks to Anssi Hannula). IMPORTANT NOTE TO PLUGIN AUTHORS: a plugin that implements a derived cDevice class that can replay video must now call the MakePrimaryDevice() function of its base class. - Fixed compiler warnings "format not a string literal and no format arguments" in some syslog calls (thanks to Rolf Ahrenberg). - The new command line options --edit and --genindex can be used to edit a recording or generate its index without actually starting the entire VDR (based on a patch from Helmut Auer). - Improved the description of the transponder parameters in vdr.5 (thanks to Winfried Köhler). - Avoiding setting the video stream type to 2 if the vpid is 0 (problem reported by Arthur Konovalov). - Implemented handling the "Content Descriptor" (based on a patch from Rolf Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the textual representation of the content descriptors as "genre". The epg.data file stores the genre using the tag character 'G'. - Implemented handling the "Parental Rating Descriptor" (based on a patch from Rolf Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the parental rating (if given) in their event displays. The epg.data file stores the parental rating using the tag character 'R'. IMPORTANT NOTE: if VDR doesn't display a parental rating, this does not necessarily mean that the given programme is suitable for all audiences! - Rearranged cEvent members to minimize memory waste. - After a CLRE command, no further EPG processing is now done for 10 seconds, so that data sent with subsequent PUTE commands doesn't interfere with data from the broadcasters (suggested by Helmut Auer). - Added support for DVB cards with multiple fontends. Note that this only works for DVB cards where each frontend can be used independently of all the others on the same adapter. - Fixed plugin arguments corruption with glibc 2.11 on x86_64 (thanks to Anssi Hannula).
111 lines
4.7 KiB
C++
111 lines
4.7 KiB
C++
/*
|
|
* font.h: Font handling for the DVB On Screen Display
|
|
*
|
|
* See the main source file 'vdr.c' for copyright information and
|
|
* how to reach the author.
|
|
*
|
|
* $Id: font.h 2.3 2009/12/31 14:48:25 kls Exp $
|
|
*/
|
|
|
|
#ifndef __FONT_H
|
|
#define __FONT_H
|
|
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include "tools.h"
|
|
|
|
#define MAXFONTNAME 64
|
|
#define MINFONTSIZE 10
|
|
#define MAXFONTSIZE 64
|
|
|
|
enum eDvbFont {
|
|
fontOsd,
|
|
fontFix,
|
|
fontSml
|
|
#define eDvbFontSize (fontSml + 1)
|
|
};
|
|
|
|
class cBitmap;
|
|
typedef uint32_t tColor; // see also osd.h
|
|
typedef uint8_t tIndex;
|
|
|
|
extern const char *DefaultFontOsd;
|
|
extern const char *DefaultFontSml;
|
|
extern const char *DefaultFontFix;
|
|
|
|
class cFont {
|
|
private:
|
|
static cFont *fonts[];
|
|
public:
|
|
virtual ~cFont() {}
|
|
virtual const char *FontName(void) const { return ""; }
|
|
///< Returns the font name.
|
|
virtual int Size(void) const { return Height(); }
|
|
///< Returns the original size as requested when the font was created.
|
|
///< This may be different than the actual height.
|
|
virtual int Width(uint c) const = 0;
|
|
///< Returns the width of the given character in pixel.
|
|
virtual int Width(const char *s) const = 0;
|
|
///< Returns the width of the given string in pixel.
|
|
virtual int Height(void) const = 0;
|
|
///< Returns the height of this font in pixel (all characters have the same height).
|
|
int Height(const char *s) const { return Height(); }
|
|
///< Returns the height of this font in pixel (obsolete, just for backwards compatibilty).
|
|
virtual void DrawText(cBitmap *Bitmap, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, int Width) const = 0;
|
|
///< 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 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.
|
|
///< GetFont() is not thread-safe, and shall only be called from the main
|
|
///< thread! A font returned by GetFont() must only be used locally inside the
|
|
///< function it was retrieved from, and no long term pointer to it shall be kept,
|
|
///< because the cFont object may become invalid at any time after the
|
|
///< function that called GetFont() has returned.
|
|
static cFont *CreateFont(const char *Name, int CharHeight, int CharWidth = 0);
|
|
///< Creates a new font object with the given Name and makes its characters
|
|
///< CharHeight pixels high. If CharWidth is given, it overwrites the font's
|
|
///< 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.
|
|
///< 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
|
|
///< monospaced fonts will be returned. The resulting font names are
|
|
///< in a format that can be used with GetFontFileName() to get the name
|
|
///< of the actual font file.
|
|
///< Returns true if any font names were found.
|
|
static cString GetFontFileName(const char *FontName);
|
|
///< Retruns the actual font file name for the given FontName.
|
|
};
|
|
|
|
class cTextWrapper {
|
|
private:
|
|
char *text;
|
|
char *eol;
|
|
int lines;
|
|
int lastLine;
|
|
public:
|
|
cTextWrapper(void);
|
|
cTextWrapper(const char *Text, const cFont *Font, int Width);
|
|
~cTextWrapper();
|
|
void Set(const char *Text, const cFont *Font, int Width);
|
|
///< Wraps the Text to make it fit into the area defined by the given Width
|
|
///< when displayed with the given Font.
|
|
///< Wrapping is done by inserting the necessary number of newline
|
|
///< characters into the string.
|
|
const char *Text(void);
|
|
///< Returns the full wrapped text.
|
|
int Lines(void) { return lines; }
|
|
///< Returns the actual number of lines needed to display the full wrapped text.
|
|
const char *GetLine(int Line);
|
|
///< Returns the given Line. The first line is numbered 0.
|
|
};
|
|
|
|
#endif //__FONT_H
|