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

📄 osd.c

📁 myson的MTV332的DEMO程序 主要功能有菜单的设计和无线遥控以及视频参数的调节
💻 C
📖 第 1 页 / 共 5 页
字号:
       {
        ENG_Video_Color,CHN_Video_Color
        };
*/
        code BYTE itembar[] = {MainPageXStart,MainPageYStart,MainPageBarLength,MaxOSDPageItem};
        code void (*menu[])(void)      =
        {Disp_OSDHPosition,Disp_OSDVPosition,Disp_OSDLanguage,ReturnMenuState
        };

        code BYTE progress[][4] =
        {      1,10,0,OSD_HPOS_U,
                1,10,0,OSD_VPOS_U,
                1,10,0,OSD_LANGUAGE_U,
                1,10,0,NOTHING
        };

        if(!bMenuFlag)
        {
                //ShowMenu(menu_data[sOSD.Language]);
                //ShowProgress(progress[ItemIndex]);
                   ClearOSDRegion(MainPageXStart,MainPageYStart,MainPageColor);
			OSDSetupMenu();
                   ShowProgress(progress[ItemIndex]);
			EnableOSD();

                ItemSelect(itembar,menu);
                bMenuFlag = 1;
        }
        else
        {
                ItemSelect(itembar,menu);
                if(KeyNo == UPKEY || KeyNo == DOWNKEY)
                {
                        ShowProgress(progress[ItemIndex]);
                }
        }

}


void Disp_VsignalPosition(void)
{

}
void Disp_HsignalPosition(void)
{

}
void Disp_PWM(void)
{

}
void Disp_CommonPulse(void)
{

}
void Disp_YGain(void)
{

}
void Disp_BlackLevel(void)
{

}
void Disp_YaperGain(void)
{

}
void Disp_RsubBri(void)
{

}
void Disp_BsubBri(void)
{

}
void Disp_WhitePeakLevel(void)
{

}
void Disp_Gamma1(void)
{

}
void Disp_Gamma2(void)
{

}
void Disp_VideoMisc(void)
{
/*
        code BYTE *menu_data[] =
       {
        ENG_Video_Color,CHN_Video_Color
        };
*/
        code BYTE itembar[] = {MainPageXStart,MainPageYStart,MainPageBarLength,MaxMiscPageItem};
        code void (*menu[])(void)      =
        {/*Disp_VsignalPosition,Disp_HsignalPosition,Disp_PWM,*/Disp_CommonPulse,Disp_YGain,
        Disp_BlackLevel,Disp_YaperGain,Disp_RsubBri,Disp_BsubBri,Disp_WhitePeakLevel,
        Disp_Gamma1,Disp_Gamma2,ReturnMenuState
        };
/*
        code BYTE progress[][4] =
        {       0,9,0,VIDEO_,
                0,9,0,VIDEO_HUE_U,
                0,9,0,VIDEO_SHARP,
                0,9,0,NOTHING
        };
*/
        if(!bMenuFlag)
        {
                //ShowMenu(menu_data[sOSD.Language]);
                //ShowProgress(progress[ItemIndex]);
            //    ClearOSDRegion(MainPageXStart,MainPageYStart,MainPageColor);
           	          InitialOSD();
		   VideoMiscMenu();
                //ShowProgress(progress[ItemIndex]);
		   EnableOSD();

                ItemSelect(itembar,menu);
                bMenuFlag = 1;
        }
        else
        {
                ItemSelect(itembar,menu);
		
                //if(KeyNo == UPKEY || KeyNo == DOWNKEY
		//	|| IR_Key == IR_Up_Key || IR_Key == IR_Down_Key)
                if(KeyNo == UPKEY || KeyNo == DOWNKEY)
                {
                        //ShowProgress(progress[ItemIndex]);
                }
                
        }
	
}

void Disp_Recall(void)
{

}
#endif


void Disp_IICHold(void)
{
        if(!bMenuFlag)
        {
        	  DisableOSD();
               Disp_DebugMsg();
                bMenuFlag = 1;
        }
}
void VideoPosMenu()
{
	if(bFactoryflag)
	{
		gotoxy(1,7);
		PrintChar(_F,Red);
	}
	else
	{
		gotoxy(1,7);
		PrintChar(__,MainPageColor);
	}
		
	gotoxy(MainPageXStart,MainPageYStart);
	PrintString(HoriPos_Item,sizeof(HoriPos_Item),MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+1);
	PrintString(VerticalPos_Item,sizeof(VerticalPos_Item),MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+2);	
	PrintByteString(ReturnStr,sizeof(ReturnStr),MainPageCharColor);		
}
void Disp_VideoPos()
{
	code BYTE itembar[] = {0,1,15,3};
	code void (*menu[])(void) =
	{
		Disp_VideoHPos,
		Disp_VideoVPos,	
		VideoReturnMain
	};
	if(bMenuFlag == 0)
	{
		bClrFlag=0;
		if (MenuFlagState==0)  //Only First time return to zero
			ItemIndex=0;
		InitialOSD();
		VideoPosMenu();	// fill data to display ram                
		EnableOSD();	// enable osd
		ShowBar(ItemIndex);				
		bMenuFlag = 1;
		MenuFlagState = 4;
	}
        else
	{        
		ItemSelect(itembar,menu);
	}	
}
void DispContBright(void)
{
	code BYTE itembar[] = {0,1,15,9};
	code void (*menu[])(void) =
	{
		Disp_VideoBrightness,
         	Disp_VideoContrast,      		
         	Disp_VideoSubContrast,
         	Disp_Saturation,
         	Disp_Hue,
         	Disp_Sharpness,
         	Disp_WhiteLimiter,
         	Disp_BlackLimiter,
		ContBrigReturnMain
	};		

	if(bMenuFlag == 0)
	{
		bClrFlag=0;
		if (MenuFlagState==0)  //Only First time return to zero
			ItemIndex=0;
			
		InitialOSD();
		ContBrightMenu();	// fill data to display ram                
		EnableOSD();	// enable osd
		ShowBar(ItemIndex);				
//                GammaSelect(itembar,menu);
		//ItemSelect(itembar,menu);	// 20060505 For check MCU reset issue.
		//ShowSubMenu(1);		// Mark in 050807	for disable sub menu
		bMenuFlag = 1;
		MenuFlagState = 2;
	}
        else
        {        
//		GammaSelect(itembar,menu);
		ItemSelect(itembar,menu);

	  }	
}

void ContBrightMenu(void)
{
	if(bFactoryflag)
	{
		gotoxy(1,7);
		PrintChar(_F,Red);
	}
	else
	{
		gotoxy(1,7);
		PrintChar(__,MainPageColor);
	}
		
	gotoxy(MainPageXStart,MainPageYStart);
	PrintString(Brightness_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+1);
	PrintString(Contrast_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+2);	
	PrintByteString(SubContrast_Item,MainPageItemLength,MainPageCharColor);		
	gotoxy(MainPageXStart,MainPageYStart+3);	
	PrintByteString(Saturation_Item,MainPageItemLength,MainPageCharColor);		
	gotoxy(MainPageXStart,MainPageYStart+4);	
	PrintByteString(Hue_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+5);	
	PrintByteString(Sharpness_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+6);	
	PrintByteString(WhiteLimiter_Item,MainPageItemLength,MainPageCharColor);		
	gotoxy(MainPageXStart,MainPageYStart+7);	
	PrintByteString(BlackLimiter_Item,MainPageItemLength,MainPageCharColor);	
	gotoxy(MainPageXStart,MainPageYStart+8);	
	PrintByteString(ReturnStr,MainPageItemLength,MainPageCharColor);		
	
}


void ReturnMenuState(void)
{
        OSDStackPoint--;
        MenuProcess = OSDStack[OSDStackPoint].MenuProcess;
        ItemIndex = OSDStack[OSDStackPoint].ItemIndex;
}
void SaveMenuState(void)
{
	OSDStack[OSDStackPoint].MenuProcess = MenuProcess;
	OSDStack[OSDStackPoint].ItemIndex = ItemIndex;
	OSDStackPoint++;
}


void ContBrigReturnMain(void)
{
	bMenuFlag = 0;
	bSubMenuFlag=0;	
	bClrFlag=0;
	ItemIndex = 0;
	bGammaFlag=0;
	MenuFlagState = 0;
	MenuProcess = Disp_VideoMenu;
}
void Disp_No_Input_Signal()
{
	CloseWindow(1);
	EnableOSDRAMClr();
	DisableOSD();
	byMTV_HORD=25;	
	byMTV_VERTD=5;	
	gotoxy(20,0);
	PrintString(NoSignal,sizeof(NoSignal),Yellow);
	EnableOSD();
	bMenuFlag = 1;
	
}
void DispInputSource(void)
{
        code BYTE progress[4] ={0,7,4,InputSource};		
        ProgressSelect(progress);     
}

void ShowInputSource(BYTE input_source)
{
	DisableOSD();
	sImage.InputMode = ItemValue.value;
	
	switch(input_source)
	{		
		case 0x00:
			EnableOSDRAMClr();
			DoWait(10);
			DisableOSDRAMClr();
			gotoxy(0,9);
			PrintString(AVInput,10,White);
			break;
		case 0x01:
			EnableOSDRAMClr();
			DoWait(10);
			DisableOSDRAMClr();
			gotoxy(0,9);
			PrintString(SVInput,10,White);
			break;
		case 0x02:
			EnableOSDRAMClr();
			DoWait(10);
			DisableOSDRAMClr();
			gotoxy(0,9);
			PrintString(YCbCrInput,10,White);
			break;
		case 0x03:
			EnableOSDRAMClr();
			DoWait(10);
			DisableOSDRAMClr();
			gotoxy(0,9);
			PrintString(RGBInput,sizeof(RGBInput),White);
			gotoxy(sizeof(RGBInput),9);
 			PrintString(WithSync,sizeof(WithSync),Red);
			break;
	}
}

void SetInputSource()
{
	switch (sImage.InputMode)
	{
		case 0x00:
			VSW = 0x00;
			SyncSW = 0;
			ColorSys = 0;
			WIDEBLKPOL = 0;
			CS7111_Write(0x0D,((SyncSW<<7)|(WIDEBLKPOL<<6)|(VSW<<3)|(ColorSys&0x07)));
			break;
		case 0x01:
			VSW = 0x03;
			SyncSW = 0;
			ColorSys = 0;
			WIDEBLKPOL = 0;			
			CS7111_Write(0x0D,((SyncSW<<7)|(WIDEBLKPOL<<6)|(VSW<<3)|(ColorSys&0x07)));
			break;
		case 0x02:
			VSW = 0x04;
			SyncSW = 0;
			ColorSys = 0;
			WIDEBLKPOL = 0;
			CS7111_Write(0x0D,((SyncSW<<7)|(WIDEBLKPOL<<6)|(VSW<<3)|(ColorSys&0x07)));
			break;
		case 0x03:
			VSW = 0x05;
			SyncSW = 1;
			ColorSys = 0;
			WIDEBLKPOL = 0;
			CS7111_Write(0x0D,((SyncSW<<7)|(WIDEBLKPOL<<6)|(VSW<<3)|(ColorSys&0x07)));
			break;
	}
}


void OSDSetup()
{
	code BYTE itembar[] = {0,1,15,3};
	code void (*menu[])(void) =
	{
		Disp_OSDHorital,
         	Disp_OSDVertical, 
     	      	OSDReturnMain
        };		

        if(bMenuFlag == 0)
        {
		bClrFlag=0;
		if (MenuFlagState==0)  //Only First time return to zero
			ItemIndex=0;
			
		InitialOSD();
		OSDMenu();	// fill data to display ram                
		EnableOSD();	// enable osd
		ShowBar(ItemIndex);				
//                GammaSelect(itembar,menu);
		ItemSelect(itembar,menu);
		//ShowSubMenu(1);		// Mark in 050807	for disable sub menu
	   	bMenuFlag = 1;
	  	MenuFlagState = 3;
        }
        else
        {        
//		GammaSelect(itembar,menu);
	  ItemSelect(itembar,menu);

	  }	
}

void OSDReturnMain(void)
{
	bMenuFlag = 0;
	bSubMenuFlag=0;	
	bClrFlag=0;
	ItemIndex = 5;	// for return main menu window item
	bGammaFlag=0;
	MenuFlagState = 0;
	MenuProcess = Disp_VideoMenu;
}

void OSDMenu(void)
{
	if(bFactoryflag)
	{
	gotoxy(1,7);
	PrintChar(_F,Red);
	}
	else
	{
	gotoxy(1,7);
	PrintChar(__,MainPageColor);
	}
		
	gotoxy(MainPageXStart,MainPageYStart);
	PrintString(OSDH_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+1);
	PrintString(OSDV_Item,MainPageItemLength,MainPageCharColor);	
	gotoxy(MainPageXStart,MainPageYStart+2);	
	PrintByteString(ReturnStr,MainPageItemLength,MainPageCharColor);		
}

void Disp_OSDHorital(void)
{
        code BYTE progress[4] ={0,7,4,OSDHPosi};		
        ProgressSelect(progress);     
}

void Disp_OSDVertical(void)
{
        code BYTE progress[4] ={0,7,4,OSDVPosi};		
        ProgressSelect(progress);     
}
void Set_Video_HPos()
{
	sVideoPos.H_Pos=ItemValue.value;
	byMTV_TCONADDR=0x13;
	byMTV_TCONDATA=sVideoPos.H_Pos;
}
void Set_Video_VPos()
{
	sVideoPos.V_Pos=ItemValue.value;
	byMTV_TCONADDR=0x0C;
	byMTV_TCONDATA=sVideoPos.V_Pos;
}

void Set_OSD_H()
{
	sOSD.H_Pos = ItemValue.value;
	byMTV_HORD=sOSD.H_Pos;
	
}

void Set_OSD_V()
{
	sOSD.V_Pos = ItemValue.value;
	byMTV_VERTD=sOSD.V_Pos;	
}

void Disp_WhiteLimiter(void)
{
        code BYTE progress[4] ={0,7,4,WHITELIMITE};
        ProgressSelect(progress);
}

void Disp_BlackLimiter(void)
{
        code BYTE progress[4] ={0,7,4,BLACKLIMITE};
        ProgressSelect(progress);
}

void Set_WhiteLimiter(void)
{
	sGamma.WhiteLimit = ItemValue.value;
	CS7111_Write(0x06,((sGamma.WhiteLimit&0x0F)<<4)|(sGamma.BlackLimit&0x0F));
}

void Set_BlackLimiter()
{
	sGamma.BlackLimit = ItemValue.value;
	CS7111_Write(0x06,((sGamma.WhiteLimit&0x0F)<<4)|(sGamma.BlackLimit&0x0F));
}

void Disp_Input_Mode()
{
	CloseWindow(1);
	byMTV_HORD=sOSD.H_Pos;	
	byMTV_VERTD=sOSD.V_Pos;	
	EnableOSDRAMClr();
	DisableOSD();
	gotoxy(22,0);
	#if 0
	if(bNTSCVideo)
		PrintString(NTSCMode_Str,sizeof(NTSCMode_Str),Yellow);
	else
		PrintString(PALMode_Str,sizeof(NTSCMode_Str),Yellow);
	#else
	switch(byVideoMode)
	{
		case NoVideoInout:
			PrintString(NoSignal,sizeof(NoSignal),Yellow);
			break;

		case NTSC358:
			PrintString(NTSCMode_Str,sizeof(NTSCMode_Str),Yellow);
			break;

		case NTSC443:

			PrintString(NTSC443_Str,sizeof(NTSC443_Str),Yellow);
			break;

		case PAL443:
			PrintString(PALMode_Str,sizeof(PALMode_Str),Yellow);
			break;

		case PALM:
			PrintString(PALM_Str,sizeof(PALM_Str),Yellow);
			break;

		case PALN:
			PrintString(PALN_Str,sizeof(PALN_Str),Yellow);
			break;

		case SECAM:
			PrintString(SECAM_Str,sizeof(SECAM_Str),Yellow);
			break;

	}
	#endif
	//gotoxy(0,3);
	//DoubleWidthPrintString(DWNTSCMode,7,Yellow);
	
	EnableOSD();
	//bMenuFlag = 1;
	OsdTimer = 500;
	MenuProcess = Disp_Entry;
	
}



/*
void Disp_VideoPosition()
{
        code BYTE itembar[] = {0,1,15,9};
        code void (*menu[])(void) =
        {
		Disp_HPosition,
         	Disp_VPosition,      		
     

⌨️ 快捷键说明

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