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

📄 osddraw.c

📁 这是T118和T103的通用程序
💻 C
📖 第 1 页 / 共 2 页
字号:
//Maximum three initiger, percentage
void OSDDrawNum(uWORD wVal, uCHAR cMax, uCHAR x, uCHAR y, uCHAR cColor, uCHAR cAttr)
{
	//Init Part
	uCHAR cTemp;
	if(cMax!=0)
	{
		m_wBuff[0]=(unsigned long)wVal*100;
		m_wBuff[0]=m_wBuff[0]/cMax;
  	}
	else //Non percentage
	{
		m_wBuff[0]=wVal;
	}

	if(m_wBuff[0]<10)
		m_cBuff[1]=1;
	else if(m_wBuff[0]<100)
		m_cBuff[1]=2;
	else
    	m_cBuff[1]=3;

	OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
	twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index

	if((cAttr&0xF0)==DRAW_BLANK)
	{
		switch(m_cBuff[1]){
		case 1:
			if((cAttr&0x0F)==3||(cAttr&0x0F)==2)
			{
	  			twdWr_Burst_D(BLANK);
				twdWr_Burst_D(cColor);
			}
		case 2:
			if((cAttr&0x0F)==3)
			{
				twdWr_Burst_D(BLANK);
				twdWr_Burst_D(cColor);
			}
	  	}
	}
	else if((cAttr&0xF0)==DRAW_ZERO)
	{
		switch(m_cBuff[1]){
		case 1:
			if((cAttr&0x0F)==3||(cAttr&0x0F)==2)
			{
	  			twdWr_Burst_D('0'-IndexNumOffset);
				twdWr_Burst_D(cColor);
			}
		case 2:
			if((cAttr&0x0F)==3)
			{
				twdWr_Burst_D('0'-IndexNumOffset);
				twdWr_Burst_D(cColor);
		   	}
	  	}
	}


	while(m_cBuff[1]>0)
	{
		if(m_cBuff[1]==3)
			cTemp=m_wBuff[0]/100;
		else if(m_cBuff[1]==2)
			cTemp=(m_wBuff[0]%100)/10;
		else if(m_cBuff[1]==1)
			cTemp=m_wBuff[0]%10;

		OSDNumConvert(cTemp);
    	twdWr_Burst_D(cColor );
		m_cBuff[1]--;
	}
  	twdWr_Burst_P();
}


void OSDNumConvert(uCHAR cNum)
{
	switch(cNum){
	case 9:	twdWr_Burst_D('9'-IndexNumOffset);		break;
	case 8:	twdWr_Burst_D('8'-IndexNumOffset);		break;
	case 7:	twdWr_Burst_D('7'-IndexNumOffset);		break;
	case 6:	twdWr_Burst_D('6'-IndexNumOffset);		break;
	case 5:	twdWr_Burst_D('5'-IndexNumOffset);		break;
	case 4:	twdWr_Burst_D('4'-IndexNumOffset);		break;
	case 3:	twdWr_Burst_D('3'-IndexNumOffset);		break;
	case 2:	twdWr_Burst_D('2'-IndexNumOffset);		break;
	case 1:	twdWr_Burst_D('1'-IndexNumOffset);		break;
	case 0:	twdWr_Burst_D('0'-IndexNumOffset);		break;
	default: break;
	}
}

//Ruby add 2004-06-08
//extern uCHAR idata m_cScaleratio;
void OSDShowRatio(void)
{
uCHAR i;
	for(i=0;i<10;i++)
  	{
  		OSDCleanLine(0,i,0,30);
     	OSDSetLineAttribute(i,0x80);
	}
	OSDPosition(RIGHT_TOP);
    switch(m_cScaleratio)
    {
  		case ScaleFULL:
				OSDShowLine(iScaleFULL_E,16,1,COL_GAUGE,OSD_LENGTH);
				break;
		case Scale16_9:	
				OSDShowLine(iScale16_9_E,16,1,COL_GAUGE,OSD_LENGTH);
				break;
#if (ZOOM_MODES >=2)
		case ZOOM_1:	
				OSDShowLine(iZoom_1_E,16,1,COL_GAUGE,OSD_LENGTH);
                break;
#endif
#if (ZOOM_MODES >=3)	//Bruce, 2006/01/10
		case ZOOM_2:	
				OSDShowLine(iZoom_2_E,16,1,COL_GAUGE,OSD_LENGTH);
                break;
#endif
#if (ZOOM_MODES >=4)

		case Scale4_3:
				OSDShowLine(iScale4_3_E,16,1,COL_GAUGE,OSD_LENGTH);
                break;
#endif
#if (ZOOM_MODES >=5)
		case ZOOM_3:	
				OSDShowLine(iZoom_3_E,16,1,COL_GAUGE,OSD_LENGTH);
                break;
#endif
#if (ZOOM_MODES >=6)
		case ZOOM_4:	
				OSDShowLine(iZoom_4_E,16,1,COL_GAUGE,OSD_LENGTH);
                break;
#endif
#if (ZOOM_MODES >=7)
		case ZOOM_5:	
				OSDShowLine(iZoom_5_E,16,1,COL_GAUGE,OSD_LENGTH);
                break;
#endif
#if (ZOOM_MODES >=8)
		case ZOOM_6:	
				OSDShowLine(iZoom_6_E,16,1,COL_GAUGE,OSD_LENGTH);
                break;
#endif
#if (ZOOM_MODES >=9)
		case ZOOM_7:	
				OSDShowLine(iZoom_1_E,16,1,COL_GAUGE,OSD_LENGTH);
                break;                       
#endif
/*#ifdef T515
		case Scale1_1:	
				OSDShowLine(iScale1_1_E,16,1,COL_GAUGE,OSD_LENGTH);
				break;
#endif*/
	}
	OSDEnable();	
}


void OSDShowSource(void)
{
	// add by kenny on 941115
    OSDDisable(); 
	//=========================

    OSDClearPage();	 

	OSDPosition(RIGHT_TOP);
	OSDShowLine(uiaSrcMux1[EepPublic.cSource].SrcStr,16,1,COL_GAUGE,OSD_LENGTH);

#ifdef TV
   if (uiaSrcMux1[EepPublic.cSource].VideoType==itypeTV)
      OSDDrawNum(EepTV.cChannelNum, 0, 19, 2, COL_TITLE, LBLUE_RED|0x03);
#endif

	OSDEnable();
}

//extern uCHAR idata m_cStandard;
void OSDShowNTSC_PAL(void)
{
	uCHAR i;

	// add by kenny on 941115
    OSDDisable();
	for(i=0;i<10;i++)
  	{
  		OSDCleanLine(0,i,0,30);
     	OSDSetLineAttribute(i,0x80);
	}
	OSDPosition(RIGHT_TOP);
	//=======================
	if(m_cChroma==S_NTSC) 			OSDShowLine(iNTSC_E  ,16,1,COL_GAUGE,OSD_LENGTH);	
	else if(m_cChroma==S_PAL)		OSDShowLine(iPAL_E   ,16,1,COL_GAUGE,OSD_LENGTH);	
	else if(m_cChroma==S_SECAM) 	OSDShowLine(iSECAM_E ,16,1,COL_GAUGE,OSD_LENGTH); 	
	else if(m_cChroma==S_NTSC_4) 	OSDShowLine(iNTSC_4_E,16,1,COL_GAUGE,OSD_LENGTH); 		
	else if(m_cChroma==S_PAL_M) 	OSDShowLine(iPAL_M_E ,16,1,COL_GAUGE,OSD_LENGTH);
	else if(m_cChroma==S_PAL_CN) 	OSDShowLine(iPAL_CN_E,16,1,COL_GAUGE,OSD_LENGTH);  

	OSDEnable();
}

void OSDClearCursor()
{
//uCHAR str_index=ALL_MENU[m_cOSDMenu]->Item_Num*EepPublic.cOSDLang;
uCHAR str_index;
  OSDReadData(idPUBMENU);
  str_index=ALL_MENU[m_cOSDMenu]->Item_Num*EepPublic.cOSDLang;
		OSDShowLine(ALL_MENU[m_cOSDMenu]->str[m_cItem+str_index],TXT_STAT,m_cItem,COL_NORMAL,OSD_LENGTH);

    return;
}

void OSDMoveCursor(void)
{
//uCHAR str_index=ALL_MENU[m_cOSDMenu]->Item_Num*EepPublic.cOSDLang;
uCHAR str_index;
uCHAR Max=ALL_MENU[m_cOSDMenu]->Par[m_cItem].ucValMAX;
uCHAR Val=ALL_MENU[m_cOSDMenu]->EEProm[m_cItem];

  OSDReadData(idPUBMENU);
  str_index=ALL_MENU[m_cOSDMenu]->Item_Num*EepPublic.cOSDLang;
  OSDCleanLine(0,ALL_MENU[m_cOSDMenu]->Item_Num+2,COL_NORMAL,28);

	OSDShowLine(ALL_MENU[m_cOSDMenu]->str[m_cItem+str_index],TXT_STAT,m_cItem,BLUE_PURPLE,OSD_LENGTH);
	if(ALL_MENU[m_cOSDMenu]->Par[m_cItem].cDataAttr&OSD_GUAGE)
		OSDDrawGauge(Val,Max,0,ALL_MENU[m_cOSDMenu]->Item_Num+2, COL_GAUGE);

	if(ALL_MENU[m_cOSDMenu]->Par[m_cItem].cDataAttr&OSD_VALUE)
		OSDDrawNum(Val,Max,NUM_STAT,ALL_MENU[m_cOSDMenu]->Item_Num+GUAGE_GAP,COL_NORMAL,DRAW_BLANK);

//thomas
   if((ALL_MENU[m_cOSDMenu]->Par[m_cItem].cDataAttr&OSD_SH_LAN)){
//      OSDTransfer(EepPublic.cOSDLang);
       OSDSetLineAttribute(ALL_MENU[m_cOSDMenu]->Item_Num+2,0x80);
       OSDShowLine(iTransfer_ALL,(OSD_LENGTH-16),ALL_MENU[m_cOSDMenu]->Item_Num+2,BLUE_PURPLE,OSD_LENGTH);
   }

    return;
}


void OSDPosition(uCHAR cPos)
{	
	if(cPos==RIGHT_TOP){
		OSDCfgWr(CHAR_DLY_0,Y0RightTop);	//V[10:8] bit 6-4; H[10:8] bit2-0  23 12
  		OSDCfgWr(CHAR_DLY_1,Y1RightTop);    //H[7:0]                           80 80
  		OSDCfgWr(CHAR_DLY_2,Y2RightTop);    //v[7:0]                           64 30
	}
	if(cPos==CENTER){
 		OSDCfgWr(CHAR_DLY_0,Y0Center); 		//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,Y1Center);    	//H[7:0]
  		OSDCfgWr(CHAR_DLY_2,Y2Center);    	//v[7:0]
	}
	else if(cPos==LEFT_BOTTOM){//not define yet!
  		OSDCfgWr(CHAR_DLY_0,Y0LeftBottom); 	//V[10:8] bit 6-4; H[10:8] bit2-0
  		OSDCfgWr(CHAR_DLY_1,Y1LeftBottom);  //H[7:0]
  		OSDCfgWr(CHAR_DLY_2,Y2LeftBottom);  //v[7:0]	//00
	}
}

#ifdef TV
void OSDTVShowChannel(uCHAR cChannel){

      OSDClearPage();
      OSDPosition(RIGHT_TOP);
      OSDDrawNum(cChannel, 0, 19, 2, COL_TITLE, LBLUE_RED|0x03);
      OSDEnable();

}
#endif

#ifdef VBI_CC
// kenny 20060403
void OSDShowCCData(uCHAR wVal, uCHAR x, uCHAR y, uCHAR tAttr)
{
	//Init Part
	uCHAR iptCC[2];
	uCHAR cColor;
	uCHAR i;

	if ( (x == 0 && y ==1 ) )
	{
		//=========================
		for(i=0;i<OSD_LINE_NUM;i++)
  		{
  			OSDCleanLine(0,i,0,30);
     		OSDSetLineAttribute(i,0x80);
		}
		OSDCfgWr(CHAR_DLY_2,216);  //v[7:0]	//00
	}

	iptCC[0] = wVal;
	iptCC[1] = EOL;

	OSDCfgWr(CHAR_DLY_0,0x01); 	//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]	//00

	if ( tAttr == 1 || tAttr == 2 )
		cColor = 0x2f;
	else if ( tAttr == 3 || tAttr == 4 )
		cColor = 0x25;
	else if ( tAttr == 5 || tAttr == 6 )
		cColor = 0x24;
	else if ( tAttr == 7 || tAttr == 8 )
		cColor = 0x23;
	else if ( tAttr == 9 || tAttr == 10 )
		cColor = 0x26;
	else if ( tAttr == 11 || tAttr == 12 )
		cColor = 0x2c;
	else if ( tAttr == 13 || tAttr == 14 )
		cColor = 0x2a;
	else
		cColor = 0x2f;

	if ( iptCC[0] == 0x19 )
		cColor &= 0x0f;

	OSDShowLine(iptCC,x,y,cColor,OSD_LENGTH);
}
#endif

⌨️ 快捷键说明

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