A basic graphics package for the LPC4088 Display Module.
Dependents: lpc4088_displaymodule_demo_sphere sampleGUI sampleEmptyGUI lpc4088_displaymodule_fs_aid ... more
Fork of DMBasicGUI by
Application/Clickable.cpp@22:f0d00f29bfeb, 2019-11-04 (annotated)
- Committer:
- embeddedartists
- Date:
- Mon Nov 04 14:31:50 2019 +0000
- Revision:
- 22:f0d00f29bfeb
- Parent:
- 3:3fabfe3339b8
More updates related to mbed OS 5
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 | #include "Clickable.h" |
embeddedartists | 2:efae611de184 | 18 | #include "mbed.h" |
embeddedartists | 2:efae611de184 | 19 | #include "DMBoard.h" |
embeddedartists | 2:efae611de184 | 20 | |
embeddedartists | 2:efae611de184 | 21 | #include "lpc_swim_font.h" |
embeddedartists | 2:efae611de184 | 22 | |
embeddedartists | 2:efae611de184 | 23 | Clickable::Clickable(COLOR_T* fb, uint16_t x, uint16_t y, uint16_t width, uint16_t height) |
embeddedartists | 2:efae611de184 | 24 | { |
embeddedartists | 2:efae611de184 | 25 | _enabled = true; |
embeddedartists | 2:efae611de184 | 26 | _pressed = false; |
embeddedartists | 2:efae611de184 | 27 | _func = NULL; |
embeddedartists | 2:efae611de184 | 28 | |
embeddedartists | 2:efae611de184 | 29 | Display* disp = DMBoard::instance().display(); |
embeddedartists | 2:efae611de184 | 30 | |
embeddedartists | 2:efae611de184 | 31 | swim_window_open_noclear( |
embeddedartists | 2:efae611de184 | 32 | &_win, |
embeddedartists | 2:efae611de184 | 33 | disp->width(), disp->height(), // full size |
embeddedartists | 2:efae611de184 | 34 | fb, |
embeddedartists | 2:efae611de184 | 35 | x, y, x+width-1, y+height-1, // window position and size |
embeddedartists | 2:efae611de184 | 36 | 0, // border |
embeddedartists | 2:efae611de184 | 37 | BLACK, BLACK, BLACK); // colors: pen, backgr, forgr |
embeddedartists | 2:efae611de184 | 38 | } |
embeddedartists | 2:efae611de184 | 39 | |
embeddedartists | 2:efae611de184 | 40 | bool Clickable::handle(uint16_t x, uint16_t y, bool pressed) |
embeddedartists | 2:efae611de184 | 41 | { |
embeddedartists | 2:efae611de184 | 42 | bool needsRepaint = false; |
embeddedartists | 2:efae611de184 | 43 | if (_enabled) { |
embeddedartists | 2:efae611de184 | 44 | if (!pressed && _pressed) { |
embeddedartists | 2:efae611de184 | 45 | // user released => click |
embeddedartists | 2:efae611de184 | 46 | needsRepaint = true; |
embeddedartists | 2:efae611de184 | 47 | _pressed = false; |
embeddedartists | 2:efae611de184 | 48 | if (_func != NULL) { |
embeddedartists | 2:efae611de184 | 49 | _func(_funcArg); |
embeddedartists | 2:efae611de184 | 50 | } |
embeddedartists | 2:efae611de184 | 51 | } |
embeddedartists | 2:efae611de184 | 52 | else if ((x >= _win.xpmin) && (y >= _win.ypmin) && (x <= _win.xpmax) && (y <= _win.ypmax)) { |
embeddedartists | 2:efae611de184 | 53 | if (pressed && !_pressed) { |
embeddedartists | 2:efae611de184 | 54 | // user pressing inside area |
embeddedartists | 2:efae611de184 | 55 | needsRepaint = true; |
embeddedartists | 2:efae611de184 | 56 | _pressed = true; |
embeddedartists | 2:efae611de184 | 57 | } |
embeddedartists | 2:efae611de184 | 58 | } |
embeddedartists | 2:efae611de184 | 59 | else if (_pressed) { |
embeddedartists | 2:efae611de184 | 60 | // pressed but moved outside of the button area |
embeddedartists | 2:efae611de184 | 61 | needsRepaint = true; |
embeddedartists | 3:3fabfe3339b8 | 62 | _pressed = false; |
embeddedartists | 2:efae611de184 | 63 | } |
embeddedartists | 2:efae611de184 | 64 | } |
embeddedartists | 2:efae611de184 | 65 | return needsRepaint; |
embeddedartists | 2:efae611de184 | 66 | } |
embeddedartists | 2:efae611de184 | 67 |