diff options
author | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2019-07-11 15:11:26 +0200 |
---|---|---|
committer | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2019-07-11 15:11:26 +0200 |
commit | bff9d78ff3751e35434594c5849c8ba4a085d9d1 (patch) | |
tree | ea121b8dd9898daf8d61fc7a644ae4f2704a7e32 /gridelement.c | |
parent | d21b1496f0f80732f290b39610253b857ad7a992 (diff) | |
download | vdr-plugin-tvguide-bff9d78ff3751e35434594c5849c8ba4a085d9d1.tar.gz vdr-plugin-tvguide-bff9d78ff3751e35434594c5849c8ba4a085d9d1.tar.bz2 |
Rename grid.* to gridelement.*
Diffstat (limited to 'gridelement.c')
-rw-r--r-- | gridelement.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/gridelement.c b/gridelement.c new file mode 100644 index 0000000..afc568e --- /dev/null +++ b/gridelement.c @@ -0,0 +1,82 @@ +#include "channelepg.h" +#include "gridelement.h" + +cGridElement::cGridElement(cChannelEpg *c) { + this->column = c; + text = new cTextWrapper(); + dirty = true; + active = false; + viewportHeight = 0; + borderWidth = 10; +} + +cGridElement::~cGridElement(void) { + delete text; +} + +void cGridElement::setBackground() { + if (active) { + color = theme.Color(clrHighlight); + colorBlending = theme.Color(clrHighlightBlending); + } else { + if (isColor1) { + color = theme.Color(clrGrid1); + colorBlending = theme.Color(clrGrid1Blending); + } else { + color = theme.Color(clrGrid2); + colorBlending = theme.Color(clrGrid2Blending); + } + } +} + +void cGridElement::Draw() { + if (!pixmap) { + return; + } + if (dirty) { + if (config.style == eStyleGraphical) { + drawBackgroundGraphical(bgGrid, active); + drawText(); + } else { + setBackground(); + drawBackground(); + drawText(); + drawBorder(); + } + pixmap->SetLayer(1); + dirty = false; + } +} + +bool cGridElement::isFirst(void) { + if (column->isFirst(this)) + return true; + return false; +} + +bool cGridElement::Match(time_t t) { + if ((StartTime() < t) && (EndTime() > t)) + return true; + else + return false; +} + +int cGridElement::calcOverlap(cGridElement *neighbor) { + int overlap = 0; + if (intersects(neighbor)) { + if ((StartTime() <= neighbor->StartTime()) && (EndTime() <= neighbor->EndTime())) { + overlap = EndTime() - neighbor->StartTime(); + } else if ((StartTime() >= neighbor->StartTime()) && (EndTime() >= neighbor->EndTime())) { + overlap = neighbor->EndTime() - StartTime(); + } else if ((StartTime() >= neighbor->StartTime()) && (EndTime() <= neighbor->EndTime())) { + overlap = Duration(); + } else if ((StartTime() <= neighbor->StartTime()) && (EndTime() >= neighbor->EndTime())) { + overlap = neighbor->EndTime() - neighbor->StartTime(); + } + } + return overlap; +} + +bool cGridElement::intersects(cGridElement *neighbor) { + return ! ( (neighbor->EndTime() <= StartTime()) || (neighbor->StartTime() >= EndTime()) ); +} |