From b81bf2d1c92e2ac820d2116c66f328869eb627cd Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 31 May 2004 18:00:00 +0200 Subject: =?UTF-8?q?Version=201.3.9=20-=20Completed=20Croatian=20language?= =?UTF-8?q?=20texts=20(thanks=20to=20Drazen=20Dupor).=20-=20New=20iso8859-?= =?UTF-8?q?2=20font=20to=20fix=20the=20problem=20with=20program=20freezes?= =?UTF-8?q?=20(thanks=20to=20Drazen=20Dupor).=20-=20Implemented=20a=20defa?= =?UTF-8?q?ult=20cRemote::Initialize()=20that=20waits=2010=20seconds=20for?= =?UTF-8?q?=20a=20keypress=20=20=20in=20order=20to=20prevent=20a=20"hangup?= =?UTF-8?q?"=20in=20case,=20e.g.,=20the=20LIRC=20driver=20is=20not=20loade?= =?UTF-8?q?d=20(thanks=20=20=20to=20Helmut=20Auer).=20-=20Updated=20'chann?= =?UTF-8?q?els.conf.terr'=20for=20Hannover=20(thanks=20to=20Peter=20Waecht?= =?UTF-8?q?ler).=20-=20cBitmap::DrawBitmap()=20now=20also=20resets=20the?= =?UTF-8?q?=20palette=20if=20the=20entire=20bitmap=20area=20is=20=20=20cov?= =?UTF-8?q?ered=20(suggested=20by=20Sascha=20Volkenandt).=20-=20Fixed=20se?= =?UTF-8?q?tting=20the=20title=20in=20the=20replay=20display=20of=20the=20?= =?UTF-8?q?"Classic=20VDR"=20skin=20in=20case=20=20=20a=20shorter=20title?= =?UTF-8?q?=20is=20set=20after=20a=20longer=20one=20(thanks=20to=20Stefan?= =?UTF-8?q?=20Huelswitt=20for=20=20=20reporting=20this=20one).=20-=20Now?= =?UTF-8?q?=20using=20more=20separate=20areas=20in=20the=20"ST:TNG=20Panel?= =?UTF-8?q?s"=20skin=20to=20allow=20a=20theme=20to=20=20=20use=20more=20in?= =?UTF-8?q?dependent=20clrMenu*=20colors.=20-=20Fixed=20removing=20the=20"?= =?UTF-8?q?scanning=20recordings..."=20message=20in=20case=20the=20video?= =?UTF-8?q?=20directory=20=20=20is=20empty=20(thanks=20to=20Andreas=20Rege?= =?UTF-8?q?l=20for=20reporting=20this=20one).=20-=20Added=20SetMessage()?= =?UTF-8?q?=20functions=20to=20the=20Replay=20and=20Channel=20skin=20funct?= =?UTF-8?q?ions.=20Plugins=20=20=20that=20implement=20skins=20will=20need?= =?UTF-8?q?=20to=20implement=20these=20functions.=20This=20fixes=20a=20mis?= =?UTF-8?q?sing=20=20=20"Editing=20process=20finished"=20message=20(thanks?= =?UTF-8?q?=20to=20Oliver=20Endriss=20for=20reporting=20this=20=20=20one).?= =?UTF-8?q?=20-=20Fixed=20the=20height=20of=20the=20channel=20display=20in?= =?UTF-8?q?=20the=20"Classic=20VDR"=20skin.=20-=20Fixed=20handling=20descr?= =?UTF-8?q?iptor=20loops=20in=20'libsi',=20which=20had=20sometimes=20cause?= =?UTF-8?q?d=20invalid=20=20=20CA=20ids=20to=20be=20added=20to=20the=20cha?= =?UTF-8?q?nnel=20definitions=20(thanks=20to=20Wayne=20Keer=20for=20report?= =?UTF-8?q?ing=20=20=20this=20one,=20and=20Marcel=20Wiesweg=20for=20fixing?= =?UTF-8?q?=20it).=20-=20Fixed=20handling=20colors=20in=20cDvbSpuPalette::?= =?UTF-8?q?yuv2rgb()=20(thanks=20to=20Marco=20Schl=C3=BC=C3=9Fler).=20-=20?= =?UTF-8?q?Made=20some=20functions=20of=20cFont=20virtual=20to=20allow=20i?= =?UTF-8?q?mplementing=20dummy=20fonts=20for=20the=20=20=20'curses'=20skin?= =?UTF-8?q?.=20-=20The=20new=20plugin=20'skincurses'=20re-implements=20the?= =?UTF-8?q?=20functionality=20that=20was=20previously=20=20=20available=20?= =?UTF-8?q?by=20compiling=20VDR=20with=20DEBUG=5FOSD.=20Some=20things=20ma?= =?UTF-8?q?y=20not=20yet=20work=20as=20they=20=20=20should,=20but=20it's?= =?UTF-8?q?=20a=20starting=20point.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skinsttng.c | 74 +++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 19 deletions(-) (limited to 'skinsttng.c') diff --git a/skinsttng.c b/skinsttng.c index a268978..ac4aab9 100644 --- a/skinsttng.c +++ b/skinsttng.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinsttng.c 1.2 2004/05/22 13:05:07 kls Exp $ + * $Id: skinsttng.c 1.5 2004/05/29 14:05:12 kls Exp $ */ // Star Trek: The Next Generation® is a registered trademark of Paramount Pictures @@ -116,7 +116,7 @@ THEME_CLR(Theme, clrReplayProgressCurrent, clrRed); // --- cSkinSTTNGDisplayChannel ---------------------------------------------- -class cSkinSTTNGDisplayChannel : public cSkinDisplayChannel{ +class cSkinSTTNGDisplayChannel : public cSkinDisplayChannel { private: cOsd *osd; int x0, x1, x2, x3, x4, x5, x6, x7; @@ -124,6 +124,7 @@ private: bool withInfo; int lineHeight; tColor frameColor; + bool message; const cEvent *present; int lastSeen; static cBitmap bmTeletext, bmRadio, bmAudio, bmDolbyDigital, bmEncrypted, bmRecording; @@ -132,6 +133,7 @@ public: virtual ~cSkinSTTNGDisplayChannel(); virtual void SetChannel(const cChannel *Channel, int Number); virtual void SetEvents(const cEvent *Present, const cEvent *Following); + virtual void SetMessage(eMessageType Type, const char *Text); virtual void Flush(void); }; @@ -150,6 +152,7 @@ cSkinSTTNGDisplayChannel::cSkinSTTNGDisplayChannel(bool WithInfo) withInfo = WithInfo; lineHeight = font->Height(); frameColor = Theme.Color(clrChannelFrame); + message = false; if (withInfo) { x0 = 0; x1 = x0 + font->Width("00:00") + 4; @@ -251,7 +254,7 @@ void cSkinSTTNGDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Fo return; if (present != Present) lastSeen = -1; - present = Present; + present = Present; osd->DrawRectangle(x0, y3, x1 - 1, y4 - 1, frameColor); osd->DrawRectangle(x3, y3, x7 - 1, y4 - 1, Theme.Color(clrBackground)); for (int i = 0; i < 2; i++) { @@ -264,13 +267,33 @@ void cSkinSTTNGDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Fo } } +void cSkinSTTNGDisplayChannel::SetMessage(eMessageType Type, const char *Text) +{ + const cFont *font = cFont::GetFont(withInfo ? fontSml : fontOsd); + if (Text) { + int yt = withInfo ? y6 : y0; + int yb = withInfo ? y7 : y1; + osd->SaveRegion(x2, yt, x4 - 1, yb - 1); + if (withInfo) + osd->DrawRectangle(x2, yt, x3 - 1, yb - 1, Theme.Color(clrBackground)); + osd->DrawText(x3, yt, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x4 - x3, 0, taCenter); + message = true; + } + else { + osd->RestoreRegion(); + message = false; + } +} + void cSkinSTTNGDisplayChannel::Flush(void) { if (withInfo) { - const char *date = DayDateTime(); - const cFont *font = cFont::GetFont(fontSml); - osd->DrawText(x4 - font->Width(date) - 2, y7 - font->Height(date), date, Theme.Color(clrChannelDate), frameColor, font); - + if (!message) { + const char *date = DayDateTime(); + const cFont *font = cFont::GetFont(fontSml); + osd->DrawText(x4 - font->Width(date) - 2, y7 - font->Height(date), date, Theme.Color(clrChannelDate), frameColor, font); + } + int seen = 0; if (present) { time_t t = time(NULL); @@ -324,12 +347,12 @@ cSkinSTTNGDisplayMenu::cSkinSTTNGDisplayMenu(void) message = false; x0 = 0; x1 = lineHeight / 2; - x2 = x1 + Roundness; - x3 = x2 + Gap; + x3 = (x1 + Roundness + Gap + 7) & ~0x07; // must be multiple of 8 + x2 = x3 - Gap; x7 = Setup.OSDWidth; x6 = x7 - lineHeight / 2; - x5 = x6 - lineHeight / 2; - x4 = x5 - Gap; + x4 = (x6 - lineHeight / 2 - Gap) & ~0x07; // must be multiple of 8 + x5 = x4 + Gap; y0 = 0; y1 = lineHeight; y2 = y1 + Roundness; @@ -345,18 +368,13 @@ cSkinSTTNGDisplayMenu::cSkinSTTNGDisplayMenu(void) if (osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); else { - tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 2 }, - { x0, y1, x7 - 1, y6 - 1, 2 }, - { x0, y6, x7 - 1, y7 - 1, 4 } - }; - osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); - /*TODO tArea Areas[] = { { x0, y0, x7 - 1, y3 - 1, 2 }, { x0, y3, x3 - 1, y4 - 1, 1 }, - { x3, y3, x5 - 1, y4 - 1, 2 }, + { x3, y3, x4 - 1, y4 - 1, 2 }, + { x4, y3, x7 - 1, y4 - 1, 2 }, { x0, y4, x7 - 1, y7 - 1, 4 } }; - */ + osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); } osd->DrawRectangle(x0, y0, x7 - 1, y7 - 1, Theme.Color(clrBackground)); osd->DrawRectangle(x0, y0, x1 - 1, y1 - 1, clrTransparent); @@ -581,6 +599,7 @@ private: int y0, y1, y2, y3, y4, y5, y6, y7; tColor frameColor; int lastCurrentWidth; + bool message; public: cSkinSTTNGDisplayReplay(bool ModeOnly); virtual ~cSkinSTTNGDisplayReplay(); @@ -590,6 +609,7 @@ public: virtual void SetCurrent(const char *Current); virtual void SetTotal(const char *Total); virtual void SetJump(const char *Jump); + virtual void SetMessage(eMessageType Type, const char *Text); virtual void Flush(void); }; @@ -602,6 +622,7 @@ cSkinSTTNGDisplayReplay::cSkinSTTNGDisplayReplay(bool ModeOnly) int lineHeight = font->Height(); frameColor = Theme.Color(clrReplayFrame); lastCurrentWidth = 0; + message = false; cBitmap bm(play_xpm); x0 = 0; x1 = max(SymbolWidth, bm.Width()); @@ -700,6 +721,21 @@ void cSkinSTTNGDisplayReplay::SetJump(const char *Jump) osd->DrawText(x0 + (x4 - x0) / 4, y6, Jump, Theme.Color(clrReplayJump), frameColor, cFont::GetFont(fontSml), (x4 - x3) / 2, 0, taCenter); } +void cSkinSTTNGDisplayReplay::SetMessage(eMessageType Type, const char *Text) +{ + const cFont *font = cFont::GetFont(fontSml); + if (Text) { + osd->SaveRegion(x2, y6, x4 - 1, y7 - 1); + osd->DrawRectangle(x2, y6, x3 - 1, y7 - 1, Theme.Color(clrBackground)); + osd->DrawText(x3, y6, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x4 - x3, 0, taCenter); + message = true; + } + else { + osd->RestoreRegion(); + message = false; + } +} + void cSkinSTTNGDisplayReplay::Flush(void) { osd->Flush(); -- cgit v1.2.3