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

📄 osdgui.c

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