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

📄 lcd_osd.c

📁 液晶显示器程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
			ucOSD_Item_Index1   = 0;

			//Enable window 6 and draw it
			//OSD_Window( 6, 150, 282, 54, 84, 1, 1, 14, 251, 0, 1, 25);
// win_no, row_start, row_end,col_start,col_end, width, height, color, color_sb, gradient, gray_level, attr
            OSD_Window( 6, 150, 282, 54, 84, 1, 1, 14, 251, 0, 1, 25);
		}
	}
	else
	{
		if (ucOSD_Item_Index1)
		{
			// Leave the item and reset text color
			switch (ucOSD_Item_Index0)
			{
				case PAGE1_ITEM_AUTOBAL :
                    if (ucOSD_Item_Index1 == 1 ) //1 : Yes  ,   2 : No
                    {
						if (ERROR_INPUT == Auto_Balance())
						{
							ucMode_Curr = MODE_OSDFORCE;
							return ;
						}
                    }
					OSD_Line( 13, 36 + (ucOSD_Item_Index1-1)*(6+1), 4, 0x40, 2);
					break;

				case PAGE1_ITEM_CONTRAST :
					// Redraw slider and make the number become black.
					OSD_Slider(5, 31, 17, stGUD0.CONTRAST, 100, 4, 14);
					break;

				case PAGE1_ITEM_BRIGHT :
					// Redraw slider and make the number become black.
					OSD_Slider(7, 31, 17, stGUD0.BRIGHT, 100, 4, 14);
					break;

				case PAGE1_ITEM_COLORTEMP :
					//Set words color to black
					OSD_Line( 11, 36 + (ucOSD_Item_Index1-1)*(4+1), 4, 0x40, 2);
					break;

				case PAGE1_ITEM_GAMMA :
					//Set words color to black
					OSD_Line( 9, 36 + (ucOSD_Item_Index1-1)*(2+1), 1, 0x40, 2);
					break;
			}

			ucOSD_Item_Index1   = 0;

		}
		else
		{
			if (PAGE1_ITEM_EXIT == ucOSD_Item_Index0)
			{
				// Disable highlight window 6
				OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
					, 0, 0, 14, 251, 0, 1, 0);
				// De-select the page item and disable the hightlight window
				ucOSD_Item_Index0   = 0;
				ucOSD_Item_Index1   = 0;
			}
			else if (MODE_NOSIGNAL != ucMode_Curr && MODE_NOSUPPORT != ucMode_Curr)
			{
				switch (ucOSD_Item_Index0)
				{
					case PAGE1_ITEM_AUTOBAL :
                        ucOSD_Item_Index1  = 2;
						OSD_Line( 13, 36 + (ucOSD_Item_Index1-1)*(6+1), 4, 0x20, 2);
						break;

					case PAGE1_ITEM_CONTRAST :
						ucOSD_Item_Index1   = 1;

						// Redraw slider and make the number become Red.
						OSD_Slider(5, 31, 17, stGUD0.CONTRAST, 100, 2, 14);
						break;

					case PAGE1_ITEM_BRIGHT :
						ucOSD_Item_Index1   = 1;

						// Redraw slider and make the number become Red.
						OSD_Slider(7, 31, 17, stGUD0.BRIGHT, 100, 2, 14);
						break;

					case PAGE1_ITEM_COLORTEMP :
						ucOSD_Item_Index1 = ((stGUD1.INPUT_SOURCE & 0x18) >> 3) + 1;

						//Here we can only change the color in Byte 2 for necessary words
						OSD_Line( 11, 36 + (ucOSD_Item_Index1-1)*(4+1), 4, 0x20, 2);
						break;

					case PAGE1_ITEM_GAMMA :
						ucOSD_Item_Index1   = ((stGUD1.FUNCTION >> 5) & 0x03) + 1;

						//Here we can only change the color in Byte 2 for necessary words
						OSD_Line( 9, 36 + (ucOSD_Item_Index1-1)*(2+1), 1, 0x20, 2);
						break;

					case PAGE1_ITEM_RGBADJ :
						OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
							, 0, 0, 14, 251, 0, 1, 0);
						ucOSD_Item_Index1   = PAGE1B_ITEM_RED;
						ucOSD_Item_Index2   = 0;
						OSD_Proc_B(NOTIFY_SHOW);       // Show the sub-page
						break;
				}
			}
		}
	}
}

void Page1_Left_Right_Key(unsigned char Key)
{
	if (ucOSD_Item_Index1)
	{
		switch (ucOSD_Item_Index0)
		{
    		case PAGE1_ITEM_AUTOBAL :
//           		ucOSD_Item_Index1   = (NOTIFY_LEFT_KEY == Key) ? 1 : 2;
           		ucOSD_Item_Index1   = (NOTIFY_RIGHT_KEY == Key) ? 1 : 2;
				OSD_Line( 13, 36, 14, 0x40, 2);	//Set color to black
				OSD_Line( 13, 36 + (ucOSD_Item_Index1-1)*(6+1), 4, 0x20, 2);
				break;

			case PAGE1_ITEM_CONTRAST :
				Bright_Contrast_Adjust(&stGUD0.CONTRAST,Key);

				OSD_Slider(5, 31, 17, stGUD0.CONTRAST, 100, 2, 14);

#if(ANALOG_CONTRAST)
				if((stGUD1.INPUT_SOURCE & 0x07) == SOURCE_VGA)
					SetADC_Gain();
				else
					Set_Bright_Contrast();
#else
				Set_Bright_Contrast();
#endif

				Save_GUD0();
				break;

			case PAGE1_ITEM_BRIGHT :
				Bright_Contrast_Adjust(&stGUD0.BRIGHT,Key);
		
				OSD_Slider(7, 31, 17, stGUD0.BRIGHT, 100, 2, 14);
				Set_Bright_Contrast();
				Save_GUD0();
				break;

			case PAGE1_ITEM_COLORTEMP:
//				if(NOTIFY_RIGHT_KEY == Key)
				if(NOTIFY_LEFT_KEY == Key)
					ucOSD_Item_Index1 = (ucOSD_Item_Index1 == 4) ? 4 : ucOSD_Item_Index1 + 1;
				else
					ucOSD_Item_Index1 = (ucOSD_Item_Index1 == 1) ? 1 : ucOSD_Item_Index1 - 1;

				stGUD1.INPUT_SOURCE = (stGUD1.INPUT_SOURCE & 0xe7 ) | ((ucOSD_Item_Index1 - 1) << 3);

				//Here we can only change the color in Byte 2 for necessary words
				OSD_Line( 11, 36, 20, 0x40, 2);	//Set color to black
				OSD_Line( 11, 36 + (ucOSD_Item_Index1-1)*(4+1), 4, 0x20, 2);

				Set_Bright_Contrast();
				Save_GUD1();
				break;
				
			case PAGE1_ITEM_GAMMA :
//				if (NOTIFY_RIGHT_KEY == Key)
				if (NOTIFY_LEFT_KEY == Key)
				{
					if (4 <= ucOSD_Item_Index1)
						break;

					ucOSD_Item_Index1   = ucOSD_Item_Index1 + 1;
				}
				else
				{
					if (1 >= ucOSD_Item_Index1)
						break;

					ucOSD_Item_Index1   = ucOSD_Item_Index1 - 1;
				}

				stGUD1.FUNCTION = (stGUD1.FUNCTION & 0x9f) | ((ucOSD_Item_Index1 - 1) << 5);
				//Here we can only change the color in Byte 2 for necessary words
				OSD_Line( 9, 36, 14, 0x40, 2);	//Set color to black
				OSD_Line( 9, 36 + (ucOSD_Item_Index1-1)*(2+1), 1, 0x20, 2);

				Set_Gamma();
				Save_GUD1();
				break;
            
		}
	}
	else
	{
		Osd_Change_Item(Key,PAGE1_ITEM_NUM);
		
	}
}

void Page1_Show(void)
{
	Show_Osd_Page(0,Page1_Atb,0);

	//Set Window 5 to select "Colour"
	OSD_Window( 5, 10, 136, 54, 84, 1, 1, 14, 251, 0, 1, 25);

	if (MODE_NOSIGNAL == ucMode_Curr || MODE_NOSUPPORT == ucMode_Curr)
	{
		//ucOSD_Item_Index0   = 0;
		//ucOSD_Item_Index1   = 0;
	}

	OSD_Slider(5, 31, 17, stGUD0.CONTRAST, 100, 4, 14);
	OSD_Slider(7, 31, 17, stGUD0.BRIGHT, 100, 4, 14);
	
	switch (ucOSD_Item_Index0)
	{
		case PAGE1_ITEM_CONTRAST :
			break;
			
		case PAGE1_ITEM_BRIGHT :
			break;
			
		case PAGE1_ITEM_GAMMA :
			break;
			
		case PAGE1_ITEM_RGBADJ :
			OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
				, 1, 1, 14, 251, 0, 1, 25);
			break;
	}
}

void Page1B_Enter_Key(void)
{
	ucOSD_Page_Index = 7;
	if (PAGE1B_ITEM_EXIT == ucOSD_Item_Index1)
	{
		// De-select the page item and disable the hightlight window
		OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
			, 0, 0, 14, 251, 0, 1, 0);
		ucOSD_Item_Index1   = 0;
		ucOSD_Item_Index2   = 0;
	}
	else
	{
		if (ucOSD_Item_Index2)
		{
			ucOSD_Item_Index2   = 0;	// Leave the item
			switch (ucOSD_Item_Index1)
			{
				case PAGE1B_ITEM_RED :
					OSD_Slider(5, 31, 17, stGUD0.RTD_R_CONTRAST, 100, 4, 2);
					break;
				
				case PAGE1B_ITEM_GREEN :
					OSD_Slider(7, 31, 17, stGUD0.RTD_G_CONTRAST, 100, 4, 12);
					break;
				
				case PAGE1B_ITEM_BLUE :
					OSD_Slider(9, 31, 17, stGUD0.RTD_B_CONTRAST, 100, 4, 3);
					break;
			}
		}
		else if (MODE_NOSIGNAL != ucMode_Curr && MODE_NOSUPPORT != ucMode_Curr)
		{
			ucOSD_Item_Index2   = 1;	// Enter the item

			//Draw the selected slider
			switch (ucOSD_Item_Index1)
			{
				case PAGE1B_ITEM_RED :
					OSD_Slider(5, 31, 17, stGUD0.RTD_R_CONTRAST, 100, 2, 2);
					break;
				
				case PAGE1B_ITEM_GREEN :
					OSD_Slider(7, 31, 17, stGUD0.RTD_G_CONTRAST, 100, 12, 12);
					break;
				
				case PAGE1B_ITEM_BLUE :
					OSD_Slider(9, 31, 17, stGUD0.RTD_B_CONTRAST, 100, 3, 3);
					break;
			}
		}
	}
	ucOSD_Page_Index = 1;
}

void Page1B_Left_Right_Key(unsigned char Key)
{
	ucOSD_Page_Index = 7;
	if (ucOSD_Item_Index2)
	{
		switch (ucOSD_Item_Index1)
		{
			case PAGE1B_ITEM_RED :
				Bright_Contrast_Adjust(&stGUD0.RTD_R_CONTRAST,Key);
		
				OSD_Slider(5, 31, 17, stGUD0.RTD_R_CONTRAST, 100, 2, 2);
				break;
				
			case PAGE1B_ITEM_GREEN :
				Bright_Contrast_Adjust(&stGUD0.RTD_G_CONTRAST,Key);
			
				OSD_Slider(7, 31, 17, stGUD0.RTD_G_CONTRAST, 100, 12, 12);
				break;
				
			case PAGE1B_ITEM_BLUE :
				Bright_Contrast_Adjust(&stGUD0.RTD_B_CONTRAST,Key);
			
				OSD_Slider(9, 31, 17, stGUD0.RTD_B_CONTRAST, 100, 3, 3);
				break;
		}

		Set_Bright_Contrast();
		Save_GUD0();
		
	}
	else
	{
		// Select and highlight the next/previous item
		if (NOTIFY_RIGHT_KEY == Key)
			ucOSD_Item_Index1   = (PAGE1B_ITEM_NUM == ucOSD_Item_Index1) ? 1 : (ucOSD_Item_Index1 + 1);
		else
			ucOSD_Item_Index1   = (1 == ucOSD_Item_Index1) ? PAGE1B_ITEM_NUM : (ucOSD_Item_Index1 - 1);
            
		OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index1-1)*(29+4)), (84 + (ucOSD_Item_Index1-1)*(29+4))
			, 1, 1, 14, 251, 0, 1, 25);
	}
	ucOSD_Page_Index = 1;
}

void Page1B_Show(void)
{
	Show_Osd_Page(0,Page7_Atb,6);

	// Set window 6 to Highlight the select item
	OSD_Window( 6, 150, 282, 54, 84, 1, 1, 14, 251, 0, 1, 25);
	
	if (MODE_NOSIGNAL == ucMode_Curr || MODE_NOSUPPORT == ucMode_Curr)      
		ucOSD_Item_Index2   = 0;

	if (0 == ucOSD_Item_Index2)
	{
		ucOSD_Page_Index = 7;
		OSD_Slider(5, 31, 17, stGUD0.RTD_R_CONTRAST, 100, 4, 2);
		OSD_Slider(7, 31, 17, stGUD0.RTD_G_CONTRAST, 100, 4, 12);
		OSD_Slider(9, 31, 17, stGUD0.RTD_B_CONTRAST, 100, 4, 3);
		ucOSD_Page_Index = 1;
	}
	else
	{
		//Set the active slider (Red, Greed, Blue)
		/*
		OSD_Slider(11, 2, 20,
			(PAGE1B_ITEM_RED == ucOSD_Item_Index1) ? stGUD0.RTD_R_CONTRAST 
			: (PAGE1B_ITEM_GREEN == ucOSD_Item_Index1) ? stGUD0.RTD_G_CONTRAST
			: stGUD0.RTD_B_CONTRAST, 100, 0x61);

		*/
	}
}

void Page2_Enter_Key()
{
	if (0 == ucOSD_Item_Index0)
	{
		if (MODE_NOSIGNAL != ucMode_Curr && MODE_NOSUPPORT != ucMode_Curr)
		{
			// Select and highlight the first item
			ucOSD_Item_Index0   = PAGE2_ITEM_POSH;
			ucOSD_Item_Index1   = 0;

			//Enable Window 6 and Draw it
			OSD_Window( 6, 150, 282, 54, 84, 1, 1, 14, 251, 0, 1, 25);
		}
	}
	else
	{
		if (ucOSD_Item_Index1)
		{
			switch (ucOSD_Item_Index0)
			{
				case PAGE2_ITEM_POSH :
					OSD_Slider(5, 31, 17, ucH_Max_Margin - stMUD.H_POSITION, ucH_Max_Margin - ucH_Min_Margin, 4, 14);
					break;

				case PAGE2_ITEM_POSV :
					OSD_Slider(7, 31, 17, (unsigned int)(stMUD.V_POSITION - ucV_Min_Margin) * 50 / (128 - ucV_Min_Margin), 100, 4, 14);
					break;
					
				case PAGE2_ITEM_PHASE :
#if(MORE_PHASE)
					OSD_Slider(11, 31, 17, stMUD.PHASE, 127, 4, 14);
#else
					OSD_Slider(11, 31, 17, (stMUD.PHASE & 0x7c) >> 2, 31, 4, 14);
#endif
					break;
					
				case PAGE2_ITEM_CLOCK :

#if(ALIGN_LEFT == CLOCK_ALIGN)
                    OSD_Slider(13, 31, 17, stMUD.CLOCK - 78, 100, 4, 14);
#else
					OSD_Slider(13, 31, 17, stMUD.CLOCK - 28, 200, 4, 14);
#endif
					break;

				case PAGE2_ITEM_SHARP :
					OSD_Line( 9, 36 + (ucOSD_Item_Index1-1)*(2+1), 1, 0x40, 2);
					break;
												
			}

			ucOSD_Item_Index1   = 0;    // Leave the item
			
		}
		else
		{
			if (PAGE2_ITEM_EXIT == ucOSD_Item_Index0)
			{
				// Disable Window 6 and Draw it
				OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
					, 0, 0, 14, 251, 0, 1, 0);
				// De-select the page item and disable the hightlight window
				ucOSD_Item_Index0   = 0;
				ucOSD_Item_Index1   = 0;
			}
			else if (MODE_NOSIGNAL != ucMode_Curr && MODE_NOSUPPORT != ucMode_Curr)
			{
				if (SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07) || PAGE2_ITEM_SHARP == ucOSD_Item_Index0)
				{
					switch (ucOSD_Item_Index0)
					{
						case PAGE2_ITEM_POSH :
							ucOSD_Item_Index1   = 1;    // Enter the item
							OSD_Slider(5, 31, 17, ucH_Max_Margin - stMUD.H_POSITION, ucH_Max_Margin - ucH_Min_Margin, 2, 14);
							break;
							
						case PAGE2_ITEM_POSV :
							ucOSD_Item_Index1   = 1;    // Enter the item
							OSD_Slider(7, 31, 17, (unsigned int)(stMUD.V_POSITION - ucV_Min_Margin) * 50 / (128 - ucV_Min_Margin), 100, 2, 14);
							break;
							
						case PAGE2_ITEM_PHASE :
							ucOSD_Item_Index1   = 1;    // Enter the item
#if(MORE_PHASE)
							OSD_Slider(11, 31, 17, stMUD.PHASE, 127, 2, 14);
#else
							OSD_Slider(11, 31, 17, (stMUD.PHASE & 0x7c) >> 2, 31, 2, 14);
#endif
							break;
							
						case PAGE2_ITEM_CLOCK :
							ucOSD_Item_Index1   = 1;    // Enter the item
#if(ALIGN_LEFT == CLOCK_ALIGN)
                            OSD_Slider(13, 31, 17, stMUD.CLOCK - 78, 100, 2, 14);
#else
							OSD_Slider(13, 31, 17, stMUD.CLOCK - 28, 200, 2, 14);
#endif
							break;

						case PAGE2_ITEM_SHARP :
							ucOSD_Item_Index1   = stGUD1.FILTER + 1;
							OSD_Line( 9, 36 + (ucOSD_Item_Index1-1)*(2+1), 1, 0x20, 2);
							break;
												
					}
				}
			}
		}
	}
}

void Page2_Left_Right_Key(unsigned char Key)
{
	if (ucOSD_Item_Index1)
	{
		switch (ucOSD_Item_Index0)

⌨️ 快捷键说明

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