RT1050 GUI demo using emWin library

Committer:
alejandroRL
Date:
Thu Sep 20 19:16:34 2018 +0000
Revision:
0:dd702039127a
emWin GUI Demo for RT1050

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alejandroRL 0:dd702039127a 1 /*********************************************************************
alejandroRL 0:dd702039127a 2 * SEGGER Microcontroller GmbH & Co. KG *
alejandroRL 0:dd702039127a 3 * Solutions for real time microcontroller applications *
alejandroRL 0:dd702039127a 4 **********************************************************************
alejandroRL 0:dd702039127a 5 * *
alejandroRL 0:dd702039127a 6 * (c) 1996 - 2016 SEGGER Microcontroller GmbH & Co. KG *
alejandroRL 0:dd702039127a 7 * *
alejandroRL 0:dd702039127a 8 * Internet: www.segger.com Support: support@segger.com *
alejandroRL 0:dd702039127a 9 * *
alejandroRL 0:dd702039127a 10 **********************************************************************
alejandroRL 0:dd702039127a 11
alejandroRL 0:dd702039127a 12 ** emWin V5.38 - Graphical user interface for embedded applications **
alejandroRL 0:dd702039127a 13 All Intellectual Property rights in the Software belongs to SEGGER.
alejandroRL 0:dd702039127a 14 emWin is protected by international copyright laws. Knowledge of the
alejandroRL 0:dd702039127a 15 source code may not be used to write a similar product. This file may
alejandroRL 0:dd702039127a 16 only be used in accordance with the following terms:
alejandroRL 0:dd702039127a 17
alejandroRL 0:dd702039127a 18 The software has been licensed to NXP Semiconductors USA, Inc. whose
alejandroRL 0:dd702039127a 19 registered office is situated at 411 E. Plumeria Drive, San Jose,
alejandroRL 0:dd702039127a 20 CA 95134, USA solely for the purposes of creating libraries for
alejandroRL 0:dd702039127a 21 NXPs M0, M3/M4 and ARM7/9 processor-based devices, sublicensed and
alejandroRL 0:dd702039127a 22 distributed under the terms and conditions of the NXP End User License
alejandroRL 0:dd702039127a 23 Agreement.
alejandroRL 0:dd702039127a 24 Full source code is available at: www.segger.com
alejandroRL 0:dd702039127a 25
alejandroRL 0:dd702039127a 26 We appreciate your understanding and fairness.
alejandroRL 0:dd702039127a 27 ----------------------------------------------------------------------
alejandroRL 0:dd702039127a 28 Licensing information
alejandroRL 0:dd702039127a 29
alejandroRL 0:dd702039127a 30 Licensor: SEGGER Microcontroller Systems LLC
alejandroRL 0:dd702039127a 31 Licensed to: NXP Semiconductors, 1109 McKay Dr, M/S 76, San Jose, CA 95131, USA
alejandroRL 0:dd702039127a 32 Licensed SEGGER software: emWin
alejandroRL 0:dd702039127a 33 License number: GUI-00186
alejandroRL 0:dd702039127a 34 License model: emWin License Agreement, dated August 20th 2011
alejandroRL 0:dd702039127a 35 Licensed product: -
alejandroRL 0:dd702039127a 36 Licensed platform: NXP's ARM 7/9, Cortex-M0,M3,M4
alejandroRL 0:dd702039127a 37 Licensed number of seats: -
alejandroRL 0:dd702039127a 38 ----------------------------------------------------------------------
alejandroRL 0:dd702039127a 39 File : MENU.h
alejandroRL 0:dd702039127a 40 Purpose : MENU include
alejandroRL 0:dd702039127a 41 --------------------END-OF-HEADER-------------------------------------
alejandroRL 0:dd702039127a 42 */
alejandroRL 0:dd702039127a 43
alejandroRL 0:dd702039127a 44 #ifndef MENU_H
alejandroRL 0:dd702039127a 45 #define MENU_H
alejandroRL 0:dd702039127a 46
alejandroRL 0:dd702039127a 47 #include "WM.h"
alejandroRL 0:dd702039127a 48 #include "WIDGET.h"
alejandroRL 0:dd702039127a 49 #include "DIALOG_Intern.h" // Required for Create indirect data structure
alejandroRL 0:dd702039127a 50
alejandroRL 0:dd702039127a 51 #if GUI_WINSUPPORT
alejandroRL 0:dd702039127a 52
alejandroRL 0:dd702039127a 53 #if defined(__cplusplus)
alejandroRL 0:dd702039127a 54 extern "C" { // Make sure we have C-declarations in C++ programs
alejandroRL 0:dd702039127a 55 #endif
alejandroRL 0:dd702039127a 56
alejandroRL 0:dd702039127a 57 /*********************************************************************
alejandroRL 0:dd702039127a 58 *
alejandroRL 0:dd702039127a 59 * Defines
alejandroRL 0:dd702039127a 60 *
alejandroRL 0:dd702039127a 61 **********************************************************************
alejandroRL 0:dd702039127a 62 */
alejandroRL 0:dd702039127a 63 #define MENU_SKIN_FLEX MENU_DrawSkinFlex
alejandroRL 0:dd702039127a 64
alejandroRL 0:dd702039127a 65 /*********************************************************************
alejandroRL 0:dd702039127a 66 *
alejandroRL 0:dd702039127a 67 * Create flags
alejandroRL 0:dd702039127a 68 */
alejandroRL 0:dd702039127a 69 #define MENU_CF_HORIZONTAL (0<<0)
alejandroRL 0:dd702039127a 70 #define MENU_CF_VERTICAL (1<<0)
alejandroRL 0:dd702039127a 71 #define MENU_CF_OPEN_ON_POINTEROVER (1<<1) // Normally a menu opens first when clicked on it
alejandroRL 0:dd702039127a 72 #define MENU_CF_CLOSE_ON_SECOND_CLICK (1<<2) // Normally a menu closes only when clicked outside it
alejandroRL 0:dd702039127a 73 #define MENU_CF_HIDE_DISABLED_SEL (1<<3) // Hides the selection when a disabled item is selected
alejandroRL 0:dd702039127a 74
alejandroRL 0:dd702039127a 75 /*********************************************************************
alejandroRL 0:dd702039127a 76 *
alejandroRL 0:dd702039127a 77 * Menu item flags
alejandroRL 0:dd702039127a 78 */
alejandroRL 0:dd702039127a 79 #define MENU_IF_DISABLED (1<<0) // Indicates that item is disabled
alejandroRL 0:dd702039127a 80 #define MENU_IF_SEPARATOR (1<<1) // Indicates that item is a separator
alejandroRL 0:dd702039127a 81
alejandroRL 0:dd702039127a 82 /*********************************************************************
alejandroRL 0:dd702039127a 83 *
alejandroRL 0:dd702039127a 84 * Color indices
alejandroRL 0:dd702039127a 85 */
alejandroRL 0:dd702039127a 86 #define MENU_CI_ENABLED 0
alejandroRL 0:dd702039127a 87 #define MENU_CI_SELECTED 1
alejandroRL 0:dd702039127a 88 #define MENU_CI_DISABLED 2
alejandroRL 0:dd702039127a 89 #define MENU_CI_DISABLED_SEL 3
alejandroRL 0:dd702039127a 90 #define MENU_CI_ACTIVE_SUBMENU 4
alejandroRL 0:dd702039127a 91
alejandroRL 0:dd702039127a 92 /*********************************************************************
alejandroRL 0:dd702039127a 93 *
alejandroRL 0:dd702039127a 94 * Border indices
alejandroRL 0:dd702039127a 95 */
alejandroRL 0:dd702039127a 96 #define MENU_BI_LEFT 0
alejandroRL 0:dd702039127a 97 #define MENU_BI_RIGHT 1
alejandroRL 0:dd702039127a 98 #define MENU_BI_TOP 2
alejandroRL 0:dd702039127a 99 #define MENU_BI_BOTTOM 3
alejandroRL 0:dd702039127a 100
alejandroRL 0:dd702039127a 101 /*********************************************************************
alejandroRL 0:dd702039127a 102 *
alejandroRL 0:dd702039127a 103 * Message types
alejandroRL 0:dd702039127a 104 */
alejandroRL 0:dd702039127a 105 #define MENU_ON_ITEMSELECT 0 // Send to owner when selecting a menu item
alejandroRL 0:dd702039127a 106 #define MENU_ON_INITMENU 1 // Send to owner when for the first time selecting a submenu
alejandroRL 0:dd702039127a 107 #define MENU_ON_INITSUBMENU 2 // Send to owner when selecting a submenu
alejandroRL 0:dd702039127a 108 #define MENU_ON_OPEN 3 // Internal message of menu widget (only send to submenus)
alejandroRL 0:dd702039127a 109 #define MENU_ON_CLOSE 4 // Internal message of menu widget (only send to submenus)
alejandroRL 0:dd702039127a 110 #define MENU_IS_MENU 5 // Internal message of menu widget. Owner must call
alejandroRL 0:dd702039127a 111 // WM_DefaultProc() when not handle the message
alejandroRL 0:dd702039127a 112 #define MENU_ON_ITEMACTIVATE 6 // Send to owner when highlighting a menu item
alejandroRL 0:dd702039127a 113 #define MENU_ON_ITEMPRESSED 7 // Send to owner when a menu item has been pressed
alejandroRL 0:dd702039127a 114
alejandroRL 0:dd702039127a 115 /*********************************************************************
alejandroRL 0:dd702039127a 116 *
alejandroRL 0:dd702039127a 117 * Skinning property indices
alejandroRL 0:dd702039127a 118 */
alejandroRL 0:dd702039127a 119 #define MENU_SKINFLEX_PI_ENABLED 0
alejandroRL 0:dd702039127a 120 #define MENU_SKINFLEX_PI_SELECTED 1
alejandroRL 0:dd702039127a 121 #define MENU_SKINFLEX_PI_DISABLED 2
alejandroRL 0:dd702039127a 122 #define MENU_SKINFLEX_PI_DISABLED_SEL 3
alejandroRL 0:dd702039127a 123 #define MENU_SKINFLEX_PI_ACTIVE_SUBMENU 4
alejandroRL 0:dd702039127a 124
alejandroRL 0:dd702039127a 125 /*********************************************************************
alejandroRL 0:dd702039127a 126 *
alejandroRL 0:dd702039127a 127 * Types
alejandroRL 0:dd702039127a 128 *
alejandroRL 0:dd702039127a 129 **********************************************************************
alejandroRL 0:dd702039127a 130 */
alejandroRL 0:dd702039127a 131
alejandroRL 0:dd702039127a 132 typedef WM_HMEM MENU_Handle;
alejandroRL 0:dd702039127a 133
alejandroRL 0:dd702039127a 134 typedef struct {
alejandroRL 0:dd702039127a 135 //
alejandroRL 0:dd702039127a 136 // Background
alejandroRL 0:dd702039127a 137 //
alejandroRL 0:dd702039127a 138 GUI_COLOR aBkColorH[2];
alejandroRL 0:dd702039127a 139 GUI_COLOR BkColorV;
alejandroRL 0:dd702039127a 140 GUI_COLOR FrameColorH;
alejandroRL 0:dd702039127a 141 GUI_COLOR FrameColorV;
alejandroRL 0:dd702039127a 142 //
alejandroRL 0:dd702039127a 143 // Selection
alejandroRL 0:dd702039127a 144 //
alejandroRL 0:dd702039127a 145 GUI_COLOR aSelColorH[2];
alejandroRL 0:dd702039127a 146 GUI_COLOR aSelColorV[2];
alejandroRL 0:dd702039127a 147 GUI_COLOR FrameColorSelH;
alejandroRL 0:dd702039127a 148 GUI_COLOR FrameColorSelV;
alejandroRL 0:dd702039127a 149 //
alejandroRL 0:dd702039127a 150 // Separator
alejandroRL 0:dd702039127a 151 //
alejandroRL 0:dd702039127a 152 GUI_COLOR aSepColorH[2];
alejandroRL 0:dd702039127a 153 GUI_COLOR aSepColorV[2];
alejandroRL 0:dd702039127a 154 //
alejandroRL 0:dd702039127a 155 // Arrow
alejandroRL 0:dd702039127a 156 //
alejandroRL 0:dd702039127a 157 GUI_COLOR ArrowColor;
alejandroRL 0:dd702039127a 158 //
alejandroRL 0:dd702039127a 159 // Text
alejandroRL 0:dd702039127a 160 //
alejandroRL 0:dd702039127a 161 GUI_COLOR TextColor;
alejandroRL 0:dd702039127a 162 } MENU_SKINFLEX_PROPS;
alejandroRL 0:dd702039127a 163
alejandroRL 0:dd702039127a 164 /*********************************************************************
alejandroRL 0:dd702039127a 165 *
alejandroRL 0:dd702039127a 166 * Menu message data
alejandroRL 0:dd702039127a 167 */
alejandroRL 0:dd702039127a 168 typedef struct {
alejandroRL 0:dd702039127a 169 U16 MsgType;
alejandroRL 0:dd702039127a 170 U16 ItemId;
alejandroRL 0:dd702039127a 171 } MENU_MSG_DATA;
alejandroRL 0:dd702039127a 172
alejandroRL 0:dd702039127a 173 /*********************************************************************
alejandroRL 0:dd702039127a 174 *
alejandroRL 0:dd702039127a 175 * Menu item data
alejandroRL 0:dd702039127a 176 */
alejandroRL 0:dd702039127a 177 typedef struct {
alejandroRL 0:dd702039127a 178 const char * pText;
alejandroRL 0:dd702039127a 179 U16 Id;
alejandroRL 0:dd702039127a 180 U16 Flags;
alejandroRL 0:dd702039127a 181 MENU_Handle hSubmenu;
alejandroRL 0:dd702039127a 182 } MENU_ITEM_DATA;
alejandroRL 0:dd702039127a 183
alejandroRL 0:dd702039127a 184 /*********************************************************************
alejandroRL 0:dd702039127a 185 *
alejandroRL 0:dd702039127a 186 * Create functions
alejandroRL 0:dd702039127a 187 *
alejandroRL 0:dd702039127a 188 **********************************************************************
alejandroRL 0:dd702039127a 189 */
alejandroRL 0:dd702039127a 190 MENU_Handle MENU_CreateIndirect(const GUI_WIDGET_CREATE_INFO * pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK * cb);
alejandroRL 0:dd702039127a 191 MENU_Handle MENU_CreateEx (int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id);
alejandroRL 0:dd702039127a 192 MENU_Handle MENU_CreateUser (int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id, int NumExtraBytes);
alejandroRL 0:dd702039127a 193
alejandroRL 0:dd702039127a 194 /*********************************************************************
alejandroRL 0:dd702039127a 195 *
alejandroRL 0:dd702039127a 196 * The callback ...
alejandroRL 0:dd702039127a 197 *
alejandroRL 0:dd702039127a 198 * Do not call it directly ! It is only to be used from within an
alejandroRL 0:dd702039127a 199 * overwritten callback.
alejandroRL 0:dd702039127a 200 */
alejandroRL 0:dd702039127a 201 void MENU_Callback(WM_MESSAGE * pMsg);
alejandroRL 0:dd702039127a 202
alejandroRL 0:dd702039127a 203 /*********************************************************************
alejandroRL 0:dd702039127a 204 *
alejandroRL 0:dd702039127a 205 * Individual member functions
alejandroRL 0:dd702039127a 206 *
alejandroRL 0:dd702039127a 207 **********************************************************************
alejandroRL 0:dd702039127a 208 */
alejandroRL 0:dd702039127a 209 void MENU_AddItem (MENU_Handle hObj, const MENU_ITEM_DATA * pItemData);
alejandroRL 0:dd702039127a 210 void MENU_Attach (MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags);
alejandroRL 0:dd702039127a 211 void MENU_DeleteItem (MENU_Handle hObj, U16 ItemId);
alejandroRL 0:dd702039127a 212 void MENU_DisableItem (MENU_Handle hObj, U16 ItemId);
alejandroRL 0:dd702039127a 213 void MENU_EnableItem (MENU_Handle hObj, U16 ItemId);
alejandroRL 0:dd702039127a 214 void MENU_GetItem (MENU_Handle hObj, U16 ItemId, MENU_ITEM_DATA * pItemData);
alejandroRL 0:dd702039127a 215 void MENU_GetItemText (MENU_Handle hObj, U16 ItemId, char * pBuffer, unsigned BufferSize);
alejandroRL 0:dd702039127a 216 unsigned MENU_GetNumItems (MENU_Handle hObj);
alejandroRL 0:dd702039127a 217 WM_HWIN MENU_GetOwner (MENU_Handle hObj);
alejandroRL 0:dd702039127a 218 int MENU_GetUserData (MENU_Handle hObj, void * pDest, int NumBytes);
alejandroRL 0:dd702039127a 219 void MENU_InsertItem (MENU_Handle hObj, U16 ItemId, const MENU_ITEM_DATA * pItemData);
alejandroRL 0:dd702039127a 220 void MENU_Popup (MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags);
alejandroRL 0:dd702039127a 221 void MENU_SetBkColor (MENU_Handle hObj, unsigned ColorIndex, GUI_COLOR Color);
alejandroRL 0:dd702039127a 222 void MENU_SetBorderSize(MENU_Handle hObj, unsigned BorderIndex, U8 BorderSize);
alejandroRL 0:dd702039127a 223 void MENU_SetFont (MENU_Handle hObj, const GUI_FONT * pFont);
alejandroRL 0:dd702039127a 224 void MENU_SetItem (MENU_Handle hObj, U16 ItemId, const MENU_ITEM_DATA * pItemData);
alejandroRL 0:dd702039127a 225 void MENU_SetOwner (MENU_Handle hObj, WM_HWIN hOwner);
alejandroRL 0:dd702039127a 226 int MENU_SetSel (MENU_Handle hObj, int Sel);
alejandroRL 0:dd702039127a 227 void MENU_SetTextColor (MENU_Handle hObj, unsigned ColorIndex, GUI_COLOR Color);
alejandroRL 0:dd702039127a 228 int MENU_SetUserData (MENU_Handle hObj, const void * pSrc, int NumBytes);
alejandroRL 0:dd702039127a 229
alejandroRL 0:dd702039127a 230 /*********************************************************************
alejandroRL 0:dd702039127a 231 *
alejandroRL 0:dd702039127a 232 * Managing default values
alejandroRL 0:dd702039127a 233 *
alejandroRL 0:dd702039127a 234 **********************************************************************
alejandroRL 0:dd702039127a 235 */
alejandroRL 0:dd702039127a 236 GUI_COLOR MENU_GetDefaultTextColor (unsigned ColorIndex);
alejandroRL 0:dd702039127a 237 GUI_COLOR MENU_GetDefaultBkColor (unsigned ColorIndex);
alejandroRL 0:dd702039127a 238 U8 MENU_GetDefaultBorderSize (unsigned BorderIndex);
alejandroRL 0:dd702039127a 239 const WIDGET_EFFECT * MENU_GetDefaultEffect (void);
alejandroRL 0:dd702039127a 240 const GUI_FONT * MENU_GetDefaultFont (void);
alejandroRL 0:dd702039127a 241 void MENU_SetDefaultTextColor (unsigned ColorIndex, GUI_COLOR Color);
alejandroRL 0:dd702039127a 242 void MENU_SetDefaultBkColor (unsigned ColorIndex, GUI_COLOR Color);
alejandroRL 0:dd702039127a 243 void MENU_SetDefaultBorderSize (unsigned BorderIndex, U8 BorderSize);
alejandroRL 0:dd702039127a 244 void MENU_SetDefaultEffect (const WIDGET_EFFECT * pEffect);
alejandroRL 0:dd702039127a 245 void MENU_SetDefaultFont (const GUI_FONT * pFont);
alejandroRL 0:dd702039127a 246
alejandroRL 0:dd702039127a 247 /*********************************************************************
alejandroRL 0:dd702039127a 248 *
alejandroRL 0:dd702039127a 249 * Member functions: Skinning
alejandroRL 0:dd702039127a 250 *
alejandroRL 0:dd702039127a 251 **********************************************************************
alejandroRL 0:dd702039127a 252 */
alejandroRL 0:dd702039127a 253 int MENU_DrawSkinFlex (const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo);
alejandroRL 0:dd702039127a 254 void MENU_GetSkinFlexProps (MENU_SKINFLEX_PROPS * pProps, int Index);
alejandroRL 0:dd702039127a 255 WIDGET_DRAW_ITEM_FUNC * MENU_SetDefaultSkin (WIDGET_DRAW_ITEM_FUNC * pfDrawSkin);
alejandroRL 0:dd702039127a 256 void MENU_SetDefaultSkinClassic(void);
alejandroRL 0:dd702039127a 257 void MENU_SetSkinClassic (MENU_Handle hObj);
alejandroRL 0:dd702039127a 258 void MENU_SetSkin (MENU_Handle hObj, WIDGET_DRAW_ITEM_FUNC * pfDrawSkin);
alejandroRL 0:dd702039127a 259 void MENU_SetSkinFlexProps (const MENU_SKINFLEX_PROPS * pProps, int Index);
alejandroRL 0:dd702039127a 260 void MENU_SkinEnableArrow (MENU_Handle hObj, int OnOff);
alejandroRL 0:dd702039127a 261
alejandroRL 0:dd702039127a 262 #if defined(__cplusplus)
alejandroRL 0:dd702039127a 263 }
alejandroRL 0:dd702039127a 264 #endif
alejandroRL 0:dd702039127a 265
alejandroRL 0:dd702039127a 266 #endif // GUI_WINSUPPORT
alejandroRL 0:dd702039127a 267 #endif // MENU_H
alejandroRL 0:dd702039127a 268
alejandroRL 0:dd702039127a 269 /*************************** End of file ****************************/