summaryrefslogtreecommitdiff
path: root/grid.c
diff options
context:
space:
mode:
Diffstat (limited to 'grid.c')
-rw-r--r--grid.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/grid.c b/grid.c
new file mode 100644
index 0000000..b929eb3
--- /dev/null
+++ b/grid.c
@@ -0,0 +1,77 @@
+#include "channelcolumn.h"
+#include "grid.h"
+
+cGrid::cGrid(cChannelColumn *c) {
+ this->column = c;
+ text = new cTextWrapper();
+ dirty = true;
+ active = false;
+ viewportHeight = 0;
+ borderWidth = 10;
+}
+
+cGrid::~cGrid(void) {
+ delete text;
+}
+
+void cGrid::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 cGrid::Draw() {
+ if (!pixmap) {
+ return;
+ }
+ if (dirty) {
+ setBackground();
+ drawBackground();
+ drawText();
+ drawBorder();
+ pixmap->SetLayer(1);
+ dirty = false;
+ }
+}
+
+bool cGrid::isFirst(void) {
+ if (column->isFirst(this))
+ return true;
+ return false;
+}
+
+bool cGrid::Match(time_t t) {
+ if ((StartTime() < t) && (EndTime() > t))
+ return true;
+ else
+ return false;
+}
+
+int cGrid::calcOverlap(cGrid *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 cGrid::intersects(cGrid *neighbor) {
+ return ! ( (neighbor->EndTime() <= StartTime()) || (neighbor->StartTime() >= EndTime()) );
+}