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.
Fork of DMBasicGUI by
Application/Clickable.h@2:efae611de184, 2014-12-19 (annotated)
- Committer:
- embeddedartists
- Date:
- Fri Dec 19 07:37:24 2014 +0000
- Revision:
- 2:efae611de184
- Child:
- 6:7917b0894655
Added ImageButton and Clickable
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| embeddedartists | 2:efae611de184 | 1 | /* |
| embeddedartists | 2:efae611de184 | 2 | * Copyright 2014 Embedded Artists AB |
| embeddedartists | 2:efae611de184 | 3 | * |
| embeddedartists | 2:efae611de184 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| embeddedartists | 2:efae611de184 | 5 | * you may not use this file except in compliance with the License. |
| embeddedartists | 2:efae611de184 | 6 | * You may obtain a copy of the License at |
| embeddedartists | 2:efae611de184 | 7 | * |
| embeddedartists | 2:efae611de184 | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| embeddedartists | 2:efae611de184 | 9 | * |
| embeddedartists | 2:efae611de184 | 10 | * Unless required by applicable law or agreed to in writing, software |
| embeddedartists | 2:efae611de184 | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| embeddedartists | 2:efae611de184 | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| embeddedartists | 2:efae611de184 | 13 | * See the License for the specific language governing permissions and |
| embeddedartists | 2:efae611de184 | 14 | * limitations under the License. |
| embeddedartists | 2:efae611de184 | 15 | */ |
| embeddedartists | 2:efae611de184 | 16 | |
| embeddedartists | 2:efae611de184 | 17 | #ifndef CLICKABLE_H |
| embeddedartists | 2:efae611de184 | 18 | #define CLICKABLE_H |
| embeddedartists | 2:efae611de184 | 19 | |
| embeddedartists | 2:efae611de184 | 20 | #include "lpc_swim.h" |
| embeddedartists | 2:efae611de184 | 21 | |
| embeddedartists | 2:efae611de184 | 22 | /** |
| embeddedartists | 2:efae611de184 | 23 | * Clickable is an abstract base class for the Button and ImageButton. |
| embeddedartists | 2:efae611de184 | 24 | */ |
| embeddedartists | 2:efae611de184 | 25 | class Clickable { |
| embeddedartists | 2:efae611de184 | 26 | public: |
| embeddedartists | 2:efae611de184 | 27 | |
| embeddedartists | 2:efae611de184 | 28 | /** Creates a new clickable |
| embeddedartists | 2:efae611de184 | 29 | * |
| embeddedartists | 2:efae611de184 | 30 | * This clickable will use a SWIM window to draw on. That window will use |
| embeddedartists | 2:efae611de184 | 31 | * part of the full size frame buffer to draw on. |
| embeddedartists | 2:efae611de184 | 32 | * |
| embeddedartists | 2:efae611de184 | 33 | * @param fb the frame buffer |
| embeddedartists | 2:efae611de184 | 34 | * @param x the upper left corner of the button |
| embeddedartists | 2:efae611de184 | 35 | * @param y the upper left corner of the button |
| embeddedartists | 2:efae611de184 | 36 | * @param width the width of the button |
| embeddedartists | 2:efae611de184 | 37 | * @param height the height of the button |
| embeddedartists | 2:efae611de184 | 38 | */ |
| embeddedartists | 2:efae611de184 | 39 | Clickable(COLOR_T* fb, uint16_t x, uint16_t y, uint16_t width, uint16_t height); |
| embeddedartists | 2:efae611de184 | 40 | |
| embeddedartists | 2:efae611de184 | 41 | /** Set the function to call when clicked |
| embeddedartists | 2:efae611de184 | 42 | * |
| embeddedartists | 2:efae611de184 | 43 | * Note that this function can be called with NULL as func to unregister the |
| embeddedartists | 2:efae611de184 | 44 | * callback function. |
| embeddedartists | 2:efae611de184 | 45 | * |
| embeddedartists | 2:efae611de184 | 46 | * @param func the function to call |
| embeddedartists | 2:efae611de184 | 47 | * @param arc the argument to pass to the function when calling |
| embeddedartists | 2:efae611de184 | 48 | */ |
| embeddedartists | 2:efae611de184 | 49 | void setAction(void (*func)(uint32_t arg), uint32_t arg) { _func = func; _funcArg = arg; } |
| embeddedartists | 2:efae611de184 | 50 | |
| embeddedartists | 2:efae611de184 | 51 | /** Process the touch event |
| embeddedartists | 2:efae611de184 | 52 | * |
| embeddedartists | 2:efae611de184 | 53 | * This function will detect if and how the touch event affects it. |
| embeddedartists | 2:efae611de184 | 54 | * If the event causes a click then the registered |
| embeddedartists | 2:efae611de184 | 55 | * callback function is called before handle() returns. |
| embeddedartists | 2:efae611de184 | 56 | * |
| embeddedartists | 2:efae611de184 | 57 | * The return value is to let the caller now if the button should be |
| embeddedartists | 2:efae611de184 | 58 | * redrawn or not. |
| embeddedartists | 2:efae611de184 | 59 | * |
| embeddedartists | 2:efae611de184 | 60 | * @param x the touched x coordinate |
| embeddedartists | 2:efae611de184 | 61 | * @param y the touched y coordinate |
| embeddedartists | 2:efae611de184 | 62 | * @param pressed true if the user pressed the display |
| embeddedartists | 2:efae611de184 | 63 | * |
| embeddedartists | 2:efae611de184 | 64 | * @returns |
| embeddedartists | 2:efae611de184 | 65 | * true if the button should be redrawn |
| embeddedartists | 2:efae611de184 | 66 | * false if the event did not affect the button |
| embeddedartists | 2:efae611de184 | 67 | */ |
| embeddedartists | 2:efae611de184 | 68 | bool handle(uint16_t x, uint16_t y, bool pressed); |
| embeddedartists | 2:efae611de184 | 69 | |
| embeddedartists | 2:efae611de184 | 70 | /** Draws the button |
| embeddedartists | 2:efae611de184 | 71 | */ |
| embeddedartists | 2:efae611de184 | 72 | virtual void draw() = 0; |
| embeddedartists | 2:efae611de184 | 73 | |
| embeddedartists | 2:efae611de184 | 74 | protected: |
| embeddedartists | 2:efae611de184 | 75 | bool _enabled, _pressed; |
| embeddedartists | 2:efae611de184 | 76 | SWIM_WINDOW_T _win; |
| embeddedartists | 2:efae611de184 | 77 | |
| embeddedartists | 2:efae611de184 | 78 | private: |
| embeddedartists | 2:efae611de184 | 79 | void (*_func)(uint32_t arg); |
| embeddedartists | 2:efae611de184 | 80 | uint32_t _funcArg; |
| embeddedartists | 2:efae611de184 | 81 | }; |
| embeddedartists | 2:efae611de184 | 82 | |
| embeddedartists | 2:efae611de184 | 83 | #endif /* CLICKABLE_H */ |
