RT1050 GUI demo using emWin library

Revision:
0:dd702039127a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emwin/emWin_header/WIDGET.h	Thu Sep 20 19:16:34 2018 +0000
@@ -0,0 +1,389 @@
+/*********************************************************************
+*                SEGGER Microcontroller GmbH & Co. KG                *
+*        Solutions for real time microcontroller applications        *
+**********************************************************************
+*                                                                    *
+*        (c) 1996 - 2016  SEGGER Microcontroller GmbH & Co. KG       *
+*                                                                    *
+*        Internet: www.segger.com    Support:  support@segger.com    *
+*                                                                    *
+**********************************************************************
+
+** emWin V5.38 - 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.
+----------------------------------------------------------------------
+Licensing information
+
+Licensor:                 SEGGER Microcontroller Systems LLC
+Licensed to:              NXP Semiconductors, 1109 McKay Dr, M/S 76, San Jose, CA 95131, USA
+Licensed SEGGER software: emWin
+License number:           GUI-00186
+License model:            emWin License Agreement, dated August 20th 2011
+Licensed product:         -
+Licensed platform:        NXP's ARM 7/9, Cortex-M0,M3,M4
+Licensed number of seats: -
+----------------------------------------------------------------------
+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 FRAMECLNT_ID 0x46524143UL /* FRAC */
+#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 MPAGECLNT_ID 0x4d50434CUL /* MPCL */
+#define PROGBAR_ID   0x50524f47UL /* PROG */
+#define RADIO_ID     0x52414449UL /* RADI */
+#define SCROLLBAR_ID 0x5343524fUL /* SCRO */
+#define SLIDER_ID    0x534c4944UL /* SLID */
+#define SWIPELIST_ID 0x53574950UL /* SWIP */
+#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 WINDOW_ID    0x57494e44UL /* WIND */
+
+#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     1
+#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;
+  #if GUI_DEBUG_LEVEL > 1
+    U32 DebugId;
+  #endif  
+} 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 */
+
+
+
+