?? guiapp_action_displaymenu.c
字號:
/*****************************************************************************
** 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 + -