Diplay the current TimeBase throughout the whole timeline

This commit is contained in:
kamel5 2019-10-13 14:13:41 +02:00
parent 3f0bd75011
commit cd62a9bd6b

View File

@ -4,6 +4,7 @@
cTimeLine::cTimeLine(cTimeManager *timeManager) { cTimeLine::cTimeLine(cTimeManager *timeManager) {
this->timeManager = timeManager; this->timeManager = timeManager;
lastClock = ""; lastClock = "";
timeBase = NULL;
if (config.displayMode == eVertical) { if (config.displayMode == eVertical) {
dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(0, dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(0,
geoManager.statusHeaderHeight + geoManager.clockHeight, geoManager.statusHeaderHeight + geoManager.clockHeight,
@ -16,11 +17,7 @@ cTimeLine::cTimeLine(cTimeManager *timeManager) {
, cRect(0, , cRect(0,
0, 0,
geoManager.timeLineWidth, geoManager.timeLineWidth,
1440*geoManager.minutePixel)); 1440 * geoManager.minutePixel));
timeBase = osdManager.requestPixmap(3, cRect(0,
geoManager.statusHeaderHeight + geoManager.channelGroupsHeight + geoManager.channelHeaderHeight,
geoManager.osdWidth,
geoManager.timeLineGridHeight));
} else if (config.displayMode == eHorizontal) { } else if (config.displayMode == eHorizontal) {
dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(geoManager.clockWidth, dateViewer = new cStyledPixmap(osdManager.requestPixmap(1, cRect(geoManager.clockWidth,
geoManager.statusHeaderHeight, geoManager.statusHeaderHeight,
@ -32,14 +29,9 @@ cTimeLine::cTimeLine(cTimeManager *timeManager) {
geoManager.timeLineHeight) geoManager.timeLineHeight)
, cRect(0, , cRect(0,
0, 0,
1440*geoManager.minutePixel, 1440 * geoManager.minutePixel,
geoManager.timeLineHeight)); geoManager.timeLineHeight));
timeBase = osdManager.requestPixmap(3, cRect(geoManager.channelGroupsWidth + geoManager.channelHeaderWidth,
geoManager.statusHeaderHeight,
geoManager.timeLineGridWidth,
geoManager.timeLineHeight + config.channelRows * geoManager.rowHeight));
} }
timeBase->Fill(clrTransparent);
int clockY; int clockY;
int clockX; int clockX;
if (config.displayMode == eVertical) { if (config.displayMode == eVertical) {
@ -57,10 +49,11 @@ cTimeLine::cTimeLine(cTimeManager *timeManager) {
} }
cTimeLine::~cTimeLine(void) { cTimeLine::~cTimeLine(void) {
delete dateViewer;
osdManager.releasePixmap(timeline);
if (clock) if (clock)
delete clock; delete clock;
osdManager.releasePixmap(timeBase);
osdManager.releasePixmap(timeline);
delete dateViewer;
} }
void cTimeLine::drawDateViewer() { void cTimeLine::drawDateViewer() {
@ -207,19 +200,30 @@ void cTimeLine::drawRoundedCorners(int posX, int posY, int width, int height, in
} }
void cTimeLine::drawCurrentTimeBase(void) { void cTimeLine::drawCurrentTimeBase(void) {
timeBase->Fill(clrTransparent); if (!timeManager->NowVisible()) {
bool nowVisible = timeManager->NowVisible(); if (timeBase)
if (!nowVisible) timeBase->Fill(clrTransparent);
return; return;
int deltaTime = (timeManager->GetNow() - timeManager->GetStart()) / 60 * geoManager.minutePixel;
if (config.displayMode == eVertical) {
timeBase->DrawRectangle(cRect(0, deltaTime - 2, timeBase->ViewPort().Width(), 4), theme.Color(clrTimeBase));
} else {
timeBase->DrawRectangle(cRect(deltaTime-2, 0, 4, timeBase->ViewPort().Height()), theme.Color(clrTimeBase));
} }
osdManager.releasePixmap(timeBase);
int deltaTime = (timeManager->GetNow() - timeManager->GetStart()) / 60 * geoManager.minutePixel;
int x1, x2, y1, y2;
if (config.displayMode == eVertical) {
x1 = 0;
y1 = geoManager.statusHeaderHeight + geoManager.channelGroupsHeight + geoManager.channelHeaderHeight + deltaTime - 2;
x2 = geoManager.osdWidth;
y2 = 4;
} else {
x1 = geoManager.channelGroupsWidth + geoManager.channelHeaderWidth + deltaTime - 2;
y1 = geoManager.statusHeaderHeight;
x2 = 4;
y2 = geoManager.timeLineHeight + config.channelRows * geoManager.rowHeight;
}
timeBase = osdManager.requestPixmap(3, cRect(x1, y1, x2, y2));
timeBase->Fill(clrTransparent);
timeBase->DrawRectangle(cRect(0, 0, timeBase->ViewPort().Width(), timeBase->ViewPort().Height()), theme.Color(clrTimeBase));
} }
cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend) { cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend) {
cImage *image = NULL; cImage *image = NULL;
if (config.style == eStyleBlendingDefault) { if (config.style == eStyleBlendingDefault) {