Sample GUI for LPC4088. Base code to begin dev

Dependencies:   DMBasicGUI DMSupport

Fork of lpc4088_displaymodule_shipped_demo by Embedded Artists

Revision:
0:b94e330c98ac
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AppLauncherSpecial.h	Fri Mar 20 13:36:44 2015 +0000
@@ -0,0 +1,105 @@
+/*
+ *  Copyright 2014 Embedded Artists AB
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+ 
+#ifndef APP_LAUNCHER_SPECIAL_H
+#define APP_LAUNCHER_SPECIAL_H
+
+#include "App.h"
+#include "DMBoard.h"
+#include "lpc_swim.h"
+#include "Clickable.h"
+#include "Image.h"
+#include "Resource.h"
+
+/**
+ * An App example. This uses a number of buttons to launch different Apps.
+ *
+ * The purpose of this example is to demonstrate how to manage a set of
+ * Apps and launch them either as a result of clicked buttons or (in the 
+ * case of the TouchCalibrationApp) after an extended press of the USER
+ * button on the back of the display module.
+ */
+class AppLauncherSpecial : public App {
+public:
+
+	AppLauncherSpecial(int iconWidth=64, int iconHeight=64);
+	virtual ~AppLauncherSpecial();
+
+    enum CommonApplicationIDs {
+        CalibrationApp = 0xffff,
+    };
+
+    virtual bool setup();
+    virtual void runToCompletion();
+    virtual bool teardown();
+
+    void setAppCreatorFunc(App*(*callback)(uint32_t buttonID));
+
+    bool addButton(uint32_t buttonID, const char* caption);
+    bool addImageButton(uint32_t buttonID, const char* imgUp, const char* imgDown = 0);
+    bool addImageButton(uint32_t buttonID, const unsigned char* imgUp, unsigned int imgUpSize, const unsigned char* imgDown = 0, unsigned int imgDownSize = 0);
+    bool addImageButton(uint32_t buttonID, const char* caption, COLOR_T color, const char* imgUp, const char* imgDown = 0);
+    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);
+    bool addImageButton(uint32_t buttonID, const char* caption, COLOR_T color, Resource* resUp, Resource* resDown = 0);
+
+    enum Resources {
+        Resource_Background,
+    };
+
+    /** Specifies the resource to use
+     *
+     *  Adds a resource for a specific id. This allows the
+     *  user program to select e.g. which image to use and
+     *  if it should be loaded from a file or an array.
+     *
+     *  @param id  the identifier
+     *  @param res the resource
+     */
+    void addResource(Resources id, Resource* res);
+    
+private:
+    enum Constants {
+       TitleHeight = 20,
+       ButtonWidth = 75,
+       ButtonHeight = 75,
+       ButtonRows   = 2,
+       ButtonColumns = 5,
+       NumberOfButtons = ButtonRows*ButtonColumns,
+    };
+
+    Display* _disp;
+    SWIM_WINDOW_T* _win;
+    void* _fb;
+    Clickable* _buttons[NumberOfButtons];
+    int _usedButtons;
+    App*(*_callback)(uint32_t buttonID);
+    bool _supportsCalibration;
+    bool _newTouchEvent;
+    bool _newButtonEvent;
+    Image::ImageData_t _bgImg;
+    char _currentTime[30];
+    Resource* _resBg;
+    int _iconWidth;
+    int _iconHeight;
+
+    void draw();
+    void onTouchEvent();
+    void onButtonEvent();
+};
+
+#endif
+
+