Headers for emWin lib
Dependents: DISCO-F746NG_rtos_test
emWin_header/WIDGET.h
- Committer:
- redbird
- Date:
- 2016-03-26
- Revision:
- 0:1bf8f02b0770
File content as of revision 0:1bf8f02b0770:
/********************************************************************* * 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 : WIDGET.h Purpose : Widget interface ---------------------------END-OF-HEADER------------------------------ */ #ifndef WIDGET_H /* Avoid multiple inclusion */ #define WIDGET_H #if defined(__cplusplus) extern "C" { /* Make sure we have C-declarations in C++ programs */ #endif #include "WM_Intern.h" /* Window manager, including some internals, which speed things up */ #if GUI_WINSUPPORT /********************************************************************* * * Typedefs * ********************************************************************** */ typedef struct { WM_HWIN hWin; int Cmd; /* WIDGET_ITEM_GET_XSIZE, WIDGET_ITEM_GET_YSIZE, WIDGET_ITEM_DRAW, */ int ItemIndex; int Col; int x0, y0, x1, y1; void * p; } WIDGET_ITEM_DRAW_INFO; typedef int WIDGET_DRAW_ITEM_FUNC(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo); typedef void WIDGET_PAINT (WM_HWIN hObj); typedef void WIDGET_CREATE (WM_HWIN hObj); typedef struct { WIDGET_PAINT * pfPaint; WIDGET_CREATE * pfCreate; void * pSkinPrivate; } WIDGET_SKIN; /********************************************************************* * * Important: WIDGET_DRAW_ITEM_FUNC needs to be defined * in SCROLLBAR.h! * ********************************************************************** */ #include "SCROLLBAR.h" /********************************************************************* * * Defines * ********************************************************************** */ /********************************************************************* * * Unique widget id's */ #define BUTTON_ID 0x42555454UL /* BUTT */ #define CHECKBOX_ID 0x43484543UL /* CHEC */ #define DROPDOWN_ID 0x44524f50UL /* DROP */ #define EDIT_ID 0x45444954UL /* EDIT */ #define FRAMEWIN_ID 0x4652414dUL /* FRAM */ #define GRAPH_ID 0x47524150UL /* GRAP */ #define HEADER_ID 0x48454144UL /* HEAD */ #define LISTBOX_ID 0x4C495342UL /* LISB */ #define LISTVIEW_ID 0x4C495356UL /* LISV */ #define LISTWHEEL_ID 0x4C495357UL /* LISW */ #define MENU_ID 0x4d454e55UL /* MENU */ #define MULTIEDIT_ID 0x4d554c45UL /* MULE */ #define MULTIPAGE_ID 0x4d554c50UL /* MULP */ #define PROGBAR_ID 0x50524f47UL /* PROG */ #define RADIO_ID 0x52414449UL /* RADI */ #define SCROLLBAR_ID 0x5343524fUL /* SCRO */ #define SLIDER_ID 0x534c4944UL /* SLID */ #define TEXT_ID 0x54455854UL /* TEXT */ #define TREEVIEW_ID 0x54524545UL /* TREE */ #define ICONVIEW_ID 0x49434f4eUL /* ICON */ #define IMAGE_ID 0x494d4147UL /* IMAG */ #define SPINBOX_ID 0x5350494eUL /* SPIN */ #define KNOB_ID 0x4b4e4f42UL /* KNOB */ #define WIDGET_LOCK(hWin) ((WIDGET*)GUI_LOCK_H(hWin)) /********************************************************************* * * Config switches */ #ifndef WIDGET_USE_PARENT_EFFECT #define WIDGET_USE_PARENT_EFFECT 0 #endif #ifndef WIDGET_USE_FLEX_SKIN #define WIDGET_USE_FLEX_SKIN 0 #endif #if !defined(WIDGET_USE_SCHEME_SMALL) && !defined(WIDGET_USE_SCHEME_MEDIUM) && !defined(WIDGET_USE_SCHEME_LARGE) #define WIDGET_USE_SCHEME_SMALL 1 #define WIDGET_USE_SCHEME_MEDIUM 0 #define WIDGET_USE_SCHEME_LARGE 0 #endif #ifndef WIDGET_USE_SCHEME_SMALL #define WIDGET_USE_SCHEME_SMALL 0 #endif #ifndef WIDGET_USE_SCHEME_MEDIUM #define WIDGET_USE_SCHEME_MEDIUM 0 #endif #ifndef WIDGET_USE_SCHEME_LARGE #define WIDGET_USE_SCHEME_LARGE 0 #endif #if (WIDGET_USE_SCHEME_SMALL + WIDGET_USE_SCHEME_MEDIUM + WIDGET_USE_SCHEME_LARGE) > 1 #error Only one scheme can be selected! #endif /********************************************************************* * * States */ #define WIDGET_STATE_FOCUS (1 << 0) #define WIDGET_STATE_VERTICAL (1 << 3) #define WIDGET_STATE_FOCUSSABLE (1 << 4) #define WIDGET_STATE_USER0 (1 << 8) /* Freely available for derived widget */ #define WIDGET_STATE_USER1 (1 << 9) /* Freely available for derived widget */ #define WIDGET_STATE_USER2 (1 << 10) /* Freely available for derived widget */ /********************************************************************* * * Skinning message identifiers */ #define WIDGET_ITEM_CREATE 0 #define WIDGET_ITEM_DRAW 1 #define WIDGET_ITEM_DRAW_ARROW 2 #define WIDGET_ITEM_DRAW_ARROW_L 3 #define WIDGET_ITEM_DRAW_ARROW_R 4 #define WIDGET_ITEM_DRAW_BACKGROUND 5 #define WIDGET_ITEM_DRAW_BITMAP 6 #define WIDGET_ITEM_DRAW_BUTTON 7 #define WIDGET_ITEM_DRAW_BUTTON_L 8 #define WIDGET_ITEM_DRAW_BUTTON_R 9 #define WIDGET_ITEM_DRAW_FOCUS 10 #define WIDGET_ITEM_DRAW_FRAME 11 #define WIDGET_ITEM_DRAW_OVERLAP 12 #define WIDGET_ITEM_DRAW_OVERLAY 13 #define WIDGET_ITEM_DRAW_SEP 14 #define WIDGET_ITEM_DRAW_SHAFT 15 #define WIDGET_ITEM_DRAW_SHAFT_L 16 #define WIDGET_ITEM_DRAW_SHAFT_R 17 #define WIDGET_ITEM_DRAW_TEXT 18 #define WIDGET_ITEM_DRAW_THUMB 19 #define WIDGET_ITEM_DRAW_TICKS 20 #define WIDGET_ITEM_GET_BORDERSIZE_B 21 #define WIDGET_ITEM_GET_BORDERSIZE_L 22 #define WIDGET_ITEM_GET_BORDERSIZE_R 23 #define WIDGET_ITEM_GET_BORDERSIZE_T 24 #define WIDGET_ITEM_GET_BUTTONSIZE 25 #define WIDGET_ITEM_GET_XSIZE 26 #define WIDGET_ITEM_GET_YSIZE 27 #define WIDGET_ITEM_GET_RADIUS 28 #define WIDGET_ITEM_APPLY_PROPS 29 // Not to be documented. Use this message identifier to update the // properties of attached widgets from <WIDGET>_DrawSkinFlex(). #define WIDGET_DRAW_OVERLAY WIDGET_ITEM_DRAW_OVERLAY #define WIDGET_DRAW_BACKGROUND WIDGET_ITEM_DRAW_BACKGROUND /********************************************************************* * * Messages */ #define WM_WIDGET_SET_EFFECT (WM_WIDGET + 0) /********************************************************************* * * Create flags */ #define WIDGET_CF_VERTICAL WIDGET_STATE_VERTICAL /********************************************************************* * * Widget object * * The widget object is the base class for most widgets */ typedef struct { int EffectSize; void (* pfDrawUp) (void); void (* pfDrawUpRect) (const GUI_RECT * pRect); void (* pfDrawDown) (void); void (* pfDrawDownRect)(const GUI_RECT * pRect); void (* pfDrawFlat) (void); void (* pfDrawFlatRect)(const GUI_RECT * pRect); } WIDGET_EFFECT; typedef struct { WM_Obj Win; const WIDGET_EFFECT* pEffect; I16 Id; U16 State; } WIDGET; /********************************************************************* * * GUI_DRAW * * The GUI_DRAW object is used as base class for selfdrawing, * non-windows objects. They are used as content of different widgets, * such as the bitmap or header widgets. */ /* Declare Object struct */ typedef struct GUI_DRAW GUI_DRAW; typedef void GUI_DRAW_SELF_CB (WM_HWIN hWin); typedef WM_HMEM GUI_DRAW_HANDLE; /* Declare Object constants (member functions etc) */ typedef struct { void (* pfDraw) (GUI_DRAW_HANDLE hDrawObj, WM_HWIN hObj, int x, int y); int (* pfGetXSize)(GUI_DRAW_HANDLE hDrawObj); int (* pfGetYSize)(GUI_DRAW_HANDLE hDrawObj); } GUI_DRAW_CONSTS; /* Declare Object */ struct GUI_DRAW { const GUI_DRAW_CONSTS* pConsts; union { const void * pData; GUI_DRAW_SELF_CB* pfDraw; } Data; I16 xOff, yOff; }; /* GUI_DRAW_ API */ void GUI_DRAW__Draw (GUI_DRAW_HANDLE hDrawObj, WM_HWIN hObj, int x, int y); int GUI_DRAW__GetXSize(GUI_DRAW_HANDLE hDrawObj); int GUI_DRAW__GetYSize(GUI_DRAW_HANDLE hDrawObj); /* GUI_DRAW_ Constructurs for different objects */ WM_HMEM GUI_DRAW_BITMAP_Create (const GUI_BITMAP* pBitmap, int x, int y); WM_HMEM GUI_DRAW_BMP_Create (const void* pBMP, int x, int y); WM_HMEM GUI_DRAW_STREAMED_Create(const GUI_BITMAP_STREAM * pBitmap, int x, int y); WM_HMEM GUI_DRAW_SELF_Create(GUI_DRAW_SELF_CB* pfDraw, int x, int y); /********************************************************************* * * Global data * ********************************************************************** */ extern const WIDGET_EFFECT WIDGET_Effect_3D; extern const WIDGET_EFFECT WIDGET_Effect_3D1L; extern const WIDGET_EFFECT WIDGET_Effect_3D2L; extern const WIDGET_EFFECT WIDGET_Effect_None; extern const WIDGET_EFFECT WIDGET_Effect_Simple; /********************************************************************* * * Internal API routines * ********************************************************************** */ void WIDGET__DrawFocusRect (WIDGET * pWidget, const GUI_RECT * pRect, int Dist); void WIDGET__DrawHLine (WIDGET * pWidget, int y, int x0, int x1); void WIDGET__DrawTriangle (WIDGET * pWidget, int x, int y, int Size, int Inc); void WIDGET__DrawVLine (WIDGET * pWidget, int x, int y0, int y1); void WIDGET__EFFECT_DrawDownRect(WIDGET * pWidget, GUI_RECT * pRect); void WIDGET__EFFECT_DrawDown (WIDGET * pWidget); void WIDGET__EFFECT_DrawUpRect (WIDGET * pWidget, GUI_RECT * pRect); void WIDGET__FillRectEx (WIDGET * pWidget, const GUI_RECT * pRect); int WIDGET__GetWindowSizeX (WM_HWIN hWin); GUI_COLOR WIDGET__GetBkColor (WM_HWIN hObj); int WIDGET__GetXSize (const WIDGET * pWidget); int WIDGET__GetYSize (const WIDGET * pWidget); void WIDGET__GetClientRect (WIDGET * pWidget, GUI_RECT * pRect); void WIDGET__GetInsideRect (WIDGET * pWidget, GUI_RECT * pRect); void WIDGET__Init (WIDGET * pWidget, int Id, U16 State); void WIDGET__RotateRect90 (WIDGET * pWidget, GUI_RECT * pDest, const GUI_RECT * pRect); void WIDGET__SetScrollState (WM_HWIN hWin, const WM_SCROLL_STATE * pVState, const WM_SCROLL_STATE * pState); void WIDGET__FillStringInRect (const char * pText, const GUI_RECT * pFillRect, const GUI_RECT * pTextRectMax, const GUI_RECT * pTextRectAct); /********************************************************************* * * API routines * ********************************************************************** */ void WIDGET_SetState (WM_HWIN hObj, int State); void WIDGET_AndState (WM_HWIN hObj, int State); void WIDGET_OrState (WM_HWIN hObj, int State); int WIDGET_HandleActive (WM_HWIN hObj, WM_MESSAGE* pMsg); int WIDGET_GetState (WM_HWIN hObj); int WIDGET_SetWidth (WM_HWIN hObj, int Width); void WIDGET_EFFECT_3D_DrawUp(void); const WIDGET_EFFECT* WIDGET_SetDefaultEffect(const WIDGET_EFFECT* pEffect); void WIDGET_SetEffect (WM_HWIN hObj, const WIDGET_EFFECT* pEffect); const WIDGET_EFFECT* WIDGET_GetDefaultEffect(void); void WIDGET_EFFECT_3D_SetColor (unsigned Index, GUI_COLOR Color); void WIDGET_EFFECT_3D1L_SetColor (unsigned Index, GUI_COLOR Color); void WIDGET_EFFECT_3D2L_SetColor (unsigned Index, GUI_COLOR Color); void WIDGET_EFFECT_Simple_SetColor(unsigned Index, GUI_COLOR Color); GUI_COLOR WIDGET_EFFECT_3D_GetColor (unsigned Index); GUI_COLOR WIDGET_EFFECT_3D1L_GetColor (unsigned Index); GUI_COLOR WIDGET_EFFECT_3D2L_GetColor (unsigned Index); GUI_COLOR WIDGET_EFFECT_Simple_GetColor(unsigned Index); int WIDGET_EFFECT_3D_GetNumColors(void); int WIDGET_EFFECT_3D1L_GetNumColors(void); int WIDGET_EFFECT_3D2L_GetNumColors(void); int WIDGET_EFFECT_Simple_GetNumColors(void); /********************************************************************* * * Compatibility macros * ********************************************************************** */ #define WIDGET_SetDefaultEffect_3D() WIDGET_SetDefaultEffect(&WIDGET_Effect_3D) #define WIDGET_SetDefaultEffect_3D1L() WIDGET_SetDefaultEffect(&WIDGET_Effect_3D1L) #define WIDGET_SetDefaultEffect_3D2L() WIDGET_SetDefaultEffect(&WIDGET_Effect_3D2L) #define WIDGET_SetDefaultEffect_None() WIDGET_SetDefaultEffect(&WIDGET_Effect_None) #define WIDGET_SetDefaultEffect_Simple() WIDGET_SetDefaultEffect(&WIDGET_Effect_Simple) #endif /* GUI_WINSUPPORT */ #if defined(__cplusplus) } #endif #endif /* SLIDER_H */