Go to the documentation of this file.
21 #include "symbols/arrowdown.xpm"
22 #include "symbols/arrowup.xpm"
23 #include "symbols/audio.xpm"
24 #include "symbols/audioleft.xpm"
25 #include "symbols/audioright.xpm"
26 #include "symbols/audiostereo.xpm"
27 #include "symbols/dolbydigital.xpm"
28 #include "symbols/encrypted.xpm"
29 #include "symbols/ffwd.xpm"
30 #include "symbols/ffwd1.xpm"
31 #include "symbols/ffwd2.xpm"
32 #include "symbols/ffwd3.xpm"
33 #include "symbols/frew.xpm"
34 #include "symbols/frew1.xpm"
35 #include "symbols/frew2.xpm"
36 #include "symbols/frew3.xpm"
37 #include "symbols/mute.xpm"
38 #include "symbols/pause.xpm"
39 #include "symbols/play.xpm"
40 #include "symbols/radio.xpm"
41 #include "symbols/recording.xpm"
42 #include "symbols/sfwd.xpm"
43 #include "symbols/sfwd1.xpm"
44 #include "symbols/sfwd2.xpm"
45 #include "symbols/sfwd3.xpm"
46 #include "symbols/srew.xpm"
47 #include "symbols/srew1.xpm"
48 #include "symbols/srew2.xpm"
49 #include "symbols/srew3.xpm"
50 #include "symbols/teletext.xpm"
51 #include "symbols/volume.xpm"
53 #define Roundness (Setup.FontOsdSize / 2)
54 #define Gap (Setup.FontOsdSize / 5)
55 #define ScrollWidth (Setup.FontOsdSize / 4)
56 #define TextFrame (Setup.FontOsdSize / 10)
57 #define TextSpacing (Setup.FontOsdSize / 4)
58 #define SymbolSpacing (Setup.FontOsdSize / 4)
152 virtual void Flush(
void);
193 int yt = (
y0 +
y1) / 2;
194 int yb = (
y6 +
y7) / 2;
196 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 32 } };
200 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 8 } };
204 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 4 } };
268 if (Channel && !Channel->
GroupSep()) {
278 if (Channel->
Vpid()) {
282 else if (Channel->
Apid(0)) {
300 for (
int i = 0; i < 2; i++) {
301 const cEvent *e = !i ? Present : Following;
334 int w = font->
Width(date);
351 int h = ((
y7 -
y6 + 1) - 3 * d) / 2;
352 int w = (
x4 -
x3) / 5;
353 int x = (
x3 +
x4) / 2 - w / 2;
354 if (SignalStrength >= 0) {
355 int s = SignalStrength * w / 100;
361 if (SignalQuality >= 0) {
362 int q = SignalQuality * w / 100;
370 int dw = font->
Width(dn);
381 time_t t = time(NULL);
410 void DrawScrollbar(
int Total,
int Offset,
int Shown,
int Top,
int Height,
bool CanScrollUp,
bool CanScrollDown);
415 virtual void Scroll(
bool Up,
bool Page);
417 virtual void Clear(
void);
418 virtual void SetTitle(
const char *Title);
419 virtual void SetButtons(
const char *Red,
const char *Green = NULL,
const char *Yellow = NULL,
const char *Blue = NULL);
421 virtual void SetItem(
const char *Text,
int Index,
bool Current,
bool Selectable);
425 virtual void SetText(
const char *Text,
bool FixedFont);
428 virtual void Flush(
void);
455 int yt = (
y0 +
y1) / 2;
456 int yb = (
y6 +
y7) / 2;
507 if (Total > 0 && Total > Shown) {
510 int yb = yt + Height;
511 int st = yt + h +
Gap;
512 int sb = yb - h -
Gap;
513 int th =
max(
int((sb - st) *
double(Shown) / Total + 0.5),
ScrollWidth);
514 int tt =
min(
int(st + (sb - st) *
double(Offset) / Total + 0.5), sb - th);
515 int tb =
min(tt + th, sb);
559 const char *VDR =
" VDR";
561 int w = font->
Width(VDR);
574 const char *lutText[] = { Red, Green, Yellow, Blue };
575 tColor lutFg[] = { clrButtonRedFg, clrButtonGreenFg, clrButtonYellowFg, clrButtonBlueFg };
576 tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
625 ColorFg =
Theme.
Color(Selectable ? clrMenuItemSelectable : clrMenuItemNonSelectable);
633 for (
int i = 0; i <
MaxTabs; i++) {
663 int w = font->
Width(buffer);
665 int yb = y + font->
Height();
673 int w = font->
Width(buffer);
675 int yb = y + font->
Height();
715 int w = font->
Width(buffer);
717 int yb = y + font->
Height();
722 const char *Title = Info->
Title();
724 Title = Recording->
Name();
771 int w = font->
Width(date);
791 virtual void SetTitle(
const char *Title);
792 virtual void SetMode(
bool Play,
bool Forward,
int Speed);
795 virtual void SetTotal(
const char *Total);
796 virtual void SetJump(
const char *Jump);
798 virtual void Flush(
void);
804 int lineHeight = font->
Height();
813 x6 =
x7 - lineHeight / 2;
814 x5 =
x6 - lineHeight / 2;
824 int yt = (
y0 +
y1) / 2;
825 int yb = (
y6 +
y7) / 2;
827 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 32 } };
831 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 8 } };
835 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 4 } };
874 { { pause_xpm, srew_xpm, srew1_xpm, srew2_xpm, srew3_xpm },
875 { pause_xpm, sfwd_xpm, sfwd1_xpm, sfwd2_xpm, sfwd3_xpm }, },
876 { { play_xpm, frew_xpm, frew1_xpm, frew2_xpm, frew3_xpm },
877 { play_xpm, ffwd_xpm, ffwd1_xpm, ffwd2_xpm, ffwd3_xpm } }
904 int w = font->
Width(Total);
943 virtual void Flush(
void);
949 int lineHeight = font->
Height();
957 x6 =
x7 - lineHeight / 2;
958 x5 =
x6 - lineHeight / 2;
998 cBitmap bm(Mute ? mute_xpm : volume_xpm);
1002 int w = (
y1 -
y0) / 3;
1004 int n = (xr - xl + d) / (w + d);
1005 int x = xr - n * (w + d);
1007 for (
int i = 0; i < n; i++) {
1036 virtual void SetTrack(
int Index,
const char *
const *Tracks);
1038 virtual void Flush(
void);
1051 int ItemsWidth = font->
Width(Title);
1052 for (
int i = 0; i < NumTracks; i++)
1053 ItemsWidth =
max(ItemsWidth, font->
Width(Tracks[i]));
1064 if (d > ItemsWidth) {
1065 d = (d - ItemsWidth) & ~0x07;
1080 int yt = (
y0 +
y1) / 2;
1081 int yb = (
y6 +
y7) / 2;
1124 for (
int i = 0; i < NumTracks; i++)
1147 ColorFg =
Theme.
Color(clrMenuItemSelectable);
1156 osd->
DrawText(xt, y, Text, ColorFg, ColorBg, font,
x4 - xt);
1163 SetItem(Tracks[Index], Index,
true);
1169 switch (AudioChannel) {
1197 virtual void Flush(
void);
1203 int lineHeight = font->
Height();
1206 x1 = lineHeight / 2;
1210 x6 =
x7 - lineHeight / 2;
1211 x5 =
x6 - lineHeight / 2;
1260 return tr(
"ST:TNG Panels");
static int OsdWidth(void)
static cOsd * NewOsd(int Left, int Top, uint Level=OSD_LEVEL_DEFAULT)
Returns a pointer to a newly created cOsd object, which will be located at the given coordinates.
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
static cString sprintf(const char *fmt,...) __attribute__((format(printf
int ParentalRating(void) const
cString ChannelString(const cChannel *Channel, int Number)
virtual void Flush(void)
Actually draws the OSD display to the output device.
virtual void Flush(void)
Actually draws the OSD display to the output device.
static cBitmap bmTeletext
THEME_CLR(Theme, clrBackground, clrGray50)
tColor Color(int Subject)
Returns the color for the given Subject.
static const cFont * GetFont(eDvbFont Font)
Gets the given Font, which was previously set by a call to SetFont().
virtual cSkinDisplayTracks * DisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
Creates and returns a new object for displaying the available tracks.
virtual void SetProgress(int Current, int Total)
This function will be called whenever the position in or the total length of the recording has change...
const char * Title(void) const
const cRecordingInfo * Info(void) const
The cOsd class is the interface to the "On Screen Display".
virtual void Flush(void)
Actually draws the OSD display to the output device.
static cBitmap bmAudioStereo
virtual cSkinDisplayChannel * DisplayChannel(bool WithInfo)
Creates and returns a new object for displaying the current channel.
eTrackType GetCurrentAudioTrack(void) const
virtual cSkinDisplayReplay * DisplayReplay(bool ModeOnly)
Creates and returns a new object for displaying replay progress.
const char * Description(void) const
static cBitmap bmAudioLeft
const char * Title(void) const
static bool HasChanged(int &State)
Returns true if the usage of the video disk space has changed since the last call to this function wi...
virtual ~cSkinSTTNGDisplayVolume()
static cBitmap bmAudioRight
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
virtual void SetMessage(eMessageType Type, const char *Text)
< This class implements a simple message display.
virtual void SetJump(const char *Jump)
Sets the prompt that allows the user to enter a jump point.
virtual void SaveRegion(int x1, int y1, int x2, int y2)
Saves the region defined by the given coordinates for later restoration through RestoreRegion().
virtual ~cSkinSTTNGDisplayMessage()
const char * ShortText(void) const
static cDevice * PrimaryDevice(void)
Returns the primary device.
virtual ~cSkinSTTNGDisplayTracks()
static cBitmap bmDolbyDigital
const char * Name(void) const
Returns the full name of the recording (without the video directory).
virtual void DrawEllipse(int x1, int y1, int x2, int y2, tColor Color, int Quadrants=0)
Draws a filled ellipse defined by the upper left (x1, y1) and lower right (x2, y2) corners with the g...
static int OsdHeight(void)
virtual void RestoreRegion(void)
Restores the region previously saved by a call to SaveRegion().
static cString String(void)
Returns a localized string of the form "Disk nn% - hh:mm free".
void SetEditableWidth(int Width)
If an item is set through a call to cSkinDisplayMenu::SetItem(), this function shall be called to set...
void Set(cOsd *Osd, int Left, int Top, int Width, int Height, const char *Text, const cFont *Font, tColor ColorFg, tColor ColorBg)
virtual ~cSkinSTTNGDisplayChannel()
static cSkinDisplay * Current(void)
Returns the currently active cSkinDisplay.
cSkinSTTNGDisplayChannel(bool WithInfo)
cSkinSTTNGDisplayReplay(bool ModeOnly)
virtual int Height(void) const =0
Returns the height of this font in pixel (all characters have the same height).
static cBitmap bmRecording
virtual void SetCurrent(const char *Current)
Sets the current position within the recording, as a user readable string if the form "h:mm:ss....
virtual void SetMode(bool Play, bool Forward, int Speed)
Sets the current replay mode, which can be used to display some indicator, showing the user whether w...
bool GroupSep(void) const
virtual void Flush(void)
Actually draws the OSD display to the output device.
time_t StartTime(void) const
virtual void SetEvents(const cEvent *Present, const cEvent *Following)
Sets the Present and Following EPG events.
cString GetParentalRatingString(void) const
virtual void DrawRectangle(int x1, int y1, int x2, int y2, tColor Color)
Draws a filled rectangle defined by the upper left (x1, y1) and lower right (x2, y2) corners with the...
const tTrackId * GetTrack(eTrackType Type)
Returns a pointer to the given track id, or NULL if Type is not less than ttMaxTrackTypes.
virtual const char * Description(void)
Returns a user visible, single line description of this skin, which may consist of arbitrary text and...
cString GetTimeString(void) const
virtual eOsdError SetAreas(const tArea *Areas, int NumAreas)
Sets the sub-areas to the given areas.
static cBitmap bmEncrypted
virtual cSkinDisplayMenu * DisplayMenu(void)
Creates and returns a new object for displaying a menu.
const cMarks * marks
< This class implements the progress display used during replay of a recording.
virtual cSkinDisplayMessage * DisplayMessage(void)
Creates and returns a new object for displaying a message.
cString GetVpsString(void) const
virtual void SetTitle(const char *Title)
Sets the title of the recording.
const char * ChannelName(void) const
static cDevice * ActualDevice(void)
Returns the actual receiving device in case of Transfer Mode, or the primary device otherwise.
virtual void Flush(void)
Actually draws the OSD display to the output device.
int Ca(int Index=0) const
virtual void SetChannel(const cChannel *Channel, int Number)
Sets the current channel to Channel.
virtual void SetTrack(int Index, const char *const *Tracks)
< This class implements the track display.
virtual ~cSkinSTTNGDisplayReplay()
virtual void SetVolume(int Current, int Total, bool Mute)
< This class implements the volume/mute display.
const cEvent * GetEvent(void) const
const char * Description(void) const
virtual void DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg=0, tColor ColorBg=0, bool ReplacePalette=false, bool Overlay=false)
Sets the pixels in the OSD with the data from the given Bitmap, putting the upper left corner of the ...
cString GetDateString(void) const
int DeviceNumber(void) const
Returns the number of this device (0 ... numDevices - 1).
virtual int SignalStrength(void) const
Returns the "strength" of the currently received signal.
cString GetEndTimeString(void) const
virtual eOsdError CanHandleAreas(const tArea *Areas, int NumAreas)
Checks whether the OSD can display the given set of sub-areas.
virtual int Width(void) const =0
Returns the original character width as requested when the font was created, or 0 if the default widt...
virtual void DrawText(int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width=0, int Height=0, int Alignment=taDefault)
Draws the given string at coordinates (x, y) with the given foreground and background color and font.
cSkinSTTNGDisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
cSkinSTTNGDisplayMessage(void)
virtual int SignalQuality(void) const
Returns the "quality" of the currently received signal.
cSkinSTTNGDisplayVolume(void)
void SetItem(const char *Text, int Index, bool Current)
virtual void Flush(void)
Actually commits all data to the OSD hardware.
virtual void SetAudioChannel(int AudioChannel)
Sets the audio channel indicator.
virtual void SetTotal(const char *Total)
Sets the total length of the recording, as a user readable string if the form "h:mm:ss".
static const char *const * ReplaySymbols[2][2][5]
const char * ShortText(void) const
virtual cSkinDisplayVolume * DisplayVolume(void)
Creates and returns a new object for displaying the current volume.