www.pudn.com > sunplus-DVDsetup.rar > setup_ui1.c, change:2004-06-28,size:16998b
#include "user_init.h"
#include "global.h"
#include "osd.h"
#include "func.h"
#include "navdata.h"
#include "kernel.h"
#include "vpp.h"
#include "user_if.h"
#include "dsp3_if.h"
#include "cchar.h"
#include "ircmd.h"
#include "audif.h"
#include "tvif.h"
#include "memmap.h"
#include "stdlib.h"
#include "kinf.h"
#include "setup_def.h"
#include "one_key_pass.h"
extern UINT8 setup_sel[MAX_SETUP_PAGE + MAX_CUSTM_SETUP_PAGE][MAX_PAGE_ITEM];
extern const UINT8 setup_item[MAX_SETUP_PAGE + MAX_CUSTM_SETUP_PAGE][MAX_PAGE_ITEM][MAX_ITEM_SEL];
#include "setup_page.h"
extern UINT8 setup_page;
extern UINT8 setup_id;
extern UINT8 setup_sel_item;
#define page setup_page
#define id setup_id
#define sel setup_sel_item
extern BYTE passwdGUI_state;//record the current state in password GUI
extern BYTE index_y; //item index for 1st-level page, 2nd-level page
extern BYTE index_y2; //item index for 3rd-level page
extern BYTE index_y_start;
extern BYTE index_y2_start;
extern BYTE submenuStart;
extern BYTE setupLevel; //0:main menu, 1:sub-menu, 2:selection-menu(menu of sub-menu)
extern BYTE setupItemNum[];
#if defined(BBK_NEW_SETUP)&&defined(BBK_DV961_DVD) //axel 2004/1/26 04:01 DSS555 need not OENKEYPASSPAGE
//#ifdef BBK_NEW_SETUP//zhaoyanhua add 03-11-7 16:03
/*
* Show main page.
*/
void ShowSetupMainPage()
{
const char *str;
int fontColor = 0;
int bgColor = 0;
fontColor = 6;
bgColor = 0;
SetOsdCol(1,1,SETUP_HL_COLOR,0xa346ffff);
//clear rect to show correctly.
osd_draw_region_rect(ONE_KEY_PASS_X, ONE_KEY_PASS_Y, 20*24, 14*24,0, 1);
switch(index_x)
{
case ONE_KEY_PASS_X:
draw_setup_Btn_HL( 1, ONE_KEY_PASS_X*11, ONE_KEY_PASS_Y*4, 8* 24, 1*32,4,SETUP_HL_COLOR);
break;
case SETUP_X:
draw_setup_Btn_HL( 1,SETUP_X*14+28, SETUP_Y*4, 8* 24, 1*32,4,SETUP_HL_COLOR);
break;
case EXIT_SETUP_MENU_X:
draw_setup_Btn_HL( 1,EXIT_SETUP_MENU_X*14+32, EXIT_SETUP_MENU_Y*4, 9* 24, 1*32,4,SETUP_HL_COLOR);
break;
}
str = _OsdMessegeFont1[osd_font_mode][STR_OS_ONEKEY_SETUP];
osd_DrawRegionString(ONE_KEY_PASS_X, ONE_KEY_PASS_Y, str, fontColor,bgColor, 1);
str = _OsdMessegeFont1[osd_font_mode][STR_OS_PROFESSION_SETUP];
osd_DrawRegionString(SETUP_X+1, SETUP_Y, str, fontColor,bgColor, 1);
str = _OsdMessegeFont1[osd_font_mode][STR_OS_EXIT_MENU];
osd_DrawRegionString(EXIT_SETUP_MENU_X+2, EXIT_SETUP_MENU_Y, str, fontColor,bgColor, 1);
}
/*
**FUNC : draw a rect border to show which button is select.
**
** zhaoyanhua
** Date: 03-11-7 15:00
*/
void draw_setup_Btn_HL(BYTE r,UINT32 xStart, UINT32 yStart,UINT32 xLen,UINT32 yLen, int LineWidth,BYTE color)
{
//top line
osd_draw_hline_region(xStart, xStart+xLen, yStart, color,LineWidth, r);
//bottom Line
osd_draw_hline_region(xStart, xStart+xLen, yStart+yLen-LineWidth, color,LineWidth, r);
//left line
osd_draw_vline_region(xStart, yStart, yStart+yLen, color,LineWidth, r);
//right line
osd_draw_vline_region(xStart+xLen-LineWidth, yStart, yStart+yLen, color,LineWidth, r);
}
/*
* show onekey setup page
*/
void ShowOneKeyPassPage()
{
osd_init_setup();
index_y=0;
index_y_start=0;
setupItemNum[1]= MAX_PAGE_ITEM; // ALAN, 2003/9/9 03:32PM, to initial setupItemNum
setupLevel=0; // alan
page = ONEKEYPASSPAGE;
ShowSetupPage(2);
}
/*
* show main
*/
void ShowProfessionalSetup()
{
osd_init_setup();
page = 0;
index_y=0;
index_y_start=0;
setupItemNum[1]=MAX_PAGE_ITEM; // ALAN, 2003/9/9 03:32PM, to initial setupItemNum
setupLevel=0; // alan
ShowSetupPage(2);
}
/*
* get sel ITEM of ONEKEYPASSPAGE
* to make the ONEKEYPASSPAGE has the same change with special SETUP PAGE
*/
int GetOneKeyPageSel(int index_y)
{
int sel_item ;
switch(index_y)
{
case 0: // audio output(MULTISPKPAGE)
sel_item=SETUP_SPK_DOWNMIX;
break;
case 1:// TV format(SYSPAGE)
sel_item = SETUP_TV_FORMAT;
break;
default:
sel_item = 2;//DEFAULT VALUE ITEM
}
return sel_item;
}
#endif// end for bbk's new setup
#ifdef VIDEO_SETUP_NEW_GUI
/*
*Function Description:
* get the video current value to show in SETUP VIDEO PAGE
*
* INPUT:
* id ---> video osd string id type
*
* RETURN :
* video value.
*
* zhaoyanhua 2004-1-7 17:01
*/
int GetVideoSetValue(int str_id)
{
int iValue = 0;
switch (str_id)
{
case STR_OS_BRIGHTNESS:
iValue = SETUP_BRIGHTNESS-2;
break;
case STR_OS_CONTRAST:
iValue = SETUP_CONTRAST-2;
break;
case STR_OS_HUE:
iValue = SETUP_HUE-2-6;//must do like this!
//printf("##### ---setup_hue --%d--\n",iValue);
break;
case STR_OS_SATURATION:
iValue = SETUP_SATURATION-2;
break;
#ifdef DIP_CFG_ENABLE
case STR_OS_DEINTLC:
iValue = SETUP_DE_INTERLACE-2;
break;
#endif
default:break;
}
//printf("###### ----in GetVideoSetValue %d---\n",iValue);
return iValue;
}
/*
*Function Description:
* Draw Video Item(Brightness/hue/contrast ,ect) value in SETUP OSD.
*
* INPUT:
* ItemIndex ---> y_postion in level 1
*
* zhaoyanhua 2004-1-7 19:22
*/
void setup_VideoItemValue(int ItemIndex,int fontColor,int bgColor)
{
BYTE buf[4];
//draw ">" between sub-mean and it's corresponding selection area
//osd_DrawString(SETUP_SUB_XSTART-1, ItemIndex+SETUP_MENU_YSTART+1, Ch_arrorR, SFONTCOLOR, SBGCOLOR);
id = setup_item[page][ItemIndex][1];
psprintf(buf,"%02d",GetVideoSetValue(id));
//str = buf;
//str = buf;
osd_DrawString(SETUP_SUB_XSTART+1, ItemIndex+SETUP_MENU_YSTART+1, buf, fontColor, bgColor);
}
/*
* Funciton Description:
*
* draw GUI to adjust video value
*
* INPUT:
* id : video type :brightness/contrast/hue,ect
*
*/
void setup_ShowVideoGUI(int id)
{
const char *str;
#define MSG_STRING_X 0//message string xstart
#define MSG_STRING_Y 11//message string ystart
int GUI_x= 0,GUI_y= 0,GUI_h= 0,GUI_w = 0;//xstart/ystart/ylen/xlen
int GUI_Backx = 0,GUI_Backy = 0, GUI_Backh= 0,GUI_Backw = 0;//background Rect xstart/ystart/ylen/xlen
int GUI_Msgx= 0,GUI_Msgy= 0, GUI_Msgw =0, GUI_Msgh = 0;
SetOsdCol(0,0,VIDEO_GUI_TRANS_COLOR,0x1e1e1e00);
GUI_Backx = 0;
GUI_Backy = SETUP_BUTTON_HEIGHT+24+40 - 2;
//GUI_Backh = 9*SETUP_BUTTON_HEIGHT;
GUI_Backh = 10*SETUP_BUTTON_HEIGHT-12;
GUI_Backw = SETUP_MAX_WIDTH*15+40-4;
//GUI_Backw = SETUP_MAX_WIDTH*15+40;
//osd_draw_rect(20, SETUP_BUTTON_HEIGHT+24+40, (SETUP_MAX_WIDTH*15), 10*SETUP_BUTTON_HEIGHT-12, 10);
//osd_draw_rect(0, SETUP_BUTTON_HEIGHT+24+40, (SETUP_MAX_WIDTH*15+40), 10*SETUP_BUTTON_HEIGHT-12, VIDEO_GUI_TRANS_COLOR);
//draw background
//draw a big transparent rect .
osd_draw_rect(GUI_Backx, GUI_Backy, GUI_Backw, GUI_Backh, VIDEO_GUI_TRANS_COLOR);
//draw operation message rect
GUI_Msgh = 70;
GUI_Msgw = GUI_Backw;
GUI_Msgx = GUI_Backx;
GUI_Msgy = GUI_Backy+GUI_Backh-GUI_Msgh;
osd_draw_rect(GUI_Msgx, GUI_Msgy, GUI_Msgw, GUI_Msgh, VIDEO_GUI_MSG_BGCOLOR);
//draw video GUI
GUI_h = (GUI_Backh - GUI_Msgh)/2 ;//GUI height
GUI_w = GUI_Backw/2+120+70;//GUI width
GUI_x = GUI_Backx + (GUI_Backw - GUI_w)/2;//GUI xstart
GUI_y = GUI_Backy + (GUI_Backh - GUI_h - GUI_Msgh)/2; //GUI ystart
osd_draw_rect(GUI_x, GUI_y, GUI_w, GUI_h, SBGCOLOR);
//draw rect frame
//I don't know why in SETUP_COLOR_TYPE2, SBLACKCOLOR -> WHITE
// SWHITECOLOR -> BLACK ?
osd_DrawLine(GUI_x-2, GUI_y-1, GUI_x-2, GUI_y-1+GUI_h,SFONTCOLOR, 2);//left line
osd_DrawLine(GUI_x, GUI_y-2, GUI_x+GUI_w, GUI_y-2,SFONTCOLOR, 2);//top line
osd_DrawLine(GUI_x-1, GUI_y-2+GUI_h, GUI_x+1+GUI_w, GUI_y-2+GUI_h,SWHITECOLOR, 2);//bottom line
osd_DrawLine(GUI_x-1+GUI_w, GUI_y-2, GUI_x-1+GUI_w, GUI_y+GUI_h,SWHITECOLOR, 2);//right line
//show id string
setup_CookVideoGUIString(id);
//show operation Message about this id
str = _OsdMessegeFont1[osd_font_mode][STR_OS_ENTER_RETURN];
osd_DrawString(MSG_STRING_X, MSG_STRING_Y, str, SFONTCOLOR, VIDEO_GUI_MSG_BGCOLOR);///13
//osd_DrawString(MSG_STRING_X, MSG_STRING_Y, "ENTER SELECT TO RETURN MAIN SETUP",SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
}
/*
* Funciton Discription:
* when LEFT/RIGHT,show corresponding GUI and value.
*
* zhaoyanhua 2004-1-8 16:10
*/
void setup_CookVideoGUIString(int id)
{
#define STRING_X 4//6
#define STRING_Y 6
int font_id = 0;
int Level= 0;
int totalLevel = 0;
switch (id)
{
case STR_OS_BRIGHTNESS:
Level = SETUP_BRIGHTNESS-2;
totalLevel = 13;
font_id = VIDEO_BIGHT_ID;
break;
case STR_OS_CONTRAST:
Level = SETUP_CONTRAST-2;
totalLevel = 13;
font_id = VIDEO_CONTRAST_ID;
break;
case STR_OS_HUE:
Level = SETUP_HUE-2;
totalLevel = 13;
font_id = VIDEO_HUE_ID;
break;
case STR_OS_SATURATION:
Level = SETUP_SATURATION-2;
totalLevel = 13;
font_id = VIDEO_SATURATION_ID;
break;
#ifdef DIP_CFG_ENABLE
case STR_OS_DEINTLC:
Level = SETUP_DE_INTERLACE-2;
totalLevel = 7;
font_id = VIDEO_DEINTERLACE_ID;
break;
#endif
default:break;
}
show_level(font_id, Level, totalLevel);//write message to "linebuf".
osd_DrawString(STRING_X, STRING_Y, linebuf,STITLECOLOR, SBGCOLOR);
}
#endif//VIDEO_SETUP_NEW_GUI
#ifdef SETUP_PASSWORD_GUI //zhaoyanhua add 2004-1-14 16:54
/*
* Function Description:
* in SETUP show password GUI
*
*/
void setup_ShowPasswdGUI(void)
{
const char *str;
int GUI_x= 0,GUI_y= 0,GUI_h= 0,GUI_w = 0;//xstart/ystart/ylen/xlen
int GUI_Backx = 0,GUI_Backy = 0, GUI_Backh= 0,GUI_Backw = 0;//background Rect xstart/ystart/ylen/xlen
int GUI_Msgx= 0,GUI_Msgy= 0, GUI_Msgw =0, GUI_Msgh = 0;
SetOsdCol(0,0,PASSWD_GUI_TRANS_COLOR,0x1e1e1e00);
SetOsdCol(0,0,SANTIBGCOLOR,0xa346ffff);
GUI_Backx = 0;
GUI_Backy = SETUP_BUTTON_HEIGHT+24+40-2;
GUI_Backh = 10*SETUP_BUTTON_HEIGHT-12;
GUI_Backw = SETUP_MAX_WIDTH*15+40-4;
//draw background
//draw a big transparent rect .
osd_draw_rect(GUI_Backx, GUI_Backy, GUI_Backw, GUI_Backh, PASSWD_GUI_TRANS_COLOR);
//draw operation message rect
GUI_Msgh = 70;
GUI_Msgw = GUI_Backw;
GUI_Msgx = GUI_Backx;
GUI_Msgy = GUI_Backy+GUI_Backh-GUI_Msgh;
osd_draw_rect(GUI_Msgx, GUI_Msgy, GUI_Msgw, GUI_Msgh, PASSWD_GUI_MSG_BGCOLOR);
//draw video GUI
GUI_h = (GUI_Backh - GUI_Msgh)/2+ 80;//+100 ;//GUI height
GUI_w = GUI_Backw/2+120;//GUI width
GUI_x = GUI_Backx + (GUI_Backw - GUI_w)/2;//GUI xstart
GUI_y = GUI_Backy + (GUI_Backh - GUI_h - GUI_Msgh)/2; //GUI ystart
osd_draw_rect(GUI_x, GUI_y, GUI_w, GUI_h, SBGCOLOR);
//draw rect frame
//I don't know why in SETUP_COLOR_TYPE2, SBLACKCOLOR -> WHITE
// SWHITECOLOR -> BLACK ?
osd_DrawLine(GUI_x-2, GUI_y-1, GUI_x-2, GUI_y-1+GUI_h,SFONTCOLOR, 2);//left line
osd_DrawLine(GUI_x, GUI_y-2, GUI_x+GUI_w, GUI_y-2,SFONTCOLOR, 2);//top line
osd_DrawLine(GUI_x-1, GUI_y-2+GUI_h, GUI_x+1+GUI_w, GUI_y-2+GUI_h,SWHITECOLOR, 2);//bottom line
osd_DrawLine(GUI_x-1+GUI_w, GUI_y-2, GUI_x-1+GUI_w, GUI_y+GUI_h,SWHITECOLOR, 2);//right line
//nwe passwd
str = _OsdMessegeFont1[osd_font_mode][STR_OS_OLD_PASSWD];
osd_DrawString(OLD_PASSWD_X, OLD_PASSWD_Y, str, STITLECOLOR, SBGCOLOR);///13
//osd_DrawString(OLD_PASSWD_X, OLD_PASSWD_Y, "OLD PASSWD:",STITLECOLOR, SBGCOLOR);
if(passwdGUI_state != INPUT_GRADE_PASSWD_STATE)//grade passwd not show new passwd
{
str = _OsdMessegeFont1[osd_font_mode][STR_OS_NEW_PASSWD];
osd_DrawString(NEW_PASSWD_X, NEW_PASSWD_Y, str, STITLECOLOR, SBGCOLOR);///13
//osd_DrawString(NEW_PASSWD_X, NEW_PASSWD_Y, "NEW PASSWD:",STITLECOLOR, SBGCOLOR);
}
setup_PasswdGUIRefresh(passwdGUI_state);
}
/*
* when input password refresh PASSWORD in time
*/
void setup_PasswdGUIRefresh(int state)
{
const char *str;
int oldpswd_bgcolor = 0;
int newpswd_bgcolor = 0;
int ok_bgcolor = 0,bDown = 0,left_top_color = 0,right_bottom_color = 0;
switch(state)
{
case INPUT_OLD_PASSWD_STATE:
oldpswd_bgcolor = PASSWD_SELECTED_COLOR;
newpswd_bgcolor = PASSWD_UNSELECTED_COLOR;
ok_bgcolor = PASSWD_UNSELECTED_COLOR;;
bDown = BUTTON_DOWN;
//show operation Message about this state
//"please input old password"
str = _OsdMessegeFont1[osd_font_mode][STR_OS_PASSWD_SENTENCE1];
osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y, str, SFONTCOLOR, VIDEO_GUI_MSG_BGCOLOR);///13
//osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y , "PLEASE INPUT OLD PASSWD",SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
break;
case INPUT_NEW_PASSWD_STATE:
oldpswd_bgcolor = PASSWD_SELECTED_COLOR;
newpswd_bgcolor = PASSWD_SELECTED_COLOR;
ok_bgcolor = PASSWD_UNSELECTED_COLOR;
bDown = BUTTON_DOWN;
//show operation Message about this state
//"please input new password"
osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y , " ",SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
str = _OsdMessegeFont1[osd_font_mode][STR_OS_PASSWD_SENTENCE2];
osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y, str, SFONTCOLOR, VIDEO_GUI_MSG_BGCOLOR);///13
//osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y , "PLEASE INPUT NEW PASSWD",SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
break;
case INPUT_GRADE_PASSWD_STATE:
oldpswd_bgcolor = PASSWD_SELECTED_COLOR;
ok_bgcolor = PASSWD_UNSELECTED_COLOR;;
bDown = BUTTON_DOWN;
//show operation Message about this state
//"please input old password"
str = _OsdMessegeFont1[osd_font_mode][STR_OS_PASSWD_SENTENCE1];
osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y, str, SFONTCOLOR, VIDEO_GUI_MSG_BGCOLOR);///13
//osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y , "PLEASE INPUT OLD PASSWD",SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
break;
case SHOW_OK_STATE:
oldpswd_bgcolor = PASSWD_UNSELECTED_COLOR;
newpswd_bgcolor = PASSWD_UNSELECTED_COLOR;
ok_bgcolor = PASSWD_SELECTED_COLOR;;
bDown = BUTTON_UP;
//show operation Message about this state
//"enter select return to main setup"
str = _OsdMessegeFont1[osd_font_mode][STR_OS_ENTER_RETURN];
osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y, str, SFONTCOLOR, VIDEO_GUI_MSG_BGCOLOR);///13
//osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y , "ENTER SELECT TO RETURN MAIN SETUP",SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
break;
case SHOW_ERROR_STATE://when old password error, show error message. zhaoyanhua add 2004-1-30 11:36
oldpswd_bgcolor = PASSWD_SELECTED_COLOR;
newpswd_bgcolor = PASSWD_UNSELECTED_COLOR;
ok_bgcolor = PASSWD_UNSELECTED_COLOR;;
bDown = BUTTON_DOWN;
//show operation Message about this state
//"passwd error! please input again"
osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y , " ",SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
str = _OsdMessegeFont1[osd_font_mode][STR_OS_PASSWD_ERROR];
osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y , str,SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
//osd_DrawString(PASSWD_MSG_STRING_X, PASSWD_MSG_STRING_Y , "PASSWD ERROR. PLEASE INPUT AGAIN",SFONTCOLOR,VIDEO_GUI_MSG_BGCOLOR);///13
break;
default:
break;
}
//old password box
if(passwdGUI_state != INPUT_NEW_PASSWD_STATE)//when input NEW PASSWD, not redraw OLD PASSWORD BOX
osd_draw_rect(OLD_PASSWD_BOX_X,OLD_PASSWD_BOX_Y,PASSWD_BOX_XLEN,PASSWD_BOX_YLEN, oldpswd_bgcolor);
//new password word box
if ( !((page==SYSPAGE) && (index_y==GRADEITEM)) ) ////grade passwd not show new passwd
osd_draw_rect(NEW_PASSWD_BOX_X,NEW_PASSWD_BOX_Y,PASSWD_BOX_XLEN,PASSWD_BOX_YLEN, newpswd_bgcolor);
//OK button
osd_draw_rect(OK_BUTTON_X,OK_BUTTON_Y,OK_BUTTON_XLEN,OK_BUTTON_YLEN,ok_bgcolor);
if(bDown)
{
left_top_color = SWHITECOLOR; //in fact it is black
right_bottom_color =SFONTCOLOR;
}
else
{
left_top_color = SFONTCOLOR;
right_bottom_color= SWHITECOLOR;//in fact it is black
}
osd_DrawLine(OK_BUTTON_X, OK_BUTTON_Y, OK_BUTTON_X, OK_BUTTON_Y+OK_BUTTON_YLEN,left_top_color, 1);//left line
osd_DrawLine(OK_BUTTON_X, OK_BUTTON_Y, OK_BUTTON_X+OK_BUTTON_XLEN, OK_BUTTON_Y,left_top_color, 1);//top line
osd_DrawLine(OK_BUTTON_X, OK_BUTTON_Y-1+OK_BUTTON_YLEN, OK_BUTTON_X+OK_BUTTON_XLEN, OK_BUTTON_Y+OK_BUTTON_YLEN,right_bottom_color, 1);//bottom line
osd_DrawLine(OK_BUTTON_X-1+OK_BUTTON_XLEN, OK_BUTTON_Y, OK_BUTTON_X+OK_BUTTON_XLEN, OK_BUTTON_Y+OK_BUTTON_YLEN,right_bottom_color, 1);//right line
osd_DrawString(OK_BUTTON_WORD_X, OK_BUTTON_WORD_Y, "OK",STITLECOLOR, ok_bgcolor);
}
#endif//SETUP_PASSWORD_GUI