From 71057b3a535ecb0bd743274201922ebc246ce287 Mon Sep 17 00:00:00 2001
From: Chris Tallon <chris@vomp.tv>
Date: Mon, 11 Jul 2005 23:09:48 +0000
Subject: [PATCH] Un-hardcoded all the colours

---
 Makefile          |  2 +-
 box.cc            | 29 ++++++++++++++++----------
 box.h             | 13 ++++++------
 colour.cc         | 47 +++++++++++++++++++++++++++++++++++++++++
 colour.h          | 53 +++++++++++++++++++++++++++++++++++++++++++++++
 command.cc        |  2 +-
 command.h         |  1 +
 vchannellist.cc   |  8 +++----
 vchannellist.h    |  1 +
 vchannelselect.cc | 14 ++++++-------
 vchannelselect.h  |  1 +
 view.cc           | 34 ++++++++----------------------
 view.h            | 15 +++++---------
 vinfo.cc          |  6 +++---
 vinfo.h           |  1 +
 vlivebanner.cc    |  6 +++---
 vlivebanner.h     |  1 +
 vmute.cc          |  2 +-
 vmute.h           |  1 +
 vquestion.cc      |  2 +-
 vquestion.h       |  1 +
 vradiolive.cc     |  2 +-
 vradiolive.h      |  1 +
 vrecordinglist.cc | 12 +++++------
 vrecordinglist.h  |  1 +
 vrecordingmenu.cc |  8 +++----
 vrecordingmenu.h  |  1 +
 vserverselect.cc  |  4 ++--
 vserverselect.h   |  1 +
 vvideolive.cc     |  3 ++-
 vvideolive.h      |  1 +
 vvideorec.cc      |  3 ++-
 vvideorec.h       |  1 +
 vvolume.cc        |  2 +-
 vvolume.h         |  1 +
 vwelcome.cc       |  6 +++---
 vwelcome.h        |  1 +
 wbutton.cc        | 23 ++++----------------
 wbutton.h         |  1 +
 wselectlist.cc    |  8 +++----
 wselectlist.h     |  1 +
 wsymbol.cc        |  2 +-
 wsymbol.h         |  1 +
 43 files changed, 208 insertions(+), 116 deletions(-)
 create mode 100644 colour.cc
 create mode 100644 colour.h

diff --git a/Makefile b/Makefile
index 38e2f06..21f0214 100644
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,7 @@ OBJECTS = main.o command.o log.o remote.o led.o mtd.o video.o audio.o tcp.o dire
           list.o queue.o node.o recording.o channel.o message.o playerradio.o messagequeue.o \
           view.o vinfo.o vwallpaper.o vvolume.o vrecordinglist.o vlivebanner.o vmute.o \
           vrecordingmenu.o vquestion.o vchannellist.o vwelcome.o vvideolive.o vvideorec.o vradiolive.o \
-          vchannelselect.o vserverselect.o \
+          vchannelselect.o vserverselect.o colour.o \
           wselectlist.o wjpeg.o wsymbol.o wbutton.o \
           fonts/helvB24.o fonts/helvB18.o
 
diff --git a/box.cc b/box.cc
index b15980b..9bd6c6e 100644
--- a/box.cc
+++ b/box.cc
@@ -90,12 +90,12 @@ int Box::getHeight()
 
 // Level 1 drawing functions
 
-void Box::fillColour(int r, int g, int b, int a)
+void Box::fillColour(Colour& colour)
 {
-  rectangle(0, 0, width, height, r, g, b, a);
+  rectangle(0, 0, width, height, colour);
 }
 
-void Box::drawPara(char* text, int x, int y, int r, int g, int b)
+void Box::drawPara(char* text, int x, int y, Colour& colour)
 {
   char line[256];
   int lineHeight = surface->getFontHeight() + 6;
@@ -158,7 +158,7 @@ void Box::drawPara(char* text, int x, int y, int r, int g, int b)
     line[linePos++] = '\0';
     if (printLine || (linePos > 1)) // if some text was put in line
     {
-      drawText(line, x, ypos, r, g, b);
+      drawText(line, x, ypos, colour);
       ypos += lineHeight;
       if (ypos > (height - lineHeight)) break;
     }
@@ -171,22 +171,29 @@ void Box::drawPara(char* text, int x, int y, int r, int g, int b)
 
 // Level 0 drawing functions
 
-void Box::rectangle(int x1, int y1, int width, int height, int r, int g, int b, int a)
+void Box::rectangle(int x1, int y1, int width, int height, Colour& colour)
 {
-  surface->fillblt(screenX + x1, screenY + y1, width, height, surface->rgba(r, g, b, a));
+  surface->fillblt(screenX + x1, screenY + y1, width, height, surface->rgba(colour.red, colour.green, colour.blue, colour.alpha));
 }
 
-void Box::drawText(char* text, int x, int y, int r, int g, int b)
+void Box::drawText(char* text, int x, int y, Colour& colour)
 {
-  surface->drawText(text, screenX + x, screenY + y, r, g, b);
+  surface->drawText(text, screenX + x, screenY + y, colour.red, colour.green, colour.blue);
 }
 
-void Box::drawTextRJ(char* text, int x, int y, int r, int g, int b)
+void Box::drawTextRJ(char* text, int x, int y, Colour& colour)
 {
-  surface->drawTextRJ(text, screenX + x, screenY + y, r, g, b);
+  surface->drawTextRJ(text, screenX + x, screenY + y, colour.red, colour.green, colour.blue);
 }
 
-void Box::drawPixel(int x, int y, int c)
+void Box::drawPixel(int x, int y, Colour& colour)
 {
+  int c;
+        c = (  (0xFF000000        )
+             | (colour.red  << 16)
+             | (colour.green  <<  8)
+             | (colour.blue     ) );
+
+
   surface->drawPixel(screenX + x, screenY + y, c);
 }
diff --git a/box.h b/box.h
index ee80e49..c9af906 100644
--- a/box.h
+++ b/box.h
@@ -24,6 +24,7 @@
 #include <stdio.h>
 
 #include "log.h"
+#include "colour.h"
 #include "surface.h"
 
 // Abstract ???????
@@ -40,14 +41,14 @@ class Box
     virtual void draw();
 
     // Drawing functions level 1
-    void fillColour(int r, int g, int b, int a);
-    void drawPara(char* text, int x, int y, int r, int g, int b);
+    void fillColour(Colour& colour);
+    void drawPara(char* text, int x, int y, Colour& colour);
 
     // Drawing functions level 0
-    void rectangle(int x1, int y1, int x2, int y2, int r, int g, int b, int a);
-    void drawText(char* text, int x, int y, int r, int g, int b);
-    void drawTextRJ(char* text, int x, int y, int r, int g, int b);
-    void drawPixel(int x, int y, int c);
+    void rectangle(int x1, int y1, int x2, int y2, Colour& colour);
+    void drawText(char* text, int x, int y, Colour& colour);
+    void drawTextRJ(char* text, int x, int y, Colour& colour);
+    void drawPixel(int x, int y, Colour& colour);
 
     int getScreenX();
     int getScreenY();
diff --git a/colour.cc b/colour.cc
new file mode 100644
index 0000000..c11377b
--- /dev/null
+++ b/colour.cc
@@ -0,0 +1,47 @@
+/*
+    Copyright 2005 Chris Tallon
+
+    This file is part of VOMP.
+
+    VOMP is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    VOMP is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with VOMP; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#include "colour.h"
+
+/*
+Real colours
+*/
+Colour Colour::VIDEOBLUE(0, 0, 150);
+Colour Colour::VIEWBACKGROUND(0, 0, 100);
+Colour Colour::TITLEBARBACKGROUND(0, 0, 200);
+Colour Colour::SELECTHIGHLIGHT(240, 250, 80);
+Colour Colour::LIGHTTEXT(255, 255, 255);
+Colour Colour::DARKTEXT(0, 0, 100);
+Colour Colour::DANGER(200, 0, 0);
+Colour Colour::BUTTONBACKGROUND(0, 0, 150);
+
+
+/*
+Silly colours
+
+Colour Colour::VIDEOBLUE(250, 0, 0);
+Colour Colour::VIEWBACKGROUND(100, 0, 100);
+Colour Colour::TITLEBARBACKGROUND(100, 0, 200);
+Colour Colour::SELECTHIGHLIGHT(240, 250, 180);
+Colour Colour::LIGHTTEXT(255, 0, 255);
+Colour Colour::DARKTEXT(0, 0, 255);
+Colour Colour::DANGER(200, 200, 0);
+Colour Colour::BUTTONBACKGROUND(255, 255, 255);
+*/
diff --git a/colour.h b/colour.h
new file mode 100644
index 0000000..f9b914b
--- /dev/null
+++ b/colour.h
@@ -0,0 +1,53 @@
+/*
+    Copyright 2005 Chris Tallon
+
+    This file is part of VOMP.
+
+    VOMP is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    VOMP is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with VOMP; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#ifndef COLOUR_H
+#define COLOUR_H
+
+class Colour
+{
+  public:
+    Colour()
+      { red = 0; green = 0; blue = 0; alpha = 255; }
+
+    Colour(int Tred, int Tgreen, int Tblue)
+      { red = Tred; green = Tgreen; blue = Tblue; alpha = 255; }
+
+    Colour(int Tred, int Tgreen, int Tblue, int Talpha)
+      { red = Tred; green = Tgreen; blue = Tblue; alpha = Talpha; }
+
+
+    int red;
+    int green;
+    int blue;
+    int alpha;
+
+    static Colour VIDEOBLUE;
+    static Colour VIEWBACKGROUND;
+    static Colour TITLEBARBACKGROUND;
+    static Colour SELECTHIGHLIGHT;
+    static Colour LIGHTTEXT;
+    static Colour DARKTEXT;
+    static Colour DANGER;
+    static Colour BUTTONBACKGROUND;
+
+};
+
+#endif
diff --git a/command.cc b/command.cc
index f438d88..fe7bd6c 100644
--- a/command.cc
+++ b/command.cc
@@ -87,7 +87,7 @@ void Command::run()
   // Blue background
   View* v = new View();
   v->setDimensions(SCREENHEIGHT, SCREENWIDTH);
-  v->setBackgroundColour(0, 0, 150, 255);
+  v->setBackgroundColour(Colour::VIDEOBLUE);
   v->draw();
   v->show();
   viewman->add(v);
diff --git a/command.h b/command.h
index 6cef15a..c7a0b56 100644
--- a/command.h
+++ b/command.h
@@ -48,6 +48,7 @@
 #include "vserverselect.h"
 #include "vwelcome.h"
 #include "vmute.h"
+#include "colour.h"
 
 class Command : public MessageQueue
 {
diff --git a/vchannellist.cc b/vchannellist.cc
index f1a818f..67291f5 100644
--- a/vchannellist.cc
+++ b/vchannellist.cc
@@ -25,7 +25,7 @@ VChannelList::VChannelList(ULONG type)
   setScreenPos(80, 70);
   setDimensions(420, 570);
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
   setTitleBarOn(1);
 
   if (type == VDR::VIDEO)
@@ -36,7 +36,7 @@ VChannelList::VChannelList(ULONG type)
   {
     setTitleText("Radio Stations");
   }
-  setTitleBarColour(0, 0, 200, 255);
+  setTitleBarColour(Colour::TITLEBARBACKGROUND);
 
   sl.setScreenPos(screenX + 10, screenY + 30 + 5);
   sl.setDimensions(height - 30 - 15 - 30, width - 20);
@@ -120,8 +120,8 @@ void VChannelList::doShowingBar()
   Box b;
   b.setScreenPos(screenX + 220, screenY + 385);
   b.setDimensions(25, 160);
-  b.fillColour(0, 0, 100, 255);
-  b.drawText(showing, 0, 0, 255, 255, 255);
+  b.fillColour(Colour::VIEWBACKGROUND);
+  b.drawText(showing, 0, 0, Colour::LIGHTTEXT);
 }
 
 int VChannelList::handleCommand(int command)
diff --git a/vchannellist.h b/vchannellist.h
index d45196c..c7b1973 100644
--- a/vchannellist.h
+++ b/vchannellist.h
@@ -34,6 +34,7 @@
 #include "channel.h"
 #include "vvideolive.h"
 #include "vradiolive.h"
+#include "colour.h"
 
 class VChannelList : public View
 {
diff --git a/vchannelselect.cc b/vchannelselect.cc
index b9e3c17..b0711e9 100644
--- a/vchannelselect.cc
+++ b/vchannelselect.cc
@@ -28,7 +28,7 @@ VChannelSelect::VChannelSelect(VVideoLive* v, int command)
   setDimensions(30, 53);
   setScreenPos(80, 60);
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
 
   first = -1;
   second = -1;
@@ -51,12 +51,12 @@ void VChannelSelect::draw()
     case 0 ... 9:
     {
       sprintf(text, "%i", first);
-      drawText(text, 7, 5, 255, 255, 255);
+      drawText(text, 7, 5, Colour::LIGHTTEXT);
       break;
     }
     case -1:
     {
-      drawText("_", 7, 5, 255, 255, 255);
+      drawText("_", 7, 5, Colour::LIGHTTEXT);
       break;
     }
   }
@@ -66,12 +66,12 @@ void VChannelSelect::draw()
     case 0 ... 9:
     {
       sprintf(text, "%i", second);
-      drawText(text, 20, 5, 255, 255, 255);
+      drawText(text, 20, 5, Colour::LIGHTTEXT);
       break;
     }
     case -1:
     {
-      drawText("_", 20, 5, 255, 255, 255);
+      drawText("_", 20, 5, Colour::LIGHTTEXT);
       break;
     }
   }
@@ -81,12 +81,12 @@ void VChannelSelect::draw()
     case 0 ... 9:
     {
       sprintf(text, "%i", third);
-      drawText(text, 33, 5, 255, 255, 255);
+      drawText(text, 33, 5, Colour::LIGHTTEXT);
       break;
     }
     case -1:
     {
-      drawText("_", 33, 5, 255, 255, 255);
+      drawText("_", 33, 5, Colour::LIGHTTEXT);
       break;
     }
   }
diff --git a/vchannelselect.h b/vchannelselect.h
index 0c0461b..cb95c6e 100644
--- a/vchannelselect.h
+++ b/vchannelselect.h
@@ -28,6 +28,7 @@
 #include "vvideolive.h"
 #include "message.h"
 #include "viewman.h"
+#include "colour.h"
 
 class VVideoLive;
 
diff --git a/view.cc b/view.cc
index e39115f..3a57030 100644
--- a/view.cc
+++ b/view.cc
@@ -33,16 +33,6 @@ View::View()
   delNSec = 0;
   seconds = 0;
 
-  backgroundR = 0;
-  backgroundG = 0;
-  backgroundB = 0;
-  backgroundA = 0;
-
-  titleBarR = 0;
-  titleBarG = 0;
-  titleBarB = 0;
-  titleBarA = 0;
-
   titleBarOn = 0;
   borderOn = 0;
 
@@ -72,18 +62,18 @@ void View::draw()
 
   if (borderOn)
   {
-    rectangle(0, 0, width, height, titleBarR, titleBarG, titleBarB, titleBarA);
-    rectangle(5, 5, width-10, height-10, backgroundR, backgroundG, backgroundB, backgroundA);
+    rectangle(0, 0, width, height, titleBarColour);
+    rectangle(5, 5, width-10, height-10, backgroundColour);
   }
   else
   {
-    fillColour(backgroundR, backgroundG, backgroundB, backgroundA);
+    fillColour(backgroundColour);
   }
 
   if (titleBarOn)
   {
-    rectangle(0, 0, width, 30, titleBarR, titleBarG, titleBarB, titleBarA);
-    if (titleText) drawText(titleText, 5, 5, 255, 255, 255);
+    rectangle(0, 0, width, 30, titleBarColour);
+    if (titleText) drawText(titleText, 5, 5, Colour::LIGHTTEXT);
   }
 }
 
@@ -96,20 +86,14 @@ void View::processMessage(Message* m)
 {
 }
 
-void View::setBackgroundColour(UCHAR r, UCHAR g, UCHAR b, UCHAR a)
+void View::setBackgroundColour(Colour& Tcolour)
 {
-  backgroundR = r;
-  backgroundG = g;
-  backgroundB = b;
-  backgroundA = a;
+  backgroundColour = Tcolour;
 }
 
-void View::setTitleBarColour(UCHAR r, UCHAR g, UCHAR b, UCHAR a)
+void View::setTitleBarColour(Colour& Tcolour)
 {
-  titleBarR = r;
-  titleBarG = g;
-  titleBarB = b;
-  titleBarA = a;
+  titleBarColour = Tcolour;
 }
 
 void View::setTitleBarOn(UCHAR on)
diff --git a/view.h b/view.h
index d70d566..a8f40c6 100644
--- a/view.h
+++ b/view.h
@@ -27,6 +27,7 @@
 #include "box.h"
 #include "defines.h"
 #include "message.h"
+#include "colour.h"
 
 class View : public Box
 {
@@ -40,8 +41,8 @@ class View : public Box
     void setBorderOn(UCHAR on);
     void setTitleBarOn(UCHAR on);
     void setTitleText(char* title);
-    void setBackgroundColour(UCHAR r, UCHAR g, UCHAR b, UCHAR a);
-    void setTitleBarColour(UCHAR r, UCHAR g, UCHAR b, UCHAR a);
+    void setBackgroundColour(Colour& colour);
+    void setTitleBarColour(Colour& colour);
 
     // For use by ViewMan
     long delSec;
@@ -54,10 +55,7 @@ class View : public Box
   private:
     static char numViews;
 
-    UCHAR backgroundR;
-    UCHAR backgroundG;
-    UCHAR backgroundB;
-    UCHAR backgroundA;
+    Colour backgroundColour;
 
     UCHAR titleBarOn;
     UCHAR borderOn;
@@ -65,10 +63,7 @@ class View : public Box
     char* titleText;
 
   protected:
-    UCHAR titleBarR;
-    UCHAR titleBarG;
-    UCHAR titleBarB;
-    UCHAR titleBarA;
+    Colour titleBarColour;
 };
 
 #endif
diff --git a/vinfo.cc b/vinfo.cc
index eb8a057..b227959 100644
--- a/vinfo.cc
+++ b/vinfo.cc
@@ -25,9 +25,9 @@ VInfo::VInfo()
   mainText = NULL;
   exitable = 0;
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
   setTitleBarOn(1);
-  setTitleBarColour(0, 0, 200, 255);
+  setTitleBarColour(Colour::TITLEBARBACKGROUND);
 }
 
 VInfo::~VInfo()
@@ -51,7 +51,7 @@ void VInfo::draw()
 {
   View::draw();
 
-  if (mainText) drawPara(mainText, 10, 45, 255, 255, 255);
+  if (mainText) drawPara(mainText, 10, 45, Colour::LIGHTTEXT);
 }
 
 int VInfo::handleCommand(int command)
diff --git a/vinfo.h b/vinfo.h
index 4c9ae37..6fa1382 100644
--- a/vinfo.h
+++ b/vinfo.h
@@ -27,6 +27,7 @@
 #include "defines.h"
 #include "view.h"
 #include "remote.h"
+#include "colour.h"
 
 class VInfo : public View
 {
diff --git a/vlivebanner.cc b/vlivebanner.cc
index 155b34a..871001d 100644
--- a/vlivebanner.cc
+++ b/vlivebanner.cc
@@ -25,10 +25,10 @@ VLiveBanner::VLiveBanner()
   setScreenPos(130, 370);
   setDimensions(120, 500);
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
   setTitleBarOn(1);
   setTitleText("The channel name");
-  setTitleBarColour(0, 0, 200, 255);
+  setTitleBarColour(Colour::TITLEBARBACKGROUND);
 
   sl.setScreenPos(screenX, screenY + 30);
   sl.setDimensions(height - 60, width);
@@ -55,7 +55,7 @@ void VLiveBanner::draw()
 
   View::draw();
   sl.draw();
-  rectangle(0, height - 30, width, 30, titleBarR, titleBarG, titleBarB, titleBarA);
+  rectangle(0, height - 30, width, 30, titleBarColour);
 }
 
 int VLiveBanner::handleCommand(int command)
diff --git a/vlivebanner.h b/vlivebanner.h
index 03267d5..b0701db 100644
--- a/vlivebanner.h
+++ b/vlivebanner.h
@@ -28,6 +28,7 @@
 #include "remote.h"
 #include "vdr.h"
 #include "wselectlist.h"
+#include "colour.h"
 
 class VLiveBanner : public View
 {
diff --git a/vmute.cc b/vmute.cc
index 00d6e24..3adc881 100644
--- a/vmute.cc
+++ b/vmute.cc
@@ -27,7 +27,7 @@ VMute::VMute()
   setDimensions(40, 40);
   setScreenPos(600, 500);
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
 }
 
 void VMute::draw()
diff --git a/vmute.h b/vmute.h
index b3d1f0c..60ef05e 100644
--- a/vmute.h
+++ b/vmute.h
@@ -27,6 +27,7 @@
 #include "remote.h"
 #include "audio.h"
 #include "wsymbol.h"
+#include "colour.h"
 
 class VMute : public View
 {
diff --git a/vquestion.cc b/vquestion.cc
index 075ff25..d4f5a83 100644
--- a/vquestion.cc
+++ b/vquestion.cc
@@ -50,7 +50,7 @@ void VQuestion::draw()
   buttonYes.setScreenPos(screenX + 40, screenY + 120);
   buttonNo.setScreenPos(screenX + 140, screenY + 120);
 
-  if (mainText) drawPara(mainText, 10, 45, 255, 255, 255);
+  if (mainText) drawPara(mainText, 10, 45, Colour::LIGHTTEXT);
   buttonYes.draw();
   buttonNo.draw();
 }
diff --git a/vquestion.h b/vquestion.h
index 7a0b857..e887491 100644
--- a/vquestion.h
+++ b/vquestion.h
@@ -28,6 +28,7 @@
 #include "wbutton.h"
 #include "remote.h"
 #include "viewman.h"
+#include "colour.h"
 
 class VQuestion : public View
 {
diff --git a/vradiolive.cc b/vradiolive.cc
index e941cff..9273437 100644
--- a/vradiolive.cc
+++ b/vradiolive.cc
@@ -29,7 +29,7 @@ VRadioLive::VRadioLive(List* tchanList)
   currentChannel = 0;
 
   setDimensions(100, 100);
-  setBackgroundColour(0, 0, 0, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
 }
 
 VRadioLive::~VRadioLive()
diff --git a/vradiolive.h b/vradiolive.h
index 00dc743..2b31e1e 100644
--- a/vradiolive.h
+++ b/vradiolive.h
@@ -30,6 +30,7 @@
 #include "channel.h"
 #include "viewman.h"
 #include "remote.h"
+#include "colour.h"
 
 class VRadioLive : public View
 {
diff --git a/vrecordinglist.cc b/vrecordinglist.cc
index 91979a2..05d82a9 100644
--- a/vrecordinglist.cc
+++ b/vrecordinglist.cc
@@ -25,9 +25,9 @@ VRecordingList::VRecordingList()
   setScreenPos(80, 70);
   setDimensions(420, 570);
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
   setTitleBarOn(1);
-  setTitleBarColour(0, 0, 200, 255);
+  setTitleBarColour(Colour::TITLEBARBACKGROUND);
 
   sl.setScreenPos(screenX + 10, screenY + 30 + 5);
   sl.setDimensions(height - 30 - 15 - 30, width - 20);
@@ -129,14 +129,14 @@ void VRecordingList::draw()
   w.draw();
 
   // FIXME Right justify this!
-  drawText("[ok] = menu", 450, 385, 255, 255, 255);
+  drawText("[ok] = menu", 450, 385, Colour::LIGHTTEXT);
 
   doShowingBar();
 
   char freeSpace[50];
   int gigFree = Directory::freeSpace / 1024;
   snprintf(freeSpace, 49, "%lu%%, %iGB free", Directory::usedPercent, gigFree);
-  drawTextRJ(freeSpace, 560, 5, 255, 255, 255);
+  drawTextRJ(freeSpace, 560, 5, Colour::LIGHTTEXT);
 }
 
 void VRecordingList::doShowingBar()
@@ -149,8 +149,8 @@ void VRecordingList::doShowingBar()
   Box b;
   b.setScreenPos(screenX + 220, screenY + 385);
   b.setDimensions(25, 160);
-  b.fillColour(0, 0, 100, 255);
-  b.drawText(showing, 0, 0, 255, 255, 255);
+  b.fillColour(Colour::VIEWBACKGROUND);
+  b.drawText(showing, 0, 0, Colour::LIGHTTEXT);
 }
 
 
diff --git a/vrecordinglist.h b/vrecordinglist.h
index 1d5425c..2044f40 100644
--- a/vrecordinglist.h
+++ b/vrecordinglist.h
@@ -35,6 +35,7 @@
 #include "vrecordingmenu.h"
 #include "vdr.h"
 #include "vvideorec.h"
+#include "colour.h"
 
 class VRecordingList : public View
 {
diff --git a/vrecordingmenu.cc b/vrecordingmenu.cc
index fc434e3..8e1d703 100644
--- a/vrecordingmenu.cc
+++ b/vrecordingmenu.cc
@@ -27,11 +27,11 @@ VRecordingMenu::VRecordingMenu()
   setScreenPos(260, 190);
   setDimensions(140, 200);
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
   setTitleBarOn(1);
   setBorderOn(1);
   setTitleText("Programme menu");
-  setTitleBarColour(0, 0, 200, 255);
+  setTitleBarColour(Colour::TITLEBARBACKGROUND);
 
   sl.setScreenPos(screenX + 10, screenY + 30 + 5);
   sl.setDimensions(height - 30 - 15, width - 20);
@@ -124,8 +124,8 @@ int VRecordingMenu::handleCommand(int command)
     {
       VQuestion* v = new VQuestion();
       v->setParent(this);
-      v->setBackgroundColour(0, 0, 100, 255);
-      v->setTitleBarColour(200, 0, 0, 255);
+      v->setBackgroundColour(Colour::VIEWBACKGROUND);
+      v->setTitleBarColour(Colour::DANGER);
       v->setTitleBarOn(1);
       v->setBorderOn(1);
       v->setTitleText("Delete recording");
diff --git a/vrecordingmenu.h b/vrecordingmenu.h
index 6fe269e..b21bd5a 100644
--- a/vrecordingmenu.h
+++ b/vrecordingmenu.h
@@ -33,6 +33,7 @@
 #include "message.h"
 #include "vinfo.h"
 #include "vdr.h"
+#include "colour.h"
 
 class VRecordingList;
 
diff --git a/vserverselect.cc b/vserverselect.cc
index 8a96bdc..0953541 100644
--- a/vserverselect.cc
+++ b/vserverselect.cc
@@ -30,9 +30,9 @@ VServerSelect::VServerSelect(std::vector<char*>* serverIPs, int* tselectServer)
 
   setDimensions(200, 300);
   setScreenPos(220, 200);
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
   setTitleBarOn(1);
-  setTitleBarColour(0, 0, 200, 255);
+  setTitleBarColour(Colour::TITLEBARBACKGROUND);
   setTitleText("Choose a VDR server");
 
   sl.setScreenPos(screenX + 10, screenY + 30 + 5);
diff --git a/vserverselect.h b/vserverselect.h
index c00b9ff..6655360 100644
--- a/vserverselect.h
+++ b/vserverselect.h
@@ -29,6 +29,7 @@
 #include "view.h"
 #include "remote.h"
 #include "wselectlist.h"
+#include "colour.h"
 
 class VServerSelect : public View
 {
diff --git a/vvideolive.cc b/vvideolive.cc
index c6da0eb..25b672f 100644
--- a/vvideolive.cc
+++ b/vvideolive.cc
@@ -29,7 +29,8 @@ VVideoLive::VVideoLive(List* tchanList)
   currentChannel = 0;
 
   setDimensions(SCREENHEIGHT, SCREENWIDTH);
-  setBackgroundColour(0, 0, 0, 0);
+  Colour transparent(0, 0, 0, 0);
+  setBackgroundColour(transparent);
 }
 
 VVideoLive::~VVideoLive()
diff --git a/vvideolive.h b/vvideolive.h
index 5664871..838d805 100644
--- a/vvideolive.h
+++ b/vvideolive.h
@@ -31,6 +31,7 @@
 #include "vlivebanner.h"
 #include "viewman.h"
 #include "vchannelselect.h"
+#include "colour.h"
 
 class VVideoLive : public View
 {
diff --git a/vvideorec.cc b/vvideorec.cc
index a1e8af0..793e481 100644
--- a/vvideorec.cc
+++ b/vvideorec.cc
@@ -29,7 +29,8 @@ VVideoRec::VVideoRec(Recording* rec)
   myRec = rec;
 
   setDimensions(SCREENHEIGHT, SCREENWIDTH);
-  setBackgroundColour(0, 0, 0, 0);
+  Colour transparent(0, 0, 0, 0);
+  setBackgroundColour(transparent);
 }
 
 VVideoRec::~VVideoRec()
diff --git a/vvideorec.h b/vvideorec.h
index 42ac6ad..872a18e 100644
--- a/vvideorec.h
+++ b/vvideorec.h
@@ -28,6 +28,7 @@
 #include "vdr.h"
 #include "recording.h"
 #include "command.h"
+#include "colour.h"
 
 class VVideoRec : public View
 {
diff --git a/vvolume.cc b/vvolume.cc
index d8cd838..348bf27 100644
--- a/vvolume.cc
+++ b/vvolume.cc
@@ -27,7 +27,7 @@ VVolume::VVolume()
   setDimensions(31, 227);
   setScreenPos(100, 499);
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
 }
 
 void VVolume::draw()
diff --git a/vvolume.h b/vvolume.h
index a5ea0b7..068f483 100644
--- a/vvolume.h
+++ b/vvolume.h
@@ -27,6 +27,7 @@
 #include "remote.h"
 #include "audio.h"
 #include "wsymbol.h"
+#include "colour.h"
 
 class VVolume : public View
 {
diff --git a/vwelcome.cc b/vwelcome.cc
index 1fb335e..2a950b6 100644
--- a/vwelcome.cc
+++ b/vwelcome.cc
@@ -25,9 +25,9 @@ VWelcome::VWelcome()
   setDimensions(190, 460);
   setScreenPos(140, 170);
 
-  setBackgroundColour(0, 0, 100, 255);
+  setBackgroundColour(Colour::VIEWBACKGROUND);
   setTitleBarOn(1);
-  setTitleBarColour(0, 0, 200, 255);
+  setTitleBarColour(Colour::TITLEBARBACKGROUND);
   setTitleText("Welcome");
 
   sl.setScreenPos(screenX + 20, screenY + 40);
@@ -58,7 +58,7 @@ void VWelcome::draw()
   struct tm* tm = localtime(&t);
   strftime(timeString, 19, "%H:%M", tm);
 
-  drawTextRJ(timeString, 450, 5, 255, 255, 255);
+  drawTextRJ(timeString, 450, 5, Colour::LIGHTTEXT);
 
   jpeg.init("/vdr.jpg");
   jpeg.draw();
diff --git a/vwelcome.h b/vwelcome.h
index fe5a52b..86ed434 100644
--- a/vwelcome.h
+++ b/vwelcome.h
@@ -35,6 +35,7 @@
 #include "vrecordinglist.h"
 #include "command.h"
 #include "message.h"
+#include "colour.h"
 
 class VWelcome : public View
 {
diff --git a/wbutton.cc b/wbutton.cc
index ccf322f..e8395a5 100644
--- a/wbutton.cc
+++ b/wbutton.cc
@@ -48,29 +48,14 @@ void WButton::setActive(UCHAR tactive)
 
 void WButton::draw()
 {
-  UCHAR r1, g1, b1, r2, g2, b2;
-
   if (active)
   {
-    r1 = 0;
-    g1 = 0;
-    b1 = 100;
-    r2 = 240;
-    g2 = 250;
-    b2 = 80;
+    fillColour(Colour::SELECTHIGHLIGHT);
+    drawText(mytext, 0, 0, Colour::DARKTEXT);
   }
   else
   {
-    r1 = 255;
-    g1 = 255;
-    b1 = 255;
-    r2 = 0;
-    g2 = 0;
-    b2 = 150;
+    fillColour(Colour::BUTTONBACKGROUND);
+    drawText(mytext, 0, 0, Colour::LIGHTTEXT);
   }
-
-  fillColour(r2, g2, b2, 255);
-  drawText(mytext, 0, 0, r1, g1, b1);
-
-
 }
diff --git a/wbutton.h b/wbutton.h
index f93c5c3..f93d9fe 100644
--- a/wbutton.h
+++ b/wbutton.h
@@ -26,6 +26,7 @@
 
 #include "defines.h"
 #include "box.h"
+#include "colour.h"
 
 class WButton : public Box
 {
diff --git a/wselectlist.cc b/wselectlist.cc
index de93a2e..c6e27f3 100644
--- a/wselectlist.cc
+++ b/wselectlist.cc
@@ -87,7 +87,7 @@ void WSelectList::draw()
 
 
 
-  fillColour(0, 0, 100, 255);
+  fillColour(Colour::VIEWBACKGROUND);
 
   int ypos = 5;
   for (int i = topOption; i < (topOption + numOptionsDisplayable); i++)
@@ -97,12 +97,12 @@ void WSelectList::draw()
 
     if (i == selectedOption)
     {
-      rectangle(0, ypos, width, fontHeight, 240, 250, 80, 255);
-      drawText(options[i], 5, ypos, 0, 0, 0);
+      rectangle(0, ypos, width, fontHeight, Colour::SELECTHIGHLIGHT);
+      drawText(options[i], 5, ypos, Colour::DARKTEXT);
     }
     else
     {
-      drawText(options[i], 5, ypos, 255, 255, 255);
+      drawText(options[i], 5, ypos, Colour::LIGHTTEXT);
     }
     ypos += ySeperation;
   }
diff --git a/wselectlist.h b/wselectlist.h
index 3dca0b7..66d8e28 100644
--- a/wselectlist.h
+++ b/wselectlist.h
@@ -25,6 +25,7 @@
 #include <string.h>
 
 #include "box.h"
+#include "colour.h"
 
 class WSelectList : public Box
 {
diff --git a/wsymbol.cc b/wsymbol.cc
index 4315f98..1d02df4 100644
--- a/wsymbol.cc
+++ b/wsymbol.cc
@@ -556,7 +556,7 @@ void WSymbol::draw()
 
       if ((base[bytesIn] >> (7 - bitsIn)) & 0x01)
       {
-        drawPixel(x, y, 0xFFFFFFFF);
+        drawPixel(x, y, Colour::LIGHTTEXT);
       }
     }
   }
diff --git a/wsymbol.h b/wsymbol.h
index c7e66ea..5b0eb79 100644
--- a/wsymbol.h
+++ b/wsymbol.h
@@ -23,6 +23,7 @@
 
 #include "defines.h"
 #include "box.h"
+#include "colour.h"
 
 class WSymbol : public Box
 {
-- 
2.39.5