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

📄 osd.c

📁 myson的MTV332的DEMO程序 主要功能有菜单的设计和无线遥控以及视频参数的调节
💻 C
📖 第 1 页 / 共 5 页
字号:
void VideoMiscMenu(void)
{
	OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
	//OpenWindow(BackGroundWinNo,BackGroundXStart,BackGroundYStart,BackGroundXEnd,BackGroundYEnd,BackGroundColor);
	//gotoxy(MainPageXStart,MainPageYStart);
	//PrintString(VsignalPosition_Item,MainPageItemLength,MainPageCharColor);
	//gotoxy(MainPageXStart,MainPageYStart+1);
	//PrintString(HsignalPosition_Item,MainPageItemLength,MainPageCharColor);
	//gotoxy(MainPageXStart,MainPageYStart+2);
	//PrintString(PWM_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart);
	PrintString(CommonPulse_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+1);
	PrintString(YGain_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+2);
	PrintString(BlackLevel_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+3);
	PrintString(YaperGain_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+4);
	PrintString(RsubBri_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+5);
	PrintString(BsubBri_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+6);
	PrintString(WhitePeakLevel_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+7);
	PrintString(Gamma1_Item,MainPageItemLength,MainPageCharColor);
//	gotoxy(MainPageXStart,MainPageYStart+8);
//	PrintString(Gamma2_Item,MainPageItemLength,MainPageCharColor);
//	gotoxy(MainPageXStart,MainPageYStart+9);
//	PrintString(Exit_Item,MainPageItemLength,Red);
}
#endif   //For the above #if 0


//void ShowBar(BYTE start_x, BYTE start_y, BYTE end_x, BYTE end_y, BYTE color)
void ShowBar(BYTE row)

{
	OpenWindow(1,0,row+1,17,row+1,Magenta);

	if (row >0)
	{
		byMTV_OSDRA=row |Address;
		byMTV_OSDCA=0;
		byMTV_OSDDT0= 0x00;
	}

	byMTV_OSDRA=row+1;
	byMTV_OSDCA=0;
	byMTV_OSDDT0= PTRICON;
	
	byMTV_OSDRA=(row+1)|Attribute;
	byMTV_OSDCA=0;
	byMTV_OSDDT0= Yellow;
}

void ShowBarDown(BYTE row,BYTE itembar)

{
	OpenWindow(1,0,row+1,17,row+1,Yellow);
	if (row == itembar-1)
	{
		byMTV_OSDRA=(1) |Address;
		byMTV_OSDCA=0;
		byMTV_OSDDT0= 0x00;
	}
	else
	{
		byMTV_OSDRA=(row+2) |Address;
		byMTV_OSDCA=0;
		byMTV_OSDDT0= 0x00;
	}

	byMTV_OSDRA=row+1;
	byMTV_OSDCA=0;
	byMTV_OSDDT0= PTRICON;
	
	byMTV_OSDRA=(row+1)|Attribute;
	byMTV_OSDCA=0;
	byMTV_OSDDT0= 0x06;
}

void Disp_Nothing(void)
{
}

void OSDProc(void)
{

    (*MenuProcess)();
		
	
}
void VideoReturnMain(void)
{
	bMenuFlag = 0;
	bSubMenuFlag=0;	
	bClrFlag=0;
	ItemIndex = VideoITEMPOS;
//	bGammaFlag=0;
	MenuFlagState = 0;
	MenuProcess = Disp_VideoMenu;
}

void ReturnMain(void)
{
	bMenuFlag = 0;
	bSubMenuFlag=0;	
	bClrFlag=0;
	ItemIndex = GAMMAITEMPOS;
	bGammaFlag=0;
	MenuFlagState = 0;
	MenuProcess = Disp_VideoMenu;
}


void Disp_Entry(void)
{
	if(BKLT_En==0)
		return;
        if(bMenuFlag == 0)
        {
		DisableOSD();	
		bMenuFlag = 1;
		OsdTimer = 10000;
		return;
        }
      
	 if(OsdTimer == 0)
	 {
	 	if(!bNoSync)
	 	{
			bMenuFlag = 0;
	 		bSubMenuFlag = 0;			
			bGammaFlag=0;
			MenuFlagState = 0;
			bSubMenuFlag=0;
	 	}
	 }

	if(KeyNo == MENUKEY||IR_Key == IR_Menu_Key)	
	{
		DisableOSD();	
		
		bMenuFlag = 0;
		bSubMenuFlag=0;
		bClrFlag=0;			 
		bGammaFlag=0;
		MenuFlagState = 0;
		ItemIndex = 0;
		OsdTimer = OSD_OFFTIME;
		MenuProcess = Disp_VideoMenu;
     	}
		
	else  if (KeyNo==POWERKEY ||IR_Key == IR_Power_Key)
	{
		DisableOSD();  
		bMenuFlag = 0;
		bSubMenuFlag=0;
		bClrFlag=0;
		Res_BKLT; 			
		bGammaFlag=0;
		MenuFlagState = 0;
		ItemIndex = 0;
		OsdTimer = OSD_OFFTIME;

		ShowSubMenu(0);
		MenuProcess = Disp_PowerMenu;
		EnableOSD();
	}	
	else  if (IR_Key == IR_Dimmer_Key)// 060830 for TV (For remote control and auto search channel)
	{
		TV_Channel_Search();
	}
	else  if (KeyNo == UPKEY)// 060830 for TV channel up
	{
		#ifdef _TV_
		TV_Channel_Up();
		#endif
	}
	else  if (KeyNo == DOWNKEY)// 060830 for TV channel down
	{
		#ifdef _TV_
		TV_Channel_Down();
		#endif
	}
	
}

void SaveProgressData(BYTE progress_no)
{

	switch(progress_no)
	{
		
		case BRIGHT_BRIGHTNESS:
	       case BRIGHT_CONTRAST:
		case BRIGHT_SUBCONTRAST:
			EEPROM_Write(sBrightAddrSt, &sBright.Brightness, sBrightDataSize);		
			break;
		
		case COLOR_SATURATION:
		case COLOR_HUE:
			EEPROM_Write(sColor1AddrSt, &sColor.Saturation, sColorDataSize);			
			break;

		case GammaVg1: 
		case GammaVg2:
		case Vcomamp: 
		case Vcomdc: 
		case Drivered: 
		case Drivegreen: 
		case Driveblue:
		case WHITELIMITE:
		case BLACKLIMITE:
			EEPROM_Write(sGammaAddrSt, &sGamma.Vg1, sGammaDataSize);		
			break;	
		case InputSource:
			EEPROM_Write(sVideoInputSourceAddSt, &sImage.InputMode, sImageDataSize);		
			break;	
		case OSDHPosi:
		case OSDVPosi:
			EEPROM_Write(sOSDAddrSt, &sOSD.H_Pos, sOSDDataSize);		
			break;

		case Video_VPosi:
		case Video_HPosi:
			EEPROM_Write(sVideoPosiAddSt, &sVideoPos.H_Pos, sVideoPosiDataSize); 
      			break;
		case ROTATION:
			break;
		case TVCH:		// 060830 for TV EEPROM address(save channel and search channel)
			EEPROM_Write(sTVChannelAddSt, &TVChannel, sTVChannelDataSize); 
			break;
		case SaveTVSearch:
			EEPROM_Write(sTVSearchAddSt, &TVSearchCH, sTVSearchDataSize); 
			break;
	}

}

void GetProgressData(BYTE progress_no)
{
	switch(progress_no)
	{		
		case BRIGHT_BRIGHTNESS:
			ItemValue.value = sBright.Brightness;
			if(FactoryFg)
				ItemValue.min = 0x00;//MinBright;
			else                 
				ItemValue.min = 0x40;//MinBright;
			ItemValue.max = 0xFF;//MaxBright;
			break;

		case BRIGHT_SUBCONTRAST:
			ItemValue.value = sBright.SubContrast;
			ItemValue.min = 0x00;//MinBright;
			ItemValue.max = 0x0F;//MaxBright;
			break;

		case InputSource:
			ItemValue.value = sImage.InputMode;
			ItemValue.min = 0x00;//MinBright;
			ItemValue.max = 0x03;//MaxBright;
			break;

		case SHARPNESS:
			ItemValue.value = sColor.Sharpness;
			ItemValue.min = 0x00;//MinBright;
			ItemValue.max = 0x3F;//MaxBright;
			break;

		case ROTATION:
			break;
		
		case BRIGHT_CONTRAST:	
			ItemValue.value = sBright.Contrast;
			ItemValue.min = 0x00;//MinCont;
			ItemValue.max =0x7F;// MaxCont;
			break;				

		case COLOR_SATURATION:	
			ItemValue.value = sColor.Saturation;
			ItemValue.min = 0x00;//MinSat;
			ItemValue.max =0x7F;// MaxSat;
			break;

		case COLOR_HUE:	
			ItemValue.value = sColor.Hue;
			ItemValue.min = 0x00;//MinHue;
			ItemValue.max= 0x7F;//MaxHue;
			break;

		case GammaVg1: 
			ItemValue.value = sGamma.Vg1;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0xff;// 0xff;
			break;

		case GammaVg2: 
			ItemValue.value = sGamma.Vg2;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0xff;// 0xff;
			break;

		case Vcomamp: 
			ItemValue.value = sGamma.CAMP;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0xff;// 0xff;
			break;				

		case Vcomdc: 
			ItemValue.value = sGamma.CDC;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0xff;// 0xff;
			break;	

		case Drivered: 
			ItemValue.value = sGamma.DR;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0x3F;// 0xff;
			break;	

		case Drivegreen: 
			ItemValue.value = sGamma.DG;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0x3F;// 0xff;
			break;	

		case Driveblue: 
			ItemValue.value = sGamma.DB;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0x3F;// 0xff;
			break;	

		case OSDHPosi: 
			ItemValue.value = sOSD.H_Pos;
			ItemValue.min = 0x07;//0x00;
			ItemValue.max =0x24;// 0xff;				
			break;	

		case OSDVPosi: 
			ItemValue.value = sOSD.V_Pos;
			ItemValue.min = 0x05;//0x00;
			ItemValue.max =0x17;// 0xff;				
			break;	

		case WHITELIMITE: 
			ItemValue.value = sGamma.WhiteLimit;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0x15;// 0xff;				
			break;

		case BLACKLIMITE: 
			ItemValue.value = sGamma.BlackLimit;
			ItemValue.min = 0x00;//0x00;
			ItemValue.max =0x15;// 0xff;				
			break;	

		case Video_HPosi:
			ItemValue.value = sVideoPos.H_Pos;
			ItemValue.min = 0x45;//0x00;
			ItemValue.max =0x7F;// 0xff;				
			break;

		case Video_VPosi:
			ItemValue.value = sVideoPos.V_Pos;
			ItemValue.min = 0x04;//0x00;
			ItemValue.max =0x64;// 0xff;				
			break;
	}
}

void SetProgressData(BYTE progress_no)
{
	switch(progress_no)
	{
		case BRIGHT_BRIGHTNESS:
			Set_VideoBrightness();
			break;

		case SHARPNESS:
			Set_VideoSharpness();
#if 0				
#ifdef _MTV332_		  	
		  	    Set_SharpPWM = 0xff;
#endif
#endif
			break;	

		case ROTATION:
			break;

		case BRIGHT_CONTRAST:
			Set_VideoContrast();
			break;				

		case BRIGHT_SUBCONTRAST:
			Set_VideoSubContrast();
			break;

		case COLOR_SATURATION:
			Set_VideoSaturation();
			break;

		case COLOR_HUE:
			Set_VideoHue();
			break;

		case GammaVg1: 
#ifdef _MTV332_
//			sGamma.Vg1= ItemValue.value;
			Set_GammaVg1();
		#if 0
			GammaPWM_VG1L =sGamma.Vg1; 	
		#endif
#endif
			break;

		case GammaVg2: 
#ifdef _MTV332_		  	
//			sGamma.Vg2= ItemValue.value;
			Set_GammaVg2();
		#if 0
			GammaPWM_VG2L =sGamma.Vg2; 		 
		#endif
#endif
			break;
		  
		case Vcomamp:
			Set_VCOMAMP();
			break;

		case Vcomdc:
			Set_VCOMDC();
			break;

		case Drivered:
			Set_DriveR();
			break;

		case Drivegreen:
			Set_DriveG();
			break;

		case Driveblue:
			Set_DriveB();
			break;

		case InputSource:			
			ShowInputSource(ItemValue.value);
			break;

		case OSDHPosi: 
			Set_OSD_H();	
			break;	

		case OSDVPosi: 
			Set_OSD_V();	
			break;	

		case WHITELIMITE: 
			Set_WhiteLimiter();	
			break;	

		case BLACKLIMITE: 
			Set_BlackLimiter();	
			break;	

		case Video_VPosi:
			Set_Video_VPos();
			break;

		case Video_HPosi:
			Set_Video_HPos();
			break;
        }
}


//void ShowEmptyBar1(BYTE start_x,BYTE start_y,BYTE value)
void ShowEmptyBar1(BYTE start_x,BYTE start_y)
{       
	BYTE i;
//        gotoxy(start_x,start_y);
//        gotoxy(0,9);
//        PrintByteString(progbar,30,MainPageCharColor);
	byMTV_OSDRA=start_y |Address;
	byMTV_OSDCA=start_x;
	for (i=BarSt;i< BarLen;i++)
		byMTV_OSDDT0= _COBAR_EMPTY;

	//Painting for line color		
	byMTV_OSDRA=start_y |Attribute;
	byMTV_OSDCA=start_x;			//painting the column j
  	for (i=BarSt;i< BarLen;i++)
		byMTV_OSDDT0=0x02;	  	  //green color
}

void ShowBar1(BYTE start_x,BYTE start_y,BYTE value)
{
	BYTE j=24;  //define in final position
	if( value <= 100)
		j= value / 4;      //Get Major posittion
	else
		j=24;		//More then 100 , must limit at 100

	if (j >24)
		j=24;
	  
	//Painting for Block char
	byMTV_OSDRA=start_y |Address;
	byMTV_OSDCA=start_x+ j;//start_x+ (j*2);
	byMTV_OSDDT0= _COBAR_BLOCK;

	//Painting for Block color		
	byMTV_OSDRA=start_y |Attribute;
	byMTV_OSDCA=start_x+j;			//painting the column j

	switch (value %4)
	{
		case 0:
			byMTV_OSDDT0= 0x12;	break;		//Blue color
		case 1:
			byMTV_OSDDT0= 0x52;	break;		//Green Color
		case 2:
			byMTV_OSDDT0= 0x42;	break;		//Red color
		case 3:
			byMTV_OSDDT0= 0x62;	break;		//Blue+Red color
	}
}

//code BYTE CharData[]={_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_A,_B,_C,_D,_E,_F};

void ShowProgress(BYTE *prog)
{
	BYTE msgbuf[]={0x00,0x00};	//BYTE msgbuf[4]={0x00,0x00,0x00,0x00};
	WORD temp;//,temp1;

	GetProgressData(prog[3]);

	if(prog[3]!=InputSource)
	{
  //0°63 only 64 level
		temp = (ItemValue.value - ItemValue.min)*100
			/(ItemValue.max - ItemValue.min);

		msgbuf[1] = HexTab[(temp%10)]; //HexTab[(temp1%10)]; 
		msgbuf[0] = HexTab[(temp/10)]; //HexTab[(temp1/10)]; 

		gotoxy(BarSt,ValueY);
		switch(prog[3])
		{
			case BRIGHT_BRIGHTNESS:
				PrintByteString(Brightness_Item,sizeof(Brightness_Item),MainPageCharColor);
				break;

			case COLOR_SATURATION:	
				PrintByteString(Saturation_Item,sizeof(Saturation_Item),MainPageCharColor);
				break;				

			case COLOR_HUE: 
				PrintByteString(Hue_Item,sizeof(Hue_Item),MainPageCharColor);
				break;

			case BRIGHT_CONTRAST:				
				PrintByteString(Contrast_Item,sizeof(Contrast_Item),MainPageCharColor);
 				break;

			case BRIGHT_SUBCONTRAST:				
				PrintByteString(SubContrast_Item,sizeof(SubContrast_Item),MainPageCharColor);
				break;

	              case SHARPNESS:
	                     PrintByteString(Sharpness_Item,sizeof(Sharpness_Item),MainPageCharColor);
				break;

			case ROTATION:
		              break;

			case GammaVg1:
				PrintByteString(GammaVg1_Str_Item,sizeof(GammaVg1_Str_Item),MainPageCharColor);
		              break;

			case GammaVg2:
				PrintByteString(GammaVg2_Str_Item,sizeof(GammaVg2_Str_Item),MainPageCharColor);
		              break;

			case Vcomamp:
				PrintByteString(VCOMAMP_Str_Item,sizeof(VCOMAMP_Str_Item),MainPageCharColor);
		              break;

⌨️ 快捷键说明

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