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

📄 guiapp_action_displaymenu.c

📁 IT projecotr reference design.
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************
**             TEXAS INSTRUMENTS PROPRIETARY INFORMATION
**
**  (c) Copyright, Texas Instruments Incorporated, 2006.
**      All Rights Reserved.
**
**  Property of Texas Instruments Incorporated. Restricted Rights -
**  Use, duplication, or disclosure is subject to restrictions set
**  forth in TI's program license agreement and associated documentation.
******************************************************************************/

#include "common.h"
#include "guiStyle.h"
#include "guiApp_action.h"
#include "guiApp_action_menu_values.h"
#include "dmd.h"
#include "cw.h"
#include "app_cfg.h"
#include "datapath.h"
#include "ddp2230_rtos_include.h"
#include "eeprom.h"
#include "OSD.h"
#include "source.h"
#include "dispfmt.h"
#include "deccontrol.h"
#include "environment.h"

/* local function */
int08 guiApp_action_CheckImagePositionEnable( void );

GUI_DISPLAY_MENU_VALUES_STRUCT *displayMenuValues;
extern uint32 gID_MemPool; 


/* Initialize the items */
int08 guiApp_action_DisplayMenu_OnStart( int16 menuId, GUIMSG *msg )
{
    int16 min, max;
    uint08 listSize;
    
    DP_SOURCEDESC *srcDesc;
    
    if( RTA_MemRequest( gID_MemPool, sizeof( GUI_DISPLAY_MENU_VALUES_STRUCT ), (void **)&displayMenuValues ) == PASS )
    {
	    datapath_GetSourceDesc( &srcDesc );
	    
	    /* get all general projector settings from EEPROM */
	    EE_GETVAR( UserMachine.Projector.BlankScreenColor, displayMenuValues->blankScreenColor );
	    EE_GETVAR( UserMachine.Projector.KeystonePitch, displayMenuValues->keystone );
	    EE_GETVAR( UserMachine.Projector.AutoKeystone, displayMenuValues->autoKeystone );
	    EE_GETVAR( UserMachine.Projector.AspectRatio, displayMenuValues->aspectRatio );
	    EE_GETVAR( UserMachine.Projector.ImageSizeEnum, displayMenuValues->imageSizeEnum );
        EE_GETVAR( UserMachine.Projector.ImageSizeManualSteps, displayMenuValues->imageSizeManualSteps );	    
	    EE_GETVAR( UserMachine.Projector.ImageOffset, displayMenuValues->imagePosition );
	    
	        
	    /* get all connector specific projector settings from EEPROM */
	    if( srcDesc->sourceActive )
	    {
	        EE_GETVAR( UserMachine.ConnectorSettings[srcDesc->connector].Overscan, displayMenuValues->overscan );
	        EE_GETVAR( UserMachine.ConnectorSettings[srcDesc->connector].VideoStandard, displayMenuValues->videoStandard ); 
	    }  
	    

	    /**** blank screen color init ****/    // never hide blank screen color
        OSD_GetListSize( LIST_BLANKSCREENLIST, &listSize );
	    displayMenuValues->blankScreenColor = MIN( displayMenuValues->blankScreenColor, listSize - 1 );
	    
        guiStyle_item_SetListIndex( ITEM_BLANKSCREENITEM, displayMenuValues->blankScreenColor );    
        
 	    /**** auto keystone init ****/    
        OSD_GetListSize( LIST_AUTOKEYSTONELIST, &listSize );
        displayMenuValues->autoKeystone = MIN( displayMenuValues->autoKeystone, listSize - 1 );   
        
        guiStyle_item_SetListIndex( ITEM_AUTOKEYSTONEITEM, displayMenuValues->autoKeystone );           
   	    
        /**** keystone init ****/        
        if( displayMenuValues->autoKeystone )
        {
            /* rely on display formatting to remember pitch during auto keystone.  Set to current           */
            /* value but grayed out.  Update value only when menu is re-opened or auto keystone is disabled */
            dispfmt_GetKeystoneAnglePitch( &displayMenuValues->keystone );
            displayMenuValues->keystone = displayMenuValues->keystone >> 8;
            guiStyle_item_SetSingleValue( ITEM_KEYSTONEITEM, displayMenuValues->keystone, min >> 8, max >> 8 );
            guiStyle_GrayOutItem( menuId, ITEM_KEYSTONEITEM, TRUE );
        }
        else
        {
            /* no auto keystone, init keystone pitch from EEPROM */
	        dispfmt_GetKeystoneAnglePitchLimits( &min, &max );
	        displayMenuValues->keystone = LMT( min >> 8, displayMenuValues->keystone, max >> 8 );   
	    
	        guiStyle_item_SetSingleValue( ITEM_KEYSTONEITEM, displayMenuValues->keystone, min >> 8, max >> 8 );
        }
       
	    /**** aspect ratio init ****/    
        OSD_GetListSize( LIST_ASPECTLIST, &listSize );
        displayMenuValues->aspectRatio = MIN( displayMenuValues->aspectRatio, listSize - 1 );   
        
        guiStyle_item_SetListIndex( ITEM_ASPECTITEM, displayMenuValues->aspectRatio );    
	        
	    /**** image size init ****/    
        OSD_GetListSize( LIST_IMAGESIZELIST, &listSize );
        displayMenuValues->imageSizeEnum = MIN( displayMenuValues->imageSizeEnum, listSize - 1 );   
        
        dispfmt_GetImageSizeLimits( &min, &max );
        displayMenuValues->imageSizeManualSteps = LMT( min, displayMenuValues->imageSizeManualSteps, max );
        
        guiStyle_item_SetListIndex( ITEM_IMAGESIZEITEM, displayMenuValues->imageSizeEnum );
        
	    /**** image position init ****/    
        dispfmt_GetImagePositionLimits( &min, &max );
        displayMenuValues->imagePosition = LMT( min, displayMenuValues->imagePosition, max );        
        guiStyle_item_SetSingleValue( ITEM_IMAGEPOSITIONITEM, displayMenuValues->imageSizeManualSteps, min, max );
        guiApp_action_CheckImagePositionEnable();
         
	    /**** magnify init ****/    
	    if( srcDesc->sourceActive )
	    {
	        dispfmt_GetMagnifyLimits( &min, &max );
	        dispfmt_GetMagnify( &displayMenuValues->magnify );
	        displayMenuValues->magnify = LMT( min, displayMenuValues->magnify, max );   
	        
            guiStyle_item_SetSingleValue( ITEM_MAGNIFYSOURCEITEM, displayMenuValues->magnify, min, max );    
	    }
	    else
	        guiStyle_HideItem( menuId, ITEM_MAGNIFYSOURCEITEM, TRUE );
	    
	    /**** pan and scan init ****/    
	    if( !srcDesc->sourceActive )
	        guiStyle_HideItem( menuId, ITEM_PANANDSCANITEM, TRUE );
	    else
	    {
	        if( displayMenuValues->magnify  == 0 )
	        {
	            guiStyle_GrayOutItem( menuId, ITEM_PANANDSCANITEM, TRUE );
	        }
	    }
	        
	    /**** video standard init ****/    
	    if( srcDesc->sourceActive && (( srcDesc->connector == COMPOSITE) || ( srcDesc->connector == SVIDEO )))
	    {
		    EE_GETVAR( UserMachine.ConnectorSettings[srcDesc->connector].VideoStandard, displayMenuValues->videoStandard );
            OSD_GetListSize( LIST_VIDEOSTANDARDLIST, &listSize );
	        displayMenuValues->videoStandard = MIN( displayMenuValues->videoStandard, listSize - 1 );   
	        
            guiStyle_item_SetListIndex( ITEM_VIDEOSTANDARDITEM, displayMenuValues->videoStandard );    
	    }
	    else
	        guiStyle_HideItem( menuId, ITEM_VIDEOSTANDARDITEM, TRUE );
	        
	        
	    /**** video overscan init ****/    
	    if( srcDesc->sourceActive && srcDesc->isVideo)
	    {
            OSD_GetListSize( LIST_OVERSCANCHECKBOXLIST, &listSize );
	        displayMenuValues->overscan = MIN( displayMenuValues->overscan, listSize - 1 );   
	        
            guiStyle_item_SetListIndex( ITEM_OVERSCANITEM, displayMenuValues->overscan );    
	    }
	    else
	        guiStyle_HideItem( menuId, ITEM_OVERSCANITEM, TRUE ); 
	    
    }    
    else /* hide all items if we cannot allocate memory */
    {
        guiStyle_HideItem( menuId, ITEM_BLANKSCREENITEM, TRUE );
        guiStyle_HideItem( menuId, ITEM_KEYSTONEITEM, TRUE );
        guiStyle_HideItem( menuId, ITEM_AUTOKEYSTONEITEM, TRUE );        
	    guiStyle_HideItem( menuId, ITEM_ASPECTITEM, TRUE );
	    guiStyle_HideItem( menuId, ITEM_IMAGESIZEITEM, TRUE );
        guiStyle_HideItem( menuId, ITEM_IMAGEPOSITIONITEM, TRUE );	    
	    guiStyle_HideItem( menuId, ITEM_MAGNIFYSOURCEITEM, TRUE );
	    guiStyle_HideItem( menuId, ITEM_PANANDSCANITEM, TRUE );
	    guiStyle_HideItem( menuId, ITEM_VIDEOSTANDARDITEM, TRUE );
	    guiStyle_HideItem( menuId, ITEM_OVERSCANITEM, TRUE ); 
	}
          
    return PASS;
}

int08 guiApp_action_DisplayMenu_OnClose( int16 menuId )
{
    DP_SOURCEDESC *srcDesc;
    
    datapath_GetSourceDesc( &srcDesc );
    
    /* save all general projector settings */
    EE_PUTVAR( UserMachine.Projector.BlankScreenColor, displayMenuValues->blankScreenColor );
    EE_PUTVAR( UserMachine.Projector.KeystonePitch, displayMenuValues->keystone );
    EE_PUTVAR( UserMachine.Projector.AutoKeystone, displayMenuValues->autoKeystone );
    EE_PUTVAR( UserMachine.Projector.AspectRatio, displayMenuValues->aspectRatio );
    EE_PUTVAR( UserMachine.Projector.ImageSizeEnum, displayMenuValues->imageSizeEnum );
    EE_PUTVAR( UserMachine.Projector.ImageSizeManualSteps, displayMenuValues->imageSizeManualSteps );	    
    EE_PUTVAR( UserMachine.Projector.ImageOffset, displayMenuValues->imagePosition );
        
    /* release image menu memory structure requested in onStart */
    RTA_MemRelease( displayMenuValues );

    return PASS;
}


/* specify the highlight window as required by the GUI Style */
int08 guiApp_action_DisplayMenu_GetHighlightWindow( int16 menuId, uint08 *window )
{
    *window = WIND_DISPLAYMENUHIGHLIGHT;
    return PASS;
}

/* implement item behavior, system interaction */
int08 guiApp_action_DisplayMenu_GuiMsg( int16 menuId, int16 itemId, GUIMSG *msg )
{
    GUIMSG newmsg;
    uint08 listSize;
    int16 min,max;
    uint08 tempIndex;
    DP_SOURCEDESC *srcDesc;
    

    if( msg == NULL )
        return FAIL;

    switch( itemId )
    {
        case ITEM_BLANKSCREENITEM:
        
            OSD_GetListSize( LIST_BLANKSCREENLIST, &listSize );
        
            switch( msg->type )
            {
                case GUIMSG_DEC:
                    if( displayMenuValues->blankScreenColor == 0 )  // decrement SFG index
                        displayMenuValues->blankScreenColor = listSize - 1;
                    else 
                        displayMenuValues->blankScreenColor--;
                        
                    datapath_UserSetBlankScreenColor( displayMenuValues->blankScreenColor );
                    guiStyle_item_SetListIndex( ITEM_BLANKSCREENITEM, displayMenuValues->blankScreenColor );
                    break;
            
                case GUIMSG_INC:
                    if( displayMenuValues->blankScreenColor == listSize - 1 )  // decrement SFG index
                        displayMenuValues->blankScreenColor = 0;
                    else 
                        displayMenuValues->blankScreenColor++;
                        
                    datapath_UserSetBlankScreenColor( displayMenuValues->blankScreenColor );
                    guiStyle_item_SetListIndex( ITEM_BLANKSCREENITEM, displayMenuValues->blankScreenColor );
                    break;
            }
                      
            break;

        case ITEM_KEYSTONEITEM:
            switch( msg->type )
            {
		        case GUIMSG_DEC:
		            if( datapath_UserSetKeystoneAnglePitch( (displayMenuValues->keystone - 1) << 8 ) == PASS )
		            {
		                displayMenuValues->keystone--;
		                dispfmt_GetKeystoneAnglePitchLimits( &min, &max );
		                guiStyle_item_SetSingleValue( ITEM_KEYSTONEITEM, displayMenuValues->keystone, min >> 8, max >> 8 );
		            }                
		            break;
		        
		        case GUIMSG_INC:
		            if( datapath_UserSetKeystoneAnglePitch( (displayMenuValues->keystone + 1) << 8 ) == PASS )
		            {
		                displayMenuValues->keystone++;
		                dispfmt_GetKeystoneAnglePitchLimits( &min, &max );
		                guiStyle_item_SetSingleValue( ITEM_KEYSTONEITEM, displayMenuValues->keystone, min >> 8, max >> 8 );
		            }                
		            break;
		        
		        case GUIMSG_ASSERT:
                    guiStyle_Exit();
                    guiStyle_StartMenu( MENU_KEYSTONEPOPUP, NULL );
					break;
			}
			break;
            
        case ITEM_AUTOKEYSTONEITEM:
            switch( msg->type )
            {
                case GUIMSG_ASSERT:
                    enviro_enableAutoTilt( TRUE );
                    guiStyle_item_SetListIndex( ITEM_AUTOKEYSTONEITEM, TRUE );                                        
                    displayMenuValues->autoKeystone = TRUE;

⌨️ 快捷键说明

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