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
 |