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 EmbeddedArtists AB

Committer:
embeddedartists
Date:
Fri Dec 19 09:12:51 2014 +0100
Revision:
3:3fabfe3339b8
Parent:
2:efae611de184
- Fixed bug in Clickable
- Fixed missing include in Image
- Updated to match the new TouchPanel interface

Who changed what in which revision?

UserRevisionLine numberNew 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