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

📄 osdctrl.c

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 C
📖 第 1 页 / 共 5 页
字号:
			return;
			
	}
}

void subMenu(void)
{	
	subClear();
/*		PortDataOut(((MainMenuCols+1)*4+3), UPDATE_CODE,clearData2,23);
		PortDataOut(((MainMenuCols+1)*5+3), UPDATE_CODE,clearData2,23);
		PortDataOut(((MainMenuCols+1)*7+3), UPDATE_CODE,clearData2,23);
		PortDataOut(((MainMenuCols+1)*8+3), UPDATE_CODE,clearData2,23);*/

	load_iconData();

	if(cursor >= LUMINANCE_CONTRAST && cursor <= IMAGEPOSITION_V)
	{
		PortDataOut((MainMenuCols+1)*4+3,UPDATE_CODE,SubIcon1[0],3);
		PortDataOut((MainMenuCols+1)*5+3,UPDATE_CODE,SubIcon1[1],3);
		PortDataOut((MainMenuCols+1)*7+3,UPDATE_CODE,SubIcon2[0],3);
		PortDataOut((MainMenuCols+1)*8+3,UPDATE_CODE,SubIcon2[1],3);
	}
	else if ((cursor >= COLORTEMP_WARM) && (cursor <= COLORTEMP_USER))
	{
		PortDataOut((MainMenuCols+1)*4+12,UPDATE_CODE,warmData[eepData.language],6);
		PortDataOut((MainMenuCols+1)*6+12,UPDATE_CODE,coolData[eepData.language],6);
		PortDataOut((MainMenuCols+1)*8+9,UPDATE_CODE,userData[eepData.language],sizeof(userData[0]) / sizeof(char));
	}
	else if(cursor == USER_R || cursor == OSDSETUP_HPOS)
	{
		PortDataOut((MainMenuCols+1)*3+3,UPDATE_CODE,SubIcon1[0],3);
		PortDataOut((MainMenuCols+1)*4+3,UPDATE_CODE,SubIcon1[1],3);
		PortDataOut((MainMenuCols+1)*5+3,UPDATE_CODE,SubIcon2[0],3);
		PortDataOut((MainMenuCols+1)*6+3,UPDATE_CODE,SubIcon2[1],3);
		PortDataOut((MainMenuCols+1)*7+3,UPDATE_CODE,SubIcon3[0],3);
		PortDataOut((MainMenuCols+1)*8+3,UPDATE_CODE,SubIcon3[1],3);
	}
	else if(cursor == AUTOCONFIG_YES || cursor == RESET_YES)
	{
		PortDataOut((MainMenuCols+1)*5+13,UPDATE_CODE,yesData[eepData.language],3);
		PortDataOut((MainMenuCols+1)*7+13,UPDATE_CODE,noData[eepData.language],4);
	}
	else if(cursor >= LANGUAGE_ENGLISH && cursor <= LANGUAGE_SCHINESE)
	{
		PortDataOut((MainMenuCols+1)*4+5,UPDATE_CODE,englishData[0],8);
		PortDataOut((MainMenuCols+1)*4+17,UPDATE_CODE,englishData[1],8);
		PortDataOut((MainMenuCols+1)*6+5,UPDATE_CODE,englishData[2],8);
		PortDataOut((MainMenuCols+1)*6+17,UPDATE_CODE,englishData[3],8);
		PortDataOut((MainMenuCols+1)*8+5,UPDATE_CODE,englishData[4],8);
		PortDataOut((MainMenuCols+1)*8+17,UPDATE_CODE,englishData[5],8);
		
/*		buff[20] = 0;
		PortDataOut((MainMenuCols+1)*(4+buff[20]*2)+5,UPDATE_CODE,englishData[0],8);
		PortDataOut((MainMenuCols+1)*(4+buff[20]*2)+17,UPDATE_CODE,englishData[0]+1,8);*/
	}
	else if(cursor == MAIN_INFORMATION)
		informationMenu();

	else if (cursor == HOT_CONTRAST)
	{
		PortDataOut((MainMenuCols+1)*5+3,UPDATE_CODE,SubIcon1[0],3);
		PortDataOut((MainMenuCols+1)*6+3,UPDATE_CODE,SubIcon1[1],3);
		setScrollBarAttr(1);
		AdjustFlag ^= 1;
		adjContrast(0,SHOW);
	}
	else if (cursor == HOT_BRIGHTNESS)
	{
		PortDataOut((MainMenuCols+1)*5+3,UPDATE_CODE,SubIcon2[0],3);
		PortDataOut((MainMenuCols+1)*6+3,UPDATE_CODE,SubIcon2[1],3);
		setScrollBarAttr(1);
		AdjustFlag ^= 1;
		adjBrightness(0,SHOW);
	}
#if WITH_AUDIO	
	else if (cursor == HOT_VOLUME)
    		adjVolume(0,SHOW);  
    	else if (cursor == MAIN_EXIT)	
    	 {
		PortDataOut((MainMenuCols+1)*6+3,UPDATE_CODE,VolumeIcon[0],3);
		PortDataOut((MainMenuCols+1)*7+3,UPDATE_CODE,VolumeIcon[1],3);    	
		setScrollBarAttr(1);
		
		adjVolume(0,SHOW);    		
    	 }	
#endif

   	enableOSD();
}

void subSelect(char select)
{
	if(cursor >= LUMINANCE_CONTRAST && cursor <= IMAGEPOSITION_V)
	{
		PortDataOut((MainMenuCols+1)*((cursor & 0x0F)*3+4)+3, UPDATE_ATTR, mainIconAttrData[select],3);
		PortDataOut((MainMenuCols+1)*((cursor & 0x0F)*3+5)+3, UPDATE_ATTR, mainIconAttrData[select],3);
	}
	else if(cursor >=  COLORTEMP_WARM && cursor <= COLORTEMP_USER)
	{
		PortDataOut((MainMenuCols+1)*((cursor-COLORTEMP_WARM)*2+4)+8, UPDATE_ATTR, colortempAttrData[select],sizeof(colortempAttrData[0]) / sizeof(char));
	}
	else if((cursor >= USER_R && cursor <= USER_B) || (cursor >= OSDSETUP_HPOS && cursor <= OSDSETUP_TIME))
	{
		PortDataOut((MainMenuCols+1)*((cursor & 0x0F)-1)+3, UPDATE_ATTR, mainIconAttrData[select],3);
		PortDataOut((MainMenuCols+1)*((cursor & 0x0F))+3, UPDATE_ATTR, mainIconAttrData[select],3);
	}
	else if((cursor >= AUTOCONFIG_YES && cursor <= AUTOCONFIG_NO) || (cursor >= RESET_YES && cursor <= RESET_NO))
	{
		PortDataOut((MainMenuCols+1)*((cursor & 0x0F)*2+5)+10, UPDATE_ATTR, colortempAttrData[select],8);
	}
	else if(cursor >= LANGUAGE_ENGLISH && cursor <= LANGUAGE_SCHINESE)
	{
		if((cursor & 0x01) == 0)
			PortDataOut((MainMenuCols+1)*(cursor-LANGUAGE_ENGLISH+4)+4, UPDATE_ATTR, colortempAttrData[select],10);
		else if((cursor & 0x01) == 1)
			PortDataOut((MainMenuCols+1)*(cursor-LANGUAGE_DEUTSCH+4)+16, UPDATE_ATTR, colortempAttrData[select],10);
	}
#if WITH_AUDIO	
	else if(cursor == MAIN_EXIT)
	{
	        PortDataOut((MainMenuCols+1)*6+3, UPDATE_ATTR, mainIconAttrData[select],3);
	        PortDataOut((MainMenuCols+1)*7+3, UPDATE_ATTR, mainIconAttrData[select],3);
	}        
#endif	
}


/***********************************
*   OSD position adjustment        *
************************************/
void adjSharpness(char delta,bit show)
{
    int val;
	unsigned char temp;

    val = eepData.sharpness + delta;
    
    if (val >= MIN_sharpness && val <= MAX_sharpness)
    {
        eepData.sharpness = val;
        
		temp = RegByteIn(0x59) & 0x0F;
		temp |= (eepData.sharpness<<4 & 0xF0);
		RegByteOut(0x59, temp);			//coefficient R
		temp=eepData.sharpness<<4|eepData.sharpness;
		RegByteOut(0x5A, temp);			//coefficient G

    	if (show)
    	{
			PortDataOut((MainMenuCols+1)*13+9, UPDATE_CODE, BarUpData, 12);
			PortDataOut((MainMenuCols+1)*14+8, UPDATE_CODE, DnData, 1);
			PortDataOut((MainMenuCols+1)*14+22, UPDATE_CODE, UpData, 1);
			PortDataOut((MainMenuCols+1)*15+9, UPDATE_CODE, BarDnData, 12);
			DisplayScrollBar((unsigned int)MAX_sharpness, val);
			PortDataOut((MainMenuCols+1)*14+9, UPDATE_CODE, buff, 12); 
            converInt(val*100/MAX_sharpness);
           	PortDataOut((MainMenuCols+1)*14+24, UPDATE_CODE, buff, 3);

    	}
    	eepDataOut(EEPDATASTART+(&eepData.sharpness-&eepData),(unsigned char *)&eepData.sharpness, 1);        	
    }
}



/***********************************
*   OSD position adjustment        *
************************************/
void adjOSDPosH(char delta,bit show)
{
	ival = eepData.osdPosH + delta*5;
	if (eepData.osdPosH > MAX_osdPosH) 	eepData.osdPosH = MAX_osdPosH;	
	if (eepData.osdPosH < MIN_osdPosH) 	eepData.osdPosH = MIN_osdPosH;	
	
	if (ival >= MIN_osdPosH && ival <= MAX_osdPosH)
	{
		eepData.osdPosH = ival;

		ival = (ival-MIN_osdPosH) * (MAX_OSD_HPOS-MIN_OSD_HPOS);
		ival /= (MAX_osdPosH-MIN_osdPosH);
		ival += MIN_OSD_HPOS;
		OSDRegByteOut(OSDNEWFRAME_H_START, ival);

		/* Trigger the double buffer */
		buff[0] = OSDRegByteIn(OSDNEWFRAME_V_HEIGHT);
		OSDRegByteOut(OSDNEWFRAME_V_HEIGHT, buff[0]);
	              
		if (show)
		{
			PortDataOut((MainMenuCols+1)*3+8, UPDATE_CODE, hposData[eepData.language], sizeof(hposData[0]) / sizeof(char));
			DisplayScrollBar((unsigned int)MAX_osdPosH, (unsigned int)eepData.osdPosH);
			PortDataOut((MainMenuCols+1)*4+7, UPDATE_CODE, buff, 16); 
			if(AdjustFlag)
//				PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
				SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0x36, 16);
			else
//				PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
				SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0xD6, 16);

			converInt((int) eepData.osdPosH);
	           	PortDataOut((MainMenuCols+1)*4+23, UPDATE_CODE, buff, 3);
		}
		eepDataOut(EEPDATASTART+(&eepData.osdPosH-&eepData),(unsigned char *)&eepData.osdPosH, 1);        	
	}
}


/***********************************
*   OSD position adjustment        *
************************************/
void adjOSDPosV(char delta,bit show)
{
	long lval;
	
	ival1 = eepData.osdPosV + delta*5;
	if (eepData.osdPosV > MAX_osdPosV) 	eepData.osdPosV = MAX_osdPosV;	
	if (eepData.osdPosV < MIN_osdPosV) 	eepData.osdPosV = MIN_osdPosV;		
	
	if (ival1 >= MIN_osdPosV && ival1 <= MAX_osdPosV)
	{
		eepData.osdPosV = ival1;
        
        	/* adjust OSD position */
	    	ival = MAX_osdPosV  - ival1; // invert value
	    	lval = (long)ival * (MAX_OSD_VPOS - MIN_OSD_VPOS);
	    	ival = lval /(MAX_osdPosV - MIN_osdPosV);
	    	ival += MIN_OSD_VPOS;
		OSDRegByteOut(OSDNEWFRAME_V_START_LOW, (unsigned char) ival);
		OSDRegByteOut(OSDNEWFRAME_V_START_HIGH, (unsigned char) ((ival >> 8) & 0x07));
		/* Trigger the double buffer */
		buff[0] = OSDRegByteIn(OSDNEWFRAME_V_HEIGHT);
		OSDRegByteOut(OSDNEWFRAME_V_HEIGHT, buff[0]);
		if (show)
		{
			PortDataOut((MainMenuCols+1)*5+8, UPDATE_CODE, vposData[eepData.language], sizeof(vposData[0]) / sizeof(char));
			DisplayScrollBar((unsigned int)MAX_osdPosV, (unsigned int)eepData.osdPosV);
			PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
			if(AdjustFlag)
//				PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
				SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
			else
//				PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
				SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0xD6, 16);
			converInt((int) eepData.osdPosV);
           		PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);    
		}
		eepDataOut(EEPDATASTART+(&eepData.osdPosV-&eepData),(unsigned char *)&eepData.osdPosV, 1);        	
	}
}






/***********************************
*   Custom color adjustment        *
************************************/
#if RB_SWAP
void adjUser_B(char delta,bit show)
#else
void adjUser_R(char delta,bit show)
#endif
{

	if((eepData.userR+delta >= MIN_userRGB) && (eepData.userR+delta <= MAX_userRGB))
	{
		eepData.userR += delta;
#if USE_GAMMA
		setGamma(SELECTR,eepData.userR);
#else
		setDigitalContrast(SELECTR,eepData.userR);
#endif        
		if (show)
		{

#if RB_SWAP
		 	PortDataOut((MainMenuCols+1)*3+10, UPDATE_CODE, Bluedata[eepData.language], sizeof(Bluedata[0]) / sizeof(char));  			
#else
			PortDataOut((MainMenuCols+1)*3+10, UPDATE_CODE, Reddata[eepData.language], sizeof(Reddata[0]) / sizeof(char));  			
#endif
        		DisplayScrollBar((unsigned int) MAX_userRGB, (unsigned int)eepData.userR);
        		PortDataOut((MainMenuCols+1)*4+7, UPDATE_CODE, buff, 16);
			if(AdjustFlag)
//				PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
				SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0x36, 16);
			else
//				PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
				SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0xD6, 16);

        		converInt((int) eepData.userR);
        		PortDataOut((MainMenuCols+1)*4+23, UPDATE_CODE, buff, 3);
	        }
		eepDataOut(EEPDATASTART+(&eepData.userR-&eepData),(unsigned char *)&eepData.userR, 3); 
	}

}


/***********************************
*   Custom color adjustment        *
************************************/
void adjUser_G(char delta,bit show)
{

	if((eepData.userG+delta >= MIN_userRGB) && (eepData.userG+delta <= MAX_userRGB))
	{
        	eepData.userG += delta;
#if USE_GAMMA
		setGamma(SELECTG,eepData.userG);
#else
		setDigitalContrast(SELECTG,eepData.userG);
#endif        
		if (show)
		{
			/* data */
			PortDataOut((MainMenuCols+1)*5+10, UPDATE_CODE, Greendata[eepData.language], sizeof(Greendata[0]) / sizeof(char));  			
        		DisplayScrollBar((unsigned int) MAX_userRGB, (unsigned int)eepData.userG);
        		PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
			if(AdjustFlag)
//				PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
				SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
			else
//				PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
				SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0xD6, 16);

        		converInt((int) eepData.userG);
        		PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
        	}
		eepDataOut(EEPDATASTART+(&eepData.userR-&eepData),(unsigned char *)&eepData.userR, 3); 
	}

}


/***********************************
*   Custom color adjustment        *
************************************/
#if RB_SWAP
void adjUser_R(char delta,bit show)
#else
void adjUser_B(char delta,bit show)
#endif
{

	if((eepData.userB+delta >= MIN_userRGB) && (eepData.userB+delta <= MAX_userRGB))
	{
		eepData.userB += delta;
#if USE_GAMMA
		setGamma(SELECTB,eepData.userB);
#else
		setDigitalContrast(SELECTB,eepData.userB);
#endif        

		if (show)
		{

#if RB_SWAP
		 	PortDataOut((MainMenuCols+1)*7+10, UPDATE_CODE, Reddata[eepData.language], sizeof(Reddata[0]) / sizeof(char));  			
#else
			PortDataOut((MainMenuCols+1)*7+10, UPDATE_CODE, Bluedata[eepData.language], sizeof(Bluedata[0]) / sizeof(char));  			
#endif
	        	DisplayScrollBar((unsigned int) MAX_userRGB, (unsigned int)eepData.userB);
        		PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
			if(AdjustFlag)
//				PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
				SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
			else
//				PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
				SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);

        		converInt((int) eepData.userB);
        		PortDataOut((MainMenuCols+1)*8+23, UPDATE_CODE, buff, 3);
	        }
		eepDataOut(EEPDATASTART+(&eepData.userR-&eepData),(unsigned char *)&eepData.userR, 3);        	
	}

}










/****************************************
* Adjust values for OSD patterns        *
*****************************************/
void adjustCtrl(char val)
{

   	switch(cursor)
   	{
	       	case LUMINANCE_BRIGHTNESS:
	       	case HOT_BRIGHTNESS:
	       		adjBrightness(val,SHOW);
	       		return;

	       	case LUMINANCE_CONTRAST:
	       	case HOT_CONTRAST:
	       		adjContrast(val,SHOW);
	       		return;

	       	case IMAGESETUP_FOUCS:
	       		adjPhase(val,SHOW);
	       		return;
	       		
	       	case IMAGESETUP_CLOCK:
	       		adjPitch(val,SHOW);
	       		return;
	       		
	       	case IMAGEPOSITION_H:
	       		adjHPos(val,SHOW);
	       		return;
	       		
	       	case IMAGEPOSITION_V:
	       		adjVPos(val,SHOW);
	       		return;

	       	case OSDSETUP_HPOS:
	       		adjOSDPosH(val,SHOW);
	       		return;
	       		
	       	case OSDSETUP_VPOS:
	       		adjOSDPosV(val,SHOW);
	       		return;
	       		
	       	case OSDSETUP_TIME:
	       		adjOSDTime(val,SHOW);
	       		return;

	       	case USER_R:
	       		adjUser_R(val,SHOW);
	       		return;

⌨️ 快捷键说明

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