vdr  2.4.1
skinsttng.c
Go to the documentation of this file.
1 /*
2  * skinsttng.c: A VDR skin with ST:TNG Panels
3  *
4  * See the main source file 'vdr.c' for copyright information and
5  * how to reach the author.
6  *
7  * $Id: skinsttng.c 4.1 2016/12/22 14:07:22 kls Exp $
8  */
9 
10 // "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures
11 // registered in the United States Patent and Trademark Office.
12 // No infringement intended.
13 
14 #include "skinsttng.h"
15 #include "font.h"
16 #include "osd.h"
17 #include "menu.h"
18 #include "themes.h"
19 #include "videodir.h"
20 
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"
52 
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)
59 
60 static cTheme Theme;
61 
63 THEME_CLR(Theme, clrButtonRedFg, clrWhite);
64 THEME_CLR(Theme, clrButtonRedBg, clrRed);
65 THEME_CLR(Theme, clrButtonGreenFg, clrBlack);
66 THEME_CLR(Theme, clrButtonGreenBg, clrGreen);
67 THEME_CLR(Theme, clrButtonYellowFg, clrBlack);
68 THEME_CLR(Theme, clrButtonYellowBg, clrYellow);
69 THEME_CLR(Theme, clrButtonBlueFg, clrWhite);
70 THEME_CLR(Theme, clrButtonBlueBg, clrBlue);
71 THEME_CLR(Theme, clrMessageFrame, clrYellow);
72 THEME_CLR(Theme, clrMessageStatusFg, clrBlack);
73 THEME_CLR(Theme, clrMessageStatusBg, clrCyan);
74 THEME_CLR(Theme, clrMessageInfoFg, clrBlack);
75 THEME_CLR(Theme, clrMessageInfoBg, clrGreen);
76 THEME_CLR(Theme, clrMessageWarningFg, clrBlack);
77 THEME_CLR(Theme, clrMessageWarningBg, clrYellow);
78 THEME_CLR(Theme, clrMessageErrorFg, clrWhite);
79 THEME_CLR(Theme, clrMessageErrorBg, clrRed);
80 THEME_CLR(Theme, clrVolumeFrame, clrYellow);
81 THEME_CLR(Theme, clrVolumeSymbol, clrBlack);
82 THEME_CLR(Theme, clrVolumeBarUpper, 0xFFBC8024);
83 THEME_CLR(Theme, clrVolumeBarLower, 0xFF248024);
84 THEME_CLR(Theme, clrChannelFrame, clrYellow);
85 THEME_CLR(Theme, clrChannelName, clrBlack);
86 THEME_CLR(Theme, clrChannelDate, clrBlack);
87 THEME_CLR(Theme, clrChannelSymbolOn, clrBlack);
88 THEME_CLR(Theme, clrChannelSymbolOff, 0xFFBC8024);
89 THEME_CLR(Theme, clrChannelSymbolRecFg, clrWhite);
90 THEME_CLR(Theme, clrChannelSymbolRecBg, clrRed);
91 THEME_CLR(Theme, clrChannelEpgTime, clrBlack);
92 THEME_CLR(Theme, clrChannelEpgTitle, clrCyan);
93 THEME_CLR(Theme, clrChannelEpgShortText, clrYellow);
94 THEME_CLR(Theme, clrChannelTimebarSeen, clrYellow);
95 THEME_CLR(Theme, clrChannelTimebarRest, clrGray50);
96 THEME_CLR(Theme, clrChannelSignalValue, clrGreen);
97 THEME_CLR(Theme, clrChannelSignalRest, clrRed);
98 THEME_CLR(Theme, clrMenuFrame, clrYellow);
99 THEME_CLR(Theme, clrMenuTitle, clrBlack);
100 THEME_CLR(Theme, clrMenuDate, clrBlack);
101 THEME_CLR(Theme, clrMenuItemCurrentFg, clrBlack);
102 THEME_CLR(Theme, clrMenuItemCurrentBg, clrYellow);
103 THEME_CLR(Theme, clrMenuItemSelectable, clrYellow);
104 THEME_CLR(Theme, clrMenuItemNonSelectable, clrCyan);
105 THEME_CLR(Theme, clrMenuEventTime, clrYellow);
106 THEME_CLR(Theme, clrMenuEventVps, clrBlack);
107 THEME_CLR(Theme, clrMenuEventTitle, clrCyan);
108 THEME_CLR(Theme, clrMenuEventShortText, clrYellow);
109 THEME_CLR(Theme, clrMenuEventDescription, clrCyan);
110 THEME_CLR(Theme, clrMenuScrollbarTotal, clrYellow);
111 THEME_CLR(Theme, clrMenuScrollbarShown, clrCyan);
112 THEME_CLR(Theme, clrMenuScrollbarArrow, clrBlack);
113 THEME_CLR(Theme, clrMenuText, clrCyan);
114 THEME_CLR(Theme, clrReplayFrame, clrYellow);
115 THEME_CLR(Theme, clrReplayTitle, clrBlack);
116 THEME_CLR(Theme, clrReplayMode, clrBlack);
117 THEME_CLR(Theme, clrReplayCurrent, clrBlack);
118 THEME_CLR(Theme, clrReplayTotal, clrBlack);
119 THEME_CLR(Theme, clrReplayJump, clrBlack);
120 THEME_CLR(Theme, clrReplayProgressSeen, clrGreen);
121 THEME_CLR(Theme, clrReplayProgressRest, clrWhite);
122 THEME_CLR(Theme, clrReplayProgressSelected, clrRed);
123 THEME_CLR(Theme, clrReplayProgressMark, clrBlack);
124 THEME_CLR(Theme, clrReplayProgressCurrent, clrRed);
125 
126 // --- cSkinSTTNGDisplayChannel ----------------------------------------------
127 
129 private:
131  int x0, x1, x2, x3, x4, x5, x6, x7;
132  int y0, y1, y2, y3, y4, y5, y6, y7;
133  bool withInfo;
136  bool message;
137  const cEvent *present;
139  int lastSeen;
146 public:
147  cSkinSTTNGDisplayChannel(bool WithInfo);
148  virtual ~cSkinSTTNGDisplayChannel();
149  virtual void SetChannel(const cChannel *Channel, int Number);
150  virtual void SetEvents(const cEvent *Present, const cEvent *Following);
151  virtual void SetMessage(eMessageType Type, const char *Text);
152  virtual void Flush(void);
153  };
154 
161 
163 {
164  present = NULL;
165  lastSeen = -1;
166  lastDeviceNumber = -1;
167  lastSignalStrength = -1;
168  lastSignalQuality = -1;
169  lastSignalDisplay = 0;
170  memset(&lastTrackId, 0, sizeof(lastTrackId));
171  const cFont *font = cFont::GetFont(fontOsd);
172  withInfo = WithInfo;
173  lineHeight = font->Height();
174  frameColor = Theme.Color(clrChannelFrame);
175  message = false;
176  if (withInfo) {
177  x0 = 0;
178  x1 = x0 + font->Width("00:00") + 2 * TextFrame;
179  x2 = x1 + Roundness;
180  x3 = x2 + Gap;
181  x7 = cOsd::OsdWidth();
182  x6 = x7 - lineHeight / 2;
183  x5 = x6 - lineHeight / 2;
184  x4 = x5 - Gap;
185  y0 = 0;
186  y1 = lineHeight;
187  y2 = y1 + Roundness;
188  y3 = y2 + Gap;
189  y4 = y3 + 4 * lineHeight;
190  y5 = y4 + Gap;
191  y6 = y5 + Roundness;
192  y7 = y6 + cFont::GetFont(fontSml)->Height();
193  int yt = (y0 + y1) / 2;
194  int yb = (y6 + y7) / 2;
196  tArea Areas[] = { { 0, 0, x7 - 1, y7 - 1, 32 } }; // TrueColor
197  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
198  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
199  else {
200  tArea Areas[] = { { 0, 0, x7 - 1, y7 - 1, 8 } }; // 256 colors
201  if (Setup.AntiAlias && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
202  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
203  else {
204  tArea Areas[] = { { 0, 0, x7 - 1, y7 - 1, 4 } }; // 16 colors
205  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
206  }
207  }
209  osd->DrawRectangle(x0, y0, x1 - 1, y1 - 1, clrTransparent);
210  osd->DrawRectangle(x0, y6, x1 - 1, y7 - 1, clrTransparent);
211  osd->DrawRectangle(x6, y0, x7 - 1, yt - 1, clrTransparent);
212  osd->DrawRectangle(x6, yb, x7 - 1, y7 - 1, clrTransparent);
213  osd->DrawEllipse (x0, y0, x1 - 1, y1 - 1, frameColor, 2);
214  osd->DrawRectangle(x1, y0, x4 - 1, y1 - 1, frameColor);
215  osd->DrawRectangle(x5, y0, x6 - 1, y1 - 1, frameColor);
216  osd->DrawEllipse (x6, y0, x7 - 1, y1 - 1, frameColor, 5);
217  osd->DrawRectangle(x0, y1, x1 - 1, y2 - 1, frameColor);
218  osd->DrawEllipse (x1, y1, x2 - 1, y2 - 1, frameColor, -2);
219  osd->DrawRectangle(x0, y3, x1 - 1, y4 - 1, frameColor);
220  osd->DrawRectangle(x0, y5, x1 - 1, y6 - 1, frameColor);
221  osd->DrawEllipse (x1, y5, x2 - 1, y6 - 1, frameColor, -3);
222  osd->DrawEllipse (x0, y6, x1 - 1, y7 - 1, frameColor, 3);
223  osd->DrawRectangle(x1, y6, x4 - 1, y7 - 1, frameColor);
224  osd->DrawRectangle(x5, y6, x6 - 1, y7 - 1, frameColor);
225  osd->DrawEllipse (x6, y6, x7 - 1, y7 - 1, frameColor, 5);
226  }
227  else {
228  x0 = 0;
229  x1 = lineHeight / 2;
230  x2 = lineHeight;
231  x3 = x2 + Gap;
232  x7 = cOsd::OsdWidth();
233  x6 = x7 - lineHeight / 2;
234  x5 = x6 - lineHeight / 2;
235  x4 = x5 - Gap;
236  y0 = 0;
237  y1 = lineHeight;
239  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 32 } }; // TrueColor
240  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
241  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
242  else {
243  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 8 } }; // 256 colors
244  if (Setup.AntiAlias && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
245  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
246  else {
247  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 4 } }; // 16 colors
248  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
249  }
250  }
251  osd->DrawRectangle(x0, y0, x7 - 1, y1 - 1, clrTransparent);
252  osd->DrawEllipse (x0, y0, x1 - 1, y1 - 1, frameColor, 7);
253  osd->DrawRectangle(x1, y0, x2 - 1, y1 - 1, frameColor);
254  osd->DrawRectangle(x5, y0, x6 - 1, y1 - 1, frameColor);
255  osd->DrawEllipse (x6, y0, x7 - 1, y1 - 1, frameColor, 5);
256  }
257 }
258 
260 {
261  delete osd;
262 }
263 
264 void cSkinSTTNGDisplayChannel::SetChannel(const cChannel *Channel, int Number)
265 {
266  osd->DrawRectangle(x3, y0, x4 - 1, y1 - 1, frameColor);
267  int x = x4 - SymbolSpacing;
268  if (Channel && !Channel->GroupSep()) {
269  bool rec = cRecordControls::Active();
271  osd->DrawBitmap(x, y0 + (y1 - y0 - bmRecording.Height()) / 2, bmRecording, Theme.Color(rec ? clrChannelSymbolRecFg : clrChannelSymbolOff), rec ? Theme.Color(clrChannelSymbolRecBg) : frameColor);
273  osd->DrawBitmap(x, y0 + (y1 - y0 - bmEncrypted.Height()) / 2, bmEncrypted, Theme.Color(Channel->Ca() ? clrChannelSymbolOn : clrChannelSymbolOff), frameColor);
275  osd->DrawBitmap(x, y0 + (y1 - y0 - bmDolbyDigital.Height()) / 2, bmDolbyDigital, Theme.Color(Channel->Dpid(0) ? clrChannelSymbolOn : clrChannelSymbolOff), frameColor);
276  x -= bmAudio.Width() + SymbolSpacing;
277  osd->DrawBitmap(x, y0 + (y1 - y0 - bmAudio.Height()) / 2, bmAudio, Theme.Color(Channel->Apid(1) ? clrChannelSymbolOn : clrChannelSymbolOff), frameColor);
278  if (Channel->Vpid()) {
279  x -= bmTeletext.Width() + SymbolSpacing;
280  osd->DrawBitmap(x, y0 + (y1 - y0 - bmTeletext.Height()) / 2, bmTeletext, Theme.Color(Channel->Tpid() ? clrChannelSymbolOn : clrChannelSymbolOff), frameColor);
281  }
282  else if (Channel->Apid(0)) {
283  x -= bmRadio.Width() + SymbolSpacing;
284  osd->DrawBitmap(x, y0 + (y1 - y0 - bmRadio.Height()) / 2, bmRadio, Theme.Color(clrChannelSymbolOn), frameColor);
285  }
286  }
287  osd->DrawText(x3 + TextFrame, y0, ChannelString(Channel, Number), Theme.Color(clrChannelName), frameColor, cFont::GetFont(fontOsd), x - x3 - TextFrame);
288  lastSignalDisplay = 0;
289 }
290 
291 void cSkinSTTNGDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following)
292 {
293  if (!withInfo)
294  return;
295  if (present != Present)
296  lastSeen = -1;
297  present = Present;
298  osd->DrawRectangle(x0, y3, x1 - 1, y4 - 1, frameColor);
300  for (int i = 0; i < 2; i++) {
301  const cEvent *e = !i ? Present : Following;
302  if (e) {
303  osd->DrawText(x0 + TextFrame, y3 + 2 * i * lineHeight, e->GetTimeString(), Theme.Color(clrChannelEpgTime), frameColor, cFont::GetFont(fontOsd));
304  osd->DrawText(x3 + TextFrame, y3 + 2 * i * lineHeight, e->Title(), Theme.Color(clrChannelEpgTitle), Theme.Color(clrBackground), cFont::GetFont(fontOsd), x4 - x3 - TextFrame);
305  osd->DrawText(x3 + TextFrame, y3 + (2 * i + 1) * lineHeight, e->ShortText(), Theme.Color(clrChannelEpgShortText), Theme.Color(clrBackground), cFont::GetFont(fontSml), x4 - x3 - TextFrame);
306  }
307  }
308 }
309 
311 {
312  const cFont *font = cFont::GetFont(withInfo ? fontSml : fontOsd);
313  if (Text) {
314  int yt = withInfo ? y6 : y0;
315  int yb = withInfo ? y7 : y1;
316  osd->SaveRegion(x2, yt, x4 - 1, yb - 1);
317  if (withInfo)
318  osd->DrawRectangle(x2, yt, x3 - 1, yb - 1, Theme.Color(clrBackground));
319  osd->DrawText(x3, yt, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x4 - x3, 0, taCenter);
320  message = true;
321  }
322  else {
323  osd->RestoreRegion();
324  message = false;
325  }
326 }
327 
329 {
330  if (withInfo) {
331  if (!message) {
332  const cFont *font = cFont::GetFont(fontSml);
333  cString date = DayDateTime();
334  int w = font->Width(date);
335  if (!*lastDate || strcmp(date, lastDate)) {
336  osd->DrawText(x4 - w - TextFrame, y7 - font->Height(), date, Theme.Color(clrChannelDate), frameColor, font, w);
337  lastDate = date;
338  }
339  cDevice *Device = cDevice::PrimaryDevice();
340  const tTrackId *Track = Device->GetTrack(Device->GetCurrentAudioTrack());
341  if (Track ? strcmp(lastTrackId.description, Track->description) : *lastTrackId.description) {
342  osd->DrawText(x3 + TextFrame, y6, Track ? Track->description : "", Theme.Color(clrChannelName), frameColor, font, x4 - x3 - w - 2 * TextFrame);
343  strn0cpy(lastTrackId.description, Track ? Track->description : "", sizeof(lastTrackId.description));
344  }
345  int DeviceNumber = cDevice::ActualDevice()->DeviceNumber() + 1;
346  if (DeviceNumber != lastDeviceNumber || time(NULL) != lastSignalDisplay) {
347  int SignalStrength = cDevice::ActualDevice()->SignalStrength();
348  int SignalQuality = cDevice::ActualDevice()->SignalQuality();
349  if (DeviceNumber != lastDeviceNumber || SignalStrength != lastSignalStrength || SignalQuality != lastSignalQuality) {
350  int d = 3;
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;
356  osd->DrawRectangle(x, y6 + d, x + s - 1, y6 + d + h - 1, Theme.Color(clrChannelSignalValue));
357  osd->DrawRectangle(x + s, y6 + d, x + w - 1, y6 + d + h - 1, Theme.Color(clrChannelSignalRest));
358  }
359  else if (DeviceNumber != lastDeviceNumber)
360  osd->DrawRectangle(x, y6 + d, x + w - 1, y6 + d + h - 1, Theme.Color(clrChannelFrame));
361  if (SignalQuality >= 0) {
362  int q = SignalQuality * w / 100;
363  osd->DrawRectangle(x, y7 - d - h + 1, x + q - 1, y7 - d, Theme.Color(clrChannelSignalValue));
364  osd->DrawRectangle(x + q, y7 - d - h + 1, x + w - 1, y7 - d, Theme.Color(clrChannelSignalRest));
365  }
366  else if (DeviceNumber != lastDeviceNumber)
367  osd->DrawRectangle(x, y7 - d - h + 1, x + w - 1, y7 - d, Theme.Color(clrChannelFrame));
368  cString dn = cString::sprintf(" %d ", DeviceNumber);
369  const cFont *font = cFont::GetFont(fontSml);
370  int dw = font->Width(dn);
371  osd->DrawText(x - 2 * d - dw, y6, dn, Theme.Color(clrChannelDate), frameColor, font, dw);
372  lastDeviceNumber = DeviceNumber;
373  lastSignalStrength = SignalStrength;
374  lastSignalQuality = SignalQuality;
375  }
376  lastSignalDisplay = time(NULL);
377  }
378  }
379  int seen = 0;
380  if (present) {
381  time_t t = time(NULL);
382  if (t > present->StartTime())
383  seen = min(y4 - y3 - 1, int((y4 - y3) * double(t - present->StartTime()) / present->Duration()));
384  }
385  if (seen != lastSeen) {
386  osd->DrawRectangle(x1 + Gap, y3, x1 + Gap + ScrollWidth - 1, y4 - 1, Theme.Color(clrChannelTimebarRest));
387  if (seen)
388  osd->DrawRectangle(x1 + Gap, y3, x1 + Gap + ScrollWidth - 1, y3 + seen, Theme.Color(clrChannelTimebarSeen));
389  lastSeen = seen;
390  }
391  }
392  osd->Flush();
393 }
394 
395 // --- cSkinSTTNGDisplayMenu -------------------------------------------------
396 
398 private:
400  int x0, x1, x2, x3, x4, x5, x6, x7;
401  int y0, y1, y2, y3, y4, y5, y6, y7;
406  bool message;
409  void DrawTitle(void);
410  void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown);
411  void SetTextScrollbar(void);
412 public:
413  cSkinSTTNGDisplayMenu(void);
414  virtual ~cSkinSTTNGDisplayMenu();
415  virtual void Scroll(bool Up, bool Page);
416  virtual int MaxItems(void);
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);
420  virtual void SetMessage(eMessageType Type, const char *Text);
421  virtual void SetItem(const char *Text, int Index, bool Current, bool Selectable);
422  virtual void SetScrollbar(int Total, int Offset);
423  virtual void SetEvent(const cEvent *Event);
424  virtual void SetRecording(const cRecording *Recording);
425  virtual void SetText(const char *Text, bool FixedFont);
426  virtual int GetTextAreaWidth(void) const;
427  virtual const cFont *GetTextAreaFont(bool FixedFont) const;
428  virtual void Flush(void);
429  };
430 
432 {
433  const cFont *font = cFont::GetFont(fontOsd);
434  lineHeight = font->Height();
435  frameColor = Theme.Color(clrMenuFrame);
436  lastDiskUsageState = -1;
437  currentIndex = -1;
438  message = false;
439  x0 = 0;
440  x1 = lineHeight / 2;
441  x3 = (x1 + Roundness + Gap + 7) & ~0x07; // must be multiple of 8
442  x2 = x3 - Gap;
443  x7 = cOsd::OsdWidth();
444  x6 = x7 - lineHeight / 2;
445  x4 = (x6 - lineHeight / 2 - Gap) & ~0x07; // must be multiple of 8
446  x5 = x4 + Gap;
447  y0 = 0;
448  y1 = lineHeight;
449  y2 = y1 + Roundness;
450  y3 = y2 + Gap;
451  y7 = cOsd::OsdHeight();
452  y6 = y7 - cFont::GetFont(fontSml)->Height();
453  y5 = y6 - Roundness;
454  y4 = y5 - Gap;
455  int yt = (y0 + y1) / 2;
456  int yb = (y6 + y7) / 2;
458  tArea Areas[] = { { x0, y0, x7 - 1, y7 - 1, 32 } }; // TrueColor
459  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
460  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
461  else {
462  tArea Areas[] = { { x0, y0, x7 - 1, y7 - 1, 8 } }; // 256 colors
463  if (Setup.AntiAlias && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
464  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
465  else {
466  tArea Areas[] = { { x0, y0, x7 - 1, y7 - 1, 4 } }; // 16 colors
467  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
468  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
469  else {
470  tArea Areas[] = { { x0, y0, x7 - 1, y3 - 1, 2 }, // 2..16 colors
471  { x0, y3, x3 - 1, y4 - 1, 1 },
472  { x3, y3, x4 - 1, y4 - 1, 2 },
473  { x4, y3, x7 - 1, y4 - 1, 2 },
474  { x0, y4, x7 - 1, y7 - 1, 4 }
475  };
476  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
477  }
478  }
479  }
481  osd->DrawRectangle(x0, y0, x1 - 1, y1 - 1, clrTransparent);
482  osd->DrawRectangle(x0, y6, x1 - 1, y7 - 1, clrTransparent);
483  osd->DrawRectangle(x6, y0, x7 - 1, yt - 1, clrTransparent);
484  osd->DrawRectangle(x6, yb, x7 - 1, y7 - 1, clrTransparent);
485  osd->DrawEllipse (x0, y0, x1 - 1, y1 - 1, frameColor, 2);
486  osd->DrawRectangle(x1, y0, x2 - 1, y1 - 1, frameColor);
487  osd->DrawRectangle(x3, y0, x4 - 1, y1 - 1, frameColor);
488  osd->DrawRectangle(x5, y0, x6 - 1, y1 - 1, frameColor);
489  osd->DrawEllipse (x6, y0, x7 - 1, y1 - 1, frameColor, 5);
490  osd->DrawRectangle(x0, y1, x1 - 1, y6 - 1, frameColor);
491  osd->DrawEllipse (x1, y1, x2 - 1, y2 - 1, frameColor, -2);
492  osd->DrawEllipse (x1, y5, x2 - 1, y6 - 1, frameColor, -3);
493  osd->DrawEllipse (x0, y6, x1 - 1, y7 - 1, frameColor, 3);
494  osd->DrawRectangle(x1, y6, x2 - 1, y7 - 1, frameColor);
495  osd->DrawRectangle(x3, y6, x4 - 1, y7 - 1, frameColor);
496  osd->DrawRectangle(x5, y6, x6 - 1, y7 - 1, frameColor);
497  osd->DrawEllipse (x6, y6, x7 - 1, y7 - 1, frameColor, 5);
498 }
499 
501 {
502  delete osd;
503 }
504 
505 void cSkinSTTNGDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown)
506 {
507  if (Total > 0 && Total > Shown) {
508  int h = lineHeight;
509  int yt = Top;
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);
516  osd->DrawRectangle(x5, st, x5 + ScrollWidth - 1, sb - 1, Theme.Color(clrMenuScrollbarTotal));
517  osd->DrawRectangle(x5, tt, x5 + ScrollWidth - 1, tb - 1, Theme.Color(clrMenuScrollbarShown));
518  osd->DrawRectangle(x5, yt, x6 - 1, yt + h - 1, frameColor);
519  osd->DrawEllipse (x6, yt, x7 - 1, yt + h - 1, frameColor, 5);
520  osd->DrawRectangle(x5, yb - h, x6 - 1, yb - 1, frameColor);
521  osd->DrawEllipse (x6, yb - h, x7 - 1, yb - 1, frameColor, 5);
522  if (CanScrollUp) {
523  cBitmap bm(arrowup_xpm);
524  osd->DrawBitmap(x5 + (x7 - x5 - bm.Width()) / 2 - 2, yt + (h - bm.Height()) / 2, bm, Theme.Color(clrMenuScrollbarArrow), frameColor);
525  }
526  if (CanScrollDown) {
527  cBitmap bm(arrowdown_xpm);
528  osd->DrawBitmap(x5 + (x7 - x5 - bm.Width()) / 2 - 2, yb - h + (h - bm.Height()) / 2, bm, Theme.Color(clrMenuScrollbarArrow), frameColor);
529  }
530  }
531 }
532 
534 {
535  if (textScroller.CanScroll())
537 }
538 
539 void cSkinSTTNGDisplayMenu::Scroll(bool Up, bool Page)
540 {
541  cSkinDisplayMenu::Scroll(Up, Page);
543 }
544 
546 {
547  return (y4 - y3 - 2 * Roundness) / lineHeight;
548 }
549 
551 {
554 }
555 
557 {
558  const cFont *font = cFont::GetFont(fontOsd);
559  const char *VDR = " VDR";
560  bool WithDisk = MenuCategory() == mcMain || MenuCategory() == mcRecording;
561  int w = font->Width(VDR);
562  osd->DrawText(x3 + TextSpacing, y0, WithDisk ? cString::sprintf("%s - %s", *title, *cVideoDiskUsage::String()) : title, Theme.Color(clrMenuTitle), frameColor, font, x4 - w - x3 - TextSpacing);
563  osd->DrawText(x4 - w, y0, VDR, frameColor, clrBlack, font, w, lineHeight);
564 }
565 
566 void cSkinSTTNGDisplayMenu::SetTitle(const char *Title)
567 {
568  title = Title;
569  DrawTitle();
570 }
571 
572 void cSkinSTTNGDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
573 {
574  const char *lutText[] = { Red, Green, Yellow, Blue };
575  tColor lutFg[] = { clrButtonRedFg, clrButtonGreenFg, clrButtonYellowFg, clrButtonBlueFg };
576  tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
577  cString date = DayDateTime();
578  const cFont *font = cFont::GetFont(fontSml);
579  int d = 2 * Gap;
580  int d2 = d / 2;
581  int t4 = x4 - font->Width(date) - TextFrame;
582  int w = t4 - x3;
583  int t0 = x3 + d2;
584  int t1 = x3 + w / 4;
585  int t2 = x3 + w / 2;
586  int t3 = t4 - w / 4;
587  osd->DrawRectangle(t0 + d2, y6, t1 - d2, y7 - 1, clrBlack);
588  osd->DrawRectangle(t1 + d2, y6, t2 - d2, y7 - 1, clrBlack);
589  osd->DrawRectangle(t2 + d2, y6, t3 - d2, y7 - 1, clrBlack);
590  osd->DrawRectangle(t3 + d2, y6, t4 - d2, y7 - 1, clrBlack);
591  osd->DrawText(t0 + d, y6, lutText[Setup.ColorKey0], Theme.Color(lutFg[Setup.ColorKey0]), Theme.Color(lutBg[Setup.ColorKey0]), font, t1 - t0 - 2 * d, 0, taCenter);
592  osd->DrawText(t1 + d, y6, lutText[Setup.ColorKey1], Theme.Color(lutFg[Setup.ColorKey1]), Theme.Color(lutBg[Setup.ColorKey1]), font, t2 - t1 - 2 * d, 0, taCenter);
593  osd->DrawText(t2 + d, y6, lutText[Setup.ColorKey2], Theme.Color(lutFg[Setup.ColorKey2]), Theme.Color(lutBg[Setup.ColorKey2]), font, t3 - t2 - 2 * d, 0, taCenter);
594  osd->DrawText(t3 + d, y6, lutText[Setup.ColorKey3], Theme.Color(lutFg[Setup.ColorKey3]), Theme.Color(lutBg[Setup.ColorKey3]), font, t4 - t3 - 2 * d, 0, taCenter);
595 }
596 
598 {
599  const cFont *font = cFont::GetFont(fontSml);
600  if (Text) {
601  osd->SaveRegion(x3, y6, x4 - 1, y7 - 1);
602  osd->DrawText(x3, y6, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x4 - x3, 0, taCenter);
603  message = true;
604  }
605  else {
606  osd->RestoreRegion();
607  message = false;
608  }
609 }
610 
611 void cSkinSTTNGDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool Selectable)
612 {
613  int y = y3 + Roundness + Index * lineHeight;
614  tColor ColorFg, ColorBg;
615  if (Current) {
616  ColorFg = Theme.Color(clrMenuItemCurrentFg);
617  ColorBg = Theme.Color(clrMenuItemCurrentBg);
618  osd->DrawEllipse (x1, y - Roundness, x2 - 1, y - 1, frameColor, -3);
619  osd->DrawRectangle(x1, y, x2 - 1, y + lineHeight - 1, frameColor);
620  osd->DrawEllipse (x1, y + lineHeight, x2 - 1, y + lineHeight + Roundness - 1, frameColor, -2);
621  osd->DrawRectangle(x3, y, x4 - 1, y + lineHeight - 1, ColorBg);
622  currentIndex = Index;
623  }
624  else {
625  ColorFg = Theme.Color(Selectable ? clrMenuItemSelectable : clrMenuItemNonSelectable);
626  ColorBg = Theme.Color(clrBackground);
627  if (currentIndex == Index) {
629  osd->DrawRectangle(x3, y, x4 - 1, y + lineHeight - 1, Theme.Color(clrBackground));
630  }
631  }
632  const cFont *font = cFont::GetFont(fontOsd);
633  for (int i = 0; i < MaxTabs; i++) {
634  const char *s = GetTabbedText(Text, i);
635  if (s) {
636  int xt = x3 + TextSpacing + Tab(i);
637  osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x4 - xt);
638  }
639  if (!Tab(i + 1))
640  break;
641  }
642  SetEditableWidth(x4 - x3 - TextSpacing - Tab(1));
643 }
644 
645 void cSkinSTTNGDisplayMenu::SetScrollbar(int Total, int Offset)
646 {
647  DrawScrollbar(Total, Offset, MaxItems(), y3 + Roundness, MaxItems() * lineHeight, Offset > 0, Offset + MaxItems() < Total);
648 }
649 
651 {
652  if (!Event)
653  return;
654  const cFont *font = cFont::GetFont(fontOsd);
655  int xl = x3 + TextSpacing;
656  int y = y3;
657  cTextScroller ts;
658  cString t = cString::sprintf("%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString());
659  ts.Set(osd, xl, y, x4 - xl, y4 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground));
660  if (Event->Vps() && Event->Vps() != Event->StartTime()) {
661  cString buffer = cString::sprintf(" VPS: %s ", *Event->GetVpsString());
662  const cFont *font = cFont::GetFont(fontSml);
663  int w = font->Width(buffer);
664  osd->DrawText(x4 - w, y, buffer, Theme.Color(clrMenuEventVps), frameColor, font, w);
665  int yb = y + font->Height();
666  osd->DrawRectangle(x5, y, x6 - 1, yb - 1, frameColor);
667  osd->DrawEllipse (x6, y, x7 - 1, yb - 1, frameColor, 5);
668  }
669  y += ts.Height();
670  if (Event->ParentalRating()) {
671  cString buffer = cString::sprintf(" %s ", *Event->GetParentalRatingString());
672  const cFont *font = cFont::GetFont(fontSml);
673  int w = font->Width(buffer);
674  osd->DrawText(x4 - w, y, buffer, Theme.Color(clrMenuEventVps), frameColor, font, w);
675  int yb = y + font->Height();
676  osd->DrawRectangle(x5, y, x6 - 1, yb - 1, frameColor);
677  osd->DrawEllipse (x6, y, x7 - 1, yb - 1, frameColor, 5);
678  }
679  y += font->Height();
680  ts.Set(osd, xl, y, x4 - xl, y4 - y, Event->Title(), font, Theme.Color(clrMenuEventTitle), Theme.Color(clrBackground));
681  y += ts.Height();
682  if (!isempty(Event->ShortText())) {
683  const cFont *font = cFont::GetFont(fontSml);
684  ts.Set(osd, xl, y, x4 - xl, y4 - y, Event->ShortText(), font, Theme.Color(clrMenuEventShortText), Theme.Color(clrBackground));
685  y += ts.Height();
686  }
687  y += font->Height();
688  if (!isempty(Event->Description())) {
689  int yt = y;
690  int yb = y4 - Roundness;
691  textScroller.Set(osd, xl, yt, x4 - xl, yb - yt, Event->Description(), font, Theme.Color(clrMenuEventDescription), Theme.Color(clrBackground));
692  yb = yt + textScroller.Height();
693  osd->DrawEllipse (x1, yt - Roundness, x2, yt, frameColor, -3);
694  osd->DrawRectangle(x1, yt, x2, yb, frameColor);
695  osd->DrawEllipse (x1, yb, x2, yb + Roundness, frameColor, -2);
697  }
698 }
699 
701 {
702  if (!Recording)
703  return;
704  const cRecordingInfo *Info = Recording->Info();
705  const cFont *font = cFont::GetFont(fontOsd);
706  int xl = x3 + TextSpacing;
707  int y = y3;
708  cTextScroller ts;
709  cString t = cString::sprintf("%s %s %s", *DateString(Recording->Start()), *TimeString(Recording->Start()), Info->ChannelName() ? Info->ChannelName() : "");
710  ts.Set(osd, xl, y, x4 - xl, y4 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground));
711  y += ts.Height();
712  if (Info->GetEvent()->ParentalRating()) {
713  cString buffer = cString::sprintf(" %s ", *Info->GetEvent()->GetParentalRatingString());
714  const cFont *font = cFont::GetFont(fontSml);
715  int w = font->Width(buffer);
716  osd->DrawText(x4 - w, y, buffer, Theme.Color(clrMenuEventVps), frameColor, font, w);
717  int yb = y + font->Height();
718  osd->DrawRectangle(x5, y, x6 - 1, yb - 1, frameColor);
719  osd->DrawEllipse (x6, y, x7 - 1, yb - 1, frameColor, 5);
720  }
721  y += font->Height();
722  const char *Title = Info->Title();
723  if (isempty(Title))
724  Title = Recording->Name();
725  ts.Set(osd, xl, y, x4 - xl, y4 - y, Title, font, Theme.Color(clrMenuEventTitle), Theme.Color(clrBackground));
726  y += ts.Height();
727  if (!isempty(Info->ShortText())) {
728  const cFont *font = cFont::GetFont(fontSml);
729  ts.Set(osd, xl, y, x4 - xl, y4 - y, Info->ShortText(), font, Theme.Color(clrMenuEventShortText), Theme.Color(clrBackground));
730  y += ts.Height();
731  }
732  y += font->Height();
733  if (!isempty(Info->Description())) {
734  int yt = y;
735  int yb = y4 - Roundness;
736  textScroller.Set(osd, xl, yt, x4 - xl, yb - yt, Info->Description(), font, Theme.Color(clrMenuEventDescription), Theme.Color(clrBackground));
737  yb = yt + textScroller.Height();
738  osd->DrawEllipse (x1, yt - Roundness, x2, yt, frameColor, -3);
739  osd->DrawRectangle(x1, yt, x2, yb, frameColor);
740  osd->DrawEllipse (x1, yb, x2, yb + Roundness, frameColor, -2);
742  }
743 }
744 
745 void cSkinSTTNGDisplayMenu::SetText(const char *Text, bool FixedFont)
746 {
747  textScroller.Set(osd, x3, y3, GetTextAreaWidth(), y4 - y3, Text, GetTextAreaFont(FixedFont), Theme.Color(clrMenuText), Theme.Color(clrBackground));
749 }
750 
752 {
753  return x4 - x3;
754 }
755 
756 const cFont *cSkinSTTNGDisplayMenu::GetTextAreaFont(bool FixedFont) const
757 {
758  const cFont *font = cFont::GetFont(FixedFont ? fontFix : fontOsd);
759  //XXX -> make a way to let the text define which font to use
760  return font;
761 }
762 
764 {
766  DrawTitle();
767  if (!message) {
768  cString date = DayDateTime();
769  if (!*lastDate || strcmp(date, lastDate)) {
770  const cFont *font = cFont::GetFont(fontSml);
771  int w = font->Width(date);
772  osd->DrawText(x4 - w - TextFrame, y7 - font->Height(), date, Theme.Color(clrMenuDate), frameColor, font, w);
773  lastDate = date;
774  }
775  }
776  osd->Flush();
777 }
778 
779 // --- cSkinSTTNGDisplayReplay -----------------------------------------------
780 
782 private:
784  int x0, x1, x2, x3, x4, x5, x6, x7;
785  int y0, y1, y2, y3, y4, y5, y6, y7;
788 public:
789  cSkinSTTNGDisplayReplay(bool ModeOnly);
790  virtual ~cSkinSTTNGDisplayReplay();
791  virtual void SetTitle(const char *Title);
792  virtual void SetMode(bool Play, bool Forward, int Speed);
793  virtual void SetProgress(int Current, int Total);
794  virtual void SetCurrent(const char *Current);
795  virtual void SetTotal(const char *Total);
796  virtual void SetJump(const char *Jump);
797  virtual void SetMessage(eMessageType Type, const char *Text);
798  virtual void Flush(void);
799  };
800 
802 {
803  const cFont *font = cFont::GetFont(fontSml);
804  int lineHeight = font->Height();
805  frameColor = Theme.Color(clrReplayFrame);
806  lastCurrentWidth = 0;
807  cBitmap bm(play_xpm);
808  x0 = 0;
809  x1 = max(lineHeight * 2, bm.Width());
810  x2 = x1 + Roundness;
811  x3 = x2 + Gap;
812  x7 = cOsd::OsdWidth();
813  x6 = x7 - lineHeight / 2;
814  x5 = x6 - lineHeight / 2;
815  x4 = x5 - Gap;
816  y0 = 0;
817  y1 = lineHeight;
818  y2 = y1 + Roundness;
819  y3 = y2 + Gap;
820  y4 = y3 + max(lineHeight, bm.Height());
821  y5 = y4 + Gap;
822  y6 = y5 + Roundness;
823  y7 = y6 + font->Height();
824  int yt = (y0 + y1) / 2;
825  int yb = (y6 + y7) / 2;
827  tArea Areas[] = { { 0, 0, x7 - 1, y7 - 1, 32 } }; // TrueColor
828  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
829  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
830  else {
831  tArea Areas[] = { { 0, 0, x7 - 1, y7 - 1, 8 } }; // 256 colors
832  if (Setup.AntiAlias && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
833  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
834  else {
835  tArea Areas[] = { { 0, 0, x7 - 1, y7 - 1, 4 } }; // 16 colors
836  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
837  }
838  }
839  osd->DrawRectangle(x0, y0, x7 - 1, y7 - 1, ModeOnly ? clrTransparent : Theme.Color(clrBackground));
840  if (!ModeOnly) {
841  osd->DrawRectangle(x0, y0, x1 - 1, y1 - 1, clrTransparent);
842  osd->DrawRectangle(x0, y6, x1 - 1, y7 - 1, clrTransparent);
843  osd->DrawRectangle(x6, y0, x7 - 1, yt - 1, clrTransparent);
844  osd->DrawRectangle(x6, yb, x7 - 1, y7 - 1, clrTransparent);
845  osd->DrawEllipse (x0, y0, x1 - 1, y1 - 1, frameColor, 2);
846  osd->DrawRectangle(x1, y0, x4 - 1, y1 - 1, frameColor);
847  osd->DrawRectangle(x5, y0, x6 - 1, y1 - 1, frameColor);
848  osd->DrawEllipse (x6, y0, x7 - 1, y1 - 1, frameColor, 5);
849  osd->DrawRectangle(x0, y1, x1 - 1, y2 - 1, frameColor);
850  osd->DrawEllipse (x1, y1, x2 - 1, y2 - 1, frameColor, -2);
851  }
852  osd->DrawRectangle(x0, y3, x1 - 1, y4 - 1, frameColor);
853  if (!ModeOnly) {
854  osd->DrawRectangle(x0, y5, x1 - 1, y6 - 1, frameColor);
855  osd->DrawEllipse (x1, y5, x2 - 1, y6 - 1, frameColor, -3);
856  osd->DrawEllipse (x0, y6, x1 - 1, y7 - 1, frameColor, 3);
857  osd->DrawRectangle(x1, y6, x4 - 1, y7 - 1, frameColor);
858  osd->DrawRectangle(x5, y6, x6 - 1, y7 - 1, frameColor);
859  osd->DrawEllipse (x6, y6, x7 - 1, y7 - 1, frameColor, 5);
860  }
861 }
862 
864 {
865  delete osd;
866 }
867 
868 void cSkinSTTNGDisplayReplay::SetTitle(const char *Title)
869 {
870  osd->DrawText(x3 + TextSpacing, y0, Title, Theme.Color(clrReplayTitle), frameColor, cFont::GetFont(fontSml), x4 - x3 - TextSpacing);
871 }
872 
873 static const char *const *ReplaySymbols[2][2][5] = {
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 } }
878  };
879 
880 void cSkinSTTNGDisplayReplay::SetMode(bool Play, bool Forward, int Speed)
881 {
882  Speed = constrain(Speed, -1, 3);
883  cBitmap bm(ReplaySymbols[Play][Forward][Speed + 1]);
884  osd->DrawBitmap(x0 + (x1 - x0 - bm.Width()) / 2, y3 + (y4 - y3 - bm.Height()) / 2, bm, Theme.Color(clrReplayMode), frameColor);
885 }
886 
887 void cSkinSTTNGDisplayReplay::SetProgress(int Current, int Total)
888 {
889  cProgressBar pb(x4 - x3, y4 - y3, Current, Total, marks, Theme.Color(clrReplayProgressSeen), Theme.Color(clrReplayProgressRest), Theme.Color(clrReplayProgressSelected), Theme.Color(clrReplayProgressMark), Theme.Color(clrReplayProgressCurrent));
890  osd->DrawBitmap(x3, y3, pb);
891 }
892 
893 void cSkinSTTNGDisplayReplay::SetCurrent(const char *Current)
894 {
895  const cFont *font = cFont::GetFont(fontSml);
896  int w = font->Width(Current);
897  osd->DrawText(x3, y6, Current, Theme.Color(clrReplayCurrent), frameColor, font, lastCurrentWidth > w ? lastCurrentWidth : w);
898  lastCurrentWidth = w;
899 }
900 
901 void cSkinSTTNGDisplayReplay::SetTotal(const char *Total)
902 {
903  const cFont *font = cFont::GetFont(fontSml);
904  int w = font->Width(Total);
905  osd->DrawText(x4 - w - TextSpacing, y6, Total, Theme.Color(clrReplayTotal), frameColor, font, w);
906 }
907 
908 void cSkinSTTNGDisplayReplay::SetJump(const char *Jump)
909 {
910  osd->DrawText(x0 + (x4 - x0) / 4, y6, Jump, Theme.Color(clrReplayJump), frameColor, cFont::GetFont(fontSml), (x4 - x3) / 2, 0, taCenter);
911 }
912 
914 {
915  const cFont *font = cFont::GetFont(fontSml);
916  if (Text) {
917  osd->SaveRegion(x2, y6, x4 - 1, y7 - 1);
919  osd->DrawText(x3, y6, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x4 - x3, 0, taCenter);
920  }
921  else
922  osd->RestoreRegion();
923 }
924 
926 {
927  osd->Flush();
928 }
929 
930 // --- cSkinSTTNGDisplayVolume -----------------------------------------------
931 
933 private:
935  int x0, x1, x2, x3, x4, x5, x6, x7;
936  int y0, y1;
938  int mute;
939 public:
941  virtual ~cSkinSTTNGDisplayVolume();
942  virtual void SetVolume(int Current, int Total, bool Mute);
943  virtual void Flush(void);
944  };
945 
947 {
948  const cFont *font = cFont::GetFont(fontOsd);
949  int lineHeight = font->Height();
950  frameColor = Theme.Color(clrVolumeFrame);
951  mute = -1;
952  x0 = 0;
953  x1 = lineHeight / 2;
954  x2 = lineHeight;
955  x3 = x2 + Gap;
956  x7 = cOsd::OsdWidth();
957  x6 = x7 - lineHeight / 2;
958  x5 = x6 - lineHeight / 2;
959  x4 = x5 - Gap;
960  y0 = 0;
961  y1 = lineHeight;
963  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 32 } }; // TrueColor
964  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
965  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
966  else {
967  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 8 } }; // 256 colors
968  if (Setup.AntiAlias && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
969  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
970  else {
971  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 4 } }; // 16 colors
972  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
973  }
974  }
975  osd->DrawRectangle(x0, y0, x7 - 1, y1 - 1, clrTransparent);
976  osd->DrawEllipse (x0, y0, x1 - 1, y1 - 1, frameColor, 7);
977  osd->DrawRectangle(x1, y0, x2 - 1, y1 - 1, frameColor);
978  osd->DrawRectangle(x3, y0, x4 - 1, y1 - 1, frameColor);
979  osd->DrawRectangle(x5, y0, x6 - 1, y1 - 1, frameColor);
980  osd->DrawEllipse (x6, y0, x7 - 1, y1 - 1, frameColor, 5);
981 }
982 
984 {
985  delete osd;
986 }
987 
988 void cSkinSTTNGDisplayVolume::SetVolume(int Current, int Total, bool Mute)
989 {
990  int xl = x3 + TextSpacing;
991  int xr = x4 - TextSpacing;
992  int yt = y0 + TextFrame;
993  int yb = y1 - TextFrame;
994  if (mute != Mute) {
995  osd->DrawRectangle(x3, y0, x4 - 1, y1 - 1, frameColor);
996  mute = Mute;
997  }
998  cBitmap bm(Mute ? mute_xpm : volume_xpm);
999  osd->DrawBitmap(xl, y0 + (y1 - y0 - bm.Height()) / 2, bm, Theme.Color(clrVolumeSymbol), frameColor);
1000  if (!Mute) {
1001  xl += bm.Width() + TextSpacing;
1002  int w = (y1 - y0) / 3;
1003  int d = TextFrame;
1004  int n = (xr - xl + d) / (w + d);
1005  int x = xr - n * (w + d);
1006  tColor Color = Theme.Color(clrVolumeBarLower);
1007  for (int i = 0; i < n; i++) {
1008  if (Total * i >= Current * n)
1009  Color = Theme.Color(clrVolumeBarUpper);
1010  osd->DrawRectangle(x, yt, x + w - 1, yb - 1, Color);
1011  x += w + d;
1012  }
1013  }
1014 }
1015 
1017 {
1018  osd->Flush();
1019 }
1020 
1021 // --- cSkinSTTNGDisplayTracks -----------------------------------------------
1022 
1024 private:
1026  int x0, x1, x2, x3, x4, x5, x6, x7;
1027  int y0, y1, y2, y3, y4, y5, y6, y7;
1032  void SetItem(const char *Text, int Index, bool Current);
1033 public:
1034  cSkinSTTNGDisplayTracks(const char *Title, int NumTracks, const char * const *Tracks);
1035  virtual ~cSkinSTTNGDisplayTracks();
1036  virtual void SetTrack(int Index, const char * const *Tracks);
1037  virtual void SetAudioChannel(int AudioChannel);
1038  virtual void Flush(void);
1039  };
1040 
1044 
1045 cSkinSTTNGDisplayTracks::cSkinSTTNGDisplayTracks(const char *Title, int NumTracks, const char * const *Tracks)
1046 {
1047  const cFont *font = cFont::GetFont(fontOsd);
1048  lineHeight = font->Height();
1049  frameColor = Theme.Color(clrMenuFrame);
1050  currentIndex = -1;
1051  int ItemsWidth = font->Width(Title);
1052  for (int i = 0; i < NumTracks; i++)
1053  ItemsWidth = max(ItemsWidth, font->Width(Tracks[i]));
1054  ItemsWidth += 2 * TextSpacing;
1055  x0 = 0;
1056  x1 = lineHeight / 2;
1057  x3 = (x1 + Roundness + Gap + 7) & ~0x07; // must be multiple of 8
1058  x2 = x3 - Gap;
1059  x7 = cOsd::OsdWidth();
1060  x6 = x7 - lineHeight / 2;
1061  x4 = (x6 - lineHeight / 2 - Gap) & ~0x07; // must be multiple of 8
1062  x5 = x4 + Gap;
1063  int d = x4 - x3;
1064  if (d > ItemsWidth) {
1065  d = (d - ItemsWidth) & ~0x07; // must be multiple of 8
1066  x4 -= d;
1067  x5 -= d;
1068  x6 -= d;
1069  x7 -= d;
1070  }
1071  y0 = 0;
1072  y1 = lineHeight;
1073  y2 = y1 + Roundness;
1074  y3 = y2 + Gap;
1075  // limit to cOsd::OsdHeight()? - what if height is too big???
1076  y4 = y3 + NumTracks * lineHeight + 2 * Roundness;
1077  y5 = y4 + Gap;
1078  y6 = y5 + Roundness;
1079  y7 = y6 + cFont::GetFont(fontSml)->Height();
1080  int yt = (y0 + y1) / 2;
1081  int yb = (y6 + y7) / 2;
1083  tArea Areas[] = { { x0, y0, x7 - 1, y7 - 1, 32 } }; // TrueColor
1084  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
1085  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
1086  else {
1087  tArea Areas[] = { { x0, y0, x7 - 1, y7 - 1, 8 } }; // 256 colors
1088  if (Setup.AntiAlias && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
1089  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
1090  else {
1091  tArea Areas[] = { { x0, y0, x7 - 1, y7 - 1, 4 } }; // 16 colors
1092  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
1093  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
1094  else {
1095  tArea Areas[] = { { x0, y0, x7 - 1, y3 - 1, 2 }, // 2..16 colors
1096  { x0, y3, x3 - 1, y4 - 1, 1 },
1097  { x3, y3, x4 - 1, y4 - 1, 2 },
1098  { x4, y3, x7 - 1, y4 - 1, 2 },
1099  { x0, y4, x7 - 1, y7 - 1, 4 }
1100  };
1101  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
1102  }
1103  }
1104  }
1105  osd->DrawRectangle(x0, y0, x7 - 1, y7 - 1, Theme.Color(clrBackground));
1106  osd->DrawRectangle(x0, y0, x1 - 1, y1 - 1, clrTransparent);
1107  osd->DrawRectangle(x0, y6, x1 - 1, y7 - 1, clrTransparent);
1108  osd->DrawRectangle(x6, y0, x7 - 1, yt - 1, clrTransparent);
1109  osd->DrawRectangle(x6, yb, x7 - 1, y7 - 1, clrTransparent);
1110  osd->DrawEllipse (x0, y0, x1 - 1, y1 - 1, frameColor, 2);
1111  osd->DrawRectangle(x1, y0, x2 - 1, y1 - 1, frameColor);
1112  osd->DrawRectangle(x3, y0, x4 - 1, y1 - 1, frameColor);
1113  osd->DrawRectangle(x5, y0, x6 - 1, y1 - 1, frameColor);
1114  osd->DrawEllipse (x6, y0, x7 - 1, y1 - 1, frameColor, 5);
1115  osd->DrawRectangle(x0, y1, x1 - 1, y6 - 1, frameColor);
1116  osd->DrawEllipse (x1, y1, x2 - 1, y2 - 1, frameColor, -2);
1117  osd->DrawEllipse (x1, y5, x2 - 1, y6 - 1, frameColor, -3);
1118  osd->DrawEllipse (x0, y6, x1 - 1, y7 - 1, frameColor, 3);
1119  osd->DrawRectangle(x1, y6, x2 - 1, y7 - 1, frameColor);
1120  osd->DrawRectangle(x3, y6, x4 - 1, y7 - 1, frameColor);
1121  osd->DrawRectangle(x5, y6, x6 - 1, y7 - 1, frameColor);
1122  osd->DrawEllipse (x6, y6, x7 - 1, y7 - 1, frameColor, 5);
1123  osd->DrawText(x3 + TextSpacing, y0, Title, Theme.Color(clrMenuTitle), frameColor, font, x4 - x3 - TextSpacing);
1124  for (int i = 0; i < NumTracks; i++)
1125  SetItem(Tracks[i], i, false);
1126 }
1127 
1129 {
1130  delete osd;
1131 }
1132 
1133 void cSkinSTTNGDisplayTracks::SetItem(const char *Text, int Index, bool Current)
1134 {
1135  int y = y3 + Roundness + Index * lineHeight;
1136  tColor ColorFg, ColorBg;
1137  if (Current) {
1138  ColorFg = Theme.Color(clrMenuItemCurrentFg);
1139  ColorBg = Theme.Color(clrMenuItemCurrentBg);
1140  osd->DrawEllipse (x1, y - Roundness, x2 - 1, y - 1, frameColor, -3);
1141  osd->DrawRectangle(x1, y, x2 - 1, y + lineHeight - 1, frameColor);
1142  osd->DrawEllipse (x1, y + lineHeight, x2 - 1, y + lineHeight + Roundness - 1, frameColor, -2);
1143  osd->DrawRectangle(x3, y, x4 - 1, y + lineHeight - 1, ColorBg);
1144  currentIndex = Index;
1145  }
1146  else {
1147  ColorFg = Theme.Color(clrMenuItemSelectable);
1148  ColorBg = Theme.Color(clrBackground);
1149  if (currentIndex == Index) {
1151  osd->DrawRectangle(x3, y, x4 - 1, y + lineHeight - 1, Theme.Color(clrBackground));
1152  }
1153  }
1154  const cFont *font = cFont::GetFont(fontOsd);
1155  int xt = x3 + TextSpacing;
1156  osd->DrawText(xt, y, Text, ColorFg, ColorBg, font, x4 - xt);
1157 }
1158 
1159 void cSkinSTTNGDisplayTracks::SetTrack(int Index, const char * const *Tracks)
1160 {
1161  if (currentIndex >= 0)
1162  SetItem(Tracks[currentIndex], currentIndex, false);
1163  SetItem(Tracks[Index], Index, true);
1164 }
1165 
1167 {
1168  cBitmap *bm = NULL;
1169  switch (AudioChannel) {
1170  case 0: bm = &bmAudioStereo; break;
1171  case 1: bm = &bmAudioLeft; break;
1172  case 2: bm = &bmAudioRight; break;
1173  default: ;
1174  }
1175  if (bm)
1176  osd->DrawBitmap(x3 + TextSpacing, y6 + (y7 - y6 - bm->Height()) / 2, *bm, Theme.Color(clrChannelSymbolOn), frameColor);
1177  else
1178  osd->DrawRectangle(x3, y6, x4 - 1, y7 - 1, frameColor);
1179 }
1180 
1182 {
1183  osd->Flush();
1184 }
1185 
1186 // --- cSkinSTTNGDisplayMessage ----------------------------------------------
1187 
1189 private:
1191  int x0, x1, x2, x3, x4, x5, x6, x7;
1192  int y0, y1;
1193 public:
1195  virtual ~cSkinSTTNGDisplayMessage();
1196  virtual void SetMessage(eMessageType Type, const char *Text);
1197  virtual void Flush(void);
1198  };
1199 
1201 {
1202  const cFont *font = cFont::GetFont(fontOsd);
1203  int lineHeight = font->Height();
1204  tColor frameColor = Theme.Color(clrMessageFrame);
1205  x0 = 0;
1206  x1 = lineHeight / 2;
1207  x2 = lineHeight;
1208  x3 = x2 + Gap;
1209  x7 = cOsd::OsdWidth();
1210  x6 = x7 - lineHeight / 2;
1211  x5 = x6 - lineHeight / 2;
1212  x4 = x5 - Gap;
1213  y0 = 0;
1214  y1 = lineHeight;
1216  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 32 } }; // TrueColor
1217  if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
1218  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
1219  else {
1220  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 8 } }; // 256 colors
1221  if (Setup.AntiAlias && osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk)
1222  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
1223  else {
1224  tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 2 } }; // 4 colors
1225  osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
1226  }
1227  }
1228  osd->DrawRectangle(x0, y0, x7 - 1, y1 - 1, clrTransparent);
1229  osd->DrawEllipse (x0, y0, x1 - 1, y1 - 1, frameColor, 7);
1230  osd->DrawRectangle(x1, y0, x2 - 1, y1 - 1, frameColor);
1231  osd->DrawRectangle(x5, y0, x6 - 1, y1 - 1, frameColor);
1232  osd->DrawEllipse (x6, y0, x7 - 1, y1 - 1, frameColor, 5);
1233 }
1234 
1236 {
1237  delete osd;
1238 }
1239 
1241 {
1242  const cFont *font = cFont::GetFont(fontOsd);
1243  osd->DrawText(x3, y0, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x4 - x3, 0, taCenter);
1244 }
1245 
1247 {
1248  osd->Flush();
1249 }
1250 
1251 // --- cSkinSTTNG ------------------------------------------------------------
1252 
1254 :cSkin("sttng", &::Theme)//XXX naming problem???
1255 {
1256 }
1257 
1258 const char *cSkinSTTNG::Description(void)
1259 {
1260  return tr("ST:TNG Panels");
1261 }
1262 
1264 {
1265  return new cSkinSTTNGDisplayChannel(WithInfo);
1266 }
1267 
1269 {
1270  return new cSkinSTTNGDisplayMenu;
1271 }
1272 
1274 {
1275  return new cSkinSTTNGDisplayReplay(ModeOnly);
1276 }
1277 
1279 {
1280  return new cSkinSTTNGDisplayVolume;
1281 }
1282 
1283 cSkinDisplayTracks *cSkinSTTNG::DisplayTracks(const char *Title, int NumTracks, const char * const *Tracks)
1284 {
1285  return new cSkinSTTNGDisplayTracks(Title, NumTracks, Tracks);
1286 }
1287 
1289 {
1290  return new cSkinSTTNGDisplayMessage;
1291 }
cOsd::OsdWidth
static int OsdWidth(void)
Definition: osd.h:807
cSkinSTTNGDisplayMessage::osd
cOsd * osd
Definition: skinsttng.c:1190
cSkinSTTNGDisplayTracks::currentIndex
int currentIndex
Definition: skinsttng.c:1030
SymbolSpacing
#define SymbolSpacing
Definition: skinsttng.c:58
cSkinSTTNGDisplayChannel::x4
int x4
Definition: skinsttng.c:131
cSkinSTTNGDisplayMenu::lastDiskUsageState
int lastDiskUsageState
Definition: skinsttng.c:408
cSkinSTTNGDisplayMenu::y6
int y6
Definition: skinsttng.c:401
cOsdProvider::NewOsd
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.
Definition: osd.c:2017
cSkinSTTNGDisplayVolume::x7
int x7
Definition: skinsttng.c:935
cSkinSTTNGDisplayChannel::lastSignalDisplay
time_t lastSignalDisplay
Definition: skinsttng.c:143
cSkinSTTNGDisplayReplay::SetMessage
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
Definition: skinsttng.c:913
cString::sprintf
static cString sprintf(const char *fmt,...) __attribute__((format(printf
Definition: tools.c:1127
cEvent::ParentalRating
int ParentalRating(void) const
Definition: epg.h:108
tColor
uint32_t tColor
Definition: font.h:29
ChannelString
cString ChannelString(const cChannel *Channel, int Number)
Definition: channels.c:1147
cSkinDisplayChannel
Definition: skins.h:65
cSkinSTTNGDisplayChannel::withInfo
bool withInfo
Definition: skinsttng.c:133
cSkinSTTNGDisplayTracks::y4
int y4
Definition: skinsttng.c:1027
cSkinSTTNGDisplayMessage::Flush
virtual void Flush(void)
Definition: skinsttng.c:1246
cSkinSTTNGDisplayMessage
Definition: skinsttng.c:1188
cSkinSTTNGDisplayVolume::Flush
virtual void Flush(void)
Definition: skinsttng.c:1016
isempty
bool isempty(const char *s)
Definition: tools.c:331
cSkinDisplayMenu::GetTabbedText
const char * GetTabbedText(const char *s, int Tab)
Returns the part of the given string that follows the given Tab (where 0 indicates the beginning of t...
Definition: skins.c:112
cSkinSTTNGDisplayTracks::y2
int y2
Definition: skinsttng.c:1027
cSkinSTTNGDisplayChannel::bmTeletext
static cBitmap bmTeletext
Definition: skinsttng.c:145
cSetup::ColorKey3
int ColorKey3
Definition: config.h:315
oeOk
@ oeOk
Definition: osd.h:44
clrBackground
#define clrBackground
Definition: skincurses.c:36
mcMain
@ mcMain
Definition: skins.h:107
THEME_CLR
THEME_CLR(Theme, clrBackground, clrGray50)
cSkinSTTNGDisplayChannel::y6
int y6
Definition: skinsttng.c:132
cSkinSTTNGDisplayMessage::y1
int y1
Definition: skinsttng.c:1192
cSkin
Definition: skins.h:402
cSkinSTTNGDisplayChannel::lastDate
cString lastDate
Definition: skinsttng.c:138
clrGreen
@ clrGreen
Definition: osd.h:36
cTheme::Color
tColor Color(int Subject)
Returns the color for the given Subject.
Definition: themes.c:201
cSkinSTTNGDisplayReplay::y5
int y5
Definition: skinsttng.c:785
clrBlack
@ clrBlack
Definition: osd.h:34
cFont::GetFont
static const cFont * GetFont(eDvbFont Font)
Gets the given Font, which was previously set by a call to SetFont().
Definition: font.c:411
cSkinSTTNGDisplayMenu::lastDate
cString lastDate
Definition: skinsttng.c:407
cSkinSTTNG::DisplayTracks
virtual cSkinDisplayTracks * DisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
Creates and returns a new object for displaying the available tracks.
Definition: skinsttng.c:1283
cSkinSTTNGDisplayMenu::SetText
virtual void SetText(const char *Text, bool FixedFont)
Sets the Text that shall be displayed, using the entire central area of the menu.
Definition: skinsttng.c:745
cEvent::Duration
int Duration(void) const
Definition: epg.h:111
cSkinSTTNGDisplayReplay::SetProgress
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...
Definition: skinsttng.c:887
cRecordingInfo::Title
const char * Title(void) const
Definition: recording.h:85
cTextScroller::CanScrollUp
bool CanScrollUp(void)
Definition: osd.h:1057
cSkinSTTNGDisplayTracks::osd
cOsd * osd
Definition: skinsttng.c:1025
cSkinSTTNGDisplayMessage::x6
int x6
Definition: skinsttng.c:1191
menu.h
cRecording::Info
const cRecordingInfo * Info(void) const
Definition: recording.h:153
cChannel::Dpid
int Dpid(int i) const
Definition: channels.h:161
mcRecording
@ mcRecording
Definition: skins.h:115
cSkinSTTNGDisplayMessage::x7
int x7
Definition: skinsttng.c:1191
cSkinSTTNGDisplayMessage::y0
int y0
Definition: skinsttng.c:1192
cSkinSTTNGDisplayVolume::mute
int mute
Definition: skinsttng.c:938
cOsd::OsdTop
static int OsdTop(void)
Definition: osd.h:806
cSkinSTTNGDisplayChannel::frameColor
tColor frameColor
Definition: skinsttng.c:135
cSkinSTTNGDisplayMenu::x6
int x6
Definition: skinsttng.c:400
cOsd
The cOsd class is the interface to the "On Screen Display".
Definition: osd.h:724
cBitmap::Width
int Width(void) const
Definition: osd.h:188
cSkinSTTNGDisplayTracks::Flush
virtual void Flush(void)
Definition: skinsttng.c:1181
cSkinSTTNGDisplayReplay::y2
int y2
Definition: skinsttng.c:785
cSkinDisplayVolume
Definition: skins.h:374
cSkinSTTNGDisplayTracks::bmAudioStereo
static cBitmap bmAudioStereo
Definition: skinsttng.c:1031
constrain
T constrain(T v, T l, T h)
Definition: tools.h:68
cSkinSTTNGDisplayChannel::x3
int x3
Definition: skinsttng.c:131
cRecordControls::Active
static bool Active(void)
Definition: menu.c:5608
cSkinSTTNG::DisplayChannel
virtual cSkinDisplayChannel * DisplayChannel(bool WithInfo)
Creates and returns a new object for displaying the current channel.
Definition: skinsttng.c:1263
cSkinSTTNGDisplayVolume::x4
int x4
Definition: skinsttng.c:935
cDevice::GetCurrentAudioTrack
eTrackType GetCurrentAudioTrack(void) const
Definition: device.h:569
cSkinDisplayMenu::MaxTabs
@ MaxTabs
Definition: skins.h:168
cSkinSTTNG::DisplayReplay
virtual cSkinDisplayReplay * DisplayReplay(bool ModeOnly)
Creates and returns a new object for displaying replay progress.
Definition: skinsttng.c:1273
cRecordingInfo::Description
const char * Description(void) const
Definition: recording.h:87
osd.h
cSetup::AntiAlias
int AntiAlias
Definition: config.h:327
TextFrame
#define TextFrame
Definition: skinsttng.c:56
cSkinSTTNGDisplayTracks::bmAudioLeft
static cBitmap bmAudioLeft
Definition: skinsttng.c:1031
DateString
cString DateString(time_t t)
Converts the given time to a string of the form "www dd.mm.yyyy".
Definition: tools.c:1213
cSkinSTTNGDisplayReplay::x1
int x1
Definition: skinsttng.c:784
themes.h
cSkinSTTNGDisplayReplay::y0
int y0
Definition: skinsttng.c:785
cSkinSTTNGDisplayChannel::lastDeviceNumber
int lastDeviceNumber
Definition: skinsttng.c:140
tr
#define tr(s)
Definition: i18n.h:85
cSkinSTTNGDisplayReplay
Definition: skinsttng.c:781
cSkinSTTNGDisplayMenu::x1
int x1
Definition: skinsttng.c:400
cSkinSTTNGDisplayChannel::present
const cEvent * present
Definition: skinsttng.c:137
cEvent::Title
const char * Title(void) const
Definition: epg.h:103
cSkinSTTNGDisplayMenu::SetMessage
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
Definition: skinsttng.c:597
cVideoDiskUsage::HasChanged
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...
Definition: videodir.c:205
cSkinSTTNGDisplayVolume::~cSkinSTTNGDisplayVolume
virtual ~cSkinSTTNGDisplayVolume()
Definition: skinsttng.c:983
cSkinSTTNGDisplayTracks::bmAudioRight
static cBitmap bmAudioRight
Definition: skinsttng.c:1031
cTextScroller::CanScroll
bool CanScroll(void)
Definition: osd.h:1056
cSkinSTTNGDisplayChannel::SetMessage
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
Definition: skinsttng.c:310
cFont
Definition: font.h:37
cSkinSTTNGDisplayReplay::osd
cOsd * osd
Definition: skinsttng.c:783
cSkinSTTNGDisplayMessage::x3
int x3
Definition: skinsttng.c:1191
cSkinSTTNGDisplayMessage::SetMessage
virtual void SetMessage(eMessageType Type, const char *Text)
< This class implements a simple message display.
Definition: skinsttng.c:1240
cSkinSTTNGDisplayReplay::SetJump
virtual void SetJump(const char *Jump)
Sets the prompt that allows the user to enter a jump point.
Definition: skinsttng.c:908
cSkinSTTNGDisplayMenu::osd
cOsd * osd
Definition: skinsttng.c:399
tTrackId
Definition: device.h:80
cOsd::SaveRegion
virtual void SaveRegion(int x1, int y1, int x2, int y2)
Saves the region defined by the given coordinates for later restoration through RestoreRegion().
Definition: osd.c:1866
cEvent
Definition: epg.h:71
cTextScroller::Offset
int Offset(void)
Definition: osd.h:1054
clrWhite
@ clrWhite
Definition: osd.h:41
cSkinSTTNGDisplayMessage::~cSkinSTTNGDisplayMessage
virtual ~cSkinSTTNGDisplayMessage()
Definition: skinsttng.c:1235
cRecordingInfo::ShortText
const char * ShortText(void) const
Definition: recording.h:86
Setup
cSetup Setup
Definition: config.c:372
cSkinSTTNGDisplayTracks::~cSkinSTTNGDisplayTracks
virtual ~cSkinSTTNGDisplayTracks()
Definition: skinsttng.c:1128
cSkinSTTNGDisplayTracks::frameColor
tColor frameColor
Definition: skinsttng.c:1029
cTextScroller::Top
int Top(void)
Definition: osd.h:1050
cSkinSTTNGDisplayReplay::x2
int x2
Definition: skinsttng.c:784
TimeString
cString TimeString(time_t t)
Converts the given time to a string of the form "hh:mm".
Definition: tools.c:1233
cSkinSTTNGDisplayVolume
Definition: skinsttng.c:932
clrGray50
@ clrGray50
Definition: osd.h:33
cRecording::Start
time_t Start(void) const
Definition: recording.h:131
cSkinSTTNGDisplayChannel::bmDolbyDigital
static cBitmap bmDolbyDigital
Definition: skinsttng.c:145
fontFix
@ fontFix
Definition: font.h:23
cRecordingInfo
Definition: recording.h:63
cSkinSTTNGDisplayTracks::lineHeight
int lineHeight
Definition: skinsttng.c:1028
cSkinSTTNGDisplayMenu::GetTextAreaFont
virtual const cFont * GetTextAreaFont(bool FixedFont) const
Returns a pointer to the font which is used to display text with SetText().
Definition: skinsttng.c:756
cOsd::DrawEllipse
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...
Definition: osd.c:1973
cSkinSTTNGDisplayTracks::x1
int x1
Definition: skinsttng.c:1026
cSkinSTTNGDisplayMenu::cSkinSTTNGDisplayMenu
cSkinSTTNGDisplayMenu(void)
Definition: skinsttng.c:431
Roundness
#define Roundness
Definition: skinsttng.c:53
cSkinSTTNGDisplayChannel
Definition: skinsttng.c:128
cSkinSTTNGDisplayTracks::x4
int x4
Definition: skinsttng.c:1026
cSkinSTTNGDisplayReplay::y7
int y7
Definition: skinsttng.c:785
cSkinDisplayMessage
Definition: skins.h:394
cSkinSTTNGDisplayMenu::Flush
virtual void Flush(void)
Definition: skinsttng.c:763
cSkinSTTNGDisplayChannel::message
bool message
Definition: skinsttng.c:136
tTrackId::description
char description[32]
Definition: device.h:83
cSkinSTTNGDisplayMenu::Scroll
virtual void Scroll(bool Up, bool Page)
If this menu contains a text area that can be scrolled, this function will be called to actually scro...
Definition: skinsttng.c:539
cOsd::OsdHeight
static int OsdHeight(void)
Definition: osd.h:808
cOsd::RestoreRegion
virtual void RestoreRegion(void)
Restores the region previously saved by a call to SaveRegion().
Definition: osd.c:1882
cSkinSTTNGDisplayMenu::SetButtons
virtual void SetButtons(const char *Red, const char *Green=NULL, const char *Yellow=NULL, const char *Blue=NULL)
Sets the color buttons to the given strings.
Definition: skinsttng.c:572
cVideoDiskUsage::String
static cString String(void)
Returns a localized string of the form "Disk nn% - hh:mm free".
Definition: videodir.c:229
cSkinSTTNGDisplayReplay::y3
int y3
Definition: skinsttng.c:785
cSkinSTTNGDisplayChannel::y7
int y7
Definition: skinsttng.c:132
cTextScroller::Set
void Set(cOsd *Osd, int Left, int Top, int Width, int Height, const char *Text, const cFont *Font, tColor ColorFg, tColor ColorBg)
Definition: osd.c:2148
cSkinSTTNGDisplayMenu::y0
int y0
Definition: skinsttng.c:401
cSkinSTTNGDisplayChannel::~cSkinSTTNGDisplayChannel
virtual ~cSkinSTTNGDisplayChannel()
Definition: skinsttng.c:259
cBitmap
Definition: osd.h:169
cSkinDisplayTracks
Definition: skins.h:383
cSkinSTTNGDisplayChannel::cSkinSTTNGDisplayChannel
cSkinSTTNGDisplayChannel(bool WithInfo)
Definition: skinsttng.c:162
cSkinSTTNGDisplayVolume::x0
int x0
Definition: skinsttng.c:935
cSkinSTTNGDisplayMenu::x2
int x2
Definition: skinsttng.c:400
taCenter
@ taCenter
Definition: osd.h:158
cSkinSTTNGDisplayReplay::cSkinSTTNGDisplayReplay
cSkinSTTNGDisplayReplay(bool ModeOnly)
Definition: skinsttng.c:801
cSkinSTTNGDisplayChannel::y4
int y4
Definition: skinsttng.c:132
cSkinSTTNGDisplayMenu::DrawScrollbar
void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown)
Definition: skinsttng.c:505
cTheme
Definition: themes.h:17
cFont::Height
virtual int Height(void) const =0
Returns the height of this font in pixel (all characters have the same height).
cDevice
Definition: device.h:117
cSkinSTTNGDisplayMenu::~cSkinSTTNGDisplayMenu
virtual ~cSkinSTTNGDisplayMenu()
Definition: skinsttng.c:500
cOsd::OsdLeft
static int OsdLeft(void)
Definition: osd.h:805
clrBlue
@ clrBlue
Definition: osd.h:39
cSkinDisplayMenu::textScroller
cTextScroller textScroller
Definition: skins.h:173
cTextScroller::Total
int Total(void)
Definition: osd.h:1053
font.h
cSkinSTTNGDisplayVolume::frameColor
tColor frameColor
Definition: skinsttng.c:937
cSkinSTTNGDisplayChannel::bmRecording
static cBitmap bmRecording
Definition: skinsttng.c:145
clrCyan
@ clrCyan
Definition: osd.h:40
cSkinSTTNGDisplayMenu::title
cString title
Definition: skinsttng.c:405
cSkinSTTNGDisplayReplay::frameColor
tColor frameColor
Definition: skinsttng.c:786
tArea
Definition: osd.h:298
videodir.h
cChannel::Tpid
int Tpid(void) const
Definition: channels.h:171
cSkinSTTNGDisplayChannel::x2
int x2
Definition: skinsttng.c:131
cSkinSTTNGDisplayMenu::Clear
virtual void Clear(void)
Clears the entire central area of the menu.
Definition: skinsttng.c:550
cSkinSTTNGDisplayChannel::x5
int x5
Definition: skinsttng.c:131
cSkinSTTNGDisplayReplay::SetCurrent
virtual void SetCurrent(const char *Current)
Sets the current position within the recording, as a user readable string if the form "h:mm:ss....
Definition: skinsttng.c:893
clrTransparent
@ clrTransparent
Definition: osd.h:32
cSetup::ColorKey1
int ColorKey1
Definition: config.h:315
cSkinSTTNGDisplayMessage::x5
int x5
Definition: skinsttng.c:1191
cSkinSTTNGDisplayReplay::SetMode
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...
Definition: skinsttng.c:880
cSkinSTTNGDisplayMenu::x7
int x7
Definition: skinsttng.c:400
cSkinSTTNGDisplayMessage::x0
int x0
Definition: skinsttng.c:1191
cRecording
Definition: recording.h:98
cSkinSTTNGDisplayTracks::y0
int y0
Definition: skinsttng.c:1027
cSkinSTTNGDisplayChannel::bmAudio
static cBitmap bmAudio
Definition: skinsttng.c:145
cSkinSTTNGDisplayChannel::x6
int x6
Definition: skinsttng.c:131
cChannel::GroupSep
bool GroupSep(void) const
Definition: channels.h:181
cSkinSTTNGDisplayChannel::Flush
virtual void Flush(void)
Definition: skinsttng.c:328
cSkinSTTNGDisplayMessage::x1
int x1
Definition: skinsttng.c:1191
ReplaySymbols
static const char *const * ReplaySymbols[2][2][5]
Definition: skinsttng.c:873
cEvent::StartTime
time_t StartTime(void) const
Definition: epg.h:109
cSkinSTTNGDisplayChannel::SetEvents
virtual void SetEvents(const cEvent *Present, const cEvent *Following)
Sets the Present and Following EPG events.
Definition: skinsttng.c:291
cSkinSTTNGDisplayChannel::lineHeight
int lineHeight
Definition: skinsttng.c:134
cSkinSTTNGDisplayReplay::y6
int y6
Definition: skinsttng.c:785
cSkinSTTNGDisplayMenu::SetTitle
virtual void SetTitle(const char *Title)
Sets the title of this menu to Title.
Definition: skinsttng.c:566
cSkinSTTNGDisplayTracks::x5
int x5
Definition: skinsttng.c:1026
cEvent::GetParentalRatingString
cString GetParentalRatingString(void) const
Definition: epg.c:421
cSkinSTTNGDisplayTracks::y7
int y7
Definition: skinsttng.c:1027
cSkinDisplayMenu
Definition: skins.h:150
cSkinSTTNGDisplayMenu::DrawTitle
void DrawTitle(void)
Definition: skinsttng.c:556
cSkinSTTNGDisplayReplay::x5
int x5
Definition: skinsttng.c:784
cSkinSTTNGDisplayChannel::x7
int x7
Definition: skinsttng.c:131
clrYellow
@ clrYellow
Definition: osd.h:37
cChannel::Vpid
int Vpid(void) const
Definition: channels.h:154
cOsd::DrawRectangle
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...
Definition: osd.c:1963
cSkinSTTNGDisplayMenu::x0
int x0
Definition: skinsttng.c:400
cSkinDisplayReplay
Definition: skins.h:319
cSetup::ChannelInfoPos
int ChannelInfoPos
Definition: config.h:320
cSkinSTTNGDisplayTracks::y6
int y6
Definition: skinsttng.c:1027
cChannel
Definition: channels.h:89
cSkinSTTNGDisplayVolume::x2
int x2
Definition: skinsttng.c:935
cChannel::Apid
int Apid(int i) const
Definition: channels.h:160
cSkinDisplayReplay::cProgressBar
Definition: skins.h:324
cDevice::GetTrack
const tTrackId * GetTrack(eTrackType Type)
Returns a pointer to the given track id, or NULL if Type is not less than ttMaxTrackTypes.
Definition: device.c:1079
Gap
#define Gap
Definition: skinsttng.c:54
cSkinSTTNGDisplayVolume::osd
cOsd * osd
Definition: skinsttng.c:934
cSkinSTTNGDisplayMenu::y2
int y2
Definition: skinsttng.c:401
cSkinSTTNGDisplayTracks::x0
int x0
Definition: skinsttng.c:1026
cSkinSTTNG::Description
virtual const char * Description(void)
Returns a user visible, single line description of this skin, which may consist of arbitrary text and...
Definition: skinsttng.c:1258
cSkinSTTNGDisplayTracks::y1
int y1
Definition: skinsttng.c:1027
cSkinSTTNGDisplayChannel::y2
int y2
Definition: skinsttng.c:132
cString
Definition: tools.h:176
cEvent::GetTimeString
cString GetTimeString(void) const
Definition: epg.c:433
cSkinSTTNGDisplayMenu::x5
int x5
Definition: skinsttng.c:400
cSkinSTTNGDisplayMenu::y1
int y1
Definition: skinsttng.c:401
cSkinSTTNGDisplayMenu::message
bool message
Definition: skinsttng.c:406
cSkinSTTNGDisplayVolume::x3
int x3
Definition: skinsttng.c:935
cSkinSTTNGDisplayMenu::SetRecording
virtual void SetRecording(const cRecording *Recording)
Sets the Recording that shall be displayed, using the entire central area of the menu.
Definition: skinsttng.c:700
cOsd::SetAreas
virtual eOsdError SetAreas(const tArea *Areas, int NumAreas)
Sets the sub-areas to the given areas.
Definition: osd.c:1831
cSkinSTTNGDisplayChannel::bmEncrypted
static cBitmap bmEncrypted
Definition: skinsttng.c:145
cTextScroller::Height
int Height(void)
Definition: osd.h:1052
cSkinSTTNGDisplayMessage::x4
int x4
Definition: skinsttng.c:1191
cSkinSTTNGDisplayMenu::SetEvent
virtual void SetEvent(const cEvent *Event)
Sets the Event that shall be displayed, using the entire central area of the menu.
Definition: skinsttng.c:650
fontOsd
@ fontOsd
Definition: font.h:22
cSkinSTTNG::DisplayMenu
virtual cSkinDisplayMenu * DisplayMenu(void)
Creates and returns a new object for displaying a menu.
Definition: skinsttng.c:1268
cTextScroller::Shown
int Shown(void)
Definition: osd.h:1055
cSkinSTTNGDisplayMenu::frameColor
tColor frameColor
Definition: skinsttng.c:403
cSkinDisplayReplay::marks
const cMarks * marks
< This class implements the progress display used during replay of a recording.
Definition: skins.h:323
cSkinSTTNGDisplayMenu::y5
int y5
Definition: skinsttng.c:401
cSkinSTTNGDisplayTracks::x7
int x7
Definition: skinsttng.c:1026
cSkinSTTNGDisplayChannel::y0
int y0
Definition: skinsttng.c:132
cSkinSTTNG::DisplayMessage
virtual cSkinDisplayMessage * DisplayMessage(void)
Creates and returns a new object for displaying a message.
Definition: skinsttng.c:1288
cEvent::GetVpsString
cString GetVpsString(void) const
Definition: epg.c:443
cSkinSTTNGDisplayMenu::x3
int x3
Definition: skinsttng.c:400
cSkinSTTNGDisplayReplay::y1
int y1
Definition: skinsttng.c:785
cSkinSTTNGDisplayMenu::GetTextAreaWidth
virtual int GetTextAreaWidth(void) const
Returns the width in pixel of the area which is used to display text with SetText().
Definition: skinsttng.c:751
cSkinSTTNGDisplayReplay::SetTitle
virtual void SetTitle(const char *Title)
Sets the title of the recording.
Definition: skinsttng.c:868
cSkinSTTNGDisplayTracks::y3
int y3
Definition: skinsttng.c:1027
Theme
static cTheme Theme
Definition: skinsttng.c:60
cSkinSTTNGDisplayChannel::osd
cOsd * osd
Definition: skinsttng.c:130
cRecordingInfo::ChannelName
const char * ChannelName(void) const
Definition: recording.h:83
cDevice::ActualDevice
static cDevice * ActualDevice(void)
Returns the actual receiving device in case of Transfer Mode, or the primary device otherwise.
Definition: device.c:215
cSkinSTTNGDisplayVolume::x6
int x6
Definition: skinsttng.c:935
cSkinSTTNGDisplayReplay::Flush
virtual void Flush(void)
Definition: skinsttng.c:925
cChannel::Ca
int Ca(int Index=0) const
Definition: channels.h:173
cSkinSTTNGDisplayMenu::y7
int y7
Definition: skinsttng.c:401
cSkinSTTNGDisplayChannel::SetChannel
virtual void SetChannel(const cChannel *Channel, int Number)
Sets the current channel to Channel.
Definition: skinsttng.c:264
cEvent::Vps
time_t Vps(void) const
Definition: epg.h:112
cSkinSTTNGDisplayChannel::lastSeen
int lastSeen
Definition: skinsttng.c:139
cSkinSTTNGDisplayTracks::SetTrack
virtual void SetTrack(int Index, const char *const *Tracks)
< This class implements the track display.
Definition: skinsttng.c:1159
cSkinSTTNGDisplayReplay::x3
int x3
Definition: skinsttng.c:784
cSkinDisplayMenu::Scroll
virtual void Scroll(bool Up, bool Page)
If this menu contains a text area that can be scrolled, this function will be called to actually scro...
Definition: skins.c:107
cSkinSTTNGDisplayMenu::y3
int y3
Definition: skinsttng.c:401
cSkinSTTNGDisplayChannel::lastSignalStrength
int lastSignalStrength
Definition: skinsttng.c:141
cSkinSTTNGDisplayMenu::lineHeight
int lineHeight
Definition: skinsttng.c:402
cSkinSTTNGDisplayReplay::~cSkinSTTNGDisplayReplay
virtual ~cSkinSTTNGDisplayReplay()
Definition: skinsttng.c:863
cSkinSTTNGDisplayChannel::bmRadio
static cBitmap bmRadio
Definition: skinsttng.c:145
cSkinSTTNGDisplayVolume::SetVolume
virtual void SetVolume(int Current, int Total, bool Mute)
< This class implements the volume/mute display.
Definition: skinsttng.c:988
strn0cpy
char * strn0cpy(char *dest, const char *src, size_t n)
Definition: tools.c:131
cRecordingInfo::GetEvent
const cEvent * GetEvent(void) const
Definition: recording.h:84
cSkinSTTNGDisplayChannel::y5
int y5
Definition: skinsttng.c:132
ScrollWidth
#define ScrollWidth
Definition: skinsttng.c:55
cEvent::Description
const char * Description(void) const
Definition: epg.h:105
cSkinSTTNGDisplayChannel::lastTrackId
tTrackId lastTrackId
Definition: skinsttng.c:144
cSkinSTTNGDisplayTracks
Definition: skinsttng.c:1023
max
T max(T a, T b)
Definition: tools.h:60
cOsd::DrawBitmap
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 ...
Definition: osd.c:1933
cEvent::GetDateString
cString GetDateString(void) const
Definition: epg.c:428
cDevice::DeviceNumber
int DeviceNumber(void) const
Returns the number of this device (0 ... numDevices - 1).
Definition: device.c:160
cSkinSTTNGDisplayVolume::y1
int y1
Definition: skinsttng.c:936
cBitmap::Height
int Height(void) const
Definition: osd.h:189
cSkinSTTNGDisplayChannel::x0
int x0
Definition: skinsttng.c:131
cSetup::ColorKey2
int ColorKey2
Definition: config.h:315
cSkinSTTNGDisplayTracks::x6
int x6
Definition: skinsttng.c:1026
cSkinSTTNGDisplayMenu::MaxItems
virtual int MaxItems(void)
Returns the maximum number of items the menu can display.
Definition: skinsttng.c:545
cDevice::SignalStrength
virtual int SignalStrength(void) const
Returns the "strength" of the currently received signal.
Definition: device.c:760
cEvent::GetEndTimeString
cString GetEndTimeString(void) const
Definition: epg.c:438
DayDateTime
cString DayDateTime(time_t t)
Converts the given time to a string of the form "www dd.mm. hh:mm".
Definition: tools.c:1192
cOsd::CanHandleAreas
virtual eOsdError CanHandleAreas(const tArea *Areas, int NumAreas)
Checks whether the OSD can display the given set of sub-areas.
Definition: osd.c:1809
cSkinSTTNGDisplayReplay::y4
int y4
Definition: skinsttng.c:785
cFont::Width
virtual int Width(void) const =0
Returns the original character width as requested when the font was created, or 0 if the default widt...
cOsd::DrawText
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.
Definition: osd.c:1953
cSkinSTTNGDisplayTracks::cSkinSTTNGDisplayTracks
cSkinSTTNGDisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
Definition: skinsttng.c:1045
cSkinSTTNGDisplayMessage::cSkinSTTNGDisplayMessage
cSkinSTTNGDisplayMessage(void)
Definition: skinsttng.c:1200
cDevice::SignalQuality
virtual int SignalQuality(void) const
Returns the "quality" of the currently received signal.
Definition: device.c:765
cSkinSTTNGDisplayMenu::SetTextScrollbar
void SetTextScrollbar(void)
Definition: skinsttng.c:533
cSkinSTTNGDisplayVolume::cSkinSTTNGDisplayVolume
cSkinSTTNGDisplayVolume(void)
Definition: skinsttng.c:946
cSkinSTTNGDisplayVolume::x5
int x5
Definition: skinsttng.c:935
min
T min(T a, T b)
Definition: tools.h:59
cTextScroller::Reset
void Reset(void)
Definition: osd.c:2165
cSkinSTTNGDisplayMessage::x2
int x2
Definition: skinsttng.c:1191
cSkinSTTNGDisplayMenu::SetScrollbar
virtual void SetScrollbar(int Total, int Offset)
Sets the Total number of items in the currently displayed list, and the Offset of the first item that...
Definition: skinsttng.c:645
cSkinSTTNGDisplayTracks::SetItem
void SetItem(const char *Text, int Index, bool Current)
Definition: skinsttng.c:1133
clrRed
@ clrRed
Definition: osd.h:35
cSkinSTTNGDisplayReplay::lastCurrentWidth
int lastCurrentWidth
Definition: skinsttng.c:787
cSkinSTTNGDisplayVolume::y0
int y0
Definition: skinsttng.c:936
cSkinSTTNGDisplayVolume::x1
int x1
Definition: skinsttng.c:935
cSkinSTTNGDisplayReplay::x7
int x7
Definition: skinsttng.c:784
cSkinSTTNG::cSkinSTTNG
cSkinSTTNG(void)
Definition: skinsttng.c:1253
cSkinSTTNGDisplayChannel::x1
int x1
Definition: skinsttng.c:131
cOsd::Flush
virtual void Flush(void)
Actually commits all data to the OSD hardware.
Definition: osd.c:1993
cSkinSTTNGDisplayTracks::SetAudioChannel
virtual void SetAudioChannel(int AudioChannel)
Sets the audio channel indicator.
Definition: skinsttng.c:1166
cSkinSTTNGDisplayMenu::x4
int x4
Definition: skinsttng.c:400
cSkinSTTNGDisplayMenu
Definition: skinsttng.c:397
cSkinSTTNGDisplayReplay::x6
int x6
Definition: skinsttng.c:784
cSkinSTTNGDisplayMenu::y4
int y4
Definition: skinsttng.c:401
cSkinSTTNGDisplayChannel::y1
int y1
Definition: skinsttng.c:132
cSkinSTTNGDisplayReplay::SetTotal
virtual void SetTotal(const char *Total)
Sets the total length of the recording, as a user readable string if the form "h:mm:ss".
Definition: skinsttng.c:901
cSkinSTTNGDisplayMenu::currentIndex
int currentIndex
Definition: skinsttng.c:404
eMessageType
eMessageType
Definition: skins.h:37
skinsttng.h
cTextScroller::CanScrollDown
bool CanScrollDown(void)
Definition: osd.h:1058
cEvent::ShortText
const char * ShortText(void) const
Definition: epg.h:104
cSetup::ColorKey0
int ColorKey0
Definition: config.h:315
cSkinSTTNGDisplayReplay::x0
int x0
Definition: skinsttng.c:784
cSkinSTTNGDisplayReplay::x4
int x4
Definition: skinsttng.c:784
cSkinSTTNG::DisplayVolume
virtual cSkinDisplayVolume * DisplayVolume(void)
Creates and returns a new object for displaying the current volume.
Definition: skinsttng.c:1278
cSkinSTTNGDisplayChannel::y3
int y3
Definition: skinsttng.c:132
cTextScroller
Definition: osd.h:1035
cSkinSTTNGDisplayTracks::x3
int x3
Definition: skinsttng.c:1026
TextSpacing
#define TextSpacing
Definition: skinsttng.c:57
cSkinSTTNGDisplayChannel::lastSignalQuality
int lastSignalQuality
Definition: skinsttng.c:142
cSkinSTTNGDisplayTracks::x2
int x2
Definition: skinsttng.c:1026
cSkinSTTNGDisplayTracks::y5
int y5
Definition: skinsttng.c:1027
cSkinSTTNGDisplayMenu::SetItem
virtual void SetItem(const char *Text, int Index, bool Current, bool Selectable)
Sets the item at the given Index to Text.
Definition: skinsttng.c:611