Sample GUI for LPC4088. Base code to begin dev
Dependencies: DMBasicGUI DMSupport
Fork of lpc4088_displaymodule_shipped_demo by
AppLauncherSpecial.h@0:b94e330c98ac, 2015-03-20 (annotated)
- Committer:
- alindvall
- Date:
- Fri Mar 20 13:36:44 2015 +0000
- Revision:
- 0:b94e330c98ac
First version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alindvall | 0:b94e330c98ac | 1 | /* |
alindvall | 0:b94e330c98ac | 2 | * Copyright 2014 Embedded Artists AB |
alindvall | 0:b94e330c98ac | 3 | * |
alindvall | 0:b94e330c98ac | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
alindvall | 0:b94e330c98ac | 5 | * you may not use this file except in compliance with the License. |
alindvall | 0:b94e330c98ac | 6 | * You may obtain a copy of the License at |
alindvall | 0:b94e330c98ac | 7 | * |
alindvall | 0:b94e330c98ac | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
alindvall | 0:b94e330c98ac | 9 | * |
alindvall | 0:b94e330c98ac | 10 | * Unless required by applicable law or agreed to in writing, software |
alindvall | 0:b94e330c98ac | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
alindvall | 0:b94e330c98ac | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
alindvall | 0:b94e330c98ac | 13 | * See the License for the specific language governing permissions and |
alindvall | 0:b94e330c98ac | 14 | * limitations under the License. |
alindvall | 0:b94e330c98ac | 15 | */ |
alindvall | 0:b94e330c98ac | 16 | |
alindvall | 0:b94e330c98ac | 17 | #ifndef APP_LAUNCHER_SPECIAL_H |
alindvall | 0:b94e330c98ac | 18 | #define APP_LAUNCHER_SPECIAL_H |
alindvall | 0:b94e330c98ac | 19 | |
alindvall | 0:b94e330c98ac | 20 | #include "App.h" |
alindvall | 0:b94e330c98ac | 21 | #include "DMBoard.h" |
alindvall | 0:b94e330c98ac | 22 | #include "lpc_swim.h" |
alindvall | 0:b94e330c98ac | 23 | #include "Clickable.h" |
alindvall | 0:b94e330c98ac | 24 | #include "Image.h" |
alindvall | 0:b94e330c98ac | 25 | #include "Resource.h" |
alindvall | 0:b94e330c98ac | 26 | |
alindvall | 0:b94e330c98ac | 27 | /** |
alindvall | 0:b94e330c98ac | 28 | * An App example. This uses a number of buttons to launch different Apps. |
alindvall | 0:b94e330c98ac | 29 | * |
alindvall | 0:b94e330c98ac | 30 | * The purpose of this example is to demonstrate how to manage a set of |
alindvall | 0:b94e330c98ac | 31 | * Apps and launch them either as a result of clicked buttons or (in the |
alindvall | 0:b94e330c98ac | 32 | * case of the TouchCalibrationApp) after an extended press of the USER |
alindvall | 0:b94e330c98ac | 33 | * button on the back of the display module. |
alindvall | 0:b94e330c98ac | 34 | */ |
alindvall | 0:b94e330c98ac | 35 | class AppLauncherSpecial : public App { |
alindvall | 0:b94e330c98ac | 36 | public: |
alindvall | 0:b94e330c98ac | 37 | |
alindvall | 0:b94e330c98ac | 38 | AppLauncherSpecial(int iconWidth=64, int iconHeight=64); |
alindvall | 0:b94e330c98ac | 39 | virtual ~AppLauncherSpecial(); |
alindvall | 0:b94e330c98ac | 40 | |
alindvall | 0:b94e330c98ac | 41 | enum CommonApplicationIDs { |
alindvall | 0:b94e330c98ac | 42 | CalibrationApp = 0xffff, |
alindvall | 0:b94e330c98ac | 43 | }; |
alindvall | 0:b94e330c98ac | 44 | |
alindvall | 0:b94e330c98ac | 45 | virtual bool setup(); |
alindvall | 0:b94e330c98ac | 46 | virtual void runToCompletion(); |
alindvall | 0:b94e330c98ac | 47 | virtual bool teardown(); |
alindvall | 0:b94e330c98ac | 48 | |
alindvall | 0:b94e330c98ac | 49 | void setAppCreatorFunc(App*(*callback)(uint32_t buttonID)); |
alindvall | 0:b94e330c98ac | 50 | |
alindvall | 0:b94e330c98ac | 51 | bool addButton(uint32_t buttonID, const char* caption); |
alindvall | 0:b94e330c98ac | 52 | bool addImageButton(uint32_t buttonID, const char* imgUp, const char* imgDown = 0); |
alindvall | 0:b94e330c98ac | 53 | bool addImageButton(uint32_t buttonID, const unsigned char* imgUp, unsigned int imgUpSize, const unsigned char* imgDown = 0, unsigned int imgDownSize = 0); |
alindvall | 0:b94e330c98ac | 54 | bool addImageButton(uint32_t buttonID, const char* caption, COLOR_T color, const char* imgUp, const char* imgDown = 0); |
alindvall | 0:b94e330c98ac | 55 | bool addImageButton(uint32_t buttonID, const char* caption, COLOR_T color, const unsigned char* imgUp, unsigned int imgUpSize, const unsigned char* imgDown = 0, unsigned int imgDownSize = 0); |
alindvall | 0:b94e330c98ac | 56 | bool addImageButton(uint32_t buttonID, const char* caption, COLOR_T color, Resource* resUp, Resource* resDown = 0); |
alindvall | 0:b94e330c98ac | 57 | |
alindvall | 0:b94e330c98ac | 58 | enum Resources { |
alindvall | 0:b94e330c98ac | 59 | Resource_Background, |
alindvall | 0:b94e330c98ac | 60 | }; |
alindvall | 0:b94e330c98ac | 61 | |
alindvall | 0:b94e330c98ac | 62 | /** Specifies the resource to use |
alindvall | 0:b94e330c98ac | 63 | * |
alindvall | 0:b94e330c98ac | 64 | * Adds a resource for a specific id. This allows the |
alindvall | 0:b94e330c98ac | 65 | * user program to select e.g. which image to use and |
alindvall | 0:b94e330c98ac | 66 | * if it should be loaded from a file or an array. |
alindvall | 0:b94e330c98ac | 67 | * |
alindvall | 0:b94e330c98ac | 68 | * @param id the identifier |
alindvall | 0:b94e330c98ac | 69 | * @param res the resource |
alindvall | 0:b94e330c98ac | 70 | */ |
alindvall | 0:b94e330c98ac | 71 | void addResource(Resources id, Resource* res); |
alindvall | 0:b94e330c98ac | 72 | |
alindvall | 0:b94e330c98ac | 73 | private: |
alindvall | 0:b94e330c98ac | 74 | enum Constants { |
alindvall | 0:b94e330c98ac | 75 | TitleHeight = 20, |
alindvall | 0:b94e330c98ac | 76 | ButtonWidth = 75, |
alindvall | 0:b94e330c98ac | 77 | ButtonHeight = 75, |
alindvall | 0:b94e330c98ac | 78 | ButtonRows = 2, |
alindvall | 0:b94e330c98ac | 79 | ButtonColumns = 5, |
alindvall | 0:b94e330c98ac | 80 | NumberOfButtons = ButtonRows*ButtonColumns, |
alindvall | 0:b94e330c98ac | 81 | }; |
alindvall | 0:b94e330c98ac | 82 | |
alindvall | 0:b94e330c98ac | 83 | Display* _disp; |
alindvall | 0:b94e330c98ac | 84 | SWIM_WINDOW_T* _win; |
alindvall | 0:b94e330c98ac | 85 | void* _fb; |
alindvall | 0:b94e330c98ac | 86 | Clickable* _buttons[NumberOfButtons]; |
alindvall | 0:b94e330c98ac | 87 | int _usedButtons; |
alindvall | 0:b94e330c98ac | 88 | App*(*_callback)(uint32_t buttonID); |
alindvall | 0:b94e330c98ac | 89 | bool _supportsCalibration; |
alindvall | 0:b94e330c98ac | 90 | bool _newTouchEvent; |
alindvall | 0:b94e330c98ac | 91 | bool _newButtonEvent; |
alindvall | 0:b94e330c98ac | 92 | Image::ImageData_t _bgImg; |
alindvall | 0:b94e330c98ac | 93 | char _currentTime[30]; |
alindvall | 0:b94e330c98ac | 94 | Resource* _resBg; |
alindvall | 0:b94e330c98ac | 95 | int _iconWidth; |
alindvall | 0:b94e330c98ac | 96 | int _iconHeight; |
alindvall | 0:b94e330c98ac | 97 | |
alindvall | 0:b94e330c98ac | 98 | void draw(); |
alindvall | 0:b94e330c98ac | 99 | void onTouchEvent(); |
alindvall | 0:b94e330c98ac | 100 | void onButtonEvent(); |
alindvall | 0:b94e330c98ac | 101 | }; |
alindvall | 0:b94e330c98ac | 102 | |
alindvall | 0:b94e330c98ac | 103 | #endif |
alindvall | 0:b94e330c98ac | 104 | |
alindvall | 0:b94e330c98ac | 105 |