Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
widgets/EAButton.cpp@7:6cf21b018420, 2010-11-01 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |