Ivaylo Iltchev / Mbed 2 deprecated DISCO_F746NG_STemWin_HelloWorld

Dependencies:   BSP_DISCO_F746NG mbed

Committer:
icis4
Date:
Mon Jan 04 22:02:35 2016 +0000
Revision:
1:d8eaa5aa6ad5
Parent:
0:a53ccea9154d
main.cpp used for testing removed

Who changed what in which revision?

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