Foundation classes for a basic GUI implementing simple widgets and events

Dependents:   TouchScreenGUIDemo

Committer:
duncanFrance
Date:
Mon Mar 28 10:47:39 2016 +0000
Revision:
5:b7ce5721a0b5
Parent:
1:48796b602c86
Child:
7:303850a4b30c
Added BitmapWidget

Who changed what in which revision?

UserRevisionLine numberNew contents of line
duncanFrance 0:0a590815d51c 1 #ifndef SIMPLEGUI_WIDGET_H
duncanFrance 0:0a590815d51c 2 #define SIMPLEGUI_WIDGET_H
duncanFrance 0:0a590815d51c 3
duncanFrance 0:0a590815d51c 4 #include "EventListener.h"
duncanFrance 0:0a590815d51c 5 #include "GraphicsDisplay.h"
duncanFrance 0:0a590815d51c 6
duncanFrance 0:0a590815d51c 7 /**
duncanFrance 0:0a590815d51c 8 * A basic widget draws itself in a rectangular area
duncanFrance 0:0a590815d51c 9 **/
duncanFrance 0:0a590815d51c 10
duncanFrance 0:0a590815d51c 11 class Widget : public EventListener {
duncanFrance 0:0a590815d51c 12
duncanFrance 0:0a590815d51c 13 public:
duncanFrance 0:0a590815d51c 14
duncanFrance 5:b7ce5721a0b5 15 Widget(GraphicsDisplay* display) : _display(display), _fg(Black), _bg(White), _x(0), _y(0), _width(0), _height(0) {}
duncanFrance 0:0a590815d51c 16
duncanFrance 1:48796b602c86 17 virtual bool isEventTarget(Event e) {
duncanFrance 1:48796b602c86 18 return e.screenX >= _x && e.screenX <= (_x+_width) && e.screenY >= _y && e.screenY <= (_y+_height);
duncanFrance 1:48796b602c86 19 }
duncanFrance 0:0a590815d51c 20
duncanFrance 0:0a590815d51c 21 virtual void setLocation(int x, int y) {
duncanFrance 0:0a590815d51c 22 _x = x;
duncanFrance 0:0a590815d51c 23 _y = y;
duncanFrance 0:0a590815d51c 24 }
duncanFrance 0:0a590815d51c 25
duncanFrance 0:0a590815d51c 26 virtual void setSize(int width, int height) {
duncanFrance 0:0a590815d51c 27 _width = width;
duncanFrance 0:0a590815d51c 28 _height = height;
duncanFrance 0:0a590815d51c 29 }
duncanFrance 0:0a590815d51c 30
duncanFrance 0:0a590815d51c 31 virtual int x() {
duncanFrance 0:0a590815d51c 32 return _x;
duncanFrance 0:0a590815d51c 33 }
duncanFrance 0:0a590815d51c 34
duncanFrance 0:0a590815d51c 35 virtual int y() {
duncanFrance 0:0a590815d51c 36 return _y;
duncanFrance 0:0a590815d51c 37 }
duncanFrance 0:0a590815d51c 38
duncanFrance 0:0a590815d51c 39 virtual int height() {
duncanFrance 0:0a590815d51c 40 return _height;
duncanFrance 0:0a590815d51c 41 }
duncanFrance 0:0a590815d51c 42
duncanFrance 0:0a590815d51c 43 virtual int width() {
duncanFrance 0:0a590815d51c 44 return _width;
duncanFrance 0:0a590815d51c 45 }
duncanFrance 0:0a590815d51c 46
duncanFrance 0:0a590815d51c 47 virtual void setForeground(uint16_t color) {
duncanFrance 0:0a590815d51c 48 _fg = color;
duncanFrance 0:0a590815d51c 49 }
duncanFrance 0:0a590815d51c 50
duncanFrance 1:48796b602c86 51 virtual void setBackground(uint16_t color) {
duncanFrance 0:0a590815d51c 52 _bg = color;
duncanFrance 0:0a590815d51c 53 }
duncanFrance 0:0a590815d51c 54
duncanFrance 0:0a590815d51c 55 virtual void draw() = 0;
duncanFrance 0:0a590815d51c 56
duncanFrance 0:0a590815d51c 57 void setHidden(bool hidden) {
duncanFrance 0:0a590815d51c 58 _hidden = hidden;
duncanFrance 0:0a590815d51c 59 }
duncanFrance 0:0a590815d51c 60
duncanFrance 0:0a590815d51c 61 bool isHidden() {
duncanFrance 0:0a590815d51c 62 return _hidden;
duncanFrance 0:0a590815d51c 63 }
duncanFrance 0:0a590815d51c 64
duncanFrance 0:0a590815d51c 65 protected:
duncanFrance 0:0a590815d51c 66
duncanFrance 5:b7ce5721a0b5 67 GraphicsDisplay* _display;
duncanFrance 5:b7ce5721a0b5 68 uint16_t _fg, _bg;
duncanFrance 5:b7ce5721a0b5 69 int _x,_y,_width,_height;
duncanFrance 0:0a590815d51c 70 bool _hidden;
duncanFrance 0:0a590815d51c 71
duncanFrance 0:0a590815d51c 72 };
duncanFrance 0:0a590815d51c 73
duncanFrance 0:0a590815d51c 74 #endif