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)
153 virtual void Flush(
void)
override;
194 int yt = (
y0 +
y1) / 2;
195 int yb = (
y6 +
y7) / 2;
197 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 32 } };
201 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 8 } };
205 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 4 } };
269 if (Channel && !Channel->
GroupSep()) {
279 if (Channel->
Vpid()) {
283 else if (Channel->
Apid(0)) {
301 for (
int i = 0; i < 2; i++) {
302 const cEvent *e = !i ? Present : Following;
335 int w = font->
Width(date);
353 int h = ((
y7 -
y6 + 1) - 3 * d) / 2;
354 int w = (
x4 -
x3) / 5;
355 int x = (
x3 +
x4) / 2 - w / 2;
356 if (SignalStrength >= 0) {
357 int s = SignalStrength * w / 100;
363 if (SignalQuality >= 0) {
364 int q = SignalQuality * w / 100;
372 int dw = font->
Width(dn);
384 time_t t = time(NULL);
413 void DrawScrollbar(
int Total,
int Offset,
int Shown,
int Top,
int Height,
bool CanScrollUp,
bool CanScrollDown);
418 virtual void Scroll(
bool Up,
bool Page)
override;
419 virtual int MaxItems(
void)
override;
420 virtual void Clear(
void)
override;
421 virtual void SetTitle(
const char *Title)
override;
422 virtual void SetButtons(
const char *Red,
const char *Green = NULL,
const char *Yellow = NULL,
const char *Blue = NULL)
override;
424 virtual void SetItem(
const char *Text,
int Index,
bool Current,
bool Selectable)
override;
425 virtual void SetScrollbar(
int Total,
int Offset)
override;
428 virtual void SetText(
const char *Text,
bool FixedFont)
override;
431 virtual void Flush(
void)
override;
458 int yt = (
y0 +
y1) / 2;
459 int yb = (
y6 +
y7) / 2;
510 if (Total > 0 && Total > Shown) {
513 int yb = yt + Height;
514 int st = yt + h +
Gap;
515 int sb = yb - h -
Gap;
516 int th =
max(
int((sb - st) *
double(Shown) / Total + 0.5),
ScrollWidth);
517 int tt =
min(
int(st + (sb - st) *
double(Offset) / Total + 0.5), sb - th);
518 int tb =
min(tt + th, sb);
562 const char *VDR =
" VDR";
564 int w = font->
Width(VDR);
577 const char *lutText[] = { Red, Green, Yellow, Blue };
578 tColor lutFg[] = { clrButtonRedFg, clrButtonGreenFg, clrButtonYellowFg, clrButtonBlueFg };
579 tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
628 ColorFg =
Theme.
Color(Selectable ? clrMenuItemSelectable : clrMenuItemNonSelectable);
636 for (
int i = 0; i <
MaxTabs; i++) {
666 int w = font->
Width(buffer);
668 int yb = y + font->
Height();
676 int w = font->
Width(buffer);
678 int yb = y + font->
Height();
719 int w = font->
Width(buffer);
727 int w = font->
Width(buffer);
733 int yb = y + font->
Height();
738 const char *Title = Info->
Title();
740 Title = Recording->
Name();
793 int w = font->
Width(date);
813 virtual void SetTitle(
const char *Title)
override;
814 virtual void SetMode(
bool Play,
bool Forward,
int Speed)
override;
817 virtual void SetTotal(
const char *Total)
override;
818 virtual void SetJump(
const char *Jump)
override;
820 virtual void Flush(
void)
override;
826 int lineHeight = font->
Height();
835 x6 =
x7 - lineHeight / 2;
836 x5 =
x6 - lineHeight / 2;
846 int yt = (
y0 +
y1) / 2;
847 int yb = (
y6 +
y7) / 2;
849 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 32 } };
853 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 8 } };
857 tArea Areas[] = { { 0, 0,
x7 - 1,
y7 - 1, 4 } };
896 { { pause_xpm, srew_xpm, srew1_xpm, srew2_xpm, srew3_xpm },
897 { pause_xpm, sfwd_xpm, sfwd1_xpm, sfwd2_xpm, sfwd3_xpm }, },
898 { { play_xpm, frew_xpm, frew1_xpm, frew2_xpm, frew3_xpm },
899 { play_xpm, ffwd_xpm, ffwd1_xpm, ffwd2_xpm, ffwd3_xpm } }
911 cProgressBar pb(
x4 -
x3,
y4 -
y3,
Current, Total,
marks,
errors,
Theme.
Color(clrReplayProgressSeen),
Theme.
Color(clrReplayProgressRest),
Theme.
Color(clrReplayProgressSelected),
Theme.
Color(clrReplayProgressMark),
Theme.
Color(clrReplayProgressCurrent),
Theme.
Color(clrReplayProgressError));
926 int w = font->
Width(Total);
968 virtual void Flush(
void)
override;
974 int lineHeight = font->
Height();
982 x6 =
x7 - lineHeight / 2;
983 x5 =
x6 - lineHeight / 2;
1023 cBitmap bm(Mute ? mute_xpm : volume_xpm);
1027 int w = (
y1 -
y0) / 3;
1029 int n = (xr - xl + d) / (w + d);
1030 int x = xr - n * (w + d);
1032 for (
int i = 0; i < n; i++) {
1061 virtual void SetTrack(
int Index,
const char *
const *Tracks)
override;
1063 virtual void Flush(
void)
override;
1076 int ItemsWidth = font->
Width(Title);
1077 for (
int i = 0; i < NumTracks; i++)
1078 ItemsWidth =
max(ItemsWidth, font->
Width(Tracks[i]));
1089 if (d > ItemsWidth) {
1090 d = (d - ItemsWidth) & ~0x07;
1105 int yt = (
y0 +
y1) / 2;
1106 int yb = (
y6 +
y7) / 2;
1149 for (
int i = 0; i < NumTracks; i++)
1172 ColorFg =
Theme.
Color(clrMenuItemSelectable);
1181 osd->
DrawText(xt, y, Text, ColorFg, ColorBg, font,
x4 - xt);
1188 SetItem(Tracks[Index], Index,
true);
1194 switch (AudioChannel) {
1222 virtual void Flush(
void)
override;
1228 int lineHeight = font->
Height();
1231 x1 = lineHeight / 2;
1235 x6 =
x7 - lineHeight / 2;
1236 x5 =
x6 - lineHeight / 2;
1285 return tr(
"ST:TNG Panels");
cString ChannelString(const cChannel *Channel, int Number)
bool GroupSep(void) const
int Ca(int Index=0) const
bool GetTrackId(eTrackType Type, tTrackId &TrackId)
Copies the given track id into TrackId and returns true, or returns false if Type is not a valid trac...
static cDevice * ActualDevice(void)
Returns the actual receiving device in case of Transfer Mode, or the primary device otherwise.
static cDevice * PrimaryDevice(void)
Returns the primary device.
eTrackType GetCurrentAudioTrack(void) const
int DeviceNumber(void) const
Returns the number of this device (0 ... numDevices - 1).
virtual int SignalQuality(void) const
Returns the "quality" of the currently received signal.
virtual int SignalStrength(void) const
Returns the "strength" of the currently received signal.
const char * ShortText(void) const
cString GetDateString(void) const
const char * Description(void) const
int ParentalRating(void) const
time_t StartTime(void) const
cString GetTimeString(void) const
const char * Title(void) const
cString GetEndTimeString(void) const
cString GetVpsString(void) const
cString GetParentalRatingString(void) const
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 int Height(void) const =0
Returns the height of this font in pixel (all characters have the same height).
static const cFont * GetFont(eDvbFont Font)
Gets the given Font, which was previously set by a call to SetFont().
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.
The cOsd class is the interface to the "On Screen Display".
static int OsdHeight(void)
virtual eOsdError SetAreas(const tArea *Areas, int NumAreas)
Sets the sub-areas to the given areas.
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 ...
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...
virtual eOsdError CanHandleAreas(const tArea *Areas, int NumAreas)
Checks whether the OSD can display the given set of sub-areas.
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 void Flush(void)
Actually commits all data to the OSD hardware.
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...
static int OsdWidth(void)
virtual void RestoreRegion(void)
Restores the region previously saved by a call to SaveRegion().
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.
static void Delete(cOsd *&Osd)
Deregisters and deletes the given Osd (if any) and sets it to NULL.
const char * ChannelName(void) const
const cEvent * GetEvent(void) const
const char * ShortText(void) const
const char * Title(void) const
cString FrameParams(void) const
const char * Description(void) const
const char * Name(void) const
Returns the full name of the recording (without the video directory).
cRecordingInfo * Info(void) const
cSkinDisplayChannel(void)
const cMarks * marks
< This class implements the progress display used during replay of a recording.
static cSkinDisplay * Current(void)
Returns the currently active cSkinDisplay.
void SetEditableWidth(int Width)
If an item is set through a call to cSkinDisplayMenu::SetItem(), this function shall be called to set...
static cBitmap bmRecording
virtual void SetEvents(const cEvent *Present, const cEvent *Following) override
Sets the Present and Following EPG events.
virtual void SetMessage(eMessageType Type, const char *Text) override
Sets a one line message Text, with the given Type.
static cBitmap bmEncrypted
virtual ~cSkinSTTNGDisplayChannel() override
static cBitmap bmTeletext
static cBitmap bmDolbyDigital
cSkinSTTNGDisplayChannel(bool WithInfo)
virtual void SetChannel(const cChannel *Channel, int Number) override
Sets the current channel to Channel.
virtual void Flush(void) override
Actually draws the OSD display to the output device.
cSkinSTTNGDisplayMessage(void)
virtual void Flush(void) override
Actually draws the OSD display to the output device.
virtual ~cSkinSTTNGDisplayMessage() override
virtual void SetMessage(eMessageType Type, const char *Text) override
< This class implements a simple message display.
virtual void SetProgress(int Current, int Total) override
This function will be called whenever the position in or the total length of the recording has change...
virtual void SetTitle(const char *Title) override
Sets the title of the recording.
virtual void SetMode(bool Play, bool Forward, int Speed) override
Sets the current replay mode, which can be used to display some indicator, showing the user whether w...
virtual void SetTotal(const char *Total) override
Sets the total length of the recording, as a user readable string in the form "h:mm:ss".
virtual void SetCurrent(const char *Current) override
Sets the current position within the recording, as a user readable string in the form "h:mm:ss....
virtual void Flush(void) override
Actually draws the OSD display to the output device.
cSkinSTTNGDisplayReplay(bool ModeOnly)
virtual ~cSkinSTTNGDisplayReplay() override
virtual void SetMessage(eMessageType Type, const char *Text) override
Sets a one line message Text, with the given Type.
virtual void SetJump(const char *Jump) override
Sets the prompt that allows the user to enter a jump point.
virtual void Flush(void) override
Actually draws the OSD display to the output device.
static cBitmap bmAudioLeft
virtual void SetTrack(int Index, const char *const *Tracks) override
< This class implements the track display.
static cBitmap bmAudioStereo
cSkinSTTNGDisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
virtual void SetAudioChannel(int AudioChannel) override
Sets the audio channel indicator.
void SetItem(const char *Text, int Index, bool Current)
virtual ~cSkinSTTNGDisplayTracks() override
static cBitmap bmAudioRight
virtual ~cSkinSTTNGDisplayVolume() override
cSkinSTTNGDisplayVolume(void)
virtual void Flush(void) override
Actually draws the OSD display to the output device.
virtual void SetVolume(int Current, int Total, bool Mute) override
< This class implements the volume/mute display.
virtual const char * Description(void) override
Returns a user visible, single line description of this skin, which may consist of arbitrary text and...
virtual cSkinDisplayMessage * DisplayMessage(void) override
Creates and returns a new object for displaying a message.
virtual cSkinDisplayVolume * DisplayVolume(void) override
Creates and returns a new object for displaying the current volume.
virtual cSkinDisplayTracks * DisplayTracks(const char *Title, int NumTracks, const char *const *Tracks) override
Creates and returns a new object for displaying the available tracks.
virtual cSkinDisplayReplay * DisplayReplay(bool ModeOnly) override
Creates and returns a new object for displaying replay progress.
virtual cSkinDisplayMenu * DisplayMenu(void) override
Creates and returns a new object for displaying a menu.
virtual cSkinDisplayChannel * DisplayChannel(bool WithInfo) override
Creates and returns a new object for displaying the current channel.
cSkin(const char *Name, cTheme *Theme=NULL)
Creates a new skin class, with the given Name and Theme.
static cString sprintf(const char *fmt,...) __attribute__((format(printf
cString & Append(const char *String)
void Set(cOsd *Osd, int Left, int Top, int Width, int Height, const char *Text, const cFont *Font, tColor ColorFg, tColor ColorBg)
tColor Color(int Subject)
Returns the color for the given Subject.
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...
static cString String(void)
Returns a localized string of the form "Disk nn% - hh:mm free".
#define LOCK_SCHEDULES_READ
static const char *const * ReplaySymbols[2][2][5]
static const char *const * ReplaySymbols[2][2][5]
#define THEME_CLR(Theme, Subject, Color)