34#include "symbols/arrowdown.xpm"
35#include "symbols/arrowup.xpm"
36#include "symbols/audio.xpm"
37#include "symbols/audioleft.xpm"
38#include "symbols/audioright.xpm"
39#include "symbols/audiostereo.xpm"
40#include "symbols/dolbydigital.xpm"
41#include "symbols/encrypted.xpm"
42#include "symbols/ffwd.xpm"
43#include "symbols/ffwd1.xpm"
44#include "symbols/ffwd2.xpm"
45#include "symbols/ffwd3.xpm"
46#include "symbols/frew.xpm"
47#include "symbols/frew1.xpm"
48#include "symbols/frew2.xpm"
49#include "symbols/frew3.xpm"
50#include "symbols/mute.xpm"
51#include "symbols/pause.xpm"
52#include "symbols/play.xpm"
53#include "symbols/radio.xpm"
54#include "symbols/recording.xpm"
55#include "symbols/sfwd.xpm"
56#include "symbols/sfwd1.xpm"
57#include "symbols/sfwd2.xpm"
58#include "symbols/sfwd3.xpm"
59#include "symbols/srew.xpm"
60#include "symbols/srew1.xpm"
61#include "symbols/srew2.xpm"
62#include "symbols/srew3.xpm"
63#include "symbols/teletext.xpm"
64#include "symbols/volume.xpm"
66#define Gap (Setup.FontOsdSize / 5 & ~1)
67#define TextFrame (Setup.FontOsdSize / TEXT_ALIGN_BORDER)
68#define TextSpacing (2 * TextFrame)
69#define SymbolSpacing TextSpacing
70#define ShowSeenExtent (Setup.FontOsdSize / 5)
72#define DISKUSAGEALERTLIMIT 95
73#define SIGNALDISPLAYDELTA 2
79#define CLR_BACKGROUND 0x99000000
80#define CLR_MAIN_FRAME 0xFFFF9966
81#define CLR_CHANNEL_FRAME 0xFF8A9EC9
82#define CLR_REPLAY_FRAME 0xFFCC6666
83#define CLR_DATE 0xFF99CCFF
84#define CLR_MENU_ITEMS 0xFF9999FF
85#define CLR_TIMER 0xFF99CCFF
86#define CLR_DEVICE 0xFFF1B1AF
87#define CLR_CHANNEL_NAME 0xFF99CCFF
88#define CLR_EVENT_TITLE 0xFF99CCFF
89#define CLR_EVENT_TIME 0xFFFFCC66
90#define CLR_EVENT_SHORTTEXT 0xFFFFCC66
91#define CLR_TEXT 0xFF99CCFF
92#define CLR_TRACK 0xFFFFCC66
93#define CLR_SEEN 0xFFCC99CC
94#define CLR_ALERT 0xFFFF0000
95#define CLR_EXPOSED 0xFF990000
96#define CLR_WHITE 0xFFFFFFFF
97#define CLR_RED 0xFFCC6666
98#define CLR_GREEN 0xFFA0FF99
99#define CLR_YELLOW 0xFFF1DF60
100#define CLR_BLUE 0xFF9A99FF
101#define CLR_BLACK 0xFF000000
209 int Bpp[] = { 32, 8, 4, 2, 1 };
210 tArea Area = { x0, y0, x1, y1, 0 };
211 for (
unsigned int i = 0; i <
sizeof(Bpp) /
sizeof(int); i++) {
227 int Height = LineHeight;
230 if (Height < 2 || TinyFont->Height() <= LineHeight)
237static bool DrawDeviceData(
cOsd *Osd,
const cDevice *Device,
int x0,
int y0,
int x1,
int y1,
int &xs,
const cFont *TinyFont,
cString &LastDeviceType,
cCamSlot *&LastCamSlot,
bool Initial)
241 if (Initial || strcmp(DeviceType, LastDeviceType) || CamSlot != LastCamSlot) {
249 int w =
max(font->
Width(Nr), y1 - y0);
253 Osd->
DrawText(x, y0, DeviceType, ColorFg, ColorBg, TinyFont);
254 xs =
max(xs, x + TinyFont->
Width(DeviceType));
255 LastDeviceType = DeviceType;
259 Osd->
DrawText(x, y1 - TinyFont->
Height(), s, ColorFg, ColorBg, TinyFont);
260 xs =
max(xs, x + TinyFont->
Width(s));
262 LastCamSlot = CamSlot;
268static void DrawDeviceSignal(
cOsd *Osd,
const cDevice *Device,
int x0,
int y0,
int x1,
int y1,
int &LastSignalStrength,
int &LastSignalQuality,
bool Initial)
272 int d =
max((y1 - y0) / 10, 1);
275 int h = (y1 - y0 - 3 * d) / 2;
281 tColor ColorSignalValue, ColorSignalRest;
284 ColorSignalRest =
Theme.Color(clrMenuFrameBg);
287 ColorSignalValue =
Theme.Color(clrSignalValue);
288 ColorSignalRest =
Theme.Color(clrSignalRest);
290 if (SignalStrength >= 0 && (Initial || SignalStrength != LastSignalStrength)) {
291 int s = SignalStrength * w / 100;
292 Osd->
DrawRectangle(x00, y00, x00 + s - 1, y01 - 1, ColorSignalValue);
293 Osd->
DrawRectangle(x00 + s, y00, x01 - 1, y01 - 1, ColorSignalRest);
294 LastSignalStrength = SignalStrength;
296 if (SignalQuality >= 0 && (Initial || SignalQuality != LastSignalQuality)) {
297 int q = SignalQuality * w / 100;
298 Osd->
DrawRectangle(x00, y02, x00 + q - 1, y03 - 1, ColorSignalValue);
299 Osd->
DrawRectangle(x00 + q, y02, x01 - 1, y03 - 1, ColorSignalRest);
300 LastSignalQuality = SignalQuality;
313 int d = (y1 - y0) / 2;
314 int w = x1 - x0 - 2 * d;
315 int l =
max(x0 + d, x0 + d + w * HardLimitLeft / HorizonDelta);
316 int r =
min(x1 - d, x1 - d - w * HardLimitRight / HorizonDelta) - 1;
317 int c =
constrain(x0 + d + w * Current / HorizonDelta, l, r);
318 int t =
constrain(x0 + d + w * Target / HorizonDelta, l, r);
319 if (c == LastCurrent)
323 tColor ColorRange, ColorMove;
325 ColorRange =
Theme.Color(clrChannelFrameBg);
329 ColorRange =
Theme.Color(clrChannelFrameBg);
330 ColorMove =
Theme.Color(clrDeviceBg);
333 Osd->
DrawEllipse(l - d, y0, l, y1 - 1, ColorRange, 7);
335 Osd->
DrawEllipse(r, y0, r + d, y1 - 1, ColorRange, 5);
336 Osd->
DrawEllipse(c - d, y0, c, y1 - 1, ColorMove, 7);
338 Osd->
DrawEllipse(t, y0, t + d, y1 - 1, ColorMove, 5);
347 int xc00,
xc01,
xc02,
xc03,
xc04,
xc05,
xc06,
xc07,
xc08,
xc09,
xc10,
xc11,
xc12,
xc13,
xc14,
xc15;
348 int yc00,
yc01,
yc02,
yc03,
yc04,
yc05,
yc06,
yc07,
yc08,
yc09,
yc10,
yc11,
yc12;
381 virtual void Flush(
void);
510 osd->DrawRectangle(
xc06, y0,
xc06 + Seen - 1, y1 - 1,
Theme.Color(clrSeen));
519 if (
DrawDeviceData(
osd, Device,
xc10,
yc11,
xc11,
yc12,
xs,
tinyFont,
lastDeviceType,
lastCamSlot, Device->
DeviceNumber() !=
lastDeviceNumber)) {
530 time_t Now = time(NULL);
547 if (Channel && !Channel->
GroupSep()) {
557 if (Channel->
Vpid()) {
561 else if (Channel->
Apid(0)) {
569 ChName = Channel->
Name();
596 for (
int i = 0; i < 2; i++) {
597 const cEvent *e = !i ? Present : Following;
614 int x0, x1, y0, y1, y2;
628 osd->SaveRegion(x0, y0, x1 - 1, y2 - 1);
635 osd->RestoreRegion();
665 time_t t = time(NULL);
684 int yc00,
yc01,
yc02,
yc03,
yc04,
yc05,
yc06,
yc07,
yc08,
yc09,
yc10,
yc11;
685 int yb00,
yb01,
yb02,
yb03,
yb04,
yb05,
yb06,
yb07,
yb08,
yb09,
yb10,
yb11,
yb12,
yb13,
yb14,
yb15;
688 int xs00,
xs01,
xs02,
xs03,
xs04,
xs05,
xs06,
xs07,
xs08,
xs09,
xs10,
xs11,
xs12,
xs13;
692 int xb00,
xb01,
xb02,
xb03,
xb04,
xb05,
xb06,
xb07,
xb08,
xb09,
xb10,
xb11,
xb12,
xb13,
xb14,
xb15;
735 void DrawScrollbar(
int Total,
int Offset,
int Shown,
bool CanScrollUp,
bool CanScrollDown);
750 virtual void Scroll(
bool Up,
bool Page);
752 virtual void Clear(
void);
754 virtual void SetTitle(
const char *Title);
755 virtual void SetButtons(
const char *Red,
const char *Green = NULL,
const char *Yellow = NULL,
const char *Blue = NULL);
757 virtual void SetItem(
const char *Text,
int Index,
bool Current,
bool Selectable);
761 virtual void SetText(
const char *Text,
bool FixedFont);
764 virtual void Flush(
void);
1032 osd->DrawEllipse(x0, y0, x1 - 1, y1 - 1, ColorBg, 7);
1034 osd->DrawEllipse(x2, y0, x3 - 1, y1 - 1, ColorBg, 5);
1064 tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
1079 const char *t = strrchr(s,
' ');
1093 tColor ColorFg = DiskAlert ?
Theme.Color(clrAlertFg) :
Theme.Color(clrMenuFrameFg);
1098 osd->DrawText(
xa00,
yb03 -
lineHeight,
cString::sprintf(
"%02d:%02d",
cVideoDiskUsage::FreeMinutes() / 60,
cVideoDiskUsage::FreeMinutes() % 60), ColorFg, ColorBg, font,
xa02 -
xa00, 0,
taBottom |
taRight |
taBorder);
1112 if (getloadavg(&SystemLoad, 1) > 0) {
1178 ClearColor =
Theme.Color(clrMenuMainBracket);
1196 if (Total > 0 && Total > Shown) {
1198 int sh =
max(
int((tb - tt) *
double(Shown) / Total + 0.5), sw);
1199 int st =
min(
int(tt + (tb - tt) *
double(Offset) / Total + 0.5), tb - sh);
1200 int sb =
min(st + sh, tb);
1201 osd->DrawRectangle(x0, tt, x1 - 1, tb - 1,
Theme.Color(clrMenuScrollbarTotal));
1202 osd->DrawRectangle(x0, st, x1 - 1, sb - 1,
Theme.Color(clrMenuScrollbarShown));
1205 osd->DrawRectangle(x0, tt, x1 - 1, tb - 1, ClearColor);
1212 tColor ColorFg = Alert ?
Theme.Color(clrAlertFg) :
Theme.Color(clrTimerFg);
1213 tColor ColorBg = Alert ?
Theme.Color(clrAlertBg) :
Theme.Color(clrTimerBg);
1219 time_t Now = time(NULL);
1226 else if (strcmp(Day, Today) != 0)
1266 for (
int i = 0; i < SortedTimers.
Size(); i++) {
1269 if (
const cTimer *Timer = SortedTimers[i]) {
1270 if (Timer->IsPatternTimer())
1271 SortedTimers[i] = NULL;
1272 else if (Timer->Recording()) {
1273 if (Timer->Remote()) {
1274 if (!Device && Timer->HasFlags(
tfActive)) {
1276 FreeDeviceSlots.
Append(y);
1283 if (!Device || Device == RecordControl->Device()) {
1287 Device = RecordControl->Device();
1293 FreeDeviceSlots.
Append(y);
1299 SortedTimers[i] = NULL;
1301 else if (!Device && Timer->HasFlags(
tfActive)) {
1303 FreeDeviceSlots.
Append(y);
1305 SortedTimers[i] = NULL;
1316 if (Device->NumProvidedSystems()) {
1318 if (Slot < FreeDeviceSlots.
Size()) {
1319 y = FreeDeviceSlots[Slot];
1333 for (
const cTimer *Timer = Timers->First(); Timer; Timer = Timers->
Next(Timer)) {
1350 if (
DrawDeviceData(
osd, Device,
xs08, y,
xs11, y +
lineHeight,
xs,
tinyFont,
lastDeviceType[dn],
lastCamSlot[dn],
initial)) {
1366 if (Device->NumProvidedSystems())
1377 if (!Device->
Replaying() || Transferring)
1389 int b = w * w + h * h;
1394 double f = sqrt(
double(c) / (2 * b));
1409 time_t Now = time(NULL);
1413 if (Device->NumProvidedSystems()) {
1446 if (
const cSchedule *Schedule = Schedules->GetSchedule(Channel)) {
1447 const cEvent *Event = Schedule->GetPresentEvent();
1456 time_t t = time(NULL);
1525 osd->DrawRectangle(
xm02, y0,
xm02 + Seen - 1, y1 - 1,
Theme.Color(clrSeen));
1569 const char *lutText[] = { Red, Green, Yellow, Blue };
1570 tColor lutFg[] = { clrButtonRedFg, clrButtonGreenFg, clrButtonYellowFg, clrButtonBlueFg };
1571 tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
1595 osd->RestoreRegion();
1605 ColorBg =
Theme.Color(clrMenuFrameBg);
1608 ColorFg =
Theme.Color(clrMenuItemCurrentFg);
1609 ColorBg =
Theme.Color(clrMenuItemCurrentBg);
1617 ColorFg =
Theme.Color(Selectable ? clrMenuItemSelectable : clrMenuItemNonSelectable);
1623 for (
int i = 0; i <
MaxTabs; i++) {
1627 osd->DrawText(xt, y, s, ColorFg, ColorBg, font,
xi01 - xt);
1653 int w = font->
Width(buffer);
1655 int yb = y + font->
Height();
1663 int w = font->
Width(buffer);
1665 int yb = y + font->
Height();
1702 int w = font->
Width(buffer);
1706 if (Info->
Errors() > 0) {
1710 int w = font->
Width(buffer);
1716 int yb = y + font->
Height();
1721 const char *Title = Info->
Title();
1723 Title = Recording->
Name();
1791 int xp00,
xp01,
xp02,
xp03,
xp04,
xp05,
xp06,
xp07,
xp08,
xp09,
xp10,
xp11,
xp12,
xp13,
xp14,
xp15;
1806 virtual void SetTitle(
const char *Title);
1807 virtual void SetMode(
bool Play,
bool Forward,
int Speed);
1810 virtual void SetTotal(
const char *Total);
1811 virtual void SetJump(
const char *Jump);
1813 virtual void Flush(
void);
1919 { { pause_xpm, srew_xpm, srew1_xpm, srew2_xpm, srew3_xpm },
1920 { pause_xpm, sfwd_xpm, sfwd1_xpm, sfwd2_xpm, sfwd3_xpm }, },
1921 { { play_xpm, frew_xpm, frew1_xpm, frew2_xpm, frew3_xpm },
1922 { play_xpm, ffwd_xpm, ffwd1_xpm, ffwd2_xpm, ffwd3_xpm } }
1934 cProgressBar pb(
xp13 -
xp03,
lineHeight,
Current, Total,
marks,
errors,
Theme.Color(clrReplayProgressSeen),
Theme.Color(clrReplayProgressRest),
Theme.Color(clrReplayProgressSelected),
Theme.Color(clrReplayProgressMark),
Theme.Color(clrReplayProgressCurrent),
Theme.Color(clrReplayProgressError));
1949 int w = font->
Width(Total);
1966 osd->RestoreRegion();
1991 virtual void Flush(
void);
1997 int lineHeight = font->
Height();
2001 x1 = lineHeight / 2;
2005 x6 =
x7 - lineHeight / 2;
2006 x5 =
x6 - lineHeight / 2;
2036 cBitmap bm(Mute ? mute_xpm : volume_xpm);
2040 int w = (
y1 -
y0) / 3;
2042 int n = (xr - xl + d) / (w + d);
2043 int x = xr - n * (w + d);
2045 for (
int i = 0; i < n; i++) {
2047 Color =
Theme.Color(clrVolumeBarUpper);
2048 osd->DrawRectangle(x, yt, x + w - 1, yb - 1, Color);
2064 int xt00,
xt01,
xt02,
xt03,
xt04,
xt05,
xt06,
xt07,
xt08,
xt09,
xt10,
xt11,
xt12;
2074 virtual void SetTrack(
int Index,
const char *
const *Tracks);
2076 virtual void Flush(
void);
2094 for (
int i = 0; i < NumTracks; i++)
2133 for (
int i = 0; i < NumTracks; i++)
2160 ColorFg =
Theme.Color(clrTrackItemCurrentFg);
2161 ColorBg =
Theme.Color(clrTrackItemCurrentBg);
2163 osd->DrawRectangle(
xt02, y0,
xt04 - 1, y1 - 1, ColorBg);
2169 ColorFg =
Theme.Color(clrTrackItemFg);
2170 ColorBg =
Theme.Color(clrTrackItemBg);
2172 osd->DrawRectangle(
xt02, y0,
xt04 - 1, y1 - 1, ColorBg);
2184 SetItem(Tracks[Index], Index,
true);
2190 switch (AudioChannel) {
2218 virtual void Flush(
void);
2224 int lineHeight = font->
Height();
2226 x1 = lineHeight / 2;
2230 x6 =
x7 - lineHeight / 2;
2231 x5 =
x6 - lineHeight / 2;
2245 tColor ColorFg =
Theme.Color(clrMessageStatusFg + 2 * Type);
2246 tColor ColorBg =
Theme.Color(clrMessageStatusBg + 2 * Type);
2249 osd->DrawEllipse (
x0,
y0,
x1 - 1,
y1 - 1, ColorBg, 7);
2250 osd->DrawRectangle(
x1,
y0,
x2 - 1,
y1 - 1, ColorBg);
2252 osd->DrawRectangle(
x5,
y0,
x6 - 1,
y1 - 1, ColorBg);
2254 osd->DrawEllipse (
x6,
y0,
x7 - 1,
y1 - 1, ColorBg, 5);
cString ChannelString(const cChannel *Channel, int Number)
#define LOCK_CHANNELS_READ
int MasterSlotNumber(void)
Returns the number of this CAM's master slot within the whole system.
const char * Name(void) const
bool GroupSep(void) const
int Ca(int Index=0) const
static cControl * Control(cMutexLock &MutexLock, bool Hidden=false)
Returns the current replay control (if any) in case it is currently visible.
virtual cString GetHeader(void)
This can be used by players that don't play a cRecording, but rather do something completely differen...
bool GetIndex(int &Current, int &Total, bool SnapToIFrame=false) const
virtual const cRecording * GetRecording(void)
Returns the cRecording that is currently being replayed, or NULL if this player is not playing a cRec...
bool Replaying(void) const
Returns true if we are currently replaying.
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.
static cDevice * GetDevice(int Index)
Gets the device with the given Index.
eTrackType GetCurrentAudioTrack(void) const
int DeviceNumber(void) const
Returns the number of this device (0 ... numDevices - 1).
bool Transferring(void) const
Returns true if we are currently in Transfer Mode.
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 tTrackId * GetTrack(eTrackType Type)
Returns a pointer to the given track id, or NULL if Type is not less than ttMaxTrackTypes.
virtual cString DeviceType(void) const
Returns a string identifying the type of this device (like "DVB-S").
static int NumDevices(void)
Returns the total number of devices.
cCamSlot * CamSlot(void) const
Returns the CAM slot that is currently used with this device, or NULL if no CAM slot is in use.
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...
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.
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().
cListObject * Next(void) const
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 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...
void SetAntiAliasGranularity(uint FixedColors, uint BlendColors)
Allows the system to optimize utilization of the limited color palette entries when generating blende...
virtual eOsdError CanHandleAreas(const tArea *Areas, int NumAreas)
Checks whether the OSD can display the given set of sub-areas.
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 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.
A steerable satellite dish generally points to the south on the northern hemisphere,...
static int NormalizeAngle(int Angle)
Normalizes the given Angle into the range -1800...1800.
virtual int CurrentLongitude(void) const
Returns the longitude the dish currently points to.
int HardLimitLongitude(ePositionerDirection Direction) const
Returns the longitude of the positioner's hard limit in the given Direction.
static int HorizonLongitude(ePositionerDirection Direction)
Returns the longitude of the satellite position that is just at the horizon when looking in the given...
int TargetLongitude(void) const
Returns the longitude the dish is supposed to be moved to.
static cRecordControl * GetRecordControl(const char *FileName)
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 bmTeletext
virtual void SetChannel(const cChannel *Channel, int Number)
Sets the current channel to Channel.
virtual void SetPositioner(const cPositioner *Positioner)
Sets the Positioner used to move the satellite dish.
virtual void SetEvents(const cEvent *Present, const cEvent *Following)
Sets the Present and Following EPG events.
virtual void Flush(void)
Actually draws the OSD display to the output device.
void DrawSeen(int Current, int Total)
static cBitmap bmEncrypted
virtual ~cSkinLCARSDisplayChannel()
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
static cBitmap bmRecording
cSkinLCARSDisplayChannel(bool WithInfo)
static cBitmap bmDolbyDigital
virtual ~cSkinLCARSDisplayMessage()
virtual void Flush(void)
Actually draws the OSD display to the output device.
cSkinLCARSDisplayMessage(void)
virtual void SetMessage(eMessageType Type, const char *Text)
< This class implements a simple message display.
virtual void Flush(void)
Actually draws the OSD display to the output device.
virtual void SetCurrent(const char *Current)
Sets the current position within the recording, as a user readable string in the form "h:mm:ss....
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
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...
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...
cSkinLCARSDisplayReplay(bool ModeOnly)
virtual void SetRecording(const cRecording *Recording)
Sets the recording that is currently being played.
virtual void SetTotal(const char *Total)
Sets the total length of the recording, as a user readable string in the form "h:mm:ss".
virtual void SetTitle(const char *Title)
Sets the title of the recording.
virtual void SetJump(const char *Jump)
Sets the prompt that allows the user to enter a jump point.
virtual ~cSkinLCARSDisplayReplay()
static cBitmap bmAudioLeft
static cBitmap bmAudioRight
cSkinLCARSDisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
static cBitmap bmAudioStereo
virtual void SetAudioChannel(int AudioChannel)
Sets the audio channel indicator.
void SetItem(const char *Text, int Index, bool Current)
virtual void Flush(void)
Actually draws the OSD display to the output device.
virtual ~cSkinLCARSDisplayTracks()
virtual void SetTrack(int Index, const char *const *Tracks)
< This class implements the track display.
cSkinLCARSDisplayVolume(void)
virtual void Flush(void)
Actually draws the OSD display to the output device.
virtual ~cSkinLCARSDisplayVolume()
virtual void SetVolume(int Current, int Total, bool Mute)
< This class implements the volume/mute display.
virtual cSkinDisplayMenu * DisplayMenu(void)
Creates and returns a new object for displaying a menu.
virtual cSkinDisplayMessage * DisplayMessage(void)
Creates and returns a new object for displaying a message.
virtual cSkinDisplayVolume * DisplayVolume(void)
Creates and returns a new object for displaying the current volume.
virtual cSkinDisplayTracks * DisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
Creates and returns a new object for displaying the available tracks.
virtual const char * Description(void)
Returns a user visible, single line description of this skin, which may consist of arbitrary text and...
virtual cSkinDisplayReplay * DisplayReplay(bool ModeOnly)
Creates and returns a new object for displaying replay progress.
virtual cSkinDisplayChannel * DisplayChannel(bool WithInfo)
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 ToString(int Code)
static cString sprintf(const char *fmt,...) __attribute__((format(printf
cString & Append(const char *String)
cString & Truncate(int Index)
Truncate the string at the given Index (if Index is < 0 it is counted from the end of the string).
void Set(cOsd *Osd, int Left, int Top, int Width, int Height, const char *Text, const cFont *Font, tColor ColorFg, tColor ColorBg)
bool Recording(void) const
time_t StopTimeEvent(void) const
or by the user (for normal timers)
const cEvent * Event(void) const
const cChannel * Channel(void) const
time_t StartTimeEvent(void) const
the start/stop times as given by the event (for VPS timers), by event plus margins (for spawned non-V...
const char * Remote(void) const
static const cTimers * GetTimersRead(cStateKey &StateKey, int TimeoutMs=0)
Gets the list of timers for read access.
virtual void Append(T Data)
static int FreeMinutes(void)
Returns the number of minutes that can still be recorded on the video disk.
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 int UsedPercent(void)
Returns the used space of the video disk in percent.
#define LOCK_SCHEDULES_READ
tColor RgbShade(tColor Color, double Factor)
Returns a brighter (Factor > 0) or darker (Factor < 0) version of the given Color.
static const cCursesFont Font
static const char *const * ReplaySymbols[2][2][5]
static cFont * CreateTinyFont(int LineHeight)
static bool DrawDeviceData(cOsd *Osd, const cDevice *Device, int x0, int y0, int x1, int y1, int &xs, const cFont *TinyFont, cString &LastDeviceType, cCamSlot *&LastCamSlot, bool Initial)
static void DrawDevicePosition(cOsd *Osd, const cPositioner *Positioner, int x0, int y0, int x1, int y1, int &LastCurrent)
static cOsd * CreateOsd(int Left, int Top, int x0, int y0, int x1, int y1)
#define CLR_CHANNEL_FRAME
static void DrawDeviceSignal(cOsd *Osd, const cDevice *Device, int x0, int y0, int x1, int y1, int &LastSignalStrength, int &LastSignalQuality, bool Initial)
#define DISKUSAGEALERTLIMIT
#define SIGNALDISPLAYDELTA
#define CLR_EVENT_SHORTTEXT
#define THEME_CLR(Theme, Subject, Color)