freertos_f407/User/system/lib/lcd/gui/Widget/MENU.h

200 lines
7.4 KiB
C

/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 a license and should not be redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : MENU.h
Purpose : MENU include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef MENU_H
#define MENU_H
#include "WM.h"
#include "WIDGET.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
/*********************************************************************
*
* Create flags
*/
#define MENU_CF_HORIZONTAL (0<<0)
#define MENU_CF_VERTICAL (1<<0)
#define MENU_CF_OPEN_ON_POINTEROVER (1<<1)
#define MENU_CF_CLOSE_ON_SECOND_CLICK (1<<2)
#define MENU_CF_HIDE_DISABLED_SEL (1<<3) /* Hides the selection when a disabled item is selected */
/*********************************************************************
*
* Menu item flags
*/
#define MENU_IF_DISABLED (1<<0)
#define MENU_IF_SEPARATOR (1<<1)
/*********************************************************************
*
* Color indices
*/
#define MENU_CI_ENABLED 0
#define MENU_CI_SELECTED 1
#define MENU_CI_DISABLED 2
#define MENU_CI_DISABLED_SEL 3
#define MENU_CI_ACTIVE_SUBMENU 4
/*********************************************************************
*
* Border indices
*/
#define MENU_BI_LEFT 0
#define MENU_BI_RIGHT 1
#define MENU_BI_TOP 2
#define MENU_BI_BOTTOM 3
/*********************************************************************
*
* Message types
*/
#define MENU_ON_ITEMSELECT 0 /* Send to owner when selecting a menu item */
#define MENU_ON_INITMENU 1 /* Send to owner when for the first time selecting a submenu */
#define MENU_ON_INITSUBMENU 2 /* Send to owner when selecting a submenu */
#define MENU_ON_OPEN 3 /* Internal message of menu widget (send to submenus) */
#define MENU_ON_CLOSE 4 /* Internal message of menu widget (send to submenus) */
#define MENU_IS_MENU 5 /* Internal message of menu widget. Owner must call */
/* WM_DefaultProc() when not handle the message. */
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef WM_HMEM MENU_Handle;
/*********************************************************************
*
* menu message data
*/
typedef struct {
U16 MsgType;
U16 ItemId;
} MENU_MSG_DATA;
/*********************************************************************
*
* menu item data
*/
typedef struct {
// const char* pText;
char* pText;
U16 Id;
U16 Flags;
MENU_Handle hSubmenu;
} MENU_ITEM_DATA;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
MENU_Handle MENU_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
MENU_Handle MENU_CreateEx (int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
#define MENU_EnableMemdev(hObj) WM_EnableMemdev(hObj)
#define MENU_DisableMemdev(hObj) WM_DisableMemdev(hObj)
#define MENU_Delete(hObj) WM_DeleteWindow(hObj)
#define MENU_Paint(hObj) WM_Paint(hObj)
#define MENU_Invalidate(hObj) WM_InvalidateWindow(hObj)
/*********************************************************************
*
* Individual member functions
*
**********************************************************************
*/
void MENU_Attach (MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags);
void MENU_Popup (MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags);
void MENU_SetOwner (MENU_Handle hObj, WM_HWIN hOwner);
void MENU_AddItem (MENU_Handle hObj, const MENU_ITEM_DATA* pItemData);
void MENU_DeleteItem (MENU_Handle hObj, U16 ItemId);
void MENU_InsertItem (MENU_Handle hObj, U16 ItemId, const MENU_ITEM_DATA* pItemData);
void MENU_SetItem (MENU_Handle hObj, U16 ItemId, const MENU_ITEM_DATA* pItemData);
void MENU_GetItem (MENU_Handle hObj, U16 ItemId, MENU_ITEM_DATA* pItemData);
void MENU_GetItemText (MENU_Handle hObj, U16 ItemId, char* pBuffer, unsigned BufferSize);
unsigned MENU_GetNumItems (MENU_Handle hObj);
void MENU_DisableItem (MENU_Handle hObj, U16 ItemId);
void MENU_EnableItem (MENU_Handle hObj, U16 ItemId);
/*********************************************************************
*
* Member functions, get / set properties
*
**********************************************************************
*/
void MENU_SetTextColor (MENU_Handle hObj, unsigned ColorIndex, GUI_COLOR Color);
void MENU_SetBkColor (MENU_Handle hObj, unsigned ColorIndex, GUI_COLOR Color);
void MENU_SetBorderSize (MENU_Handle hObj, unsigned BorderIndex, U8 BorderSize);
void MENU_SetFont (MENU_Handle hObj, const GUI_FONT GUI_UNI_PTR* pFont);
/*********************************************************************
*
* Member functions, get / set defaults
*
**********************************************************************
*/
GUI_COLOR MENU_GetDefaultTextColor (unsigned ColorIndex);
GUI_COLOR MENU_GetDefaultBkColor (unsigned ColorIndex);
U8 MENU_GetDefaultBorderSize (unsigned BorderIndex);
const WIDGET_EFFECT* MENU_GetDefaultEffect (void);
const GUI_FONT GUI_UNI_PTR* MENU_GetDefaultFont (void);
void MENU_SetDefaultTextColor (unsigned ColorIndex, GUI_COLOR Color);
void MENU_SetDefaultBkColor (unsigned ColorIndex, GUI_COLOR Color);
void MENU_SetDefaultBorderSize (unsigned BorderIndex, U8 BorderSize);
void MENU_SetDefaultEffect (const WIDGET_EFFECT* pEffect);
void MENU_SetDefaultFont (const GUI_FONT GUI_UNI_PTR* pFont);
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif /* MENU_H */
/*************************** End of file ****************************/