📄 osdgui.c
字号:
/********************************************
FileName: OSDGUI.C
CopyRight By:BillDong@mxic.com.cn
Date:2005-08-20
*********************************************/
#include "target.h"
#include "MX88V46X.H"
#include "OSDGUI.h"
#include "Macrodef.h"
#define OSD_ROW_COUNT 8
#define OSD_COL_COUNT 16
#define NULL 0
code unsigned char m_RamFontTab[]=
{
0xFF,0x0F,0xFF,0x0F,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x7F,0x0C,0x7F,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,//LT
0xFF,0x0F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//T
0xFF,0x0F,0xFF,0x0F,0x03,0x00,0x03,0x00,0x03,0x00,0xE3,0x0F,0xE3,0x0F,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,//RT
0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,//R
0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0xE3,0x0F,0xE3,0x0F,0x03,0x00,0x03,0x00,0x03,0x00,0xFF,0x0F,0xFF,0x0F,//RB
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x0F, //B
0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x7F,0x0C,0x7F,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0xFF,0x0F,0xFF,0x0F,//LB
0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C//L
};
struct TreePath
{
unsigned int *p_CurTreeNote;
unsigned char m_MenuCounts;
unsigned char m_CharCountsPerLine;
unsigned char m_NoteType; //0--MainMenu 1--SubMenu 2--ProgressBar 3--TimerSetup 4--RadioSelect 5--ComboxSelect
unsigned char m_CurrentIndex;
unsigned char m_CurrentStatus;//0--Canceled 1--Highlight 2--Entered
struct TreePath *p_FatherTreePath;
struct TreePath *p_ChildTreePath;
struct TreePath *p_LeftBrotherTreePath;
struct TreePath *p_RightBrotherTreePath;
};
struct TreePath *p_CurTreePathNote=NULL;
code unsigned char m_OSDInitTab[]=
{
0x4C, //H Start (4*0x60+12 = 396 pixel) 0x00
0x0D, //V Start (4*0x20+1 = 129 line) 0x01
0x0F, //H Width ( 0x0C+1 = 13 char) 0x02
0x07, //V Height ( 0x00+1 = 1 char) 0x03
0x00, //H Space Start position ( 0x00 = 0 char) 0x04
0x00, //V Space Start position ( 0x00 = 0 char) 0x05
0x00, //H Space Width ( 0x00*8 = 0 pixel) 0x06
0x00, //V Space Heigth ( 0x00*8 = 0 line) 0x07
0x03, //Ctrl. Reg D7-6 Vert. scaling (Vert. enlarged x1) 0x08
// D5-4 Horz. scaling (Horz. enlarged x1)
// D2 All Sub OSD window display
// D1 Type of Char. border (bottom-right)
// D0 Main OSD windows display
// 0: OSD window OFF (OSD OFF)
// 1: OSD window ON
0x30 //Misc. Ctrl 0x09
};
#define OSD_MAIN_MENU_LENGTH1 8
#define OSD_MAIN_MENU_LENGTH2 16
code unsigned char OSD_MAIN_MENU[OSD_MAIN_MENU_LENGTH1][OSD_MAIN_MENU_LENGTH2]=
{
{0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x82},
{0x87, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',0x83},
{0x87, ' ', 'I', 'N', 'P', 'U', 'T', ' ','S', 'E', 'L', 'E', 'C', 'T', ' ',0x83},
{0x87, ' ', 'T', 'I', 'M', 'E', 'R', ' ', 'S', 'E', 'T', 'U', 'P', ' ', ' ',0x83},
{0x87, ' ', 'E', 'F', 'F', 'E', 'C', 'T', ' ', 'S', 'E', 'T', 'U', 'P', ' ',0x83},
{0x87, ' ', 'A', 'U', 'T', 'O', ' ', 'T', 'U', 'R', 'N', 'I', 'N', 'G', ' ',0x83},
{0x87, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',0x83},
{0x86,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x84}
};
#define OSD_SUB_MENU1_LENGTH1 8
#define OSD_SUB_MENU1_LENGTH2 16
code unsigned char OSD_SUB_MENU1[OSD_SUB_MENU1_LENGTH1][OSD_SUB_MENU1_LENGTH2]=
{
{" "},
{" TV INPUT "},
{" AV INPUT "},
{" YCbCr INPUT "},
{" S-Video INPUT "},
{" RGB INPUT "},
{" CCIR INPUT "},
{" "}
};
#define OSD_SUB_MENU2_LENGTH1 8
#define OSD_SUB_MENU2_LENGTH2 16
code unsigned char OSD_SUB_MENU2[OSD_SUB_MENU2_LENGTH1][OSD_SUB_MENU2_LENGTH2]=
{
{" "},
{" TURN ON TIME "},
{" TURN OFF TIME "},
{" OSD OFF TIME "},
{" GAME START "},
{" "},
{" "},
{" "}
};
#define OSD_SUB_MENU3_LENGTH1 8
#define OSD_SUB_MENU3_LENGTH2 16
code unsigned char OSD_SUB_MENU3[OSD_SUB_MENU3_LENGTH1][OSD_SUB_MENU3_LENGTH2]=
{
{" "},
{" CONTRAST "},
{" BRIGHTNESS "},
{" HUE "},
{" SHARPNESS "},
{" SATURATION "},
{" "},
{" "}
};
#define PROGRESS_BAR_TIMES 32
code unsigned char CONTRAST_BAR[]=
{
0x43,0x44,0x3E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42
};
code unsigned char SATURATION_BAR[]=
{
0x45,0x46,0x3E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42
};
code unsigned char BRIGHTNESS_BAR[]=
{
0x47,0x48,0x3E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42
};
code unsigned char VOLUMN_BAR[]=
{
0x52,0x53,0x3E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42
};
code unsigned char MUTE_BAR[]=
{
0x51,0x53,0x3E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42
};
code unsigned char SCALING_N_F[]=
{
0x4D,0x4E,0x3E,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x4F,0x50
};
code unsigned char SCALING_F_N[]=
{
0x4F,0x50,0x3E,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x4D,0x4E
};
code unsigned char SOURCE_AV_TFT[]=
{
0x49,0x4A,0x3E,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x4B,0x4C
};
code unsigned char SOURCE_TFT_AV[]=
{
0x4B,0x4C,0x3E,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x49,0x4A
};
unsigned char OSD_AutoLoadRamFont()
{
return MXIC_OSDReg_Write(OSD_FONT_RAM,0x00,m_RamFontTab,8);
}
//m_OSDTreePath[0]--OSD_MAIN_MENU
//m_OSDTreePath[1]--OSD_SUB_MENU1
//m_OSDTreePath[2]--TV_INPUT
//m_OSDTreePath[3]--AV_INPUT
//m_OSDTreePath[4]--YCbCr_INPUT
//m_OSDTreePath[5]--SVideo_INPUT
//m_OSDTreePath[6]--RGB_INPUT
//m_OSDTreePath[7]--CCIR_INPUT
//m_OSDTreePath[8]--OSD_SUB_MENU2
//m_OSDTreePath[9]--TURN_ON_TIME
//m_OSDTreePath[10]--TURN_OFF_TIME
//m_OSDTreePath[11]--OSD_OFF_TIME
//m_OSDTreePath[12]--GAMME_START
//m_OSDTreePath[13]--OSD_SUB_MENU3
//m_OSDTreePath[14]--CONTRAST_PROGRESS_BAR
//m_OSDTreePath[15]--BRIGHTNESS_PROGRESS_BAR
//m_OSDTreePath[16]--HUE_PROGRESS_BAR
//m_OSDTreePath[17]--SHARPNESS_PROGRESS_BAR
//m_OSDTreePath[18]--SATUREATION_PROGRESS_BAR
//m_NoteType
//0--MainMenu
//1--SubMenu
//2--TEXTLOGO
//3--TIMESETUP
//4--TIMECLOCK
//5--CONTRAST_PROGRESS_BAR
//6--BRIGHTNESS_PROGRESS_BAR
//7--HUE_PROGRESS_BAR
//8--SHARPNESS_PROGRESS_BAR
//9--SATURATION_PROGRESS_BAR
//10--VOLUMN_PROGRESS_BAR
code struct TreePath m_OSDTreePath[]=
{
{
OSD_MAIN_MENU,OSD_ROW_COUNT,OSD_COL_COUNT,0,0xFF,0,NULL,&m_OSDTreePath[1],NULL,NULL
},
{
OSD_SUB_MENU1,OSD_ROW_COUNT,OSD_COL_COUNT,1,2,0,&m_OSDTreePath[0],&m_OSDTreePath[2],NULL,&m_OSDTreePath[8]
},
{
NULL,0,0,2,1,0,&m_OSDTreePath[1],NULL,NULL,&m_OSDTreePath[3]
},
{
NULL,0,0,2,2,0,&m_OSDTreePath[1],NULL,&m_OSDTreePath[2],&m_OSDTreePath[4]
},
{
NULL,0,0,2,3,0,&m_OSDTreePath[1],NULL,&m_OSDTreePath[3],&m_OSDTreePath[5]
},
{
NULL,0,0,2,4,0,&m_OSDTreePath[1],NULL,&m_OSDTreePath[4],&m_OSDTreePath[6]
},
{
NULL,0,0,2,5,0,&m_OSDTreePath[1],NULL,&m_OSDTreePath[5],&m_OSDTreePath[7]
},
{
NULL,0,0,2,6,0,&m_OSDTreePath[1],NULL,&m_OSDTreePath[6],NULL
},
{
OSD_SUB_MENU2,OSD_ROW_COUNT,OSD_COL_COUNT,1,3,0,&m_OSDTreePath[0],&m_OSDTreePath[9],&m_OSDTreePath[1],&m_OSDTreePath[13]
},
{
NULL,0,0,3,1,0,&m_OSDTreePath[8],NULL,NULL,&m_OSDTreePath[10]
},
{
NULL,0,0,3,2,0,&m_OSDTreePath[8],NULL,&m_OSDTreePath[9],&m_OSDTreePath[11]
},
{
NULL,0,0,3,3,0,&m_OSDTreePath[8],NULL,&m_OSDTreePath[10],&m_OSDTreePath[12]
},
{
NULL,0,0,3,4,0,&m_OSDTreePath[8],NULL,&m_OSDTreePath[11],NULL
},
{
OSD_SUB_MENU3,OSD_ROW_COUNT,OSD_COL_COUNT,1,4,0,&m_OSDTreePath[0],&m_OSDTreePath[14],&m_OSDTreePath[8],NULL
},
{
NULL,0,0,5,1,0,&m_OSDTreePath[13],NULL,NULL,&m_OSDTreePath[15]
},
{
NULL,0,0,6,2,0,&m_OSDTreePath[13],NULL,&m_OSDTreePath[14],&m_OSDTreePath[16]
},
{
NULL,0,0,7,3,0,&m_OSDTreePath[13],NULL,&m_OSDTreePath[15],&m_OSDTreePath[17]
},
{
NULL,0,0,8,4,0,&m_OSDTreePath[13],NULL,&m_OSDTreePath[16],&m_OSDTreePath[18]
},
{
NULL,0,0,9,5,0,&m_OSDTreePath[13],NULL,&m_OSDTreePath[17],NULL
}
};
void OSD_CreateTree(struct TreePath *p_TopTreePath)
{
p_TopTreePath=&m_OSDTreePath[0];
}
unsigned char OSD_CurrentValControl(char m_CurrentValue,char m_Request)
{
short m_CurrentIndex;
if(m_CurrentValue<=0 || m_CurrentValue>=31)
return 1;
switch(m_Request)
{
case ADJ_ADD_VAL:
if(m_CurrentValue<=32)
{
if(m_CurrentValue%2==0)
{
m_CurrentIndex=(m_CurrentValue)/2;
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,m_CurrentIndex+2,0x00,0x40);
}
else
{
m_CurrentIndex=(unsigned char)(m_CurrentValue/2);
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,m_CurrentIndex+1+2,0x00,0x3F);
}
}
break;
case ADJ_SUB_VAL:
if(m_CurrentValue>=0)
{
if(m_CurrentValue%2==0)
{
m_CurrentIndex=m_CurrentValue/2;
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,m_CurrentIndex+1+2,0x00,0x41);
}
else
{
m_CurrentIndex=(unsigned char)(m_CurrentValue/2);
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,m_CurrentIndex+1+2,0x00,0x3F);
}
}
break;
}
return 1;
}
/*
#define OSD_CONTRAST_BAR 0
#define OSD_SATURATION_BAR 1
#define OSD_BRIGHTNESS_BAR 2
#define OSD_VOLUMN_BAR 3
#define OSD_4_3_TO_16_9 4
#define OSD_16_9_TO_4_3 5
#define OSD_AV_TO_TFT 6
#define OSD_TFT_TO_AV 7
idata unsigned char m_CurrentBrightness=0;
idata unsigned char m_CurrentContrast=0;
idata unsigned char m_CurrentSaturation=0;
*/
extern idata unsigned char m_CurrentBrightness;
extern idata unsigned char m_CurrentContrast;
extern idata unsigned char m_CurrentSaturation;
unsigned char m_CurrentBarType=0xFF;
unsigned char OSD_ShowSpecialChar(unsigned char m_Type,unsigned char m_Request) //m_Request 1---增加 -1---减少
{
unsigned char i,m_RetVal;
// unsigned char m_CurrentIndex;
unsigned char mm[]={0x44,0x2F,0x13,0x00};
m_RetVal=MXIC_ReadExternalReg(OSD_ENABLE);
m_RetVal|=0x80;
MXIC_WriteExternalReg(OSD_ENABLE,m_RetVal);
MXIC_OSDReg_Write(OSD_CTRL_REG,0x00,mm,sizeof(mm));
switch(m_Type)
{
case OSD_CONTRAST_BAR:
if(m_CurrentBarType==OSD_CONTRAST_BAR)
{
MXIC_AdjContrast(0,m_Request);
OSD_CurrentValControl(m_CurrentContrast,m_Request);
}
else
{
for(i=0;i<sizeof(CONTRAST_BAR);i++)
{
MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x00,CONTRAST_BAR[i]);
}
}
break;
case OSD_SATURATION_BAR:
if(m_CurrentBarType==OSD_SATURATION_BAR)
{
MXIC_AdjSaturation(0,m_Request);
OSD_CurrentValControl(m_CurrentSaturation,m_Request);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -