summaryrefslogtreecommitdiff
path: root/plugingui/led.cc
diff options
context:
space:
mode:
Diffstat (limited to 'plugingui/led.cc')
-rw-r--r--plugingui/led.cc50
1 files changed, 39 insertions, 11 deletions
diff --git a/plugingui/led.cc b/plugingui/led.cc
index a32dcb9..d26a0de 100644
--- a/plugingui/led.cc
+++ b/plugingui/led.cc
@@ -28,35 +28,63 @@
#include "painter.h"
-LED::LED(GlobalContext *gctx, Widget *parent)
- : Widget(gctx, parent)
+GUI::LED::LED(Widget *parent)
+ : GUI::Widget(parent)
{
- state = true;
+ state = off;
}
-void LED::setState(bool state)
+void GUI::LED::setState(GUI::LED::state_t state)
{
if(this->state != state) {
this->state = state;
- repaint(NULL);
+ repaintEvent(NULL);
}
}
-void LED::repaint(RepaintEvent *e)
+void GUI::LED::repaintEvent(GUI::RepaintEvent *e)
{
size_t h = height() - 1;
size_t w = width() - 1;
- Painter p(gctx, wctx);
-
- if(state) p.setColour(Colour(0,1,0));
- else p.setColour(Colour(1,0,0));
+ Painter p(this);
+ float alpha = 0.9;
+ switch(state) {
+ case red:
+ p.setColour(Colour(1, 0, 0,alpha));
+ break;
+ case green:
+ p.setColour(Colour(0, 1, 0, alpha));
+ break;
+ case blue:
+ p.setColour(Colour(0, 0, 1, alpha));
+ break;
+ case off:
+ p.setColour(Colour(0.2, 0.2, 0.2, alpha));
+ break;
+ }
size_t size = w / 2;
if(h / 2 < size) size = h / 2;
p.drawFilledCircle(w/2, h/2, size);
- p.setColour(Colour(1));
+ switch(state) {
+ case red:
+ p.setColour(Colour(0.4, 0, 0,alpha));
+ break;
+ case green:
+ p.setColour(Colour(0, 0.4, 0, alpha));
+ break;
+ case blue:
+ p.setColour(Colour(0, 0, 0.4, alpha));
+ break;
+ case off:
+ p.setColour(Colour(0.1, 0.1, 0.1, alpha));
+ break;
+ }
+ p.drawCircle(w/2, h/2, size);
+
+ p.setColour(Colour(1,alpha));
p.drawFilledCircle(w/3, h/3, size / 6);
}