Headers for emWin lib
Dependents: DISCO-F746NG_rtos_test
Diff: emWin_header/WM_Intern.h
- Revision:
- 0:1bf8f02b0770
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emWin_header/WM_Intern.h Sat Mar 26 22:49:50 2016 +0000 @@ -0,0 +1,253 @@ +/********************************************************************* +* SEGGER Microcontroller GmbH & Co. KG * +* Solutions for real time microcontroller applications * +********************************************************************** +* * +* (c) 1996 - 2014 SEGGER Microcontroller GmbH & Co. KG * +* * +* Internet: www.segger.com Support: support@segger.com * +* * +********************************************************************** + +** emWin V5.24 - Graphical user interface for embedded applications ** +All Intellectual Property rights in the Software belongs to SEGGER. +emWin is protected by international copyright laws. Knowledge of the +source code may not be used to write a similar product. This file may +only be used in accordance with the following terms: + +The software has been licensed to NXP Semiconductors USA, Inc. whose +registered office is situated at 411 E. Plumeria Drive, San Jose, +CA 95134, USA solely for the purposes of creating libraries for +NXPs M0, M3/M4 and ARM7/9 processor-based devices, sublicensed and +distributed under the terms and conditions of the NXP End User License +Agreement. +Full source code is available at: www.segger.com + +We appreciate your understanding and fairness. +---------------------------------------------------------------------- +File : WM_Intern.h +Purpose : Windows manager internal include +---------------------------------------------------------------------- +*/ + +#ifndef WM_INTERN_H /* Make sure we only include it once */ +#define WM_INTERN_H /* Make sure we only include it once */ + +#include "WM.h" +#include "GUI_Private.h" + + +#if defined(__cplusplus) +extern "C" { /* Make sure we have C-declarations in C++ programs */ +#endif + +#if GUI_WINSUPPORT + +/********************************************************************* +* +* defines +* +********************************************************************** + + The following could be placed in a file of its own as it is not + used outside of the window manager + +*/ +/* Basic Windows status flags. + For module-internally use only ! +*/ +#define WM_SF_HASTRANS WM_CF_HASTRANS +#define WM_SF_MEMDEV WM_CF_MEMDEV +#define WM_SF_MEMDEV_ON_REDRAW WM_CF_MEMDEV_ON_REDRAW +#define WM_SF_DISABLED WM_CF_DISABLED /* Disabled: Does not receive PID (mouse & touch) input */ +#define WM_SF_ISVIS WM_CF_SHOW /* Is visible flag */ + +#define WM_SF_STAYONTOP WM_CF_STAYONTOP +#define WM_SF_LATE_CLIP WM_CF_LATE_CLIP +#define WM_SF_ANCHOR_RIGHT WM_CF_ANCHOR_RIGHT +#define WM_SF_ANCHOR_BOTTOM WM_CF_ANCHOR_BOTTOM +#define WM_SF_ANCHOR_LEFT WM_CF_ANCHOR_LEFT +#define WM_SF_ANCHOR_TOP WM_CF_ANCHOR_TOP + +#define WM_SF_INVALID WM_CF_ACTIVATE /* We reuse this flag, as it is create only and Invalid is status only */ + +#define WM_SF_CONST_OUTLINE WM_CF_CONST_OUTLINE /* Constant outline.*/ + +#define WM_H2P(hWin) ((WM_Obj*)GUI_ALLOC_h2p(hWin)) + + +#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_LOG_WARNINGS + #define WM_ASSERT_NOT_IN_PAINT() { if (WM__PaintCallbackCnt) \ + GUI_DEBUG_ERROROUT("Function may not be called from within a paint event"); \ + } +#else + #define WM_ASSERT_NOT_IN_PAINT() +#endif + +/********************************************************************* +* +* Data types & structures +* +********************************************************************** +*/ +typedef struct { + WM_HWIN hOld; + WM_HWIN hNew; +} WM_NOTIFY_CHILD_HAS_FOCUS_INFO; + +typedef struct WM_CRITICAL_HANDLE { + struct WM_CRITICAL_HANDLE * pNext; + volatile WM_HWIN hWin; +} WM_CRITICAL_HANDLE; + +/********************************************************************* +* +* Data (extern) +* +********************************************************************** +*/ +extern U32 WM__CreateFlags; +extern WM_HWIN WM__ahCapture[GUI_NUM_LAYERS]; +extern WM_HWIN WM__ahWinFocus[GUI_NUM_LAYERS]; +extern char WM__CaptureReleaseAuto; +extern WM_tfPollPID * WM_pfPollPID; +extern U8 WM__PaintCallbackCnt; /* Public for assertions only */ +extern WM_HWIN WM__hCreateStatic; + +#if WM_SUPPORT_TRANSPARENCY + extern int WM__TransWindowCnt; + extern WM_HWIN WM__hATransWindow; +#endif + +#if WM_SUPPORT_DIAG + extern void (*WM__pfShowInvalid)(WM_HWIN hWin); +#endif + +extern WM_CRITICAL_HANDLE WM__aCHWinModal[GUI_NUM_LAYERS]; +extern WM_CRITICAL_HANDLE WM__aCHWinLast[GUI_NUM_LAYERS]; + +#if GUI_SUPPORT_MOUSE + extern WM_CRITICAL_HANDLE WM__aCHWinMouseOver[GUI_NUM_LAYERS]; +#endif + +#ifdef WM_C + #define GUI_EXTERN +#else + #define GUI_EXTERN extern +#endif + +#if (GUI_NUM_LAYERS > 1) + GUI_EXTERN unsigned WM__TouchedLayer; + #define WM__TOUCHED_LAYER WM__TouchedLayer +#else + #define WM__TOUCHED_LAYER GUI_CURSOR_LAYER +#endif + +GUI_EXTERN U16 WM__NumWindows; +GUI_EXTERN U16 WM__NumInvalidWindows; +GUI_EXTERN WM_HWIN WM__FirstWin; +GUI_EXTERN WM_CRITICAL_HANDLE * WM__pFirstCriticalHandle; + +GUI_EXTERN WM_HWIN WM__ahDesktopWin[GUI_NUM_LAYERS]; +GUI_EXTERN GUI_COLOR WM__aBkColor[GUI_NUM_LAYERS]; + +#undef GUI_EXTERN + +/********************************************************************* +* +* Prototypes +* +********************************************************************** +*/ +void WM__ActivateClipRect (void); +int WM__ClipAtParentBorders (GUI_RECT * pRect, WM_HWIN hWin); +void WM__Client2Screen (const WM_Obj * pWin, GUI_RECT * pRect); +void WM__DeleteAssocTimer (WM_HWIN hWin); +void WM__DeleteSecure (WM_HWIN hWin); +void WM__DetachWindow (WM_HWIN hChild); +void WM__ForEachDesc (WM_HWIN hWin, WM_tfForEach * pcb, void * pData); +void WM__GetClientRectWin (const WM_Obj * pWin, GUI_RECT * pRect); +void WM__GetClientRectEx (WM_HWIN hWin, GUI_RECT * pRect); +WM_HWIN WM__GetFirstSibling (WM_HWIN hWin); +WM_HWIN WM__GetFocussedChild (WM_HWIN hWin); +int WM__GetHasFocus (WM_HWIN hWin); +WM_HWIN WM__GetLastSibling (WM_HWIN hWin); +WM_HWIN WM__GetPrevSibling (WM_HWIN hWin); +int WM__GetTopLevelLayer (WM_HWIN hWin); +int WM__GetWindowSizeX (const WM_Obj * pWin); +int WM__GetWindowSizeY (const WM_Obj * pWin); +void WM__InsertWindowIntoList (WM_HWIN hWin, WM_HWIN hParent); +void WM__Invalidate1Abs (WM_HWIN hWin, const GUI_RECT * pRect); +void WM__InvalidateAreaBelow (const GUI_RECT * pRect, WM_HWIN StopWin); +void WM__InvalidateRectEx (const GUI_RECT * pInvalidRect, WM_HWIN hParent, WM_HWIN hStop); +void WM__InvalidateTransAreaAbove(const GUI_RECT * pRect, WM_HWIN StopWin); +int WM__IntersectRect (GUI_RECT * pDest, const GUI_RECT * pr0, const GUI_RECT * pr1); +int WM__IsAncestor (WM_HWIN hChild, WM_HWIN hParent); +int WM__IsAncestorOrSelf (WM_HWIN hChild, WM_HWIN hParent); +int WM__IsChild (WM_HWIN hWin, WM_HWIN hParent); +int WM__IsEnabled (WM_HWIN hWin); +int WM__IsInModalArea (WM_HWIN hWin); +int WM__IsInWindow (WM_Obj * pWin, int x, int y); +int WM__IsWindow (WM_HWIN hWin); +void WM__LeaveIVRSearch (void); +void WM__MoveTo (WM_HWIN hWin, int x, int y); +void WM__MoveWindow (WM_HWIN hWin, int dx, int dy); +void WM__NotifyVisChanged (WM_HWIN hWin, GUI_RECT * pRect); +int WM__RectIsNZ (const GUI_RECT * pr); +void WM__RemoveWindowFromList (WM_HWIN hWin); +void WM__RemoveFromLinList (WM_HWIN hWin); +void WM__Screen2Client (const WM_Obj * pWin, GUI_RECT * pRect); +void WM__SelectTopLevelLayer (WM_HWIN hWin); +void WM__SendMsgNoData (WM_HWIN hWin, U8 MsgId); +void WM__SendMessage (WM_HWIN hWin, WM_MESSAGE * pm); +void WM__SendMessageIfEnabled (WM_HWIN hWin, WM_MESSAGE * pm); +void WM__SendMessageNoPara (WM_HWIN hWin, int MsgId); +void WM__SendPIDMessage (WM_HWIN hWin, WM_MESSAGE * pMsg); +int WM__SetScrollbarH (WM_HWIN hWin, int OnOff); +int WM__SetScrollbarV (WM_HWIN hWin, int OnOff); +void WM__UpdateChildPositions (WM_Obj * pObj, int dx0, int dy0, int dx1, int dy1); +void WM_PID__GetPrevState (GUI_PID_STATE * pPrevState, int Layer); +void WM_PID__SetPrevState (GUI_PID_STATE * pPrevState, int Layer); +void WM__SendTouchMessage (WM_HWIN hWin, WM_MESSAGE * pMsg); + +U16 WM_GetFlags (WM_HWIN hWin); +int WM__Paint (WM_HWIN hWin); +void WM__Paint1 (WM_HWIN hWin); +void WM__AddCriticalHandle (WM_CRITICAL_HANDLE * pCH); +void WM__RemoveCriticalHandle (WM_CRITICAL_HANDLE * pCH); +void WM__SetLastTouched (WM_HWIN hWin); + +#if WM_SUPPORT_STATIC_MEMDEV + void WM__InvalidateDrawAndDescs(WM_HWIN hWin); +#else + #define WM__InvalidateDrawAndDescs(hWin) +#endif + +/* Static memory devices */ +#if (GUI_SUPPORT_MEMDEV) + typedef struct { + int xSize, ySize; // Size of bk window + } EFFECT_CONTEXT; + + int GUI_MEMDEV__CalcParaFadeIn (int Period, int TimeUsed); + void GUI_MEMDEV__ChangeBK (EFFECT_CONTEXT * pContext); + void GUI_MEMDEV__RemoveStaticDevice(WM_HWIN hWin); + void GUI_MEMDEV__UndoBK (EFFECT_CONTEXT * pContext); +#endif + +void WM__InvalidateParent(const GUI_RECT * pInvalidRect, WM_HWIN hParent, WM_HWIN hStop); +void WM__InvalidateRect (const GUI_RECT * pInvalidRect, WM_HWIN hParent, WM_HWIN hStop, U16 Flags); + +WM_tfInvalidateParent WM__SetInvalidateParentFunc(WM_tfInvalidateParent pfInvalidateParentFunc); +WM_tfInvalidateDrawFunc WM__SetInvalidateDrawFunc (WM_tfInvalidateDrawFunc pfInvalidateDrawFunc); +WM_tfPaint1Func WM__SetPaint1Func (WM_tfPaint1Func pfPaint1Func); + +#endif /* GUI_WINSUPPORT */ + +#if defined(__cplusplus) + } +#endif + +#endif /* WM_INTERN_H */ + +/*************************** End of file ****************************/