📄 setup_tab_ui_sfm.c
字号:
/*
* FileName: setup_tab_ui_SFM.c
* Author: ChenZhao Version: Date: 2004-9-2
* Description: include in setup_tab.c when defined SOFT_MENU
* Version:
* Function List: UI function,
* LEFT,RIGHT, UP, DOWN, SELECT, ShowSetupPage,ExitSeupPage
* History:
* <author> <time> <version > <desc>
*/
#ifndef __SETUP_TAB_UI_SFM
#define __SETUP_TAB_UI_SFM
#ifndef SETUP_UI_DBG
#undef ui_printf
#undef ui_print_block
#define ui_printf(f, a...) do {} while (0)
#define ui_print_block(x,y) do {} while (0)
#else
#define ui_printf printf
#define ui_print_block print_block
#endif
#include "setup_ui_ext_func.h"
#include "setup_ui_def.h"
//===============================================
void ShowSetupSelect(BYTE index,BYTE border);//border=0:draw string only;1:with border;2:clear border;
void ShowSetupItem(BYTE index,BYTE border);//border=0:draw string only;1:with border;2:clear border:
void ShowSetupPage(BYTE refresh);
void ShowSetupPassword(const char *buf);
#ifdef TEST_INTERLACE//Modifed by ChenZhao on 2004-9-20 11:39
void test_interlace(int dir);
void osd_interlace(int x, int y, BYTE direct, BYTE fontColor, BYTE bkColor);
#endif//TEST_INTERLACE
#ifdef VIDEOSETUPGUI
void revise_val(int dir, INT8 * x, int max, int min);
void CookVideoSetupGui(int dir);
#endif
void osd_changeAlpha(UINT32 a);
void osd_draw_roundcorner(int x, int y, BYTE direct, unsigned fontColor, unsigned bkColor);
void osd_DrawSlantCorner(INT32 xStart,INT32 yStart,INT32 xEnd,INT32 yEnd,BYTE direct,BYTE lineOnly,BYTE fontColor);
void osd_DrawIcon_Trans(int xStart, int yStart, unsigned index, BYTE mask, BYTE fontColor);
UINT32 osd_StringDrawLength(const BYTE * str);
//=============================================
static UINT32 item_width,title_height,item_arena_height;
static UINT32 oldpassword,newpassword,confirmpassword;
static UINT8 passwordstate,setup_gui_state;
#ifdef VIDEOSETUPGUI
static UINT8 video_state;
#endif//VIDEOSETUPGUI
//=============================================
//for setup re-engineering //added by JS 20040728 //Modifed by ChenZhao on 2004-8-31 10:37 WP
#include "setup_ui_down_SFM.c"
#include "setup_ui_up_SFM.c"
#include "setup_ui_left_SFM.c"
#include "setup_ui_right_SFM.c"
#include "setup_ui_sel_SFM.c"
//==============================================
//#define SHOW_SYSTEM_CLOCK
//=============================================
void Draw_Border(UINT32 xStart,UINT32 yStart,UINT32 xLen,UINT32 yLen,BYTE fontColor,BYTE bkColor,BYTE fillColor)
{
osd_draw_rect( xStart<<1, yStart, xLen<<1, yLen, fontColor);
osd_draw_rect( (xStart+1)<<1, yStart+2, (xLen-2)<<1, yLen-4, fillColor);
osd_draw_roundcorner(xStart,yStart,16,bkColor, fillColor);
osd_draw_roundcorner(xStart+xLen-4,yStart,17,bkColor, fillColor);
osd_draw_roundcorner(xStart+xLen-4,yStart+yLen-8,18,bkColor, fillColor);
osd_draw_roundcorner(xStart,yStart+yLen-8,19,bkColor, fillColor);
osd_draw_roundcorner(xStart,yStart,12,fontColor, bkColor);
osd_draw_roundcorner(xStart+xLen-4,yStart,13,fontColor, bkColor);
osd_draw_roundcorner(xStart+xLen-4,yStart+yLen-8,14,fontColor, bkColor);
osd_draw_roundcorner(xStart,yStart+yLen-8,15,fontColor, bkColor);
}
void Draw_RoundBox(UINT32 xStart,UINT32 yStart,UINT32 xLen,UINT32 yLen,BYTE fontColor,BYTE bkColor)
{
osd_draw_rect( (xStart+4)<<1, yStart, (xLen-8)<<1, yLen, fontColor);
osd_draw_rect( xStart<<1, yStart+8, xLen<<1, yLen-16, fontColor);
osd_draw_roundcorner(xStart,yStart,8,fontColor, bkColor);
osd_draw_roundcorner(xStart+xLen-4,yStart,9,fontColor, bkColor);
osd_draw_roundcorner(xStart+xLen-4,yStart+yLen-8,10,fontColor, bkColor);
osd_draw_roundcorner(xStart,yStart+yLen-8,11,fontColor, bkColor);
}
#ifdef VIDEOSETUPGUI
void ShowVideoSetupGui(void)
{
const char *vstr;
int val;
UINT8 maxBlock,cBlock,i;
switch(video_state)
{
case VIDEOSTATE_BRIHTNESS:
index_y=0;
id=setup_item[page][index_y][1];
vstr=setup_SetItemString();
val=SETUP_BRIGHTNESS-2;
maxBlock=12;
cBlock=val;
break;
case VIDEOSTATE_CONTRAST:
index_y=1;
id=setup_item[page][index_y][1];
vstr=setup_SetItemString();
val=SETUP_CONTRAST-2;
maxBlock=12;
cBlock=val;
break;
case VIDEOSTATE_HUE:
index_y=2;
id=setup_item[page][index_y][1];
vstr=setup_SetItemString();
val=SETUP_HUE-8;
maxBlock=12;
cBlock=val+6;
break;
case VIDEOSTATE_SATURATION:
index_y=3;
id=setup_item[page][index_y][1];
vstr=setup_SetItemString();
val=SETUP_SATURATION-2;
maxBlock=12;
cBlock=val;
break;
default:
return;
break;
}
osd_DrawString_ori(ITEM_XSTART,SETUP_REGION_HEIGHT-SETUP_BUTTON_HEIGHT*2,vstr,ITEM_FONTCOLOR,ITEM_BGCOLOR);
for(i=0;i<cBlock;i++)
linebuf[i]=N_longbar;
for(i=cBlock;i<maxBlock;i++)
linebuf[i]=N_shortbar;
psprintf(linebuf+maxBlock,"%3d",val);
osd_DrawString_ori(ITEM_XSTART,SETUP_REGION_HEIGHT-SETUP_BUTTON_HEIGHT,linebuf,ITEM_FONTCOLOR,ITEM_BGCOLOR);
}
void CookVideoSetupGui(int dir)
{
switch(video_state)
{
case VIDEOSTATE_BRIHTNESS:
revise_val(dir, &SETUP_BRIGHTNESS, 14, 2);
SetBrightness(SETUP_BRIGHTNESS - 2);
ShowVideoSetupGui();
break;
case VIDEOSTATE_CONTRAST:
revise_val(dir, &SETUP_CONTRAST, 14, 2);
SetContrast(SETUP_CONTRAST - 2);
ShowVideoSetupGui();
break;
case VIDEOSTATE_HUE:
revise_val(dir, &SETUP_HUE, 14, 2);
SetHUE(SETUP_HUE - 2);
ShowVideoSetupGui();
break;
case VIDEOSTATE_SATURATION:
revise_val(dir, &SETUP_SATURATION, 14, 2);
SetSaturation(SETUP_SATURATION - 2);
ShowVideoSetupGui();
break;
default:
break;
}
}
void InitVideoSetupGUI(void)
{
page = VIDEOPAGE;
video_state=VIDEOSTATE_BRIHTNESS;
setup_gui_state=SETUPGUI_VIDEO;
full_scrn=SETUP; //setup menu
//read_setup_select(); // read data from EEPROM or Flush
osd_init_setup();
ShowVideoSetupGui();
}
int IsVideoSetupExit_NextVideoSetup()
{
if((SETUPGUI_VIDEO!=setup_gui_state)|| !(full_scrn&SETUP))
return 1;
else
{
switch(video_state)
{
case VIDEOSTATE_BRIHTNESS:
video_state=VIDEOSTATE_CONTRAST;
run_save_sel_cmd(page,index_y);
ShowVideoSetupGui();
break;
case VIDEOSTATE_CONTRAST:
video_state=VIDEOSTATE_HUE;
run_save_sel_cmd(page,index_y);
ShowVideoSetupGui();
break;
case VIDEOSTATE_HUE:
video_state=VIDEOSTATE_SATURATION;
run_save_sel_cmd(page,index_y);
ShowVideoSetupGui();
break;
case VIDEOSTATE_SATURATION:
run_save_sel_cmd(page,index_y);
setup_gui_state=SETUPGUI_MENU;
return 1;
break;
default:
setup_gui_state=SETUPGUI_MENU;
return 1;
break;
}
}
return 0;
}
#endif//VIDEOSETUPGUI
void ShowSetupPassword(const char *buf)
{
switch(passwordstate)
{
case PASSWORDS_INIT:
oldpassword=0;
newpassword=0xffff; //liumzh
confirmpassword=0xffff;
reset_passwd_cnt();
Draw_RoundBox(PASSWORDGUI_XSTART,PASSWORDGUI_YSTART+PASSWORDGUI_SCYLEN,PASSWORDGUI_XLEN,PASSWORDGUI_YLEN-PASSWORDGUI_SCYLEN, PASSWORDGUI_BGCOLOR,PASSWORDGUI_BGCOLOR);
Draw_RoundBox(PASSWORDGUI_XSTART,PASSWORDGUI_YSTART,PASSWORDGUI_XLEN-PASSWORDGUI_SCXLEN,PASSWORDGUI_YLEN, PASSWORDGUI_BGCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawSlantCorner(PASSWORDGUI_SCXS,PASSWORDGUI_SCYS,PASSWORDGUI_SCXE,PASSWORDGUI_SCYE,0,0,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4,PASSWORDGUI_YSTART+4,"SET PASSWORD",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT,"CURRENT:",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*2,"NEW:",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*3,"CONFIRM:",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*3,"----",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*4,"PRESS ENTER TO RETURN.",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
Draw_Border(PASSWORDGUI_XSTART-1+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT,10+4*8,SETUP_BUTTON_HEIGHT,PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR,PASSWORDGUI_FILLCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT,"----",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_FILLCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*2,"----",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
passwordstate=PASSWORDS_OLD;
break;
case PASSWORDS_OLD:
if(digit_cnt<PASSWORD_LENGTH)
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT,buf,PASSWORDGUI_FONTCOLOR,PASSWORDGUI_FILLCOLOR);
else
{
Draw_RoundBox(PASSWORDGUI_XSTART-1+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT,10+4*8,SETUP_BUTTON_HEIGHT,PASSWORDGUI_BGCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT,"XXXX",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*4,"PRESS ENTER TO SET . ",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_FILLCOLOR);
oldpassword=tmp_passwd;
reset_passwd_cnt();
passwordstate=PASSWORDS_ENTER;
}
break;
case PASSWORDS_NEW:
if(digit_cnt<PASSWORD_LENGTH)
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*2,buf,PASSWORDGUI_FONTCOLOR,PASSWORDGUI_FILLCOLOR);
else
{
Draw_Border(PASSWORDGUI_XSTART-1+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*3,10+4*8,SETUP_BUTTON_HEIGHT,PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR,PASSWORDGUI_FILLCOLOR);
Draw_RoundBox(PASSWORDGUI_XSTART-1+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*2,10+4*8,SETUP_BUTTON_HEIGHT,PASSWORDGUI_BGCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*2,"XXXX",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*3,"----",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_FILLCOLOR);
newpassword=tmp_passwd;
reset_passwd_cnt();
passwordstate=PASSWORDS_CONFIRM;
}
break;
case PASSWORDS_CONFIRM:
if(digit_cnt<PASSWORD_LENGTH)
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*3,buf,PASSWORDGUI_FONTCOLOR,PASSWORDGUI_FILLCOLOR);
else
{
Draw_Border(PASSWORDGUI_XSTART+1,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*4,6+22*8,SETUP_BUTTON_HEIGHT,PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR,PASSWORDGUI_FILLCOLOR);
Draw_RoundBox(PASSWORDGUI_XSTART-1+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*3,10+4*8,SETUP_BUTTON_HEIGHT,PASSWORDGUI_BGCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*3,"XXXX",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*4,"PRESS ENTER TO SET.",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_FILLCOLOR);
confirmpassword=tmp_passwd;
reset_passwd_cnt();
passwordstate=PASSWORDS_ENTER;
}
break;
case PASSWORDS_ENTER:
break;
case PASSWORDS_UNLOCK:
#ifdef MODIFY_PASSWORD_3308
if((oldpassword!=UserSet.parent_passwd)&&(oldpassword!=USER_SUPER_PASSWORD))
#else
if(oldpassword!=UserSet.parent_passwd)
#endif
{
passwordstate=PASSWORDS_INIT;
ShowSetupPassword("");
}
else
{
if(confirmpassword==newpassword)
{
if(newpassword!=0xffff)
UserSet.parent_passwd=newpassword;
UserSet.parental_ststus=C_UNLOCK;
passwordstate=PASSWORDS_NULL;
setupLevel=1;
setup_gui_state=SETUPGUI_MENU;
ShowSetupPage(REFRESH_ITEM);
}
else
{
reset_passwd_cnt();
passwordstate=PASSWORDS_NEW;
Draw_RoundBox(PASSWORDGUI_XSTART+1,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*4,6+22*8,SETUP_BUTTON_HEIGHT,PASSWORDGUI_BGCOLOR,PASSWORDGUI_BGCOLOR);
osd_DrawString_ori(PASSWORDGUI_XSTART+4,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*4,"PRESS ENTER TO CANCEL.",PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR);
Draw_Border(PASSWORDGUI_XSTART-1+PASSWORDGUI_XPW,PASSWORDGUI_YSTART+4+SETUP_BUTTON_HEIGHT*2,10+4*8,SETUP_BUTTON_HEIGHT,PASSWORDGUI_FONTCOLOR,PASSWORDGUI_BGCOLOR,PASSWORDGUI_FILLCOLOR);
ShowSetupPassword("----");
}
}
break;
case PASSWORDS_NULL:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -