nt9856x/code/lib/include/UIDisplayUtil.h
2023-03-28 15:07:53 +08:00

375 lines
16 KiB
C
Executable File

#ifndef UIDISPLAYUTIL_H
#define UIDISPLAYUTIL_H
#ifdef NULL
#undef NULL
#define NULL 0
#endif
extern VControl NULLCtrl;
//////////////////////////////////////////////////////////////////////////////
#define NULLCmdMap NULL
#define NULLShow NULL
//#NT#2008/09/18#lincy-begin
#define SHOW_ITEM_RECT(type,name,x1,y1,x2,y2,lineStl,fillStl,fClr,bgClr,layout,align,map) \
static ITEM_RECTANGLE name = {(type), x1,y1,x2,y2,lineStl,fillStl,fClr,bgClr,layout,align,(void *)map};
#define SHOW_ITEM_ROUNDRECT(type,name,x1,y1,x2,y2,lineStl,fillStl,fClr,bgClr,layout,align,map,rx,ry) \
static ITEM_ROUNDRECT name = {(type), x1,y1,x2,y2,lineStl,fillStl,fClr,bgClr,layout,align,(void *)map,rx,ry};
#define SHOW_ITEM_ELLIPSE(type,name,x1,y1,x2,y2,lineStl,fillStl,fClr,bgClr,layout,align,map) \
static ITEM_ELLIPSE name = {(type), x1,y1,x2,y2,lineStl,fillStl,fClr,bgClr,layout,align,(void *)map};
#define SHOW_ITEM_LINE(type,name,x1,y1,x2,y2,lineStl,fillStl,lineClr,map) \
static ITEM_LINE name = {(type), x1,y1,x2,y2,lineStl,fillStl,lineClr,(void *)map};
#define SHOW_ITEM_IMAGE(type,name,x1,y1,x2,y2,data,bltRop,ParRop,clrkey,clrMap,layout,clip,align,imageT) \
static ITEM_IMAGE name = {(type), x1,y1,x2,y2,data,bltRop,ParRop,clrkey,(void *)clrMap,layout,clip,align,(void *)imageT};
#define SHOW_ITEM_TEXT(type,name,x1,y1,x2,y2,data,fontT,fontstl,fillstl,fontsize,tclr,ShClr,LiClr,layout,clip,align,lineH,LeSpe,InSpe,StrT) \
static ITEM_TEXT name = {(type), x1,y1,x2,y2,data,(void *)fontT,fontstl,fillstl,fontsize,tclr,ShClr,LiClr,layout,clip,align,lineH,LeSpe,InSpe,(void *)StrT};
#define SHOW_ITEM_GROUP(type,name,x1,y1,x2,y2) \
static ITEM_GROUP name = {(type), x1,y1,x2,y2,(ITEM_BASE**)(name##Show)};
//////////////////////////////////////////////////////////////////////////
#define SHOW_MAP_BEGIN(Name) static ITEM_BASE* Name##Show[]={
#define SHOW_MAP_BODY(Name) (ITEM_BASE*)&Name,
#define SHOW_MAP_END NULL};
//#NT#2008/09/18#lincy-end
//////////////////////////////////////////////////////////////////////////
#define DECLARE_EVENT(Name) extern EVENT_ENTRY Name##CmdMap[];
#define EVENT_BEGIN(Name) EVENT_ENTRY Name##CmdMap[]={
#define EVENT_ITEM(Event,pfn) {Event,pfn},
#define EVENT_END {NVTEVT_NULL,0},};
///////////////////////////////////////////////////////////////////////////////////
#define CREATE_ZOOM_DATA(Name,value) \
CTRL_ZOOM_DATA Name##Data={ \
value \
};
///////////////////////////////////////////////////////////////////////////////////
#define CREATE_STATIC_DATA(Name,value) \
CTRL_STATIC_DATA Name##Data={ \
value \
};
///////////////////////////////////////////////////////////////////////////////////
#define CREATE_STATE_ITEM_DATA(Name,stringID,iconID,pExeFunc) \
static CTRL_STATE_ITEM_DATA Name##Item={ \
stringID, \
iconID, \
pExeFunc \
};
#define CREATE_STATE_DATA(Name,currentItem) \
CTRL_STATE_DATA Name##Data={ \
currentItem, \
sizeof(Name##StateList)/sizeof(CTRL_STATE_ITEM_DATA *) -1, \
Name##StateList, \
};
//state graph total change -2 because first group is skin,not a state
#define CREATE_STATEGRAPH_DATA(Name,status,pFunc) \
CTRL_STATEGRAPH_DATA Name##Data={ \
status, \
pFunc, \
sizeof(Name##Show)/sizeof(ITEM_BASE*) -2, \
};
#define CREATE_PANEL_DATA(Name,status,pFunc) \
CTRL_TAB_DATA Name##Data={ \
status, \
pFunc \
};
#define CREATE_TAB_DATA(Name,focus) \
CTRL_TAB_DATA Name##Data={ \
focus, \
sizeof(Name##CtrlList)/sizeof(VControl *) -1, \
};
#define CREATE_BUTTON_ITEM_DATA(Name,stringID,iconID,StatusFlag,pExeFunc) \
static CTRL_BUTTON_ITEM_DATA Name##Item={ \
stringID, \
iconID, \
StatusFlag, \
pExeFunc, \
};
#define CREATE_BUTTON_DATA(Name,style) \
CTRL_BUTTON_DATA Name##Data={ \
style, \
Name##ButtonList, \
};
#define CREATE_MENU_ITEM_DATA(Name,stringID,iconID,StatusFlag,pExeFunc,value) \
static CTRL_MENU_ITEM_DATA Name##Item={ \
stringID, \
iconID, \
StatusFlag, \
pExeFunc, \
NULL, \
value, \
};
#define CREATE_MENU_DATA(Name,currentItem,pageItem,style) \
CTRL_MENU_DATA Name##Data={ \
currentItem, \
sizeof(Name##MenuList)/sizeof(CTRL_MENU_ITEM_DATA *) -1, \
pageItem, \
style, \
0, \
Name##MenuList, \
sizeof(Name##MenuList)/sizeof(CTRL_MENU_ITEM_DATA *) -1, \
};
#define CREATE_LIST_ITEM_DATA(Name,stringID,iconID,StatusFlag) \
static CTRL_LIST_ITEM_DATA Name##Item={ \
stringID, \
iconID, \
StatusFlag, \
};
#define CREATE_LIST_DATA(Name,currentItem,pageItem,style,event) \
CTRL_LIST_DATA Name##Data={ \
currentItem, \
sizeof(Name##ListList)/sizeof(CTRL_LIST_ITEM_DATA *) -1, \
pageItem, \
style, \
0, \
Name##ListList, \
sizeof(Name##ListList)/sizeof(CTRL_LIST_ITEM_DATA *) -1, \
event, \
};
#define CREATE_SLIDER_DATA(Name,sliderType,currentItem,totalItem) \
CTRL_SLIDER_DATA Name##Data={ \
(sliderType), \
currentItem, \
totalItem, \
};
#define CREATE_SCRBAR_DATA(Name,scrlbarType,scrlbarShape,currentItem,totalItem) \
CTRL_SCRBAR_DATA Name##Data={ \
(scrlbarType), \
scrlbarShape, \
currentItem, \
totalItem, \
0, \
};
#define CREATE_PROBAR_DATA(Name,progressbarType,currentItem,totalItem) \
CTRL_PROBAR_DATA Name##Data={ \
(progressbarType), \
currentItem, \
totalItem, \
};
//////////////////////////////////////////////////////////////////////////////////
#define LIST_LIST_BEGIN(Name) CTRL_LIST_ITEM_DATA *Name##ListList[]={
#define LIST_LIST_ITEM(Name) &Name##Item,
#define LIST_LIST_END 0};
//////////////////////////////////////////////////////////////////////////////////
#define STATE_LIST_BEGIN(Name) CTRL_STATE_ITEM_DATA *Name##StateList[]={
#define STATE_LIST_ITEM(Name) &Name##Item,
#define STATE_LIST_END 0};
//////////////////////////////////////////////////////////////////////////////////
#define BUTTON_LIST_BEGIN(Name) CTRL_BUTTON_ITEM_DATA *Name##ButtonList[]={
#define BUTTON_LIST_ITEM(Name) &Name##Item,
#define BUTTON_LIST_END 0};
//////////////////////////////////////////////////////////////////////////////////
#define MENU_LIST_BEGIN(Name) CTRL_MENU_ITEM_DATA *Name##MenuList[]={
#define MENU_LIST_ITEM(Name) &Name##Item,
#define MENU_LIST_END 0};
//////////////////////////////////////////////////////////////////////////////////
#define DECLARE_CTRL_LIST(Name) extern VControl *Name##CtrlList[];
#define CTRL_LIST_BEGIN(Name) VControl *Name##CtrlList[]={
#define CTRL_LIST_ITEM(Name) &Name##Ctrl,
#define CTRL_LIST_END 0};
///////////////////////////////////////////////////////////////////////////////
#define CREATE_CTRL(Name,ShowTable,Type,Data,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
Type, \
Name##CtrlList, \
Parent, \
0, \
Name##CmdMap, \
Data, \
ShowTable##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_PANEL_CTRL(Name,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_PANEL, \
Name##CtrlList, \
Parent, \
0, \
NULL, \
(void *)&Name##Data, \
NULL, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_TAB_CTRL(Name,Cmd,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_TAB, \
Name##CtrlList, \
Parent, \
0, \
Cmd##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_ZOOM_CTRL(Name,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_ZOOM, \
NULL, \
Parent, \
0, \
Name##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_STATIC_CTRL(Name,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_STATIC, \
NULL, \
Parent, \
0, \
Name##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_STATE_CTRL(Name,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_STATE, \
NULL, \
Parent, \
0, \
Name##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_STATEGRAPH_CTRL(Name,Cmd,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_STATEGRAPH, \
NULL, \
Parent, \
0, \
Cmd##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_BUTTON_CTRL(Name,Cmd,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_BUTTON, \
NULL, \
Parent, \
0, \
Cmd##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_MENU_CTRL(Name,Cmd,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_MENU, \
NULL, \
Parent, \
0, \
Cmd##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_LIST_CTRL(Name,Cmd,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_LIST, \
NULL, \
Parent, \
0, \
Cmd##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_SLIDER_CTRL(Name,Cmd,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_SLIDER, \
Name##CtrlList, \
Parent, \
0, \
Cmd##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_SCRBAR_CTRL(Name,Cmd,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_SCROLLBAR, \
Name##CtrlList, \
Parent, \
0, \
Cmd##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
#define CREATE_PROBAR_CTRL(Name,Cmd,Parent,x1,y1,x2,y2) \
VControl Name##Ctrl={ \
#Name, \
CTRL_PROGRESSBAR, \
Name##CtrlList, \
Parent, \
0, \
Cmd##CmdMap, \
(void *)&Name##Data, \
Name##Show, \
{(x1),(y1),(x2),(y2)}, \
0 \
};
/*********************************************
marcro usage
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
**********************************************/
#endif