183 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|     UI menu control related API.
 | |
| 
 | |
|     UI menu control export variables and function prototypes.
 | |
| 
 | |
|     @file       UICtrlMenuLib.h
 | |
|     @ingroup    mIUIControl
 | |
|     @note       Nothing (or anything need to be mentioned).
 | |
| 
 | |
|     Copyright   Novatek Microelectronics Corp. 2011.  All rights reserved.
 | |
| */
 | |
| #ifndef UICTRLMENULIB_H
 | |
| #define UICTRLMENULIB_H
 | |
| 
 | |
| #include "UIControlExt.h"
 | |
| 
 | |
| /**
 | |
|     @addtogroup mIUIControl
 | |
| */
 | |
| //@{
 | |
| 
 | |
| /**
 | |
|      Menu item data structure
 | |
| */
 | |
| typedef struct _CTRL_MENU_ITEM_DATA {
 | |
| 	UINT32    stringID;              ///< Menu item string ID
 | |
| 	UINT32    iconID;                ///< Menu item icon ID
 | |
| 	UINT32    StatusFlag;            ///< Menu item status
 | |
| 	UINT32    pExeEvent;             ///< Menu item event
 | |
| 	VControl *pBindCtrl;             ///< Menu item binding control(submenu control)
 | |
| 	UINT32    value;                 ///< Menu item vale(used as submenu selected value)
 | |
| } CTRL_MENU_ITEM_DATA;
 | |
| 
 | |
| /**
 | |
|      Menu data structure
 | |
| */
 | |
| typedef struct _CTRL_MENU_DATA {
 | |
| 	UINT32  currentItem;            ///< Current selected item
 | |
| 	UINT32  totalItem;              ///< Total item
 | |
| 	UINT32  pageItem;               ///< Item number per page
 | |
| 	UINT32  style;                  ///< Menu style (bitwise ,refer to menu style bit mask)
 | |
| 	UINT32  action;                 ///< Menu action
 | |
| 	CTRL_MENU_ITEM_DATA **item;     ///< The pointer of menu item
 | |
| 	UINT32  reserved;               ///< Reserved
 | |
| } CTRL_MENU_DATA;
 | |
| 
 | |
| /**
 | |
|      User scoll calculate start/end index for UxMenu_OnDraw
 | |
| */
 | |
| typedef void (*SCR_CAL)(CTRL_MENU_DATA *menu, UINT32 *pStartIndex, UINT32 *pEndIndex);
 | |
| 
 | |
| /**
 | |
|      User scoll behavior call back function
 | |
| */
 | |
| typedef struct _USERSCROLL_FUNC {
 | |
|     SCR_CAL scroll_cal;
 | |
| } USERSCROLL_FUNC, *PUSERSCROLL_FUNC;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     @name Menu style group
 | |
| */
 | |
| //@{
 | |
| #define MENU_LAYOUT_MASK         0xF        ///< Menu layout mask
 | |
| #define MENU_LAYOUT_VERTICAL     0x0        ///< Vertical type menu
 | |
| #define MENU_LAYOUT_HORIZONTAL   0x1        ///< Horizontal type menu
 | |
| 
 | |
| #define MENU_SCROLL_END_MASK     0xF0       ///< Menu scroll end behavior mask
 | |
| #define MENU_SCROLL_STOP         0x00       ///< Scroll to item end and then stop
 | |
| #define MENU_SCROLL_CYCLE        0x10       ///< Scroll to item end and start form first item
 | |
| 
 | |
| #define MENU_DISABLE_SCRL_MASK   0xF00      ///< Menu disable item scroll behavior mask
 | |
| #define MENU_DISABLE_NORMAL      0x000      ///< Scroll on disable menu item
 | |
| #define MENU_DISABLE_SKIP        0x100      ///< Skip disable menu item
 | |
| 
 | |
| #define MENU_DISABLE_MASK        0xF000     ///< Menu disable item show mask
 | |
| #define MENU_DISABLE_SHOW        0x0000     ///< Show disable menu item
 | |
| #define MENU_DISABLE_HIDE        (0x1000|MENU_DISABLE_SKIP) ///< Hide disable menu item(if hide item,must skip item)
 | |
| 
 | |
| #define MENU_SCROLL_MASK         0xF0000    ///< Menu scroll to next item behavior at the end of page
 | |
| #define MENU_SCROLL_NEXT_PAGE    0x00000    ///< Scroll next item,change to new page
 | |
| #define MENU_SCROLL_NEXT_ITEM    0x10000    ///< Scroll next item,but only shift up one item(still on the end of page)
 | |
| #define MENU_SCROLL_CENTER       0x20000    ///< Scrol next item,but item in the page of center(usuall for touch panel menu)
 | |
| #define MENU_SCROLL_USER         0x40000    ///< Scrol next item,user define display item
 | |
| 
 | |
| #define MENU_DRAW_MASK           0xF00000   ///< Menu item show table mask
 | |
| #define MENU_DRAW_IMAGE          0x000000   ///< Every one item has only one icon
 | |
| #define MENU_DRAW_IMAGE_LIST     0x100000   ///< Every one item has different status icon(Second stautus icon id need to fellow the first icon id.)
 | |
| #define MENU_DRAW_IMAGE_TABLE    0x200000   ///< Every one item has different status icon by table (icon table would set in control user data)
 | |
| #define MENU_TEXTCOLOR_TABLE     0x400000   ///< Every one item has different status string color by table (string color table would set in control user data)
 | |
| 
 | |
| #define MENU_REV_TOTITM_MASK     0x0000FFFF  ///< Keep allocated total item mask
 | |
| #define MENU_REV_KEEP_MASK       0xFFFF0000  ///< Keep inner data mask
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     Menu item attribute index
 | |
| */
 | |
| typedef enum {
 | |
| 	MNUITM_STRID,               ///< Menu item string id
 | |
| 	MNUITM_ICONID,              ///< Menu item icon id
 | |
| 	MNUITM_STATUS,              ///< Menu item status (STATUS_DISABLE,STATUS_ENABLE)
 | |
| 	MNUITM_EVENT,               ///< Menu item event
 | |
| 	MNUITM_CTRL,                ///< Menu item sub control
 | |
| 	MNUITM_VALUE,               ///< Menu item value (used as submenu selected value)
 | |
| 	MNUITM_MAX
 | |
| } MNUITM_DATA_SET;
 | |
| 
 | |
| /**
 | |
|     Menu data attribute index
 | |
| */
 | |
| typedef enum {
 | |
| 	MNU_CURITM,                 ///< Menu current item
 | |
| 	MNU_TOTITM,                 ///< Total menu item
 | |
| 	MNU_PAGEITEM,               ///< Menu item per page
 | |
| 	MNU_STYLE,                  ///< Menu style(bitwise ,refer to menu style bit mask)
 | |
| 	MNU_ACTION,                 ///< Menu action(NVTEVT_PREVIOUS_ITEM,NVTEVT_NEXT_ITEM)
 | |
| 	MNU_RESERVED,               ///< Reserved(MENU_SCROLL_NEXT_ITEM,reserved would keep scrollStartIndex)
 | |
| 	MNU_USERCB,                 ///< user scroll callback when MENU_SCROLL_USER is set
 | |
| 	MNU_MAX                     ///< Max menu data attribute
 | |
| } MNU_DATA_SET;
 | |
| 
 | |
| /**
 | |
|     Set menu item data
 | |
|     @param[in] pCtrl The pointer of the menu control
 | |
|     @param[in] index Menu item index (start from 0)
 | |
|     @param[in] attribute Menu item attribute(MNUITM_DATA_SET)
 | |
|     @param[in] value the item value would be changed
 | |
| */
 | |
| extern void UxMenu_SetItemData(VControl *pCtrl, UINT32 index, MNUITM_DATA_SET attribute, UINT32 value);
 | |
| 
 | |
| /**
 | |
|     Get menu item data
 | |
|     @param[in] pCtrl The pointer of the menu control
 | |
|     @param[in] index Menu item index (start from 0)
 | |
|     @param[in] attribute Menu item attribute(MNUITM_DATA_SET)
 | |
| 
 | |
|     @return
 | |
|     - @b The attribute value
 | |
|     - @b ERR_TYPE The control type error
 | |
|     - @b ERR_OUT_RANGE index > total item
 | |
|     - @b ERR_ATTRIBUTE The control has no this attribute
 | |
| */
 | |
| extern UINT32 UxMenu_GetItemData(VControl *pCtrl, UINT32 index, MNUITM_DATA_SET attribute);
 | |
| 
 | |
| /**
 | |
|     Set menu data
 | |
|     @param[in] pCtrl The pointer of the menu control
 | |
|     @param[in] attribute Menu data attribute(MNU_DATA_SET.)
 | |
|     @param[in] value The data value would be changed
 | |
| */
 | |
| extern void UxMenu_SetData(VControl *pCtrl, MNU_DATA_SET attribute, UINT32 value);
 | |
| 
 | |
| /**
 | |
|     Get menu data
 | |
|     @param[in] pCtrl The pointer of the menu control
 | |
|     @param[in] attribute Menu data attribute(MNU_DATA_SET)
 | |
| 
 | |
|     @return
 | |
|         - @b The attribute value
 | |
|         - @b ERR_TYPE The control type error
 | |
|         - @b ERR_ATTRIBUTE The control has no this attribute
 | |
| */
 | |
| extern UINT32 UxMenu_GetData(VControl *pCtrl, MNU_DATA_SET attribute);
 | |
| 
 | |
| /**
 | |
|     Get menu rectangle
 | |
|     @param[in] pCtrl The pointer of the menu control
 | |
|     @param[out] pRect The pointer of menu rectangle
 | |
| */
 | |
| extern void UxMenu_GetRange(VControl *pCtrl, Ux_RECT *pRect);
 | |
| 
 | |
| /**
 | |
|     Get menu item position
 | |
|     @param[in] pCtrl The pointer of the menu control
 | |
|     @param[in] index Menu item index (start from 0)
 | |
|     @param[out] pRect The pointer of menu rectangle
 | |
| */
 | |
| extern void UxMenu_GetItemPos(VControl *pCtrl, UINT32 index, Ux_RECT *pRect);
 | |
| 
 | |
| //@}
 | |
| #endif
 | 
