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

📄 menu.c

📁 完整的软件学习--显示器驱动视频软件
💻 C
📖 第 1 页 / 共 5 页
字号:
			      }	
						
             		MenuPageIndex=(menuAction==MIA_GotoNext)?(NextMenuPage):(PrevMenuPage);
				
					
		 if(FactoryModeFlag && MenuPageIndex==MainMenu)
			 	MenuPageIndex=FactoryMenu;
		 
      
    			 if((MenuPageIndex>RootMenu)&&(MenuPageIndex<=ExitMenu)\
	    			 &&( PrevMenuPage>=RootMenu)&&(PrevMenuPage<=ExitMenu))
			  {
   		    	 if(menuAction==MIA_GotoNext) 
  	     		  	UpDownLeftButton(MIA_GotoNext);
     			  else  
			    	UpDownLeftButton(MIA_GotoPrev);
				                        
   			   }
	
			StauIndex0=0;//flag enter item

		if (SaveSettingFlag)
			SaveUserPrefSetting(tempValue);
		
    /*    if(MenuPageIndex==ColorConfigMenu)
			MenuItemIndex=UserPrefColorTemp;
        if(MenuPageIndex==LanguageMenu)
			MenuItemIndex=UserPrefLanguage;*/
        case MIA_RedrawMenu:
        
		if((MenuPageIndex==OsdTimeMenu)||(MenuPageIndex==OsdTimeSubMenu))
		{
			Osd_SetTextColor(CP_SoftLowGreenColor,	CP_SoftLowGreenColor);
                     Osd_DrawStr(25, 10, RightSpace14);
		}
		else if(MenuPageIndex==OsdSetMenu&&ReloadFontFlag)
		  {
		          Osd_SetTextColor(CP_SoftLowGreenColor, CP_SoftLowGreenColor);
		      for (i=4; i<OsdWindowHeight-1; i+=2) 
		  	  Osd_DrawStr(5, i,  "\x2f\x2f\x2f\x2f\x2f\x2f");	
			 mStar_WriteOSDByte(IOSDC1,mStar_ReadOSDByte(IOSDC1)&~MWIN_B);		
		 }
		else	   if((MenuPageIndex>RootMenu)&&(MenuPageIndex<=ExitMenu))
			   ClearWindow1();
         	
                     DrawOsdMenu();

 		if(ReloadFontFlag)
		{	Clr_ReloadFontFlag();
			processEvent=TRUE;
			menuAction=MIA_SUBNextItem;
			break;
		}
		
           	 if (CurrentMenu.ExecFunction)
             		{ processEvent=CurrentMenu.ExecFunction();
	                 processEvent=FALSE;
              	}

           	 if (!(CurrentMenu.Flags&mpbStay))
	              { processEvent=TRUE;
           	  	  menuAction=MIA_GotoPrev;  // 消失OSD
              	}
           	 if (SaveSettingFlag)  		  
			 	SaveUserPrefSetting(tempValue);
           	 break;
			
          case MIA_ExecFunc:
                   
			  if (CurrentMenuItemFunc.ExecFunction)
             	 { 
                processEvent=CurrentMenuItemFunc.ExecFunction();
                                  
            if(FactoryModeFlag)
		  { //tony added
                  if (CurrentMenuItemFunc.ExecFunction==AutoColor)
                    {
                    		if(MenuPageIndex == FactoryMenu)
				{
                    			if (processEvent)
					{
						Osd_SetTextColor(CP_BlueColor, CP_GrayColor);
                      			Osd_DrawStr(11, 3, PassText()); //auto color
                    			}
				   else
				     {
					Osd_SetTextColor(CP_RedColor, CP_GrayColor);											
                      		Osd_DrawStr(11, 3, FailText());
				     }
				
                    		Osd_SetTextColor(CP_BlueColor, CP_GrayColor);
                    		DrawOsdMenuItemNumber(0, DrawGainRNumber);
                    		DrawOsdMenuItemNumber(0, DrawGainGNumber);
                   		 DrawOsdMenuItemNumber(0, DrawGainBNumber);
                    		DrawOsdMenuItemNumber(0, DrawOffsetRNumber);
                    		DrawOsdMenuItemNumber(0, DrawOffsetGNumber);
                    		DrawOsdMenuItemNumber(0, DrawOffsetBNumber);
                  		}
                 	}
			if (CurrentMenuItemFunc.ExecFunction==AutoConfig)
                    { Osd_SetTextColor(CP_GrayColor, CP_GrayColor);
								
				if(MenuPageIndex == FactoryMenu)
				{
					if (processEvent)
					{
						Osd_SetTextColor(CP_YellowColor, CP_GrayColor);
						Osd_DrawStr(12, 3, PassText()); //auto config
					}
					else
					{
						Osd_SetTextColor(CP_RedColor, CP_GrayColor);											
						Osd_DrawStr(12, 3, FailText());
					}
				}//end factorymenu
                	  }

			}
				processEvent=FALSE;
             	 }
           	
         
              break;

	//===========================================				
	    case MIA_Exit:
           		 if (SaveSettingFlag)
             		 { Clr_SaveSettingFlag();
              		  SaveUserPref();
              	}
          		  menuAction=MIA_RedrawMenu;
           		 MenuPageIndex=RootMenu;
           		 MenuItemIndex=0;
          		  processEvent=TRUE;
          		  break;
			
          case MIA_Auto:

		
          				  if (FreeRunModeFlag)
             					 break;	
			if(SrcInputType==Input_Analog1)
				{	
						menuAction=MIA_RedrawMenu;
						MenuPageIndex=AutoMenu;
						MenuItemIndex=1;//0
						processEvent=TRUE;
						//Delay1ms(50);
				}
           			 break;
          case MIA_Brite:
          case MIA_Cont:
          		  if (FreeRunModeFlag)
            		  break;
           		 MenuPageIndex=(menuAction==MIA_Brite)?(BriteMenu):(ContMenu);
           		 menuAction=MIA_RedrawMenu;
           		 MenuItemIndex=1;//0
           		 processEvent=TRUE;
          		  break;
			
	   case MIA_Volumehotkey:
          		  if (FreeRunModeFlag)
           		   break;
          		  MenuPageIndex=VolMenu;
          		  menuAction=MIA_RedrawMenu;
           		 MenuItemIndex=1;//0
           		 processEvent=TRUE;
            break;

#if Dual_Input_Icon_Enable
	  case  MIA_InputSourceChangeKey:
		if (PowerOnFlag)
			{
			if (PowerSavingFlag)
				{
				Clr_PowerSavingFlag();
				mStar_PowerUp();
				Power_TurnOnPanel();
				Power_TurnOnGreenLed();
				Power_TurnOffAmberLed();
				}

			mStar_SetupFreeRunMode();
			SrcInputType = (SrcInputType+1)%Input_Nums;
			mStar_SetupInputPort();
			if (SrcInputType==Input_Digital)
				mStar_AutoDVI(); //do auto tracking DVI

			Set_InputTimingChangeFlag();
			SrcFlags|=SyncLoss;
			Set_DrawSourceTypeFlag();
			SwitchDelay = 1;			
   			}

 			processEvent = FALSE; // important
	       break;
#endif

          case MIA_Power:					
           		  if (MenuPageIndex==PowerOffMenu)
           		   menuAction=MIA_GotoNext;
           		 else
            		  { menuAction=MIA_RedrawMenu;
             		   MenuPageIndex=PowerOffMenu;
            		  }
          		  MenuItemIndex=0;
            		processEvent=TRUE;
           		 break;		
//====  ===========================================
  
        case MIA_DDCSwitch:
				DDCSwitchEnable=TRUE;
                            PowerOnSystem();
                		printMsg("  draw  DDC  menu !");
          							
                    processEvent=FALSE;
	            break;
   


      default:
          	  return FALSE;
      	    break;
        }
    }
  
if (TurboKeyCounter<7)
	Delay1ms(250);
else
	Delay1ms(10);

  return TRUE;
}

//======================================================
//=====================================================
void UserPrefOsdDrawIni(void)
{	BYTE ItemIndex;
		 if (MenuPageIndex==MainMenu||(MenuPageIndex==OsdSetMenu&&ReloadFontFlag)) 
 		 	{
 		 	if(MenuPageIndex==MainMenu)
				ItemIndex=0;
			else if(MenuPageIndex==OsdSetMenu)		
				ItemIndex=3;
			//Clr_ReloadFontFlag();
			 DynamicLoadFont(MainMenuFontAddr, MenuPage1);
			
			 DrawMainWindow(ItemIndex);	
			 DrawTimingInfo();  								
 		 	}
		 else
		 {     		 
			 mStar_WriteOSDByte(IOSDC3, 0x00);//0x13);
			 mStar_WriteOSDByte(SUBW3C, 0x00);
			 mStar_WriteOSDByte(SUBW2C, 0x00);
			 mStar_WriteOSDByte(SUBW1C, 0x00);
#if Dual_Input_Icon_Enable
			 if (MenuPageIndex==SourceTypeMenu)
			 	DrawSourceTypeWindow();
			 else if(MenuPageIndex==AutoMenu)
				DrawAutoConfigWindow();		
			 else if(MenuPageIndex==StandbyMenu || MenuPageIndex==CableNotConnectedMenu)
				DrawNoCableWindow();
#else
			 if(MenuPageIndex==AutoMenu)
				DrawAutoConfigWindow();		
			 else if(MenuPageIndex==StandbyMenu || MenuPageIndex==CableNotConnectedMenu)
				DrawNoCableWindow();
#endif
		 }

}
//=========================================================================
void DrawOsdMenu(void)
{ Bool redrawFlags;
  printData("draw menu %d", MenuPageIndex);
  
  if (CurrentMenu.Flags&mpbInvisible)
     Osd_Hide();
  
  else
    { //BYTE i;
      // setup osd window & position
      redrawFlags=FALSE;
      if (CurrentMenu.XSize!=OsdWindowWidth || CurrentMenu.YSize!=OsdWindowHeight ||
      	  !(mStar_ReadOSDByte(IOSDC1)&MWIN_B)    )
      	redrawFlags=TRUE;
	  
      if (redrawFlags)
        { //if (MenuPageIndex==FactoryMenu)
          Osd_Hide();
          Osd_SetWindowSize(CurrentMenu.XSize, CurrentMenu.YSize);

	    if (FactoryModeFlag)
               Osd_SetPosition(10, 10);
#if Dual_Input_Icon_Enable
		else if (MenuPageIndex==SourceTypeMenu)
			Osd_SetPosition(5, 5);
#endif
          else if(CurrentMenu.Flags&(mpbMoving | mpbCenter))
            {
               moveX = 50;moveY = 50;
              Osd_SetPosition(moveX,moveY);
            }
	   else//vick change
            { Osd_SetPosition(UserPrefOsdHStart, UserPrefOsdVStart);
            }
	   

          if (CurrentMenu.Flags&mpbDrawFrame)
            	{    // draw osd frame style
                    mStar_WriteByte(OSDIOA, 0xDE); // clear osd content//vick 
                   //mStar_WriteOSDByte(IOSDC3, 0x00);
              	Osd_SetTextColor(CP_BlackColor, CP_GrayColor);
              }
          else
              {
                  mStar_WriteByte(OSDIOA, 0xDE); // clear osd content//vick 
                  //mStar_WriteOSDByte(IOSDC3, 0x0f);
 
              }

		DynamicLoadColorFont();
		UserPrefOsdDrawIni();//zwtan20050308	

 		// draw osd menu item
		if (CurrentMenu.Fonts)
		{	DynamicLoadFont(CurrentMenu.FontAddr, CurrentMenu.Fonts);
		}
	       for (i=1; i<MenuItemCount; i++)  //first for main page up or down
		{DrawOsdMenuItem(i, &CurrentMenu.MenuItems[i]);
		}
                 mStar_WriteOSDByte(SUBW0C, 0x00);
               
		if (FactoryModeFlag )   	{	
    		 	                Osd_SetTextColor(CP_RedColor, CP_GrayColor);  
                              if (MenuPageIndex==FactoryMenu)
					  Osd_DrawChar(0, 0, 'F');//"F"
                              else Osd_DrawPropStr(0, 0, FacFText());
		
			    }


  if (MenuPageIndex==DDCTypeMenu)	  Osd_DrawStr(1, 1, "DDC MENU");//"F"
					  
   
          if (MenuPageIndex==FactoryMenu)
            Osd_ShowNative();
          else
            Osd_Show();
      	}
      else
      	{
      	
	   if (CurrentMenu.Fonts)
			DynamicLoadFont(CurrentMenu.FontAddr, CurrentMenu.Fonts);
	     for (i=1; i<MenuItemCount; i++)
	          DrawOsdMenuItem(i, &CurrentMenu.MenuItems[i]);
		   mStar_WriteOSDByte(SUBW0C, 0x00);
       }

    }
}

//=========================================================================
// draw menu item
void DrawOsdMenuItem(BYTE itemIndex, MenuItemType *menuItem)
{ if (menuItem->Flags&mibInvisible)
    return;
  if (menuItem->Flags&mibFactoryItem && !FactoryModeFlag)
    return;

  if (menuItem->Flags&mibNotFactoryItem && FactoryModeFlag)
    return;

 /*
  if (menuItem->Flags&(mibSelectable|mibAdjustItem) &&  itemIndex==MenuItemIndex)//vick change
  	{
      Osd_SetTextColor(menuItem->SelForeColor, menuItem->SelBackColor);
  	}
  else
  	{ Osd_SetTextColor(menuItem->ForeColor, menuItem->BackColor);
  	}
  
  if (menuItem->Flags&mibDVIDisable && SrcInputType==Input_Digital)
    Osd_SetTextColor(CP_GrayColor, CP_BlueColor);
*/

   DrawOsdMenuItemText(itemIndex, menuItem);
   DrawOsdMenuItemValue(itemIndex, (menuItem->DisplayValue));//->DisplayValue);
}

//=========================================================================
// draw menu item display text
void DrawOsdMenuItemText(BYTE itemIndex, MenuItemType *menuItem)
{ if (menuItem->DisplayText==NULL)
    return;     

if (menuItem->DrawItemMethod==DWI_Icon)
	Osd_DrawStr(menuItem->XPos, menuItem->YPos, menuItem->DisplayText());
 else if (menuItem->DrawItemMethod==DWI_Text)
     {
      //if (itemIndex==MenuItemIndex)//Vick Add     	
        //    Osd_SetTextColor(menuItem->SelForeColor,menuItem->SelBackColor);
   // else  Osd_SetTextColor(menuItem->ForeColor,menuItem->BackColor);
   if ( itemIndex==MenuItemIndex)//vick change
  	{
      Osd_SetTextColor(menuItem->SelForeColor, menuItem->SelBackColor);
  	}
  else
  	{ Osd_SetTextColor(menuItem->ForeColor, menuItem->BackColor);
  	}
  
  if ((menuItem->Flags&mibDVIDisable) && (SrcInputType==Input_Digital))
    Osd_SetTextColor(CP_GrayColor, CP_SoftLowGreenColor);  //FENDY  FOR DVI



	       if(menuItem->Flags&mibFactoryItem )
			 Osd_DrawStr(menuItem->XPos, menuItem->YPos, menuItem->DisplayText());
	        else		  	
	       	Osd_DrawPropStr(menuItem->XPos, menuItem->YPos, menuItem->DisplayText());
		
 	}

  else if (menuItem->DrawItemMethod==DWI_CommentText) //tony
  {
    	BYTE i, len, tcolor;

⌨️ 快捷键说明

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