📄 window.c
字号:
}
break;
case(4)://(Main Page -> TV)
StrPtr=PAGE4[Language];
length=StringLength(*(StrPtr+1+Item));
Print_String(0, (29-length)/2, *(StrPtr+1+Item), YELLOW);
switch(Item) {
case(0)://TV/CATV
Print_String(1, 2, "TV(AIR) CATV(STD IRC HRC)", WHITE);
switch(TV_Mode) {
case(0):
Line_Attribute(1, 5, 7, RED);
break;
case(1):
Line_Attribute(1, 16, 18, RED);
break;
case(2):
Line_Attribute(1, 20, 22, RED);
break;
case(3):
Line_Attribute(1, 24, 26, RED);
break;
}
break;
case(1)://MTS
StrPtr=MTSMODE[Language];
Print_String(1, 1, *(StrPtr+0), WHITE);
Print_String(1, 10, *(StrPtr+1), WHITE);
Print_String(1, 21, *(StrPtr+2), WHITE);
Line_Attribute(1, 0+MTS_Mode*10, 9+MTS_Mode*10, RED);
break;
case(3)://Menu Prog.
Print_Char(1, 13, Channel+1, WHITE);
break;
case(4)://Channel Add/Erase
Print_Char(0, 25, Channel+1, WHITE);
StrPtr=CHADDERASE[Language];
Print_String(1, (15-StringLength(*(StrPtr+0)))/2, *(StrPtr+0), WHITE);
Print_String(1, 15+(15-StringLength(*(StrPtr+1)))/2, *(StrPtr+1), WHITE);
pos0=EE_MCU_Byte_Read(ChannelTable_EEPROM_Address()+Channel/8);
pos1=Channel%8;
if(Get_Bit(pos0, pos1)==0)//channel not set (can add)
Line_Attribute(1, 16, 29, RED);
else
Line_Attribute(1, 0, 15, RED);
break;
case(5)://Channel Lock/Unlock
Print_Char(0, 25, Channel+1, WHITE);
StrPtr=CHLOCK[Language];
Print_String(1, (15-StringLength(*(StrPtr+0)))/2, *(StrPtr+0), WHITE);
Print_String(1, 15+(15-StringLength(*(StrPtr+1)))/2, *(StrPtr+1), WHITE);
pos0=EE_MCU_Byte_Read(ChannelLockTable_EEPROM_Address()+Channel/8);
pos1=Channel%8;
if(Get_Bit(pos0, pos1)==0)//channel unlock (can lock)
Line_Attribute(1, 16, 29, RED);
else
Line_Attribute(1, 0, 15, RED);
break;
}
break;
}
}
/*==============================================================================
(Information Window) Page=100
==============================================================================*/
void Display_Window(void) {
Page=100;
Item=0;
badjust=0;
bhotosd=0;
Clear_Screen();
OSD_Position(5, 120);
switch(Source) {
case(AV1):
Print_String(0, 0, "AV ", GREEN);
break;
case(AV2):
Print_String(0, 0, "S-VIDEO", GREEN);
break;
case(AV3):
Print_String(0, 0, "DVD ", GREEN);
break;
case(TV):
if(TV_Mode==TV_AIR)
Print_String(0, 0, "TV ", GREEN);
else
Print_String(0, 0, "CATV ", GREEN);
break;
}
if(Source==TV) {
Print_String(1, 0, "CH", GREEN);
Print_Char(1, 3, Channel+1, GREEN);
Display_MTS_Type(MTS_Mode);
}
if(Mute)
Print_String(0, 8, "\xd2\xd3", GREEN);
else
Print_String(0, 8, "\xa2\xa3", GREEN);
}
/*==============================================================================
(Channel Display) Page=100
==============================================================================*/
void Channel_Display(void) {
if(Page!=100) {
OSD_Show(0,0,0,0,0);
Display_Window();
OSD_Show(1,0,0,0,0);
}
else {
Print_Char(1, 3, Channel+1, GREEN);
}
}
/*==============================================================================
(MTS Display) Page=100
==============================================================================*/
void Display_MTS_Type(unsigned char mts) {
//Real_MTS ==> 0:MONO 1:MONO+SAP 2:MONO+STEREO 3:MONO+SAP+STEREO
switch(mts) {
case(0)://MONO
Print_String(2, 0, "MONO ", GREEN);
break;
case(1)://SAP
switch(Real_MTS) {
case(0):
//Print_String(2, 0, " ", GREEN);
Print_String(2, 0, "MONO ", GREEN);
break;
case(2):
Print_String(2, 0, "SAP ", YELLOW);
break;
case(1):
case(3):
Print_String(2, 0, "SAP ", GREEN);
break;
}
break;
case(2)://STEREO
switch(Real_MTS) {
case(0):
//Print_String(2, 0, " ", GREEN);
Print_String(2, 0, "MONO ", GREEN);
break;
case(1):
Print_String(2, 0, "STEREO", YELLOW);
break;
case(2):
case(3):
Print_String(2, 0, "STEREO", GREEN);
break;
}
break;
}
}
/*==============================================================================
(Password Dialog) CH_LOCK Page=110 V-CHIP Page=120 Repass Page=130
==============================================================================*/
void Password_Dialog(void) {
PassIn=PassDig=0;
Clear_Screen();
OSD_Position(50, 55);
Window_Control(3, 0, 3, 0, 23, BLACK);
switch(Page) {
case(110)://CH Lock
Print_String(0, 4, "CHANNEL LOCK SET", RED);
break;
case(120)://V-CHIP SET
Print_String(0, 5, "V-CHIP SETTING", RED);
break;
case(130)://RENEW
Print_String(0, 5, "RENEW PASSWORD", RED);
break;
}
Print_String(2, 3, " PASSWORD: ", WHITE);
Print_String(2, 14, "------ ", WHITE|BLINK);
}
/*==============================================================================
(V-Chip Display1) Page=200 badjust=1
==============================================================================*/
code unsigned char BLOCK[6][6]={{1,0,1,1,1,0},//TV-MA
{1,0,1,1,1,1},//TV-14
{1,0,1,1,1,1},//TV-PG
{1,0,0,0,0,0},//TV-G
{1,1,0,0,0,0},//TV-Y7
{1,0,0,0,0,0}};//TV-Y
void VChip_Window(void) {
unsigned char i, j, tmp;
Clear_Screen();
OSD_Position(49, 49);
Window_Control(3, 0, 13, 0, 29, BLACK);
Print_String(0, 1, "GUIDE LINE BLOCKING", RED);
Print_String(2, 11, "ALL FV V S L D", CYAN);
Print_String(3, 2, "TV-MA", CYAN);
Print_String(4, 2, "TV-14", CYAN);
Print_String(5, 2, "TV-PG", CYAN);
Print_String(6, 2, "TV-G", CYAN);
Print_String(7, 2, "TV-Y7", CYAN);
Print_String(8, 2, "TV-Y", CYAN);
Print_String(10, 1, "UP/DOWN: MOVE CURSOR COLUMN", WHITE);
Print_String(11, 1, "LEFT/RIGHT: MOVE CURSOR ROW", WHITE);
Print_String(12, 1, "SELECT: BLOCK/UNBLOCK", WHITE);
Print_String(13, 1, "V-CHIP: EXIT V-CHIP SETTING", WHITE);
for(i=0; i<6; i++) {
for(j=0; j<6; j++) {
if(BLOCK[i][j]==1) {
tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
if(Get_Bit(tmp, j)==1)
Print_Icon(3+i, 12+j*3, 'B', CYAN);
else
Print_Icon(3+i, 12+j*3, 'U', CYAN);
}
}
}
VChipRow=VChipCol=0;
VChip_Cursor(0);
}
/*==============================================================================
(V-Chip Display) Page=200 badjust=1
==============================================================================*/
void VChip_Cursor(unsigned char direction) {
switch(direction) {
case(1)://UP
VChipRow=(VChipRow+5)%6;
while(BLOCK[VChipRow][VChipCol]==0) {
VChipCol=(VChipCol+5)%6;
}
break;
case(2)://DOWN
VChipRow=(VChipRow+1)%6;
while(BLOCK[VChipRow][VChipCol]==0) {
VChipCol=(VChipCol+5)%6;
}
break;
case(3)://LEFT
do{
VChipCol=(VChipCol+5)%6;
}while(BLOCK[VChipRow][VChipCol]==0);
break;
case(4)://RIGHT
do{
VChipCol=(VChipCol+1)%6;
}while(BLOCK[VChipRow][VChipCol]==0);
break;
}
Window_Control(2, VChipRow+3, VChipRow+3, 11+VChipCol*3, 11+VChipCol*3+2, YELLOW);
}
/*==============================================================================
(V-Chip Set) Page=200 badjust=1
==============================================================================*/
void VChip_Cursor_Set(void) {
unsigned char i, j, tmp;
tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+VChipRow);
if(Get_Bit(tmp, VChipCol)==1) {
tmp=Set_Bit(tmp, VChipCol, 0);
EE_MCU_Byte_Write(EE_VCHIP_SET+VChipRow, tmp);
Print_Icon(3+VChipRow, 12+VChipCol*3, 'U', CYAN);
if(VChipCol==0) {
for(i=VChipRow; i<6; i++) {
for(j=0; j<6; j++) {
if(BLOCK[i][j]==1) {
tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
tmp=Set_Bit(tmp, j, 0);
EE_MCU_Byte_Write(EE_VCHIP_SET+i, tmp);
Print_Icon(3+i, 12+j*3, 'U', CYAN);
}
}
}
}
else {
for(i=VChipRow; i<6; i++) {
if(BLOCK[i][VChipCol]==1) {
tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
tmp=Set_Bit(tmp, VChipCol, 0);
EE_MCU_Byte_Write(EE_VCHIP_SET+i, tmp);
Print_Icon(3+i, 12+VChipCol*3, 'U', CYAN);
}
}
}
}
else {
tmp=Set_Bit(tmp, VChipCol, 1);
EE_MCU_Byte_Write(EE_VCHIP_SET+VChipRow, tmp);
Print_Icon(3+VChipRow, 12+VChipCol*3, 'B', CYAN);
if(VChipCol==0) {
for(i=VChipRow; i<6; i++) {
for(j=0; j<6; j++) {
if(BLOCK[i][j]==1) {
tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
tmp=Set_Bit(tmp, j, 1);
EE_MCU_Byte_Write(EE_VCHIP_SET+i, tmp);
Print_Icon(3+i, 12+j*3, 'B', CYAN);
}
}
}
}
else {
for(i=VChipRow; i<6; i++) {
if(BLOCK[i][VChipCol]==1) {
tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
tmp=Set_Bit(tmp, VChipCol, 1);
EE_MCU_Byte_Write(EE_VCHIP_SET+i, tmp);
Print_Icon(3+i, 12+VChipCol*3, 'B', CYAN);
}
}
}
}
}
/*==============================================================================
(V-Chip Display) Page=201 badjust=0
==============================================================================*/
void VChip_Display(void) {
code unsigned char *MPAA[]={"N/A ",
"G ",
"PG ",
"PG-13 ",
"R ",
"NC-17 ",
"X ",
"Not Rated"};
code unsigned char *SYSTEM[]={"MPAA (no TV rating) ",
"TV parential Guidelines",
"MPAA (no TV rating) ",
"Non US NTSC system "};
code unsigned char *GUIDE[]={"None ",
"TV-Y ",
"TV-Y7",
"TV-G ",
"TV-PG",
"TV-14",
"TV-MA",
"None "};
code unsigned char *MISC[]={"None ",
"L ",
"S ",
"S L ",
"V ",
"V L ",
"V S ",
"V S L "};
code unsigned char *MISCD[]={"D ",
"L D ",
"S D ",
"S L D ",
"V D ",
"V L D ",
"V S D ",
"V S L D"};
Clear_Screen();
OSD_Position(49, 49);
Window_Control(3, 0, 3, 0, 22, WHITE);
Print_String(0, 0, "This program is blocked", RED);
Print_String(1, 0, " by", RED);
Print_String(2, 0, SYSTEM[Now_VChipSys], RED);
switch(Now_VChipSys) {
case(0)://MPAA (no TV rating)
case(2)://MPAA (no TV rating)
Print_String(3,0,MPAA[Now_VChipRating],RED);
break;
case(1)://TV parental Guidelines (no MPAA)
Print_String(3,0,GUIDE[Now_VChipRating],RED);
if(Now_VChipMisc>=0x10)
Print_String(3,15,MISCD[Now_VChipMisc-0x10],RED);
else
Print_String(3,15,MISC[Now_VChipMisc],RED);
break;
case(3)://Non US NTSC system
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -