📄 osdgui.c
字号:
else
{
for(i=0;i<sizeof(SATURATION_BAR);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,SATURATION_BAR[i]);
}
}
break;
case OSD_BRIGHTNESS_BAR:
if(m_CurrentBarType==OSD_BRIGHTNESS_BAR)
{
MXIC_AdjBrightness(0,m_Request);
OSD_CurrentValControl(m_CurrentBrightness,m_Request);
}
else
{
for(i=0;i<sizeof(BRIGHTNESS_BAR);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,BRIGHTNESS_BAR[i]);
}
}
break;
case OSD_VOLUMN_BAR:
for(i=0;i<sizeof(VOLUMN_BAR);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,VOLUMN_BAR[i]);
}
break;
case OSD_MUTE_BAR:
for(i=0;i<sizeof(MUTE_BAR);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,MUTE_BAR[i]);
}
break;
case OSD_4_3_TO_16_9:
for(i=0;i<sizeof(SCALING_N_F);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,SCALING_N_F[i]);
}
break;
case OSD_16_9_TO_4_3:
for(i=0;i<sizeof(SCALING_F_N);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,SCALING_F_N[i]);
}
break;
case OSD_AV_TO_TFT:
for(i=0;i<sizeof(SOURCE_AV_TFT);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,SOURCE_AV_TFT[i]);
}
break;
case OSD_TFT_TO_AV:
for(i=0;i<sizeof(SOURCE_TFT_AV);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,SOURCE_TFT_AV[i]);
}
break;
}
m_CurrentBarType=m_Type;
return m_CurrentBarType;
}
unsigned char OSD_ShowText(unsigned char *m_Str,unsigned char m_Count,unsigned int xPos,unsigned int yPos)
{
MXIC_WriteExternalReg(OSD_RW_CTRL,0x42); //CLEAR CODE BUFFER with 0x59
MXIC_OSDReg_SingleWrite(OSD_CTRL_REG,0x00,0x00,xPos); //H-START POS
MXIC_OSDReg_SingleWrite(OSD_CTRL_REG,0x01,0x00,yPos); //V-START POS
MXIC_OSDReg_SingleWrite(OSD_CTRL_REG,0x02,0x00,m_Count-1); //H-WIDTH POS
MXIC_OSDReg_SingleWrite(OSD_CTRL_REG,0x03,0x00,0); //V-HEIGHT POS
MXIC_OSDReg_SingleWrite(OSD_CTRL_REG,0x09,0x00,0); //V-HEIGHT POS
MXIC_OSD_ShowText(m_Str,m_Count,0,0);
return 1;
}
unsigned char OSD_Initial()
{
unsigned char m_RetVal;
unsigned char mm[10]={0};
MXIC_WriteExternalReg(OSD_ENABLE,0x0D);
m_RetVal=MXIC_ReadExternalReg(OSD_ENABLE);
m_RetVal|=0x80;
MXIC_WriteExternalReg(OSD_ENABLE,m_RetVal);
OSD_AutoLoadRamFont();
MXIC_WriteExternalReg(OSD_ENABLE,0x80);//OSD ENABLE ALPHA DISABLE
MXIC_OSDReg_Write(OSD_CTRL_REG,0x00,m_OSDInitTab,sizeof(m_OSDInitTab));
mm[0]=0x19;
mm[1]=0x0A;
mm[2]=0x01;
mm[3]=0x55;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x0C,mm,4);
MXIC_WriteExternalReg(0x17,0x00);
MXIC_WriteExternalReg(0x18,0x00);
MXIC_WriteExternalReg(0x19,0xFF);
return 1;
}
// The V45 ROM Font TAB
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
// 0x00 0 1 2 3 4 5 6 7 8 9 A B C D E F
// 0x10 G H I J K L M N O P Q R S T U V
// 0x20 W X Y Z a b c d e f g h i j k l
// 0x30 m n o p q r s t u v w x y z [
// 0x40
// 0x50 - / & +
// 0x60
// 0x70 . , ; : ? ! % = *
/*--------------------------------------------------------------------------
* OSD Display code buffer is 128bytes(128chars) format is followed
* bit 7 6 5 4 3 2 1 0 //Low byte
* | |
* | |
* | + ----------- D6-0: Character Code
* + ------------- 0: ROM Font 1: RAM Font
*
* bit F E D C B A 9 8 //Hi byte
* | | + 0: Blink OFF 1: Blink ON
* | +-- 0: BG transparent 1: BG opaque
* +---- 0: Border OFF 1: Border ON
*
* OSD Display Attr buffer is 128bytes(128chars) format is followed
* bit 7 6 5 4 3 2 1 0 //Low byte: background color select
* bit F E D C B A 9 8 //Hi byte: foreground color select
*/
unsigned char ASCII_TO_FONTIndex(unsigned char m_AnyChar)
{
unsigned char index=0;
if(m_AnyChar>=48 && m_AnyChar<=57) //0--9
{
index=m_AnyChar-48;
}
else if(m_AnyChar>=65 && m_AnyChar<=90)//A--Z
{
index=m_AnyChar-65+10;
}
else if(m_AnyChar>=97 && m_AnyChar<=122)//a--z
{
index=m_AnyChar-97+37;
}
else if(m_AnyChar>=128)
{
index=m_AnyChar-128;
index|=0x80;
}
else
{
switch(m_AnyChar)
{
case '-':
index=85;
break;
case '/':
index=86;
break;
case '&':
index=87;
break;
case '+':
index=88;
break;
case '.':
index=120;
break;
case ',':
index=121;
break;
case ';':
index=122;
break;
case ':':
index=123;
break;
case '?':
index=124;
break;
case '!':
index=125;
break;
case '%':
index=126;
break;
case '=':
index=127;
break;
case '*':
index=128;
break;
case ' ':
index=0x59;
break;
}
}
return index;
}
unsigned char MXIC_OSD_ShowText(unsigned char *m_Str,unsigned char m_Count,unsigned char m_RowVal,unsigned char m_ColVal)
{
idata unsigned char m_DisplayBuffer[MXIC_CHAR_COUNT_PER_LINE*2]={' '};
idata unsigned char m_AttributeBuffer[MXIC_CHAR_COUNT_PER_LINE*2]={' '};
int i,j;
// MXIC_WriteExternalReg(OSD_RW_CTRL,0x42); //CLEAR CODE BUFFER with 0x59
for(i=0,j=0;i<m_Count;j+=2,i++)
{
m_DisplayBuffer[j]=ASCII_TO_FONTIndex(m_Str[i]);
m_DisplayBuffer[j+1]=0x04;
}
MXIC_OSDReg_Write(OSD_CODE_BUFFER,(m_RowVal*OSD_COL_COUNT+m_ColVal),m_DisplayBuffer,m_Count);
// for(i=0;i<m_Count;i++)
// {
// m_AttributeBuffer[i]=0x0E;
// m_AttributeBuffer[i+1]=0x01;
// }
// UPD5300_OSDReg_Write(OSD_ATTR_REG,(m_RowVal*OSD_COL_COUNT+m_ColVal),m_AttributeBuffer,m_Count);
return 1;
}
/*
#define WM_KEY_SHOW 0
#define WM_KEY_HIDE 1
#define WM_KEY_UP 2
#define WM_KEY_DOWN 3
#define WM_KEY_LEFT 4
#define WM_KEY_RIGHT 5
#define WM_KEY_ENTER 6
#define WM_KEY_RETURN 7
#define WM_KEY_CONTINUE_ADD 8
#define WM_KEY_CONTINE_SUB 9
*/
struct TreePath m_MyRootTree;
unsigned char OSD_GUI_MsgProc(unsigned char m_Cmd)
{
switch(m_Cmd)
{
case WM_KEY_SHOW:
OSD_ShowMainMenu(WM_KEY_SHOW);
break;
case WM_KEY_HIDE:
OSD_ShowMainMenu(WM_KEY_HIDE);
break;
case WM_KEY_UP:
break;
case WM_KEY_DOWN:
break;
case WM_KEY_LEFT:
break;
case WM_KEY_RIGHT:
break;
case WM_KEY_ENTER:
break;
case WM_KEY_RETURN:
break;
case WM_KEY_CONTINUE_ADD:
break;
case WM_KEY_CONTINUE_SUB:
break;
}
return m_Cmd;
}
unsigned char OSD_ShowMainMenu(unsigned char m_Show)
{
int i;
unsigned char m_RetVal;
if(m_Show==WM_KEY_SHOW)
{
m_RetVal=MXIC_ReadExternalReg(OSD_ENABLE);
m_RetVal|=0x80;
MXIC_WriteExternalReg(OSD_ENABLE,m_RetVal);
MXIC_OSDReg_Write(OSD_CTRL_REG,0x00,m_OSDInitTab,sizeof(m_OSDInitTab));
m_RetVal=MXIC_ReadExternalReg(OSD_RW_CTRL);
m_RetVal|=0x40;
MXIC_WriteExternalReg(OSD_RW_CTRL,m_RetVal);
m_RetVal&=0xBF;
MXIC_WriteExternalReg(OSD_RW_CTRL,m_RetVal);
for(i=0;i<OSD_MAIN_MENU_LENGTH1;i++)
{
MXIC_OSD_ShowText(OSD_MAIN_MENU[i],OSD_MAIN_MENU_LENGTH2,i,0);
}
// OSD_HighLight(2);
OSD_CreateTree(&m_MyRootTree);
}
else if(m_Show==WM_KEY_HIDE)
{
m_RetVal=MXIC_ReadExternalReg(OSD_ENABLE);
m_RetVal&=0x7F;
MXIC_WriteExternalReg(OSD_ENABLE,m_RetVal);
}
return 1;
}
/*
unsigned char OSD_ShowSubMenu(unsigned char m_SubMenuNum)
{
int i;
unsigned char m_RetVal;
m_RetVal=MXIC_ReadExternalReg(OSD_RW_CTRL);
m_RetVal|=0x40;
MXIC_WriteExternalReg(OSD_RW_CTRL,m_RetVal);
m_RetVal&=0xBF;
MXIC_WriteExternalReg(OSD_RW_CTRL,m_RetVal);
switch(m_SubMenuNum)
{
case 0:
for(i=0;i<OSD_SUB_MENU1_LENGTH1;i++)
{
MXIC_OSD_ShowText(OSD_SUB_MENU1[i],OSD_SUB_MENU1_LENGTH2,i,0);
}
break;
case 1:
for(i=0;i<OSD_SUB_MENU2_LENGTH1;i++)
{
MXIC_OSD_ShowText(OSD_SUB_MENU2[i],OSD_SUB_MENU2_LENGTH2,i,0);
}
break;
case 2:
for(i=0;i<OSD_SUB_MENU2_LENGTH1;i++)
{
MXIC_OSD_ShowText(OSD_SUB_MENU3[i],OSD_SUB_MENU3_LENGTH2,i,0);
}
break;
}
return 1;
}
unsigned char OSD_HighLight(unsigned char m_LineNum)
{
//SUB WINDOW0
unsigned char m_RetVal;
MXIC_OSDReg_Read(OSD_CTRL_REG,0x13,&m_RetVal,1);
m_RetVal=0x03;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x13,&m_RetVal,1);
m_RetVal=0x00;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x14,&m_RetVal,1); //H-START
m_RetVal=0x10;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x15,&m_RetVal,1); //H-WIDTH
m_RetVal=m_LineNum;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x16,&m_RetVal,1); //V-START
m_RetVal=0x01;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x17,&m_RetVal,1); //V-HEIGHT
m_RetVal=0x80;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x18,&m_RetVal,1);
m_RetVal=0x80;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x19,&m_RetVal,1);
m_RetVal=0x80;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x1A,&m_RetVal,1);
m_RetVal=0x00;
MXIC_OSDReg_Write(OSD_CTRL_REG,0x1B,&m_RetVal,1);
return 1;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -