📄 setup_tab_ui_sfm.c
字号:
break;
default:
passwordstate=PASSWORDS_NULL;
break;
}
}
#ifdef TEST_INTERLACE//Modifed by ChenZhao on 2004-9-20 11:39
void test_interlace(int dir)
{
int i,x,y;
static int c=1,s=0;
c=(c+dir+16)%16;
s=(s+2+dir/16)%2;
x=4*((SETUP_REGION_WIDTH-24*4)/8);
y=8*((SETUP_REGION_HEIGHT-48*4)/16);
osd_DrawString_ori(x,0,"ODD ", (4+c)%16,(19-c)%16);
osd_DrawString_ori(x+8*5 ,0+32 ,"EVEN ", (19-c)%16,(4+c)%16);
osd_DrawString_ori(x ,0+32 ,"FONT ", c,15-c);
osd_DrawString_ori(x+8*5 ,0 ,"BACK ", 15-c,c);
psprintf(linebuf,"COLOR DISTENCE:%+2d %s",c,s?"HORIZONTAL":"VERTICAL ");
osd_DrawString_ori(ITEM_XSTART+ITEM_TEXT_XSTART,y+48*4,linebuf, 1,2);
osd_DrawString_ori(ITEM_XSTART+ITEM_TEXT_XSTART,y+48*4+32,"PRESS ENTER TO EXIT", 1,2);
osd_draw_rect(x*2,y,48*4,48*4,1);
for(i=0;i<16;i++)
{
osd_interlace(x+4+(i&0x03)*24 ,y+8+(i>>2)*48 ,s,(i+c)%16,i);
osd_interlace(x+4+(i&0x03)*24+8 ,y+8+(i>>2)*48+16,s,i,(i+c)%16);
osd_interlace(x+4+(i&0x03)*24 ,y+8+(i>>2)*48+16,0,(i+c)%16,(i+c)%16);
osd_interlace(x+4+(i&0x03)*24+8 ,y+8+(i>>2)*48 ,0,i,i);
}
}
#endif//TEST_INTERLACE
void ShowSetupPasswordCustm(const char *buf)
{
osd_DrawString_ori(ITEM_XSTART-ITEM_TEXT_XSTART+item_width-osd_StringDrawLength(buf),title_height+BORDER_WIDTH+index_y*SETUP_BUTTON_HEIGHT, buf, ITEM_FONTCOLOR, ITEM_FILLCOLOR);
}
void ShowSetupSelect(BYTE index,BYTE border)//border=0:draw string only;1:with border;2:clear border;
{
const char *str;
UINT32 sub_xstart,sub_xwidth,sub_ystart;
if((LANGPAGE==page)|(STR_OS_REGION_CODE==setup_item[page][index_y][1]))
sub_ystart=title_height+BORDER_WIDTH+(index-MIN_ITEM_SEL)*SETUP_BUTTON_HEIGHT;
else
sub_ystart=title_height+BORDER_WIDTH+(index-MIN_ITEM_SEL+index_y)*SETUP_BUTTON_HEIGHT;
#ifdef RATING_8
if(STR_OS_RATING==setup_item[page][index_y][1])
{
sub_xwidth=SELECT_WIDTH/2;
sub_xstart=SELECT_XSTART+SELECT_TEXT_XSTART+(index % 2)*sub_xwidth;
sub_ystart=title_height+BORDER_WIDTH+((index-MIN_ITEM_SEL)/2+index_y)*SETUP_BUTTON_HEIGHT;
}
else
{
sub_xwidth=SELECT_WIDTH;
sub_xstart=SELECT_XSTART+SELECT_TEXT_XSTART;
}
#else//RATING_8
sub_xwidth=SELECT_WIDTH;
sub_xstart=SELECT_XSTART+SELECT_TEXT_XSTART;
#endif//RATING_8
if(1==border)//draw border
Draw_Border(sub_xstart-5,sub_ystart,sub_xwidth-6,SETUP_BUTTON_HEIGHT,SELECT_FONTCOLOR,SELECT_BGCOLOR,SELECT_FILLCOLOR);
else if(2==border)//clear border
Draw_RoundBox(sub_xstart-5,sub_ystart,sub_xwidth-6,SETUP_BUTTON_HEIGHT,SELECT_BGCOLOR,SELECT_BGCOLOR);
//draw background
if(1!=border)
Draw_RoundBox(sub_xstart-4,sub_ystart+2,sub_xwidth-8,SETUP_BUTTON_HEIGHT-4,SELECT_FONTBGCOLOR,SELECT_BGCOLOR);
id=setup_item[page][index_y][index];
str = setup_SetItemString();
osd_DrawString_ori(sub_xstart,sub_ystart, str, (index==setup_sel[page][index_y])?SELECT_ANTIFONTCOLOR:SELECT_FONTCOLOR,(1==border)?SELECT_FILLCOLOR:SELECT_FONTBGCOLOR);
}
void ShowSetupItem(BYTE index,BYTE border)//border=0:draw string only;1:with border;2:clear border:
{
const char *str;
if(1==border)
{
Draw_Border(ITEM_XSTART+2,title_height+BORDER_WIDTH+index*SETUP_BUTTON_HEIGHT,item_width-4,SETUP_BUTTON_HEIGHT,ITEM_FONTCOLOR,ITEM_BGCOLOR,ITEM_FILLCOLOR);
//Draw_RoundBox(ITEM_XSTART+3,title_height+BORDER_WIDTH+1+index*SETUP_BUTTON_HEIGHT,item_width-6,SETUP_BUTTON_HEIGHT-1,SANTIBGCOLOR,SBGCOLOR);
}
else if(2==border)
{
Draw_RoundBox(ITEM_XSTART+2,title_height+BORDER_WIDTH+index*SETUP_BUTTON_HEIGHT,item_width-4,SETUP_BUTTON_HEIGHT,ITEM_BGCOLOR,ITEM_BGCOLOR);
}
id = setup_item[page][index][1];
if (id==STR_OS_RETURN_MAIN_SETUP) // no main page, so this item changes to exit_setup_menu
id=STR_OS_EXIT_MENU;
str = _OsdMessegeFont1[osd_font_mode][id];
osd_DrawString_ori(ITEM_XSTART+ITEM_TEXT_XSTART,title_height+BORDER_WIDTH+index*SETUP_BUTTON_HEIGHT, str, ITEM_FONTCOLOR, (1==border)?ITEM_FILLCOLOR:ITEM_BGCOLOR);
if(SET_FUNC==setup_item[page][index][0])
{
if(2!=setupLevel)
{
id=setup_item[page][index][setup_sel[page][index]];
str = setup_SetItemString();
osd_DrawString_ori(ITEM_XSTART-ITEM_TEXT_XSTART-8+item_width-osd_StringDrawLength(str),title_height+BORDER_WIDTH+index*SETUP_BUTTON_HEIGHT, str, ITEM_FONTCOLOR, (1==border)?ITEM_FILLCOLOR:ITEM_BGCOLOR);
}
if(!(index_y!=index && 2==setupLevel))
osd_DrawString_ori(ITEM_XSTART-ITEM_TEXT_XSTART-8+item_width,title_height+BORDER_WIDTH+index*SETUP_BUTTON_HEIGHT, Ch_arrorR, ITEM_FONTCOLOR, (1==border)?ITEM_FILLCOLOR:ITEM_BGCOLOR);
}
else if(SET_SCALE==setup_item[page][index][0])
{
if(!(index_y!=index && 2==setupLevel))
osd_DrawString_ori(ITEM_XSTART-ITEM_TEXT_XSTART-8+item_width,title_height+BORDER_WIDTH+index*SETUP_BUTTON_HEIGHT, Ch_arrorR, ITEM_FONTCOLOR, (1==border)?ITEM_FILLCOLOR:ITEM_BGCOLOR);
}
else if(SET_NM==setup_item[page][index][0])
{
if(2!=setupLevel)
{
if(full_scrn&CUSTM)
{
psprintf(linebuf,"%04d", UserSet.parent_passwd);
osd_DrawString_ori(ITEM_XSTART-ITEM_TEXT_XSTART+item_width-osd_StringDrawLength(linebuf),title_height+BORDER_WIDTH+index*SETUP_BUTTON_HEIGHT, linebuf, ITEM_FONTCOLOR, (1==border)?ITEM_FILLCOLOR:ITEM_BGCOLOR);
}
else
{
id=setup_item[page][index][2+UserSet.parental_ststus];
str = setup_SetItemString();
osd_DrawString_ori(ITEM_XSTART-ITEM_TEXT_XSTART+item_width-osd_StringDrawLength(str),title_height+BORDER_WIDTH+index*SETUP_BUTTON_HEIGHT, str, ITEM_FONTCOLOR, (1==border)?ITEM_FILLCOLOR:ITEM_BGCOLOR);
}
}
}
return;
}
void Draw_arrow(UINT32 xStart,UINT32 yStart,UINT32 xLen,UINT32 yLen,BYTE fontColor,BYTE direct)
{
UINT32 xm,ym,x1,y1,x2,y2;
BYTE dir1,dir2;
direct=(4+direct%4)%4;
//direct 0:up,2:down,1:left,3:right;
xm=(direct%2)?((1==direct)?0:xLen-1):xLen/2;
ym=(direct%2)?yLen/2:((0==direct)?0:yLen-1);
x1=(1==direct)?xLen-1:0;
y1=(0==direct)?yLen-1:0;
x2=(direct%2)?x1:(xLen-x1-1);
y2=(direct%2)?(yLen-y1-1):y1;
//printf("d%d:%d %d,%d %d,%d %d\n",direct,xm,ym,x1,y1,x2,y2);
dir2=dir1=(!(direct%2))||(1==direct);
if(!(direct%2))dir2=!dir2;
osd_DrawSlantCorner(xStart+xm,yStart+ym,xStart+x1,yStart+y1,dir1,0,fontColor);
osd_DrawSlantCorner(xStart+xm,yStart+ym,xStart+x2,yStart+y2,dir2,0,fontColor);
}
#ifdef SHOW_PAGE_TITLE
void ShowPageTitle()
{
const char *str;
osd_draw_rect(TITLE_XSTART*2,TITLE_YSTART,TITLE_XWIDTH*2,TITLE_HEIGHT,TITLE_BGCOLOR);
osd_draw_roundcorner(TITLE_XSTART,TITLE_YSTART, R_CORNER_LU, TITLE_BGCOLOR,SETUP_BGCOLOR );
osd_draw_roundcorner(TITLE_XSTART+TITLE_XWIDTH-4,TITLE_YSTART, R_CORNER_RU,TITLE_BGCOLOR , SETUP_BGCOLOR);
osd_draw_roundcorner(TITLE_XSTART+TITLE_XWIDTH,TITLE_HEIGHT-8, R_CORNER_LD|R_CORNER_TRANS|R_CORNER_INVERT,TITLE_BGCOLOR , SETUP_BGCOLOR);
//osd_draw_roundcorner(TITLE_XSTART-4,TITLE_HEIGHT-8,R_CORNER_RD|R_CORNER_TRANS|R_CORNER_INVERT, TITLE_BGCOLOR, SETUP_BGCOLOR);
id = setup_MainP[page][0];
if (id==STR_OS_RETURN_MAIN_SETUP) // no main page, so this item changes to exit_setup_menu
id=STR_OS_EXIT_MENU;
str = _OsdMessegeFont1[osd_font_mode][id];
osd_DrawString_ori(TITLE_XSTART+(TITLE_XWIDTH-osd_StringDrawLength(str))/2,TITLE_YSTART,str,TITLE_FONTCOLOR,TITLE_BGCOLOR);
}
#endif//SHOW_PAGE_TITLE
#ifdef SHOW_SETUP_GUIDE
void ShowSetupGuide(void)
{
const char *str1="TO SET PRESS THEN";
const char *str2="TO QUIT PRESS";
const char *str3="ENTER";
const char *str4="SETUP";
osd_DrawString_ori(GUIDE_XSTART,GUIDE_YSTART,str1, GUIDE_FONTCOLOR,GUIDE_BGCOLOR);
osd_DrawString_ori(GUIDE_XSTART,GUIDE_YSTART+SETUP_BUTTON_HEIGHT,str2, GUIDE_FONTCOLOR,GUIDE_BGCOLOR);
Draw_RoundBox(GUIDE_XSTART+osd_StringDrawLength(str1)+4,GUIDE_YSTART+2,osd_StringDrawLength(str3)+8,SETUP_BUTTON_HEIGHT-4,GUIDE_FILLCOLOR,GUIDE_BGCOLOR);
osd_DrawString_ori(GUIDE_XSTART+osd_StringDrawLength(str1)+8,GUIDE_YSTART,str3, GUIDE_FONTCOLOR,GUIDE_FILLCOLOR);
Draw_RoundBox(GUIDE_XSTART+osd_StringDrawLength(str2)+4,GUIDE_YSTART+SETUP_BUTTON_HEIGHT+2,osd_StringDrawLength(str4)+8,SETUP_BUTTON_HEIGHT-4,GUIDE_FILLCOLOR,GUIDE_BGCOLOR);
osd_DrawString_ori(GUIDE_XSTART+osd_StringDrawLength(str2)+8,GUIDE_YSTART+SETUP_BUTTON_HEIGHT,str4, GUIDE_FONTCOLOR,GUIDE_FILLCOLOR);
Draw_RoundBox(GUIDE_XSTART+106,GUIDE_YSTART+2,20,SETUP_BUTTON_HEIGHT-4,GUIDE_FILLCOLOR,GUIDE_BGCOLOR);
Draw_RoundBox(GUIDE_XSTART+130,GUIDE_YSTART+2,20,SETUP_BUTTON_HEIGHT-4,GUIDE_FILLCOLOR,GUIDE_BGCOLOR);
Draw_RoundBox(GUIDE_XSTART+154,GUIDE_YSTART+2,20,SETUP_BUTTON_HEIGHT-4,GUIDE_FILLCOLOR,GUIDE_BGCOLOR);
Draw_RoundBox(GUIDE_XSTART+178,GUIDE_YSTART+2,20,SETUP_BUTTON_HEIGHT-4,GUIDE_FILLCOLOR,GUIDE_BGCOLOR);
Draw_arrow(GUIDE_XSTART+110,GUIDE_YSTART+5,11,21,GUIDE_FONTCOLOR,0);
Draw_arrow(GUIDE_XSTART+134,GUIDE_YSTART+5,11,21,GUIDE_FONTCOLOR,1);
Draw_arrow(GUIDE_XSTART+158,GUIDE_YSTART+5,11,21,GUIDE_FONTCOLOR,2);
Draw_arrow(GUIDE_XSTART+182,GUIDE_YSTART+5,11,21,GUIDE_FONTCOLOR,3);
//ReadFromI2c(0xa0, 0x01,linebuf,4);
//printf("readed=0x%x\n",*((UINT32 *)linebuf));
}
#endif//SHOW_SETUP_GUIDE
void ShowSetupPage(BYTE refresh)
{
int i;
BYTE iItemType;
if(2==setupLevel)
item_width=ITEM_WIDTH;
else
item_width=ITEM_WIDTH+SELECT_WIDTH;
if(full_scrn&CUSTM)
{
title_height=TITLE_HEIGHT+SETUP_BUTTON_HEIGHT*CUSTM_YSTART;
item_arena_height=ITEM_ARENA_HEIGHT+TITLE_HEIGHT-title_height;
}
else
{
title_height=TITLE_HEIGHT;
item_arena_height=ITEM_ARENA_HEIGHT;
}
switch(refresh)
{
case REFRESH_SETUP:
passwordstate=PASSWORDS_NULL;
setup_gui_state=SETUPGUI_MENU;
#ifdef SHOW_SETUP_GUIDE
ShowSetupGuide();
#endif//SHOW_SETUP_GUIDE
case REFRESH_PAGE:
#ifdef SHOW_PAGE_TITLE
ShowPageTitle();
#endif//SHOW_PAGE_TITLE
Draw_RoundBox(PAGE_XSTART,title_height,PAGE_XWIDTH,item_arena_height,PAGE_BGCOLOR,SETUP_BGCOLOR);
#ifdef ICON_BUTTON
#if ITEM_XSTART>PAGE_XSTART+PAGE_WIDTH
osd_draw_rect((PAGE_XSTART+PAGE_XWIDTH)*2,title_height,(ITEM_XSTART-PAGE_XSTART-PAGE_XWIDTH)*2,item_arena_height,SETUP_BGCOLOR);
#endif
//if(0==setupLevel)
{
osd_draw_rect(PAGE_XSTART*2,title_height+4*BORDER_WIDTH+page*PAGE_TITLE_HEIGHT,(ITEM_XSTART-PAGE_XSTART)*2,PAGE_TITLE_HEIGHT,ITEM_BGCOLOR);
osd_draw_roundcorner(PAGE_XSTART, title_height+4*BORDER_WIDTH+page*PAGE_TITLE_HEIGHT, 0, ITEM_BGCOLOR, PAGE_BGCOLOR);
osd_draw_roundcorner(ITEM_XSTART-4,title_height+4*BORDER_WIDTH+PAGE_TITLE_HEIGHT+page*PAGE_TITLE_HEIGHT, 25,ITEM_BGCOLOR , PAGE_BGCOLOR);
osd_draw_roundcorner(ITEM_XSTART-4,title_height+4*BORDER_WIDTH-8+page*PAGE_TITLE_HEIGHT, 26,ITEM_BGCOLOR , PAGE_BGCOLOR);
osd_draw_roundcorner(PAGE_XSTART,title_height+4*BORDER_WIDTH+PAGE_TITLE_HEIGHT+page*PAGE_TITLE_HEIGHT-8, 3, ITEM_BGCOLOR, PAGE_BGCOLOR);
}
#endif//ICON_BUTTON
for(i=0;i<=MAX_SHOW_PAGE;i++)
{
if(i==page)
if(0==setupLevel)
{
osd_DrawIcon_Trans(PAGE_XSTART+PAGE_ICON_XSTART,title_height+6*BORDER_WIDTH+i*PAGE_TITLE_HEIGHT,setup_MainP[i][1],1,PAGE_SDCOLOR);
osd_DrawIcon_Trans(PAGE_XSTART-3+PAGE_ICON_XSTART,title_height-6+6*BORDER_WIDTH+i*PAGE_TITLE_HEIGHT,setup_MainP[i][1],0,0);
}
else
{
#ifndef ICON_BUTTON
osd_DrawIcon_Trans(PAGE_XSTART+3+PAGE_ICON_XSTART,title_height+6+6*BORDER_WIDTH+i*PAGE_TITLE_HEIGHT,setup_MainP[i][1],1,PAGE_SDCOLOR);
#endif//ICON_BUTTON
osd_DrawIcon_Trans(PAGE_XSTART+PAGE_ICON_XSTART,title_height+6*BORDER_WIDTH+i*PAGE_TITLE_HEIGHT,setup_MainP[i][1],0,0);
}
else
osd_DrawIcon_Trans(PAGE_XSTART+PAGE_ICON_XSTART,title_height+6*BORDER_WIDTH+i*PAGE_TITLE_HEIGHT,setup_MainP[i][1],0,0);
}
case REFRESH_ITEM:
if(full_scrn&CUSTM)
{
osd_draw_roundcorner(SELECT_XSTART+SELECT_WIDTH-4,title_height-8,2,ITEM_BGCOLOR,SETUP_BGCOLOR);
osd_draw_roundcorner(ITEM_XSTART+item_width-4,TITLE_HEIGHT+ITEM_ARENA_HEIGHT-8,2,ITEM_BGCOLOR,SETUP_BGCOLOR);
Draw_RoundBox(ITEM_XSTART,TITLE_HEIGHT,item_width,ITEM_ARENA_HEIGHT,ITEM_BGCOLOR,SETUP_BGCOLOR);
ShowCUSTMMsg();//printf("full_scrn=%x\n",full_scrn);
}
else
{
#ifdef SHOW_PAGE_TITLE
osd_draw_roundcorner(ITEM_XSTART,title_height,R_CORNER_LU|R_CORNER_INVERT|R_CORNER_TRANS,ITEM_BGCOLOR,SETUP_BGCOLOR);
#endif//SHOW_PAGE_TITLE
osd_draw_roundcorner(ITEM_XSTART+item_width-4,title_height,1,ITEM_BGCOLOR,SETUP_BGCOLOR);
osd_draw_roundcorner(ITEM_XSTART+item_width-4,title_height+item_arena_height-8,2,ITEM_BGCOLOR,SETUP_BGCOLOR);
Draw_RoundBox(ITEM_XSTART,title_height,item_width,item_arena_height,ITEM_BGCOLOR,SETUP_BGCOLOR);
}
if(0==setupLevel)
{
for (i=0; i<MAX_PAGE_ITEM; i++)
{
iItemType=setup_item[page][i][0];
if (iItemType == SET_SPACE) continue;
if (iItemType == SET_NE) break;
ShowSetupItem(i,0);
}
setupItemNum[1] = i;
}
else
{for(i=0;i<setupItemNum[1];i++)
{
ShowSetupItem(i,((index_y==i)&&(1==setupLevel))?1:0);
}
}
case REFRESH_SELECT:
if(2==setupLevel)
{
osd_draw_rect(SELECT_XSTART<<1,title_height,SELECT_WIDTH<<1,item_arena_height, SELECT_BGCOLOR);
if(full_scrn&CUSTM)
osd_draw_roundcorner(SELECT_XSTART,title_height,16,ITEM_BGCOLOR,SELECT_BGCOLOR);
if(SET_FUNC==setup_item[page][index_y][0])
{for(i=MIN_ITEM_SEL;i<MAX_ITEM_SEL;i++)
{
if(0==setup_item[page][index_y][i]) break;
ShowSetupSelect(i,(index_y2==i)?1:0);
}
setupItemNum[2] = i;
}
else if(SET_SCALE==setup_item[page][index_y][0])
{setup_PrepareScaleItem(setup_item[page][index_y][1],1);
}
}
break;
case REFRESH_CUSTM:
page=MAX_SHOW_PAGE+1;
setupLevel=1;
index_y=CUSTM_YSTART;
for (i=0; i<MAX_PAGE_ITEM; i++)
{
iItemType=setup_item[page][i][0];
if (iItemType == SET_SPACE) continue;
if (iItemType == SET_NE) break;
}
setupItemNum[1] = i;
passwordstate=PASSWORDS_NULL;
setup_gui_state=SETUPGUI_MENU;
ShowSetupPage(REFRESH_ITEM);
break;
default:
break;
}
}
//=============================================
void ShowCUSTMMsg(void)
{
BYTE buf[40];
BYTE *pVersion;
#ifdef DVD_SERVO
extern const UINT8 ServoVersion[];
#endif
extern const UINT8 KernelVersion[]; // moved to libkern.a, leochen 2004/4/19 09:43
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -