void cSkinSTTNGDisplayTracks::SetItem(const char *Text, int Index, bool Current) { int y = y3 + Roundness + Index * lineHeight; tColor ColorFg, ColorBg; if (Current) { ColorFg = Theme.Color(clrMenuItemCurrentFg); ColorBg = Theme.Color(clrMenuItemCurrentBg); osd->DrawEllipse (x1, y - Roundness, x2 - 1, y - 1, frameColor, -3); osd->DrawRectangle(x1, y, x2 - 1, y + lineHeight - 1, frameColor); osd->DrawEllipse (x1, y + lineHeight, x2 - 1, y + lineHeight + Roundness - 1, frameColor, -2); osd->DrawRectangle(x3, y, x4 - 1, y + lineHeight - 1, ColorBg); currentIndex = Index; } else { ColorFg = Theme.Color(clrMenuItemSelectable); ColorBg = Theme.Color(clrBackground); if (currentIndex == Index) { osd->DrawRectangle(x1, y - Roundness, x2 - 1, y + lineHeight + Roundness - 1, Theme.Color(clrBackground)); osd->DrawRectangle(x3, y, x4 - 1, y + lineHeight - 1, Theme.Color(clrBackground)); } } const cFont *font = cFont::GetFont(fontOsd); int xt = x3 + 5; osd->DrawText(xt, y, Text, ColorFg, ColorBg, font, x4 - xt); }
void cSkinSTTNGDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool Selectable) { int y = y3 + Roundness + Index * lineHeight; tColor ColorFg, ColorBg; if (Current) { ColorFg = Theme.Color(clrMenuItemCurrentFg); ColorBg = Theme.Color(clrMenuItemCurrentBg); osd->DrawEllipse (x1, y - Roundness, x2 - 1, y - 1, frameColor, -3); osd->DrawRectangle(x1, y, x2 - 1, y + lineHeight - 1, frameColor); osd->DrawEllipse (x1, y + lineHeight, x2 - 1, y + lineHeight + Roundness - 1, frameColor, -2); osd->DrawRectangle(x3, y, x4 - 1, y + lineHeight - 1, ColorBg); currentIndex = Index; } else { ColorFg = Theme.Color(Selectable ? clrMenuItemSelectable : clrMenuItemNonSelectable); ColorBg = Theme.Color(clrBackground); if (currentIndex == Index) { osd->DrawRectangle(x1, y - Roundness, x2 - 1, y + lineHeight + Roundness - 1, Theme.Color(clrBackground)); osd->DrawRectangle(x3, y, x4 - 1, y + lineHeight - 1, Theme.Color(clrBackground)); } } const cFont *font = cFont::GetFont(fontOsd); for (int i = 0; i < MaxTabs; i++) { const char *s = GetTabbedText(Text, i); if (s) { int xt = x3 + 5 + Tab(i); osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x4 - xt); } if (!Tab(i + 1)) break; } SetEditableWidth(x4 - x3 - 5 - Tab(1)); }
void cSkinSTTNGDisplayMenu::SetScrollbar(void) { if (textScroller.CanScroll()) { int h = lineHeight; int yt = textScroller.Top(); int yb = yt + textScroller.Height(); int st = yt + h + Gap; int sb = yb - h - Gap; int tt = st + (sb - st) * textScroller.Offset() / textScroller.Total(); int tb = tt + (sb - st) * textScroller.Shown() / textScroller.Total(); osd->DrawRectangle(x5, st, x5 + ScrollWidth - 1, sb, Theme.Color(clrMenuScrollbarTotal)); osd->DrawRectangle(x5, tt, x5 + ScrollWidth - 1, tb, Theme.Color(clrMenuScrollbarShown)); osd->DrawRectangle(x5, yt, x6 - 1, yt + h - 1, frameColor); osd->DrawEllipse (x6, yt, x7 - 1, yt + h - 1, frameColor, 5); osd->DrawRectangle(x5, yb - h, x6 - 1, yb - 1, frameColor); osd->DrawEllipse (x6, yb - h, x7 - 1, yb - 1, frameColor, 5); if (textScroller.CanScrollUp()) { cBitmap bm(arrowup_xpm); osd->DrawBitmap(x5 + (x7 - x5 - bm.Width()) / 2 - 2, yt + (h - bm.Height()) / 2, bm, Theme.Color(clrMenuScrollbarArrow), frameColor); } if (textScroller.CanScrollDown()) { cBitmap bm(arrowdown_xpm); osd->DrawBitmap(x5 + (x7 - x5 - bm.Width()) / 2 - 2, yb - h + (h - bm.Height()) / 2, bm, Theme.Color(clrMenuScrollbarArrow), frameColor); } } }
void cSkinSTTNGDisplayMenu::SetEvent(const cEvent *Event) { if (!Event) return; const cFont *font = cFont::GetFont(fontOsd); int xl = x3 + 5; int y = y3; cTextScroller ts; char t[32]; snprintf(t, sizeof(t), "%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); ts.Set(osd, xl, y, x4 - xl, y4 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground)); if (Event->Vps() && Event->Vps() != Event->StartTime()) { char *buffer; asprintf(&buffer, " VPS: %s", *Event->GetVpsString()); const cFont *font = cFont::GetFont(fontSml); osd->DrawText(x4 - font->Width(buffer), y, buffer, Theme.Color(clrMenuEventVps), frameColor, font); int yb = y + font->Height(); osd->DrawRectangle(x5, y, x6 - 1, yb - 1, frameColor); osd->DrawEllipse (x6, y, x7 - 1, yb - 1, frameColor, 5); free(buffer); } y += ts.Height(); y += font->Height(); ts.Set(osd, xl, y, x4 - xl, y4 - y, Event->Title(), font, Theme.Color(clrMenuEventTitle), Theme.Color(clrBackground)); y += ts.Height(); if (!isempty(Event->ShortText())) { const cFont *font = cFont::GetFont(fontSml); ts.Set(osd, xl, y, x4 - xl, y4 - y, Event->ShortText(), font, Theme.Color(clrMenuEventShortText), Theme.Color(clrBackground)); y += ts.Height(); } y += font->Height(); if (!isempty(Event->Description())) { int yt = y; int yb = y4 - Roundness; textScroller.Set(osd, xl, yt, x4 - xl, yb - yt, Event->Description(), font, Theme.Color(clrMenuEventDescription), Theme.Color(clrBackground)); yb = yt + textScroller.Height(); osd->DrawEllipse (x1, yt - Roundness, x2, yt, frameColor, -3); osd->DrawRectangle(x1, yt, x2, yb, frameColor); osd->DrawEllipse (x1, yb, x2, yb + Roundness, frameColor, -2); SetScrollbar(); } }
void cSkinSTTNGDisplayMenu::SetRecording(const cRecording *Recording) { if (!Recording) return; const cRecordingInfo *Info = Recording->Info(); const cFont *font = cFont::GetFont(fontOsd); int xl = x3 + 5; int y = y3; cTextScroller ts; char t[32]; snprintf(t, sizeof(t), "%s %s", *DateString(Recording->start), *TimeString(Recording->start)); ts.Set(osd, xl, y, x4 - xl, y4 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground)); y += ts.Height(); y += font->Height(); const char *Title = Info->Title(); if (isempty(Title)) Title = Recording->Name(); ts.Set(osd, xl, y, x4 - xl, y4 - y, Title, font, Theme.Color(clrMenuEventTitle), Theme.Color(clrBackground)); y += ts.Height(); if (!isempty(Info->ShortText())) { const cFont *font = cFont::GetFont(fontSml); ts.Set(osd, xl, y, x4 - xl, y4 - y, Info->ShortText(), font, Theme.Color(clrMenuEventShortText), Theme.Color(clrBackground)); y += ts.Height(); } y += font->Height(); if (!isempty(Info->Description())) { int yt = y; int yb = y4 - Roundness; textScroller.Set(osd, xl, yt, x4 - xl, yb - yt, Info->Description(), font, Theme.Color(clrMenuEventDescription), Theme.Color(clrBackground)); yb = yt + textScroller.Height(); osd->DrawEllipse (x1, yt - Roundness, x2, yt, frameColor, -3); osd->DrawRectangle(x1, yt, x2, yb, frameColor); osd->DrawEllipse (x1, yb, x2, yb + Roundness, frameColor, -2); SetScrollbar(); } }