Richard Parker / EALCD
Committer:
richardparker
Date:
Mon Nov 01 13:07:40 2010 +0000
Revision:
7:6cf21b018420
Parent:
3:24fbf4dbd7e5
Embedded Artists LCD panel:- Version 0.7

Who changed what in which revision?

UserRevisionLine numberNew contents of line
richardparker 3:24fbf4dbd7e5 1 // Copyright 2010 Richard Parker
richardparker 3:24fbf4dbd7e5 2
richardparker 3:24fbf4dbd7e5 3 #include "mbed.h"
richardparker 3:24fbf4dbd7e5 4
richardparker 3:24fbf4dbd7e5 5 #include "EAButton.h"
richardparker 3:24fbf4dbd7e5 6
richardparker 3:24fbf4dbd7e5 7 #include "../manager/EATouchManager.h"
richardparker 3:24fbf4dbd7e5 8 #include "../manager/EAHitBox.h"
richardparker 3:24fbf4dbd7e5 9 #include "../manager/EAHitHandler.h"
richardparker 3:24fbf4dbd7e5 10 #include "../graphics/EAPen.h"
richardparker 3:24fbf4dbd7e5 11 #include "../graphics/EAColor.h"
richardparker 3:24fbf4dbd7e5 12 #include "../screen/EALCD.h"
richardparker 3:24fbf4dbd7e5 13
richardparker 3:24fbf4dbd7e5 14 EAButton::EAButton( EATouchManager& manager,
richardparker 3:24fbf4dbd7e5 15 short x,
richardparker 3:24fbf4dbd7e5 16 short y,
richardparker 3:24fbf4dbd7e5 17 unsigned short width,
richardparker 3:24fbf4dbd7e5 18 unsigned short height,
richardparker 3:24fbf4dbd7e5 19 char* text,
richardparker 3:24fbf4dbd7e5 20 EAHitHandler* handler)
richardparker 3:24fbf4dbd7e5 21 : _manager(manager),
richardparker 3:24fbf4dbd7e5 22 _box(NULL),
richardparker 3:24fbf4dbd7e5 23 _text(NULL)
richardparker 3:24fbf4dbd7e5 24 {
richardparker 3:24fbf4dbd7e5 25 _updateHitBox();
richardparker 3:24fbf4dbd7e5 26
richardparker 3:24fbf4dbd7e5 27 setX(x);
richardparker 3:24fbf4dbd7e5 28 setY(y);
richardparker 3:24fbf4dbd7e5 29 setWidth(width);
richardparker 3:24fbf4dbd7e5 30 setHeight(height);
richardparker 3:24fbf4dbd7e5 31 setText(text);
richardparker 3:24fbf4dbd7e5 32 setHandler(handler);
richardparker 3:24fbf4dbd7e5 33 }
richardparker 3:24fbf4dbd7e5 34
richardparker 3:24fbf4dbd7e5 35 EAButton::~EAButton()
richardparker 3:24fbf4dbd7e5 36 {
richardparker 3:24fbf4dbd7e5 37 // If created box then delete from manager.
richardparker 3:24fbf4dbd7e5 38 if (_box != NULL)
richardparker 3:24fbf4dbd7e5 39 {
richardparker 3:24fbf4dbd7e5 40 _manager.deleteHitBox(_box);
richardparker 3:24fbf4dbd7e5 41 _box = NULL;
richardparker 7:6cf21b018420 42 }
richardparker 3:24fbf4dbd7e5 43 }
richardparker 3:24fbf4dbd7e5 44
richardparker 3:24fbf4dbd7e5 45 void EAButton::paint(EALCD& lcd)
richardparker 3:24fbf4dbd7e5 46 {
richardparker 3:24fbf4dbd7e5 47 lcd.drawFilledRect(x(), y(), width(), height());
richardparker 7:6cf21b018420 48 if (_text.empty() == false)
richardparker 3:24fbf4dbd7e5 49 {
richardparker 3:24fbf4dbd7e5 50 lcd.drawText(x()+10, y()+10, _text);
richardparker 3:24fbf4dbd7e5 51 }
richardparker 3:24fbf4dbd7e5 52 }
richardparker 3:24fbf4dbd7e5 53
richardparker 7:6cf21b018420 54 bool EAButton::setText(const std::string& text)
richardparker 7:6cf21b018420 55 {
richardparker 7:6cf21b018420 56 _text = text;
richardparker 3:24fbf4dbd7e5 57
richardparker 3:24fbf4dbd7e5 58 return true;
richardparker 3:24fbf4dbd7e5 59 }
richardparker 3:24fbf4dbd7e5 60
richardparker 3:24fbf4dbd7e5 61 void EAButton::_updateHitBox()
richardparker 3:24fbf4dbd7e5 62 {
richardparker 3:24fbf4dbd7e5 63 if (_box == NULL)
richardparker 3:24fbf4dbd7e5 64 {
richardparker 3:24fbf4dbd7e5 65 // Create the hitbox.
richardparker 3:24fbf4dbd7e5 66 _box = _manager.createHitBox();
richardparker 3:24fbf4dbd7e5 67 }
richardparker 3:24fbf4dbd7e5 68
richardparker 3:24fbf4dbd7e5 69 // Update the position of the hit box to match the size and position of the
richardparker 3:24fbf4dbd7e5 70 // drawn button.
richardparker 3:24fbf4dbd7e5 71 if (_box != NULL)
richardparker 3:24fbf4dbd7e5 72 {
richardparker 3:24fbf4dbd7e5 73 _box->setX(x());
richardparker 3:24fbf4dbd7e5 74 _box->setY(y());
richardparker 3:24fbf4dbd7e5 75 _box->setWidth(width());
richardparker 3:24fbf4dbd7e5 76 _box->setHeight(height());
richardparker 3:24fbf4dbd7e5 77 }
richardparker 3:24fbf4dbd7e5 78 }
richardparker 3:24fbf4dbd7e5 79
richardparker 3:24fbf4dbd7e5 80 EAHitHandler* EAButton::handler() const
richardparker 3:24fbf4dbd7e5 81 {
richardparker 3:24fbf4dbd7e5 82 if (_box != NULL)
richardparker 3:24fbf4dbd7e5 83 {
richardparker 3:24fbf4dbd7e5 84 return _box->handler();
richardparker 3:24fbf4dbd7e5 85 } else {
richardparker 3:24fbf4dbd7e5 86 return NULL;
richardparker 3:24fbf4dbd7e5 87 }
richardparker 3:24fbf4dbd7e5 88 }
richardparker 3:24fbf4dbd7e5 89
richardparker 3:24fbf4dbd7e5 90 void EAButton::setHandler(EAHitHandler* handler)
richardparker 3:24fbf4dbd7e5 91 {
richardparker 3:24fbf4dbd7e5 92 if (_box != NULL)
richardparker 3:24fbf4dbd7e5 93 {
richardparker 3:24fbf4dbd7e5 94 _box->setHandler(handler);
richardparker 3:24fbf4dbd7e5 95 }
richardparker 3:24fbf4dbd7e5 96 }
richardparker 3:24fbf4dbd7e5 97
richardparker 3:24fbf4dbd7e5 98 bool EAButton::enabled() const
richardparker 3:24fbf4dbd7e5 99 {
richardparker 3:24fbf4dbd7e5 100 if (_box != NULL)
richardparker 3:24fbf4dbd7e5 101 {
richardparker 3:24fbf4dbd7e5 102 return _box->enabled();
richardparker 3:24fbf4dbd7e5 103 } else {
richardparker 3:24fbf4dbd7e5 104 return false;
richardparker 3:24fbf4dbd7e5 105 }
richardparker 3:24fbf4dbd7e5 106 }
richardparker 3:24fbf4dbd7e5 107
richardparker 3:24fbf4dbd7e5 108 void EAButton::setEnabled(bool yes)
richardparker 3:24fbf4dbd7e5 109 {
richardparker 3:24fbf4dbd7e5 110 if (_box != NULL)
richardparker 3:24fbf4dbd7e5 111 {
richardparker 3:24fbf4dbd7e5 112 _box->setEnabled(yes);
richardparker 3:24fbf4dbd7e5 113 }
richardparker 3:24fbf4dbd7e5 114 }