summaryrefslogtreecommitdiff
path: root/gridelement.c
diff options
context:
space:
mode:
authorkamel5 <vdr.kamel5 (at) gmx (dot) net>2019-07-11 15:11:26 +0200
committerkamel5 <vdr.kamel5 (at) gmx (dot) net>2019-07-11 15:11:26 +0200
commitbff9d78ff3751e35434594c5849c8ba4a085d9d1 (patch)
treeea121b8dd9898daf8d61fc7a644ae4f2704a7e32 /gridelement.c
parentd21b1496f0f80732f290b39610253b857ad7a992 (diff)
downloadvdr-plugin-tvguide-bff9d78ff3751e35434594c5849c8ba4a085d9d1.tar.gz
vdr-plugin-tvguide-bff9d78ff3751e35434594c5849c8ba4a085d9d1.tar.bz2
Rename grid.* to gridelement.*
Diffstat (limited to 'gridelement.c')
-rw-r--r--gridelement.c82
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()) );
+}