11 #include <vdr/plugin.h>
12 #include <vdr/skins.h>
13 #include <vdr/videodir.h>
23 virtual int Width(uint c)
const {
return 1; }
25 virtual int Height(
void)
const {
return 1; }
34 #define clrBackground COLOR_BLACK
35 #define clrTransparent clrBackground
36 #define clrBlack clrBackground
37 #define clrRed COLOR_RED
38 #define clrGreen COLOR_GREEN
39 #define clrYellow COLOR_YELLOW
40 #define clrBlue COLOR_BLUE
41 #define clrMagenta COLOR_MAGENTA
42 #define clrCyan COLOR_CYAN
43 #define clrWhite COLOR_WHITE
69 virtual void SaveRegion(
int x1,
int y1,
int x2,
int y2);
73 virtual void Flush(
void);
83 leaveok(stdscr,
true);
101 int color = (colorBg << 16) | colorFg | 0x80000000;
105 init_pair(i + 1, colorFg, colorBg);
107 wattrset(
window, COLOR_PAIR(i + 1));
111 wattrset(
window, COLOR_PAIR(i + 1));
123 savedRegion = newwin(y2 - y1 + 1, x2 - x1 + 1, y1, x1);
138 int w = Font->
Width(s);
140 if (Width || Height) {
141 int cw = Width ? Width : w;
142 int ch = Height ? Height : h;
145 if ((Alignment &
taLeft) != 0)
147 else if ((Alignment &
taRight) != 0) {
153 x += (Width - w) / 2;
157 if ((Alignment &
taTop) != 0)
159 else if ((Alignment &
taBottom) != 0) {
165 y += (Height - h) / 2;
177 for (
int y = y1; y <= y2; y++) {
179 whline(
window,
' ', x2 - x1 + 1);
202 virtual void Flush(
void);
207 int Lines = WithInfo ? 5 : 1;
229 for (
int i = 0; i < 2; i++) {
230 const cEvent *e = !i ? Present : Following;
269 void DrawScrollbar(
int Total,
int Offset,
int Shown,
int Top,
int Height,
bool CanScrollUp,
bool CanScrollDown);
274 virtual void Scroll(
bool Up,
bool Page);
276 virtual void Clear(
void);
277 virtual void SetTitle(
const char *Title);
278 virtual void SetButtons(
const char *Red,
const char *Green = NULL,
const char *Yellow = NULL,
const char *Blue = NULL);
280 virtual void SetItem(
const char *Text,
int Index,
bool Current,
bool Selectable);
284 virtual void SetText(
const char *Text,
bool FixedFont);
286 virtual void Flush(
void);
303 if (Total > 0 && Total > Shown) {
305 int yb = yt + Height;
308 int th =
max(
int((sb - st) *
double(Shown) / Total + 0.5), 1);
309 int tt =
min(
int(st + (sb - st) *
double(Offset) / Total + 0.5), sb - th);
310 int tb =
min(tt + th, sb);
378 int ColorFg, ColorBg;
387 for (
int i = 0; i <
MaxTabs; i++) {
429 for (
int i = 0; Event->
Contents(i); i++) {
458 const char *Title = Info->
Title();
460 Title = Recording->
Name();
505 virtual void SetTitle(
const char *Title);
506 virtual void SetMode(
bool Play,
bool Forward,
int Speed);
509 virtual void SetTotal(
const char *Total);
510 virtual void SetJump(
const char *Jump);
512 virtual void Flush(
void);
536 if (Speed == -1) Mode = Play ?
" > " :
" || ";
537 else if (Play) Mode = Forward ?
" X>> " :
" <<X ";
538 else Mode = Forward ?
" X|> " :
" <|X ";
541 char *p = strchr(buf,
'X');
543 *p = Speed > 0 ?
'1' + Speed - 1 :
' ';
550 int p = Total > 0 ?
ScOsdWidth * Current / Total : 0;
597 virtual void Flush(
void);
617 const char *Prompt =
tr(
"Volume ");
642 virtual void SetTrack(
int Index,
const char *
const *Tracks);
644 virtual void Flush(
void);
651 for (
int i = 0; i < NumTracks; i++)
657 for (
int i = 0; i < NumTracks; i++)
669 int ColorFg, ColorBg;
686 SetItem(Tracks[Index], Index,
true);
703 virtual void Flush(
void);
747 return tr(
"Text mode");
793 virtual bool Start(
void);
829 WINDOW *w = initscr();
static int AvgCharWidth(void)
Returns the average width of a character in pixel (just a raw estimate).
virtual cSkinDisplayVolume * DisplayVolume(void)
Creates and returns a new object for displaying the current volume.
static unsigned char buf(long p)
virtual void SetTrack(int Index, const char *const *Tracks)
< This class implements the track display.
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...
VDRPLUGINCREATOR(cPluginSkinCurses)
cCursesOsd(int Left, int Top)
virtual bool SetupParse(const char *Name, const char *Value)
virtual ~cPluginSkinCurses()
static cString String(void)
Returns a localized string of the form "Disk nn% - hh:mm free".
const cRecordingInfo * Info(void) const
const char * ShortText(void) const
virtual void DrawText(cPixmap *Pixmap, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, int Width) const
static const char * VERSION
static const char * ContentToString(uchar Content)
cString GetParentalRatingString(void) const
static cString sprintf(const char *fmt,...) __attribute__((format(printf
void Set(cOsd *Osd, int Left, int Top, int Width, int Height, const char *Text, const cFont *Font, tColor ColorFg, tColor ColorBg)
virtual void Flush(void)
Actually draws the OSD display to the output device.
virtual const char * Description(void)
Returns a user visible, single line description of this skin, which may consist of arbitrary text and...
uchar Contents(int i=0) const
virtual void SetChannel(const cChannel *Channel, int Number)
< This class is used to display the current channel, together with the present and following EPG even...
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...
cSkinCursesDisplayReplay(bool ModeOnly)
virtual const char * CommandLineHelp(void)
static cSkinDisplay * Current(void)
Returns the currently active cSkinDisplay.
time_t StartTime(void) const
virtual void Flush(void)
Actually draws the OSD display to the output device.
cString ChannelString(const cChannel *Channel, int Number)
virtual cSkinDisplayMenu * DisplayMenu(void)
Creates and returns a new object for displaying a menu.
virtual void SetTitle(const char *Title)
Sets the title of the recording.
virtual void Flush(void)
Actually commits all data to the OSD hardware.
virtual void Flush(void)
Actually draws the OSD display to the output device.
virtual bool ProcessArgs(int argc, char *argv[])
virtual ~cSkinCursesDisplayVolume()
virtual cOsdObject * MainMenuAction(void)
virtual cMenuSetupPage * SetupMenu(void)
void SetColor(int colorFg, int colorBg=clrBackground)
virtual const char * MainMenuEntry(void)
virtual void DrawText(cBitmap *Bitmap, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, int Width) const
Draws the given text into the Bitmap at position (x, y) with the given colors.
virtual const char * Version(void)
cString GetVpsString(void) const
virtual void Flush(void)
Actually draws the OSD display to the output device.
virtual const char * Description(void)
virtual int Height(void) const =0
Returns the height of this font in pixel (all characters have the same height).
virtual void SaveRegion(int x1, int y1, int x2, int y2)
Saves the region defined by the given coordinates for later restoration through RestoreRegion().
int ParentalRating(void) const
virtual void SetCurrent(const char *Current)
Sets the current position within the recording, as a user readable string if the form "h:mm:ss...
virtual cSkinDisplayChannel * DisplayChannel(bool WithInfo)
Creates and returns a new object for displaying the current channel.
virtual void SetMessage(eMessageType Type, const char *Text)
< This class implements a simple message display.
virtual bool Initialize(void)
virtual int Height(void) const
Returns the height of this font in pixel (all characters have the same height).
cSkinCursesDisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
virtual void SetAudioChannel(int AudioChannel)
Sets the audio channel indicator.
virtual void Flush(void)
Actually draws the OSD display to the output device.
cSkinCursesDisplayChannel(bool WithInfo)
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 bool HasChanged(int &State)
Returns true if the usage of the video disk space has changed since the last call to this function wi...
virtual ~cSkinCursesDisplayReplay()
static const cCursesFont Font
The cOsd class is the interface to the "On Screen Display".
static const char * DESCRIPTION
void SetItem(const char *Text, int Index, bool Current)
virtual ~cSkinCursesDisplayChannel()
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...
cSkinCursesDisplayVolume(void)
virtual void Housekeeping(void)
void SetEditableWidth(int Width)
If an item is set through a call to cSkinDisplayMenu::SetItem(), this function shall be called to set...
const char * Title(void) const
virtual void RestoreRegion(void)
Restores the region previously saved by a call to SaveRegion().
cString GetEndTimeString(void) const
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
virtual void SetEvents(const cEvent *Present, const cEvent *Following)
Sets the Present and Following EPG events.
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
virtual void SetTotal(const char *Total)
Sets the total length of the recording, as a user readable string if the form "h:mm:ss".
virtual int Width(uint c) const
Returns the width of the given character in pixel.
virtual void SetJump(const char *Jump)
Sets the prompt that allows the user to enter a jump point.
virtual void SetVolume(int Current, int Total, bool Mute)
< This class implements the volume/mute display.
virtual int Width(const char *s) const
Returns the width of the given string in pixel.
cSkinCursesDisplayMessage(void)
cString GetTimeString(void) const
const cEvent * GetEvent(void) const
const char * Description(void) const
const char * Name(void) const
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...
const char * Title(void) const
const char * Description(void) const
virtual int Width(uint c) const =0
Returns the width of the given character in pixel.
virtual void Flush(void)
Actually commits all data to the OSD hardware.
virtual void RestoreRegion(void)
Restores the region previously saved by a call to SaveRegion().
const char * ChannelName(void) const
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...
int colorPairs[MaxColorPairs]
cString GetDateString(void) const
const char * ShortText(void) const
static const char * MAINMENUENTRY
virtual void SaveRegion(int x1, int y1, int x2, int y2)
Saves the region defined by the given coordinates for later restoration through RestoreRegion().
bool SetCurrent(const char *Name=NULL)
Sets the current skin to the one indicated by name.
virtual cSkinDisplayMessage * DisplayMessage(void)
Creates and returns a new object for displaying a message.
virtual cSkinDisplayTracks * DisplayTracks(const char *Title, int NumTracks, const char *const *Tracks)
Creates and returns a new object for displaying the available tracks.
virtual ~cSkinCursesDisplayTracks()
virtual ~cSkinCursesDisplayMessage()
virtual cSkinDisplayReplay * DisplayReplay(bool ModeOnly)
Creates and returns a new object for displaying replay progress.