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 : WM_Intern.h
alejandroRL 0:dd702039127a 40 Purpose : Windows manager internal include
alejandroRL 0:dd702039127a 41 ----------------------------------------------------------------------
alejandroRL 0:dd702039127a 42 */
alejandroRL 0:dd702039127a 43
alejandroRL 0:dd702039127a 44 #ifndef WM_INTERN_H /* Make sure we only include it once */
alejandroRL 0:dd702039127a 45 #define WM_INTERN_H /* Make sure we only include it once */
alejandroRL 0:dd702039127a 46
alejandroRL 0:dd702039127a 47 #include "WM.h"
alejandroRL 0:dd702039127a 48 #include "GUI_Private.h"
alejandroRL 0:dd702039127a 49
alejandroRL 0:dd702039127a 50
alejandroRL 0:dd702039127a 51 #if defined(__cplusplus)
alejandroRL 0:dd702039127a 52 extern "C" { /* Make sure we have C-declarations in C++ programs */
alejandroRL 0:dd702039127a 53 #endif
alejandroRL 0:dd702039127a 54
alejandroRL 0:dd702039127a 55 #if GUI_WINSUPPORT
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 The following could be placed in a file of its own as it is not
alejandroRL 0:dd702039127a 64 used outside of the window manager
alejandroRL 0:dd702039127a 65
alejandroRL 0:dd702039127a 66 */
alejandroRL 0:dd702039127a 67 /* Basic Windows status flags.
alejandroRL 0:dd702039127a 68 For module-internally use only !
alejandroRL 0:dd702039127a 69 */
alejandroRL 0:dd702039127a 70 #define WM_SF_HASTRANS WM_CF_HASTRANS
alejandroRL 0:dd702039127a 71 #define WM_SF_MEMDEV WM_CF_MEMDEV
alejandroRL 0:dd702039127a 72 #define WM_SF_MEMDEV_ON_REDRAW WM_CF_MEMDEV_ON_REDRAW
alejandroRL 0:dd702039127a 73 #define WM_SF_DISABLED WM_CF_DISABLED /* Disabled: Does not receive PID (mouse & touch) input */
alejandroRL 0:dd702039127a 74 #define WM_SF_ISVIS WM_CF_SHOW /* Is visible flag */
alejandroRL 0:dd702039127a 75
alejandroRL 0:dd702039127a 76 #define WM_SF_STAYONTOP WM_CF_STAYONTOP
alejandroRL 0:dd702039127a 77 #define WM_SF_LATE_CLIP WM_CF_LATE_CLIP
alejandroRL 0:dd702039127a 78 #define WM_SF_ANCHOR_RIGHT WM_CF_ANCHOR_RIGHT
alejandroRL 0:dd702039127a 79 #define WM_SF_ANCHOR_BOTTOM WM_CF_ANCHOR_BOTTOM
alejandroRL 0:dd702039127a 80 #define WM_SF_ANCHOR_LEFT WM_CF_ANCHOR_LEFT
alejandroRL 0:dd702039127a 81 #define WM_SF_ANCHOR_TOP WM_CF_ANCHOR_TOP
alejandroRL 0:dd702039127a 82
alejandroRL 0:dd702039127a 83 #define WM_SF_INVALID WM_CF_ACTIVATE /* We reuse this flag, as it is create only and Invalid is status only */
alejandroRL 0:dd702039127a 84
alejandroRL 0:dd702039127a 85 #define WM_SF_CONST_OUTLINE WM_CF_CONST_OUTLINE /* Constant outline.*/
alejandroRL 0:dd702039127a 86
alejandroRL 0:dd702039127a 87 #define WM_H2P(hWin) ((WM_Obj*)GUI_ALLOC_h2p(hWin))
alejandroRL 0:dd702039127a 88
alejandroRL 0:dd702039127a 89
alejandroRL 0:dd702039127a 90 #if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_LOG_WARNINGS
alejandroRL 0:dd702039127a 91 #define WM_ASSERT_NOT_IN_PAINT() { if (WM__PaintCallbackCnt) \
alejandroRL 0:dd702039127a 92 GUI_DEBUG_ERROROUT("Function may not be called from within a paint event"); \
alejandroRL 0:dd702039127a 93 }
alejandroRL 0:dd702039127a 94 #else
alejandroRL 0:dd702039127a 95 #define WM_ASSERT_NOT_IN_PAINT()
alejandroRL 0:dd702039127a 96 #endif
alejandroRL 0:dd702039127a 97
alejandroRL 0:dd702039127a 98 /*********************************************************************
alejandroRL 0:dd702039127a 99 *
alejandroRL 0:dd702039127a 100 * Data types & structures
alejandroRL 0:dd702039127a 101 *
alejandroRL 0:dd702039127a 102 **********************************************************************
alejandroRL 0:dd702039127a 103 */
alejandroRL 0:dd702039127a 104 typedef struct {
alejandroRL 0:dd702039127a 105 WM_HWIN hOld;
alejandroRL 0:dd702039127a 106 WM_HWIN hNew;
alejandroRL 0:dd702039127a 107 } WM_NOTIFY_CHILD_HAS_FOCUS_INFO;
alejandroRL 0:dd702039127a 108
alejandroRL 0:dd702039127a 109 typedef struct WM_CRITICAL_HANDLE {
alejandroRL 0:dd702039127a 110 struct WM_CRITICAL_HANDLE * pNext;
alejandroRL 0:dd702039127a 111 volatile WM_HWIN hWin;
alejandroRL 0:dd702039127a 112 } WM_CRITICAL_HANDLE;
alejandroRL 0:dd702039127a 113
alejandroRL 0:dd702039127a 114 /*********************************************************************
alejandroRL 0:dd702039127a 115 *
alejandroRL 0:dd702039127a 116 * Data (extern)
alejandroRL 0:dd702039127a 117 *
alejandroRL 0:dd702039127a 118 **********************************************************************
alejandroRL 0:dd702039127a 119 */
alejandroRL 0:dd702039127a 120 extern U32 WM__CreateFlags;
alejandroRL 0:dd702039127a 121 extern WM_HWIN WM__ahCapture[GUI_NUM_LAYERS];
alejandroRL 0:dd702039127a 122 extern WM_HWIN WM__ahWinFocus[GUI_NUM_LAYERS];
alejandroRL 0:dd702039127a 123 extern char WM__CaptureReleaseAuto;
alejandroRL 0:dd702039127a 124 extern WM_tfPollPID * WM_pfPollPID;
alejandroRL 0:dd702039127a 125 extern U8 WM__PaintCallbackCnt; /* Public for assertions only */
alejandroRL 0:dd702039127a 126 extern WM_HWIN WM__hCreateStatic;
alejandroRL 0:dd702039127a 127
alejandroRL 0:dd702039127a 128 #if WM_SUPPORT_TRANSPARENCY
alejandroRL 0:dd702039127a 129 extern int WM__TransWindowCnt;
alejandroRL 0:dd702039127a 130 extern WM_HWIN WM__hATransWindow;
alejandroRL 0:dd702039127a 131 #endif
alejandroRL 0:dd702039127a 132
alejandroRL 0:dd702039127a 133 #if WM_SUPPORT_DIAG
alejandroRL 0:dd702039127a 134 extern void (*WM__pfShowInvalid)(WM_HWIN hWin);
alejandroRL 0:dd702039127a 135 #endif
alejandroRL 0:dd702039127a 136
alejandroRL 0:dd702039127a 137 extern WM_CRITICAL_HANDLE WM__aCHWinModal[GUI_NUM_LAYERS];
alejandroRL 0:dd702039127a 138 extern WM_CRITICAL_HANDLE WM__aCHWinLast[GUI_NUM_LAYERS];
alejandroRL 0:dd702039127a 139 extern int WM__ModalLayer;
alejandroRL 0:dd702039127a 140
alejandroRL 0:dd702039127a 141 #if GUI_SUPPORT_MOUSE
alejandroRL 0:dd702039127a 142 extern WM_CRITICAL_HANDLE WM__aCHWinMouseOver[GUI_NUM_LAYERS];
alejandroRL 0:dd702039127a 143 #endif
alejandroRL 0:dd702039127a 144
alejandroRL 0:dd702039127a 145 #ifdef WM_C
alejandroRL 0:dd702039127a 146 #define GUI_EXTERN
alejandroRL 0:dd702039127a 147 #else
alejandroRL 0:dd702039127a 148 #define GUI_EXTERN extern
alejandroRL 0:dd702039127a 149 #endif
alejandroRL 0:dd702039127a 150
alejandroRL 0:dd702039127a 151 #if (GUI_NUM_LAYERS > 1)
alejandroRL 0:dd702039127a 152 GUI_EXTERN U32 WM__InvalidLayerMask;
alejandroRL 0:dd702039127a 153 GUI_EXTERN unsigned WM__TouchedLayer;
alejandroRL 0:dd702039127a 154 #define WM__TOUCHED_LAYER WM__TouchedLayer
alejandroRL 0:dd702039127a 155 #else
alejandroRL 0:dd702039127a 156 #define WM__TOUCHED_LAYER GUI_CURSOR_LAYER
alejandroRL 0:dd702039127a 157 #endif
alejandroRL 0:dd702039127a 158
alejandroRL 0:dd702039127a 159 GUI_EXTERN U16 WM__NumWindows;
alejandroRL 0:dd702039127a 160 GUI_EXTERN U16 WM__NumInvalidWindows;
alejandroRL 0:dd702039127a 161 GUI_EXTERN WM_HWIN WM__FirstWin;
alejandroRL 0:dd702039127a 162 GUI_EXTERN WM_CRITICAL_HANDLE * WM__pFirstCriticalHandle;
alejandroRL 0:dd702039127a 163
alejandroRL 0:dd702039127a 164 GUI_EXTERN WM_HWIN WM__ahDesktopWin[GUI_NUM_LAYERS];
alejandroRL 0:dd702039127a 165 GUI_EXTERN GUI_COLOR WM__aBkColor[GUI_NUM_LAYERS];
alejandroRL 0:dd702039127a 166
alejandroRL 0:dd702039127a 167 #undef GUI_EXTERN
alejandroRL 0:dd702039127a 168
alejandroRL 0:dd702039127a 169 /*********************************************************************
alejandroRL 0:dd702039127a 170 *
alejandroRL 0:dd702039127a 171 * Prototypes
alejandroRL 0:dd702039127a 172 *
alejandroRL 0:dd702039127a 173 **********************************************************************
alejandroRL 0:dd702039127a 174 */
alejandroRL 0:dd702039127a 175 void WM__ActivateClipRect (void);
alejandroRL 0:dd702039127a 176 int WM__ClipAtParentBorders (GUI_RECT * pRect, WM_HWIN hWin);
alejandroRL 0:dd702039127a 177 void WM__Client2Screen (const WM_Obj * pWin, GUI_RECT * pRect);
alejandroRL 0:dd702039127a 178 void WM__DeleteAssocTimer (WM_HWIN hWin);
alejandroRL 0:dd702039127a 179 void WM__DeleteSecure (WM_HWIN hWin);
alejandroRL 0:dd702039127a 180 void WM__DetachWindow (WM_HWIN hChild);
alejandroRL 0:dd702039127a 181 void WM__ForEachDesc (WM_HWIN hWin, WM_tfForEach * pcb, void * pData);
alejandroRL 0:dd702039127a 182 void WM__GetClientRectWin (const WM_Obj * pWin, GUI_RECT * pRect);
alejandroRL 0:dd702039127a 183 void WM__GetClientRectEx (WM_HWIN hWin, GUI_RECT * pRect);
alejandroRL 0:dd702039127a 184 WM_HWIN WM__GetFirstSibling (WM_HWIN hWin);
alejandroRL 0:dd702039127a 185 WM_HWIN WM__GetFocussedChild (WM_HWIN hWin);
alejandroRL 0:dd702039127a 186 int WM__GetHasFocus (WM_HWIN hWin);
alejandroRL 0:dd702039127a 187 WM_HWIN WM__GetLastSibling (WM_HWIN hWin);
alejandroRL 0:dd702039127a 188 WM_HWIN WM__GetPrevSibling (WM_HWIN hWin);
alejandroRL 0:dd702039127a 189 int WM__GetTopLevelLayer (WM_HWIN hWin);
alejandroRL 0:dd702039127a 190 int WM__GetWindowSizeX (const WM_Obj * pWin);
alejandroRL 0:dd702039127a 191 int WM__GetWindowSizeY (const WM_Obj * pWin);
alejandroRL 0:dd702039127a 192 void WM__InsertWindowIntoList (WM_HWIN hWin, WM_HWIN hParent);
alejandroRL 0:dd702039127a 193 void WM__Invalidate1Abs (WM_HWIN hWin, const GUI_RECT * pRect);
alejandroRL 0:dd702039127a 194 void WM__InvalidateAreaBelow (const GUI_RECT * pRect, WM_HWIN StopWin);
alejandroRL 0:dd702039127a 195 void WM__InvalidateRectEx (const GUI_RECT * pInvalidRect, WM_HWIN hParent, WM_HWIN hStop);
alejandroRL 0:dd702039127a 196 void WM__InvalidateTransAreaAbove(const GUI_RECT * pRect, WM_HWIN StopWin);
alejandroRL 0:dd702039127a 197 int WM__IntersectRect (GUI_RECT * pDest, const GUI_RECT * pr0, const GUI_RECT * pr1);
alejandroRL 0:dd702039127a 198 int WM__IsAncestor (WM_HWIN hChild, WM_HWIN hParent);
alejandroRL 0:dd702039127a 199 int WM__IsAncestorOrSelf (WM_HWIN hChild, WM_HWIN hParent);
alejandroRL 0:dd702039127a 200 int WM__IsChild (WM_HWIN hWin, WM_HWIN hParent);
alejandroRL 0:dd702039127a 201 int WM__IsEnabled (WM_HWIN hWin);
alejandroRL 0:dd702039127a 202 int WM__IsInModalArea (WM_HWIN hWin);
alejandroRL 0:dd702039127a 203 int WM__IsInWindow (WM_Obj * pWin, int x, int y);
alejandroRL 0:dd702039127a 204 int WM__IsWindow (WM_HWIN hWin);
alejandroRL 0:dd702039127a 205 void WM__LeaveIVRSearch (void);
alejandroRL 0:dd702039127a 206 void WM__MoveTo (WM_HWIN hWin, int x, int y);
alejandroRL 0:dd702039127a 207 void WM__MoveWindow (WM_HWIN hWin, int dx, int dy);
alejandroRL 0:dd702039127a 208 void WM__NotifyVisChanged (WM_HWIN hWin, GUI_RECT * pRect);
alejandroRL 0:dd702039127a 209 int WM__RectIsNZ (const GUI_RECT * pr);
alejandroRL 0:dd702039127a 210 void WM__RemoveWindowFromList (WM_HWIN hWin);
alejandroRL 0:dd702039127a 211 void WM__Screen2Client (const WM_Obj * pWin, GUI_RECT * pRect);
alejandroRL 0:dd702039127a 212 void WM__SelectTopLevelLayer (WM_HWIN hWin);
alejandroRL 0:dd702039127a 213 void WM__SendMsgNoData (WM_HWIN hWin, U8 MsgId);
alejandroRL 0:dd702039127a 214 void WM__SendMessage (WM_HWIN hWin, WM_MESSAGE * pm);
alejandroRL 0:dd702039127a 215 void WM__SendMessageIfEnabled (WM_HWIN hWin, WM_MESSAGE * pm);
alejandroRL 0:dd702039127a 216 void WM__SendMessageNoPara (WM_HWIN hWin, int MsgId);
alejandroRL 0:dd702039127a 217 void WM__SendPIDMessage (WM_HWIN hWin, WM_MESSAGE * pMsg);
alejandroRL 0:dd702039127a 218 int WM__SetScrollbarH (WM_HWIN hWin, int OnOff);
alejandroRL 0:dd702039127a 219 int WM__SetScrollbarV (WM_HWIN hWin, int OnOff);
alejandroRL 0:dd702039127a 220 void WM__UpdateChildPositions (WM_Obj * pObj, int dx0, int dy0, int dx1, int dy1);
alejandroRL 0:dd702039127a 221 void WM_PID__GetPrevState (GUI_PID_STATE * pPrevState, int Layer);
alejandroRL 0:dd702039127a 222 void WM_PID__SetPrevState (GUI_PID_STATE * pPrevState, int Layer);
alejandroRL 0:dd702039127a 223 void WM__SendTouchMessage (WM_HWIN hWin, WM_MESSAGE * pMsg);
alejandroRL 0:dd702039127a 224
alejandroRL 0:dd702039127a 225 U16 WM_GetFlags (WM_HWIN hWin);
alejandroRL 0:dd702039127a 226 int WM__Paint (WM_HWIN hWin);
alejandroRL 0:dd702039127a 227 void WM__Paint1 (WM_HWIN hWin);
alejandroRL 0:dd702039127a 228 void WM__AddCriticalHandle (WM_CRITICAL_HANDLE * pCH);
alejandroRL 0:dd702039127a 229 void WM__RemoveCriticalHandle (WM_CRITICAL_HANDLE * pCH);
alejandroRL 0:dd702039127a 230 void WM__SetLastTouched (WM_HWIN hWin);
alejandroRL 0:dd702039127a 231
alejandroRL 0:dd702039127a 232 #if WM_SUPPORT_STATIC_MEMDEV
alejandroRL 0:dd702039127a 233 void WM__InvalidateDrawAndDescs(WM_HWIN hWin);
alejandroRL 0:dd702039127a 234 #else
alejandroRL 0:dd702039127a 235 #define WM__InvalidateDrawAndDescs(hWin)
alejandroRL 0:dd702039127a 236 #endif
alejandroRL 0:dd702039127a 237
alejandroRL 0:dd702039127a 238 /* Static memory devices */
alejandroRL 0:dd702039127a 239 #if (GUI_SUPPORT_MEMDEV)
alejandroRL 0:dd702039127a 240 typedef struct {
alejandroRL 0:dd702039127a 241 int xSize, ySize; // Size of bk window
alejandroRL 0:dd702039127a 242 } EFFECT_CONTEXT;
alejandroRL 0:dd702039127a 243
alejandroRL 0:dd702039127a 244 int GUI_MEMDEV__CalcParaFadeIn (int Period, int TimeUsed);
alejandroRL 0:dd702039127a 245 void GUI_MEMDEV__ClipBK (EFFECT_CONTEXT * pContext);
alejandroRL 0:dd702039127a 246 void GUI_MEMDEV__RemoveStaticDevice(WM_HWIN hWin);
alejandroRL 0:dd702039127a 247 void GUI_MEMDEV__UndoClipBK (EFFECT_CONTEXT * pContext);
alejandroRL 0:dd702039127a 248 #endif
alejandroRL 0:dd702039127a 249
alejandroRL 0:dd702039127a 250 void WM__InvalidateParent(const GUI_RECT * pInvalidRect, WM_HWIN hParent, WM_HWIN hStop);
alejandroRL 0:dd702039127a 251 void WM__InvalidateRect (const GUI_RECT * pInvalidRect, WM_HWIN hParent, WM_HWIN hStop, U16 Flags);
alejandroRL 0:dd702039127a 252
alejandroRL 0:dd702039127a 253 WM_tfInvalidateParent WM__SetInvalidateParentFunc(WM_tfInvalidateParent pfInvalidateParentFunc);
alejandroRL 0:dd702039127a 254 WM_tfInvalidateDrawFunc WM__SetInvalidateDrawFunc (WM_tfInvalidateDrawFunc pfInvalidateDrawFunc);
alejandroRL 0:dd702039127a 255 WM_tfPaint1Func WM__SetPaint1Func (WM_tfPaint1Func pfPaint1Func);
alejandroRL 0:dd702039127a 256
alejandroRL 0:dd702039127a 257 #endif /* GUI_WINSUPPORT */
alejandroRL 0:dd702039127a 258
alejandroRL 0:dd702039127a 259 #if defined(__cplusplus)
alejandroRL 0:dd702039127a 260 }
alejandroRL 0:dd702039127a 261 #endif
alejandroRL 0:dd702039127a 262
alejandroRL 0:dd702039127a 263 #endif /* WM_INTERN_H */
alejandroRL 0:dd702039127a 264
alejandroRL 0:dd702039127a 265 /*************************** End of file ****************************/