#include "DHL_OSAL.h" #include "DHL_DBG.h" #include "DHL_Graphic.h" #include "DMG_Draw.h" #include "DMG_Menu.h" /* key(RCU) Á¤ÀÇ */ #define KEY_LEFT 10 #define KEY_RIGHT 11 #define KEY_UP 12 #define KEY_DOWN 13 #define KEY_SEL 14 #define KEY_BACK 15 #define KEY_EXIT 16 /* timer Á¤ÀÇ */ #define TIMER_ID_0 0 /* id Á¤ÀÇ */ #define MENU_ID1 0x1 #define FRAME_ID1 0x1 #define FRAME_ID11 0x11 #define FRAME_ID12 0x12 #define FRAME_ID2 0x2 /* menu, frame config : id, name, user_proc */ #define MENU_CFG MENU_ID1, "m1", DMG_TIME_FOREVER, p_user_menu_proc #define FRAME1_CFG FRAME_ID1, "fr1", 10000, p_user_frame1_proc #define FRAME11_CFG FRAME_ID11, "fr11", DMG_TIME_FOREVER, p_user_frame11_proc #define FRAME12_CFG FRAME_ID12, "fr12", DMG_TIME_FOREVER, p_user_frame12_proc #define FRAME2_CFG FRAME_ID2, "fr2", 10000, p_user_frame2_proc /* string Á¤ÀÇ */ #define M1_STR1 "Settings" #define F1_STR1 "Channel" #define F1_STR2 "Caption" #define F1_STR3 "Rating" #define F1_STR4 "Function" #define F1_STR5 "Media Play" #define F1_STR6 "Network" #define F11_STR1 "Input Selection" #define F11_STR2 "Auto Scan" #define F11_STR3 "Channel Edit" #define F11_STR4 "Signal Strength" #define F11_STR5 "Program Guide" #define F12_STR1 "Caption Display" #define F12_STR2 "Caption Service" #define F12_STR3 "Caption Option" #define F12_STR4 "Caption Text" #define F12_STR5 "Caption Background" #define F121_STR1 "CS1" #define F121_STR1 "CS2" #define F121_STR1 "CS3" #define F121_STR1 "CS4" #define F121_STR1 "CS5" #define F121_STR1 "CS6" #define M1_PRT1 150, 15, M1_STR1 #if COMMENT __Draw_Func__() #endif static void p_draw_m1() { DMG_DrawImageFile(0, 0, 0, "image/neo_main.png"); DMG_PrintStr(0, M1_PRT1, 0xffffffff); DMG_AutoRefresh(); } static void p_draw_f1(UINT32 cur_item_id) { int i; char *pstr[6]; UINT32 color; char *file_name; pstr[0]=F1_STR1; pstr[1]=F1_STR2; pstr[2]=F1_STR3; pstr[3]=F1_STR4; pstr[4]=F1_STR5; pstr[5]=F1_STR6; for(i=0; i<6; i++) { color=cur_item_id==i?0xff000000:0xffffffff; file_name=cur_item_id==i?"image/f1_active.png":"image/f1_inactive.png"; DMG_DrawImageFile(0, 5, 50+i*52, file_name); DMG_PrintStr(0, 70, 60+i*52, pstr[i], color); } DMG_AutoRefresh(); } static void p_draw_f11(UINT32 cur_item_id) { int i; char *pstr[5]; UINT32 color; char *file_name; pstr[0]=F11_STR1; pstr[1]=F11_STR2; pstr[2]=F11_STR3; pstr[3]=F11_STR4; pstr[4]=F11_STR5; for(i=0; i<5; i++) { color=cur_item_id==i?0xff000000:0xffffffff; file_name=cur_item_id==i?"image/f2_active.png":"image/f2_inactive.png"; DMG_DrawImageFile(0, 273, 55+i*52, file_name); DMG_PrintStr(0, 290, 65+i*52, pstr[i], color); } DMG_AutoRefresh(); } static void p_draw_f12(UINT32 cur_item_id) { int i; char *pstr[5]; UINT32 color; char *file_name; pstr[0]=F12_STR1; pstr[1]=F12_STR2; pstr[2]=F12_STR3; pstr[3]=F12_STR4; pstr[4]=F12_STR5; for(i=0; i<5; i++) { color=cur_item_id==i?0xff000000:0xffffffff; file_name=cur_item_id==i?"image/f2_active.png":"image/f2_inactive.png"; DMG_DrawImageFile(0, 273, 55+i*52, file_name); DMG_PrintStr(0, 290, 65+i*52, pstr[i], color); } DMG_AutoRefresh(); } #if COMMENT __User_Proc__() {} #endif static BOOL p_user_menu_proc(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2) { BOOL bret=TRUE; tDMG_Menu *pmenu=(tDMG_Menu *)param1; #if 0 printf("%s : cmd(%s:0x%x), opt(0x%x), param1(0x%x), param2(0x%x)\n", __FUNCTION__, DMG_CMD_STR(cmd), cmd, opt, param1, param2); #endif switch(cmd) { case eDMG_CMD_ON_MENU_ACTIVE : { tDMG_FontAttr attr; Jungle_GetFontAttr(&attr); attr.size=23; attr.is_bold=TRUE; attr.font_style=eDMG_FS_SANSERIF; DMG_SetFontAttr(&attr); } DMG_SetTimer(TIMER_ID_0, 1000, 0); p_draw_m1(); bret=FALSE; break; case eDMG_CMD_ON_TIME : if(param1==TIMER_ID_0) { /* ¹º°¡ animation È¿°ú°¡ ÇÊ¿äÇÏ¸ç »ç¿ë */ } else bret=FALSE; break; case eDMG_CMD_ON_TIMEOUT : DMG_MenuExit(); break; default : bret=FALSE; } return bret; } static BOOL p_user_frame1_proc(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2) { BOOL bret=TRUE; tDMG_Menu *pmenu; tDMG_Frame *pframe; #if 0 printf("%s : cmd(%s:0x%x), opt(0x%x), param1(0x%x), param2(0x%x)\n", __FUNCTION__, DMG_CMD_STR(cmd), cmd, opt, param1, param2); #endif switch(cmd) { case eDMG_CMD_ON_FRAME_ACTIVE : { tDMG_FontAttr attr; Jungle_GetFontAttr(&attr); attr.size=25; attr.is_bold=TRUE; attr.font_style=eDMG_FS_SANSERIF; DMG_SetFontAttr(&attr); } p_draw_f1(pframe->cur_item_id); break; case eDMG_CMD_ON_FRAME_INACTIVE : p_draw_f1(-1); break; case eDMG_CMD_ON_KEY : pmenu=(tDMG_Menu *)param1; pframe=pmenu->pcur_frame; if(!pframe) break; if(param2==KEY_UP) { if(pframe->cur_item_id>0) pframe->cur_item_id--; p_draw_f1(pframe->cur_item_id); } else if(param2==KEY_DOWN) { if(pframe->cur_item_id<5) pframe->cur_item_id++; p_draw_f1(pframe->cur_item_id); } else if(param2==KEY_LEFT) { } else if(param2==KEY_RIGHT || param1==KEY_SEL) { if(pframe->cur_item_id==0) DMG_SetFrame(eDMG_CMD_SET_FRAME_ACTIVE, pmenu->id, FRAME_ID11, TRUE); else DMG_SetFrame(eDMG_CMD_SET_FRAME_ACTIVE, pmenu->id, FRAME_ID12, TRUE); } else if(param2==KEY_BACK) { DMG_MenuExit(pmenu); } else if(param2==KEY_EXIT) { DMG_MenuExit(pmenu); } break; default : bret=FALSE; } return bret; } static BOOL p_user_frame11_proc(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2) { BOOL bret=TRUE; tDMG_Menu *pmenu; tDMG_Frame *pframe; #if 0 printf("%s : cmd(%s:0x%x), opt(0x%x), param1(0x%x), param2(0x%x)\n", __FUNCTION__, DMG_CMD_STR(cmd), cmd, opt, param1, param2); #endif switch(cmd) { case eDMG_CMD_ON_FRAME_ACTIVE : break; case eDMG_CMD_ON_KEY : pmenu=(tDMG_Menu *)param1; pframe=pmenu->pcur_frame; if(param2==KEY_UP) { if(pframe->cur_item_id>0) pframe->cur_item_id--; p_draw_f11(pframe->cur_item_id); } else if(param2==KEY_DOWN) { if(pframe->cur_item_id<4) pframe->cur_item_id++; p_draw_f11(pframe->cur_item_id); } else if(param2==KEY_LEFT) { p_draw_f11(-1); } else if(param2==KEY_RIGHT || param2==KEY_SEL) { } else if(param2==KEY_BACK) { DMG_SetFrame(eDMG_CMD_SET_FRAME_ACTIVE, pmenu->id, FRAME_ID1, TRUE); } else if(param2==KEY_EXIT) { DMG_MenuExit(pmenu); } break; default : bret=FALSE; } return bret; } static BOOL p_user_frame12_proc(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2) { BOOL bret=TRUE; tDMG_Menu *pmenu; tDMG_Frame *pframe; #if 0 printf("%s : cmd(%s:0x%x), opt(0x%x), param1(0x%x), param2(0x%x)\n", __FUNCTION__, DMG_CMD_STR(cmd), cmd, opt, param1, param2); #endif switch(cmd) { case eDMG_CMD_ON_FRAME_ACTIVE : pframe=(tDMG_Frame *)param2; p_draw_f12(pframe->cur_item_id); break; case eDMG_CMD_ON_KEY : pmenu=(tDMG_Menu *)param1; pframe=pmenu->pcur_frame; if(param2==KEY_UP) { } else if(param2==KEY_DOWN) { } else if(param2==KEY_LEFT) { } else if(param2==KEY_RIGHT || param2==KEY_SEL) { } else if(param2==KEY_BACK) { DMG_SetFrame(eDMG_CMD_SET_FRAME_ACTIVE, pmenu->id, FRAME_ID1, TRUE); } else if(param2==KEY_EXIT) { DMG_MenuExit(pmenu); } break; default : bret=FALSE; } return bret; } static BOOL p_user_frame2_proc(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2) { tDMG_Menu *pmenu; tDMG_Frame *pframe; printf("%s : cmd(%s:0x%x), opt(0x%x), param1(0x%x), param2(0x%x)\n", __FUNCTION__, DMG_CMD_STR(cmd), cmd, opt, param1, param2); switch(cmd) { case eDMG_CMD_ON_FRAME_ACTIVE : break; case eDMG_CMD_ON_FRAME_INACTIVE : break; } return TRUE; } void test_grp_init() { DHL_GrpInit(); DHL_CreatePlane(0, 960, 540, eDHL_PIXELTYPE_ARGB8888); DHL_CreatePlane(1, 720, 720, eDHL_PIXELTYPE_ARGB8888); DHL_SetDisplayPlane(1); DMG_FontInit(); DMG_MenuInit(NULL); } void test_menu_key(UINT32 key) { DMG_SetKeyInput(key); } void test_kbd_input() { #if 0 extern int dhl_dbg_get_char(); while(1) { int ch=dhl_dbg_get_char(); if(ch=='j') test_menu_key(KEY_LEFT); else if(ch=='l') test_menu_key(KEY_RIGHT); else if(ch=='i') test_menu_key(KEY_UP); else if(ch=='k') test_menu_key(KEY_DOWN); else if(ch=='u') test_menu_key(KEY_BACK); else if(ch=='m') test_menu_key(KEY_SEL); else if(ch=='o') test_menu_key(KEY_EXIT); else if(ch=='x') break; } #endif } void test_menu_start() { tDMG_Menu *pmenu; test_grp_init(); pmenu=DMG_CreateMenu(MENU_CFG); DMG_CreateFrame(pmenu, FRAME1_CFG); DMG_CreateFrame(pmenu, FRAME11_CFG); DMG_CreateFrame(pmenu, FRAME12_CFG); DMG_CreateFrame(pmenu, FRAME2_CFG); DMG_MenuStart(MENU_ID1); test_kbd_input(); } /* end of file */