summaryrefslogtreecommitdiff
path: root/displayreplay.c
diff options
context:
space:
mode:
Diffstat (limited to 'displayreplay.c')
-rw-r--r--displayreplay.c47
1 files changed, 42 insertions, 5 deletions
diff --git a/displayreplay.c b/displayreplay.c
index 17a2655..fd32454 100644
--- a/displayreplay.c
+++ b/displayreplay.c
@@ -1,7 +1,7 @@
#include "displayreplay.h"
cFlatDisplayReplay::cFlatDisplayReplay(bool ModeOnly) {
- progressBarHeight = 10;
+ progressBarHeight = 20;
labelHeight = fontHeight;
current = "";
total = "";
@@ -9,8 +9,8 @@ cFlatDisplayReplay::cFlatDisplayReplay(bool ModeOnly) {
TopBarCreate();
MessageCreate();
- labelPixmap = osd->CreatePixmap(1, cRect(0, osdHeight - 50 - labelHeight, osdWidth, labelHeight));
- progressBarPixmap = osd->CreatePixmap(1, cRect(0, osdHeight - 50 - labelHeight - progressBarHeight, osdWidth, progressBarHeight));
+ labelPixmap = osd->CreatePixmap(1, cRect(0, osdHeight - labelHeight, osdWidth, labelHeight));
+ progressBarPixmap = osd->CreatePixmap(1, cRect(0, osdHeight - labelHeight - progressBarHeight - marginItem, osdWidth, progressBarHeight));
labelPixmap->Fill(Theme.Color(clrReplayBg));
progressBarPixmap->Fill(clrTransparent);
@@ -90,15 +90,52 @@ void cFlatDisplayReplay::SetMode(bool Play, bool Forward, int Speed) {
}
void cFlatDisplayReplay::DrawProgressBar(int Current, int Total) {
+ int top = progressBarHeight / 2 - 3;
int barFullWidth = progressBarPixmap->ViewPort().Width();
double percentLeft = ((double)Current) / (double)Total;
progressBarPixmap->Fill( clrTransparent );
if (Current > 0) {
- progressBarPixmap->DrawRectangle(cRect( 0, 2, barFullWidth, 2), Theme.Color(clrReplayProgressBg));
- progressBarPixmap->DrawRectangle(cRect( 0, 0, (barFullWidth * percentLeft), 6), Theme.Color(clrReplayProgressFg));
+ progressBarPixmap->DrawRectangle(cRect( 0, top + 2, barFullWidth, 2), Theme.Color(clrReplayProgressBg));
+ progressBarPixmap->DrawRectangle(cRect( 0, top, (barFullWidth * percentLeft), 6), Theme.Color(clrReplayProgressFg));
}
+ if( Total > 0 )
+ DrawProgressBarMarks(Current, Total);
+}
+
+void cFlatDisplayReplay::DrawProgressBarMarks(int Current, int Total) {
+ if( marks ) {
+ bool Start = true;
+ for( const cMark *m = marks->First(); m; m = marks->Next(m) ) {
+ int p1 = DrawProgressBarMarkPos( m->Position(), Total );
+ DrawProgressBarMark(p1, Start, m->Position() == Current);
+ Start = !Start;
+ }
+ }
+}
+
+int cFlatDisplayReplay::DrawProgressBarMarkPos(int P, int Total) {
+ return P * progressBarPixmap->ViewPort().Width() / Total;
+}
+
+void cFlatDisplayReplay::DrawProgressBarMark(int X, bool Start, bool Current)
+{
+ if( Start )
+ if( Current )
+ progressBarPixmap->DrawRectangle(cRect( X-5, 0, 10, 3), Theme.Color(clrReplayMarkCurrentFg));
+ else
+ progressBarPixmap->DrawRectangle(cRect( X-3, 0, 6, 3), Theme.Color(clrReplayMarkFg));
+ else
+ if( Current )
+ progressBarPixmap->DrawRectangle(cRect( X-5, progressBarHeight - 3, 10, 3), Theme.Color(clrReplayMarkCurrentFg));
+ else
+ progressBarPixmap->DrawRectangle(cRect( X-3, progressBarHeight - 3, 6, 3), Theme.Color(clrReplayMarkFg));
+
+ if( Current )
+ progressBarPixmap->DrawRectangle(cRect( X-1, 0, 2, progressBarHeight), Theme.Color(clrReplayMarkCurrentFg));
+ else
+ progressBarPixmap->DrawRectangle(cRect( X-1, 0, 2, progressBarHeight), Theme.Color(clrReplayMarkFg));
}
void cFlatDisplayReplay::SetProgress(int Current, int Total) {