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

📄 osddraw.c

📁 宏芯T102芯片驱动(51单片机作主控)
💻 C
📖 第 1 页 / 共 3 页
字号:
	case 5:	twdWr_Burst_D('5'-0x2f);	break;
	case 4:	twdWr_Burst_D('4'-0x2f);	break;
	case 3:	twdWr_Burst_D('3'-0x2f);	break;
	case 2:	twdWr_Burst_D('2'-0x2f);	break;
	case 1:	twdWr_Burst_D('1'-0x2f);	break;
	case 0:	twdWr_Burst_D('0'-0x2f);	break;
	default: break;
	}
}

//Ruby add 2004-06-08
extern uCHAR idata m_cScaleratio;
void OSDShowRatio(void)
{
uCHAR i;
	for(i=0;i<8;i++)
  	{
  		OSDCleanLine(0,i,0,30);
     	OSDSetLineAttribute(i,0x80);
	}
	OSDPosition(RIGHT_TOP);
    switch(m_cScaleratio)
    {
  		case ScaleFULL:
				OSDShowLine(iScaleFULL,16,1,COL_GAUGE,OSD_LENGTH);
				break;
		case Scale16_9:	
				OSDShowLine(iScale16_9,16,1,COL_GAUGE,OSD_LENGTH);
				break;

		case Scale4_3:	
				OSDShowLine(iScale4_3,16,1,COL_GAUGE,OSD_LENGTH);
                break;
	}
	OSDEnable();
}


void OSDShowMode(void)
{
	OSDPosition(RIGHT_TOP);
	switch(m_cMode)
	{
		case M_STANDARD:
			if(m_cLang==L_ENGLISH)
				OSDShowLine(iStandard,16,1,COL_GAUGE,OSD_LENGTH);
			else if(m_cLang==L_CHINESE)
				OSDShowLine(icStandard,16,1,COL_GAUGE,OSD_LENGTH);
			break;
		case M_SOFT:
			if(m_cLang==L_ENGLISH)
				OSDShowLine(iSoft,16,1,COL_GAUGE,OSD_LENGTH);
			else if(m_cLang==L_CHINESE)
				OSDShowLine(icSoft,16,1,COL_GAUGE,OSD_LENGTH);
			break;
		case M_VIVID:
			if(m_cLang==L_ENGLISH)
				OSDShowLine(iVivid,16,1,COL_GAUGE,OSD_LENGTH);
			else if(m_cLang==L_CHINESE)
				OSDShowLine(icVivid,16,1,COL_GAUGE,OSD_LENGTH);
			break;
		case M_BRIGHT:
			if(m_cLang==L_ENGLISH)
				OSDShowLine(iBright,16,1,COL_GAUGE,OSD_LENGTH);
			else if(m_cLang==L_CHINESE)
				OSDShowLine(icBright,16,1,COL_GAUGE,OSD_LENGTH);
			break;
		case M_PP:
			if(m_cLang==L_ENGLISH)
				OSDShowLine(iPP,16,1,COL_GAUGE,OSD_LENGTH);
			else if(m_cLang==L_CHINESE)
				OSDShowLine(icPP,16,1,COL_GAUGE,OSD_LENGTH);			
	}


}

void OSDShowSource(void)
{
uCHAR i;	
	m_cOSDMenu=idNULLMENU;	   //add by cwyong
	m_cOSDFunc=0;			        //add by cwyong
	OSDEnable();				//add by cwyong
	for(i=0;i<8;i++)
  	{
  		OSDCleanLine(0,i,0,30);
     	OSDSetLineAttribute(i,0x80);
	}	
	OSDPosition(RIGHT_TOP);
	switch(m_cSource)
	{
#ifdef T102
#ifdef TV
		case isrcTV:
				OSDShowLine(iCVBS_TV,16,1,COL_GAUGE,OSD_LENGTH);
				break;
#else
		case isrcCVIDEO1:					
				OSDShowLine(iCVBS_1,16,1,COL_GAUGE,OSD_LENGTH);
				break;
#endif
		case isrcCVIDEO2:	
				OSDShowLine(iCVBS_2,16,1,COL_GAUGE,OSD_LENGTH);
				break;
//		case isrcCVIDEO3:	
//				OSDShowLine(iCVBS_3,16,1,COL_GAUGE,OSD_LENGTH);
//				break;
#ifdef NEW_BOARD
		case isrcSVIDE1:	
				OSDShowLine(iSVideo_1,16,1,COL_GAUGE,OSD_LENGTH);
				break;
#else
		case isrcCVIDEO4:	
				OSDShowLine(iCVBS_4,16,1,COL_GAUGE,OSD_LENGTH);
				break;
#endif
		case isrcSVIDEO:	
				OSDShowLine(iSVideo,16,1,COL_GAUGE,OSD_LENGTH);
				break;
#ifdef component
		case isrcCOMPONENT:
		        OSDShowLine(iCOMPONENT,16,1,COL_GAUGE,26);
                break;
#endif
#endif
#ifdef T515   

        case isrc_T515_CVIDEO1:		
				OSDShowLine(iCVBS_5,16,1,COL_GAUGE,OSD_LENGTH);
				twdDelay(2500);				//add by zjl
		      		I2CWriteByte(TW101, PATTERN_CTRL, 0x00);  //add by zjl
			  	I2CWriteByte(TW101, 0xC2, 0x00);      //add by zjl
			  	I2CWriteByte(TW101,0x9D,0x10);
				I2CWriteByte(TW101,0x9E,0xff);
				I2CWriteByte(TW101,0x9f,0x40);
				I2CWriteByte(TW101,0xC7,0x32);
				break;
        case isrc_T515_CVIDEO2:		
				OSDShowLine(iCVBS_6,16,1,COL_GAUGE,OSD_LENGTH);
				twdDelay(2500);			//add by zjl
		      	I2CWriteByte(TW101, PATTERN_CTRL, 0x00);    //add by zjl
			  	I2CWriteByte(TW101, 0xC2, 0x00);		 //add by zjl				
				break;
        case isrc_T515_SVIDEO:		
				//OSDShowLine(iSVideo_2,16,1,COL_GAUGE,OSD_LENGTH);	
				OSDShowLine(iSVideo_2,16,1,COL_GAUGE,26);
				break;

#endif

				
//add source OSD here!!

	}
	OSDEnable();
}
extern uCHAR idata m_cStandard;
void OSDShowNTSC_PAL(void)
{
	if(m_cLang==L_ENGLISH)
	{
		if(m_cStandard==S_PAL)OSDShowLine(iPAL,16,1,COL_GAUGE,OSD_LENGTH);
		else if(m_cStandard==S_NTSC) OSDShowLine(iNTSC,16,1,COL_GAUGE,OSD_LENGTH);
	}
//	else if(m_cStandard==S_SECAM) OSDShowLine(iSECAM,16,1,COL_GAUGE,OSD_LENGTH); 
	OSDEnable();
}

void OSDClearCursor(uCHAR cStart, uCHAR cEnd)
{
	pOSDLangPtr=&MultiLangOSD[OSD_cOSDLang];
	pOSDMenuPtr=pOSDLangPtr->osdMenuPtr;
 	OSDShowLine(pOSDMenuPtr[m_cOSDMenu-1][m_cOSDFunc-1].txtStr,TXT_STAT,m_cOSDFunc,COL_NORMAL,OSD_LENGTH);
    return;
}

void OSDClearChineseCursor(uCHAR cStart,uCHAR cEnd)
{
	pOSDChineseLangPtr=&MultiChineseLangOSD[0];
	pOSDChineseMenuPtr=pOSDChineseLangPtr->osdChineseMenuPtr;
 	OSDShowLine(pOSDChineseMenuPtr[m_cOSDMenu-1][m_cOSDFunc-1].txtStr,TXT_STAT,m_cOSDFunc,COL_NORMAL,OSD_LENGTH);
    return;

}

void OSDMoveCursor(uCHAR cStart, uCHAR cEnd)
{
	pOSDLangPtr=&MultiLangOSD[OSD_cOSDLang];
	pOSDMenuPtr=pOSDLangPtr->osdMenuPtr;  
	OSDShowLine(pOSDMenuPtr[m_cOSDMenu-1][m_cOSDFunc-1].txtStr,TXT_STAT,m_cOSDFunc,YELLOW_DBLUE,OSD_LENGTH);
    return;
}

void OSDMoveChineseCursor(uCHAR cStart, uCHAR cEnd)
{
	pOSDChineseLangPtr=&MultiChineseLangOSD[0];
	pOSDChineseMenuPtr=pOSDChineseLangPtr->osdChineseMenuPtr;  
	OSDShowLine(pOSDChineseMenuPtr[m_cOSDMenu-1][m_cOSDFunc-1].txtStr,TXT_STAT,m_cOSDFunc,YELLOW_DBLUE,OSD_LENGTH);
    return;
}

void OSDPosition(uCHAR cPos)
{

#ifdef KVGA
	if(cPos==RIGHT_TOP)
	{
		OSDCfgWr(CHAR_DLY_0,0x00);	  //V[10:8] bit 6-4; H[10:8] bit2-0  23 12
  		OSDCfgWr(CHAR_DLY_1,0xa0);    //H[7:0]                           80 80
  		OSDCfgWr(CHAR_DLY_2,0x00);    //v[7:0]                           64 30
	}
	if(cPos==CENTER)
	{
 		OSDCfgWr(CHAR_DLY_0,0x00);		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,0x40);    //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,0x30);    //v[7:0]
	}
	else if(cPos==LEFT_BOTTOM)//not define yet!
	{
  		OSDCfgWr(CHAR_DLY_0,0x12);		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,0x60);    //v[7:0]	//00
	}
#endif
#ifdef WVGA
	if(cPos==RIGHT_TOP)
	{
		OSDCfgWr(CHAR_DLY_0,0x03);	  //V[10:8] bit 6-4; H[10:8] bit2-0  23 12
  		OSDCfgWr(CHAR_DLY_1,0x60);    //H[7:0]                           80 80
  		OSDCfgWr(CHAR_DLY_2,0x00);    //v[7:0]                           64 30
	}
	if(cPos==CENTER)
	{
  		OSDCfgWr(CHAR_DLY_0,0x02);	  //V[10:8] bit 6-4; H[10:8] bit2-0  23 12
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]                           80 80
  		OSDCfgWr(CHAR_DLY_2,0x88);    //v[7:0]                           64 30
	}
	else if(cPos==LEFT_BOTTOM)
	{
  		OSDCfgWr(CHAR_DLY_0,0x12);		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,0x60);    //v[7:0]	//00
	}
#endif
#ifdef WXGA
	if(cPos==RIGHT_TOP)
	{
		OSDCfgWr(CHAR_DLY_0,0x07);	  //V[10:8] bit 6-4; H[10:8] bit2-0  23 12
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]                           80 80
  		OSDCfgWr(CHAR_DLY_2,0x00);    //v[7:0]                           64 30
	}
	if(cPos==CENTER)
	{
  		OSDCfgWr(CHAR_DLY_0,0x14);	  //V[10:8] bit 6-4; H[10:8] bit2-0  23 12
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]                           80 80
  		OSDCfgWr(CHAR_DLY_2,0x88);    //v[7:0]                           64 30
	}
	else if(cPos==LEFT_BOTTOM)
	{
  		OSDCfgWr(CHAR_DLY_0,0x24);		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,0x60);    //v[7:0]	//00
	}
#endif
#if 0
	if(cPos==CENTER)
	{
  		OSDCfgWr(CHAR_DLY_0,0x12);		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,0xEE);    //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,0x64);    //v[7:0]
	}
	else if(cPos==LEFT_BOTTOM)
	{
  		OSDCfgWr(CHAR_DLY_0,0x20);		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,0x10);    //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,0x00);    //v[7:0]
	}
#endif
#ifdef AU_35
	if(cPos==RIGHT_TOP)
	{
		OSDCfgWr(CHAR_DLY_0,0x00);	  //V[10:8] bit 6-4; H[10:8] bit2-0  23 12
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]                           80 80
  		OSDCfgWr(CHAR_DLY_2,0x00);    //v[7:0]                           64 30
	}
	if(cPos==CENTER)
	{
 		OSDCfgWr(CHAR_DLY_0,0x00);		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,0x00);    //v[7:0]
	}
	else if(cPos==LEFT_BOTTOM)//not define yet!
	{
  		OSDCfgWr(CHAR_DLY_0,0x12);		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,0x00);    //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,0x60);    //v[7:0]	//00
	}
#endif
}

#ifdef TV
extern bit m_bTV_Num_Bits;
void OSDShowTV_Num(uCHAR cTemp)
{
	uCHAR cTemp1;
	OSDExit();
	OSDPosition(RIGHT_TOP);
	cTemp1=I2CReadByte(EEPVIDEOBLOCK, idVIDEO_FLAG_INDEX)&0x06;
	OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)1<<5)+19);

	twdWr_Burst_A(OSD_RAM_DL);
	switch((cTemp|cTemp1))
	{
		case 0:	OSDNumConvert(m_cTV_Num);
				twdWr_Burst_D(COL_NORMAL);  
				break;
		case 2:	if(m_bTV_Num_Bits)
				{
					OSDNumConvert(m_cTV_Num/10);
					twdWr_Burst_D(COL_NORMAL);
					OSDNumConvert(m_cTV_Num%10);
					twdWr_Burst_D(COL_NORMAL);
				}
				else
				{
					OSDNumConvert(m_cTV_Num);
					twdWr_Burst_D(COL_NORMAL);
					twdWr_Burst_D(0x1B);
					twdWr_Burst_D(COL_NORMAL);
				}
 				break;
		case 4: OSDNumConvert(1);
				twdWr_Burst_D(COL_NORMAL);
				if(m_bTV_Num_Bits)
				{
					OSDNumConvert((m_cTV_Num%100)/10);
					twdWr_Burst_D(COL_NORMAL);  
					OSDNumConvert(m_cTV_Num%10);
					twdWr_Burst_D(COL_NORMAL);  
				}
				else
				{
					OSDNumConvert(m_cTV_Num%10);
					twdWr_Burst_D(COL_NORMAL);  
					twdWr_Burst_D(0x1B);
					twdWr_Burst_D(COL_NORMAL);  
				}
 				break;
		case 6:if(cTemp1==4)
				{
					OSDNumConvert(1);
					twdWr_Burst_D(COL_NORMAL);  
					twdWr_Burst_D(0x1B);
					twdWr_Burst_D(COL_NORMAL);
					twdWr_Burst_D(0x1B);
					twdWr_Burst_D(COL_NORMAL);
				}
				else if(cTemp1==2)
				{
					twdWr_Burst_D(0x1B);
					twdWr_Burst_D(COL_NORMAL);
					twdWr_Burst_D(0x1B);
					twdWr_Burst_D(COL_NORMAL);
				}
				else
				{
					twdWr_Burst_D(0x1B);
					twdWr_Burst_D(COL_NORMAL);
				}
	}
}

void OSDShowRESET(bit bTemp)
{
	if(bTemp)
	{
		OSDShowLine(iBlankLine,0,6,COL_TITLE,OSD_LENGTH);
		OSDShowLine(iRecall_E,3,6,COL_TITLE,OSD_LENGTH);
		OSDShowLine(iOK,19,6,COL_TITLE,OSD_LENGTH);  
	}
	else
	{
		OSDShowLine(iBlankLine,0,6,COL_TITLE,OSD_LENGTH);
		OSDShowLine(iRecalling_E,3,6,COL_TITLE,OSD_LENGTH);  
	}
}
/*
void OSDShowTVSource(sCHAR sStep)
{
	uCHAR cTemp;

	cTemp=I2CReadByte(EEPVIDEOBLOCK, idVIDEO_FLAG_INDEX);
	if(sStep)
	{
		if(cTemp&0x01)
		{
			cTemp&=0xFE;
		}
		else
		{
			cTemp|=0x01;
		}
		I2CWriteByte(EEPVIDEOBLOCK, idVIDEO_FLAG_INDEX,cTemp);
	}
	if(cTemp&0x01)
	{
		m_bAir_Cable=1;
		OSDShowLine(iCable,17,3,COL_TITLE,OSD_LENGTH);  
	}
	else
	{
		m_bAir_Cable=0;
		OSDShowLine(iAir,17,3,COL_TITLE,OSD_LENGTH);  
	}
//	ir_data=0;
}*/


void OSDShowTVData(void)
{
uCHAR  gauge_y =cTotal+2;

switch(m_cOSDFunc){
	case idCHANNEL_TV:
		OSDDrawNum(I2CReadByte(EEPVIDEOBLOCK, idTVCHANNEL_INDEX), 0, 19, m_cOSDFunc, COL_NORMAL, DRAW_BLANK|0x03);
		break;
#ifdef PAL
	case idBAND_TV:
		break;
	case iSOUNDSYSTEM_TV:
		break;

#endif
#ifdef NTSC
	case idSKIP_TV:
		if(m_bTV_Skip)
			OSDShowLine(iAdd_E,17,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
    	else
			OSDShowLine(iErase_E,17,m_cOSDFunc,COL_TITLE,OSD_LENGTH);  
		break;
	case idSOURCE_TV:
		if(m_bAir_Cable)
			OSDShowLine(iCable,17,m_cOSDFunc,COL_TITLE,OSD_LENGTH);  
		else
			OSDShowLine(iAir,17,m_cOSDFunc,COL_TITLE,OSD_LENGTH);  
		break;
#endif
	case idFINETUNE_TV:
		break;
	case idAUTOMEMORY_TV:
		break;
	case idRECALL_TV:
		OSDShowLine(iBlankLine,0,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
		OSDShowLine(iRecall_E,3,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
		break;
	default:	break;
  	}	
}


#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -