⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osdgui.c

📁 7寸TFT电视的源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/********************************************
	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 + -