📄 menufunc_new_pal.c
字号:
/******************************************************************************
Copyright (c) 2003 MStar Semiconductor, Inc.
All rights reserved.
[Module Name]: MenuFunc.c
[Date]: 06-Jan-2003
[Comment]:
OSD adjsut function relative subroutines.
[Reversion History]:
*******************************************************************************/
#define _MENUFUNC_C_
// System
// Common
#include "define.h"
#include "msreg.h"
#include "common.h"
#include "global.h"
// External
#include "userpref.h"
#include "userdef.h"
#include "msio.h"
#include "msACE.h"
#include "msDLC.h"
#include "i2c.h"
#include "devvd.h"
#include "board.h"
#include "msModeHandler.h"
#include "msadjust.h"
#include "uart.h"
#include "msosd.h"
#include "msauto.h"
#include "devaudio.h"
#include "ram.h"
#include "msfb.h"
#include "debug.h"
#include "MenuDef.h"
#include "MenuTbl.h"
#include "MenuStr.h"
#include "msMultiLanguage.h"
#include "Menu.h"
#include "devVD.h"
#include "Power.h"
#include "tv.h"
#include "msModeTbl.h"
#include "msWindow.h"
// Internal
#include "menufunc.h"
#include <math.h>
#include "auprocess.h"
//====================================================
WORD DecIncValue(MenuItemActionType action, WORD wValue, WORD wMinValue, WORD wMaxValue, BYTE ucStep)
{
if(action == MIA_INCVALUE)
{
if(wValue >= wMaxValue)
return wMaxValue;
wValue += ucStep;
if(wValue > wMaxValue)
wValue = wMaxValue;
}
else if(action==MIA_DECVALUE)
{
if(wValue <= wMinValue)
return wMinValue;
if(wValue < ucStep)
wValue = 0;
else
wValue -= ucStep;
if(wValue < wMinValue)
wValue = wMinValue;
}
return wValue;
}
WORD DecIncValue_Cycle(MenuItemActionType action, WORD wValue, WORD wMinValue, WORD wMaxValue, BYTE ucStep)
{
if(action == MIA_INCVALUE)
{
if(wValue >= wMaxValue)
return wMinValue;
wValue += ucStep;
if(wValue > wMaxValue)
wValue = wMinValue;
}
else if(action==MIA_DECVALUE)
{
if(wValue <= wMinValue)
return wMaxValue;
if(wValue < ucStep)
wValue = 0;
else
wValue -= ucStep;
if(wValue < wMinValue)
wValue = wMaxValue;
}
return wValue;
}
WORD GetScale100Value(WORD wValue, WORD wMinValue, WORD wMaxValue)
{
wMaxValue = wMaxValue - wMinValue;
wValue = wValue - wMinValue;
wValue = ( (DWORD)wValue * 100 + (wMaxValue / 2) ) / wMaxValue;
if(wValue > 100)
wValue = 100;
return wValue;
}
//---------------------------------------------------------------------
void SetPCColorTemp( void)
{
if( g_PCColorSetting.ColorTempIndex == PC_COLOR_TEMP_SRGB )
{
msACEPCUsesRGB(0, TRUE);
}
else
{
msACEPCUsesRGB(0, FALSE);
}
msAdjustPCRGB( 0, g_PCColorTempSetting.RedColor, g_PCColorTempSetting.GreenColor, g_PCColorTempSetting.BlueColor );
}
void SetVideoColorTemp( void )
{
msAdjustVideoRGB( 0, g_VideoColorTempSetting.RedColor, g_VideoColorTempSetting.GreenColor, g_VideoColorTempSetting.BlueColor );
}
//======================== picture =========================
BOOL AdjustPictureContrast(MenuItemActionType action)
{
if(g_ucFactoryFlag&0x80)//FACTORY MODE
{
if( SrcTypeIsVideo() )
{
if( IsSrcUseHDTVSetting())
{
g_VideoSetting.HDTVadjust.Contrast = DecIncValue(action, g_VideoSetting.HDTVadjust.Contrast, MIN_VIDEO_CONTRAST, MAX_VIDEO_CONTRAST, 1);
msAdjustVideoContrast( 0, g_VideoSetting.HDTVadjust.Contrast );
}
else
{
g_VideoSetting.SDTVadjust.Contrast = DecIncValue(action, g_VideoSetting.SDTVadjust.Contrast, MIN_VIDEO_CONTRAST, MAX_VIDEO_CONTRAST, 1);
msAdjustVideoContrast( 0, g_VideoSetting.SDTVadjust.Contrast);
}
}
}
else
{
if( SrcTypeIsVideo() )
{
g_VideoSetting.VideoPictureMode = PICTURE_MODE_USER;
if( IsSrcUseHDTVSetting() )
{
g_VideoSetting.HDTVadjust.Contrast = DecIncValue(action, g_VideoSetting.HDTVadjust.Contrast, MIN_VIDEO_CONTRAST, MAX_VIDEO_CONTRAST, 2);
msAdjustVideoContrast( 0, g_VideoSetting.HDTVadjust.Contrast );
}
else
{
g_VideoSetting.SDTVadjust.Contrast = DecIncValue(action, g_VideoSetting.SDTVadjust.Contrast, MIN_VIDEO_CONTRAST, MAX_VIDEO_CONTRAST, 2);
msAdjustVideoContrast( 0, g_VideoSetting.SDTVadjust.Contrast);
}
}
}
return TRUE;
}
WORD GetPictureContrastValue(void)
{
if( IsSrcUseHDTVSetting() )
{
return GetScale100Value(g_VideoSetting.HDTVadjust.Contrast, MIN_VIDEO_CONTRAST, MAX_VIDEO_CONTRAST);
}
else
{
return GetScale100Value(g_VideoSetting.SDTVadjust.Contrast, MIN_VIDEO_CONTRAST, MAX_VIDEO_CONTRAST);
}
}
BOOL AdjustPictureBrightness(MenuItemActionType action)
{
if(g_ucFactoryFlag&0x80)//FACTORY MODE
{
if( SrcTypeIsVideo() )
{
if( IsSrcUseHDTVSetting())
{
g_VideoSetting.HDTVadjust.Brightness = DecIncValue(action, g_VideoSetting.HDTVadjust.Brightness, MIN_VIDEO_BRIHTNESS, MAX_VIDEO_BRIHTNESS, 2);
msAdjustBrightness( g_VideoSetting.HDTVadjust.Brightness );
}
else
{
g_VideoSetting.SDTVadjust.Brightness = DecIncValue(action, g_VideoSetting.SDTVadjust.Brightness, MIN_VIDEO_BRIHTNESS, MAX_VIDEO_BRIHTNESS, 2);
msAdjustBrightness( g_VideoSetting.SDTVadjust.Brightness );
}
}
}
else
{
if( SrcTypeIsVideo() )
{
g_VideoSetting.VideoPictureMode = PICTURE_MODE_USER;
if( IsSrcUseHDTVSetting() )
{
g_VideoSetting.HDTVadjust.Brightness = DecIncValue(action, g_VideoSetting.HDTVadjust.Brightness, MIN_VIDEO_BRIHTNESS, MAX_VIDEO_BRIHTNESS, 2);
msAdjustBrightness(g_VideoSetting.HDTVadjust.Brightness );
}
else
{
g_VideoSetting.SDTVadjust.Brightness = DecIncValue(action, g_VideoSetting.SDTVadjust.Brightness, MIN_VIDEO_BRIHTNESS, MAX_VIDEO_BRIHTNESS, 2);
msAdjustBrightness(g_VideoSetting.SDTVadjust.Brightness );
}
}
}
return TRUE;
}
WORD GetPictureBrightnessValue(void)
{
if( IsSrcUseHDTVSetting() )
{
return GetScale100Value(g_VideoSetting.HDTVadjust.Brightness, MIN_VIDEO_BRIHTNESS, MAX_VIDEO_BRIHTNESS);
}
else
{
return GetScale100Value(g_VideoSetting.SDTVadjust.Brightness, MIN_VIDEO_BRIHTNESS, MAX_VIDEO_BRIHTNESS);
}
}
BOOL AdjustPictureHue(MenuItemActionType action)
{
if( SrcTypeIsVideo() )
{
g_VideoSetting.VideoPictureMode = PICTURE_MODE_USER;
if( IsSrcUseHDTVSetting() )
{
g_VideoSetting.HDTVadjust.Hue = DecIncValue(action, g_VideoSetting.HDTVadjust.Hue, MIN_VIDEO_HUE, MAX_VIDEO_HUE, 1);
msAdjustVideoHue(0, g_VideoSetting.HDTVadjust.Hue );
}
else
{
g_VideoSetting.SDTVadjust.Hue = DecIncValue(action, g_VideoSetting.SDTVadjust.Hue, MIN_VIDEO_HUE, MAX_VIDEO_HUE, 1);
msAdjustVideoHue(0, g_VideoSetting.SDTVadjust.Hue );
}
}
return TRUE;
}
WORD GetPictureHueValue(void)
{
if( IsSrcUseHDTVSetting() )
{
return GetScale100Value(g_VideoSetting.HDTVadjust.Hue, MIN_VIDEO_HUE, MAX_VIDEO_HUE);
}
else
{
return GetScale100Value(g_VideoSetting.SDTVadjust.Hue, MIN_VIDEO_HUE, MAX_VIDEO_HUE);
}
}
BOOL AdjustPictureSaturation(MenuItemActionType action) // 0 ~ 253
{
if(g_ucFactoryFlag&0x80)//FACTORY MODE
{
if( SrcTypeIsVideo() )
{
if( IsSrcUseHDTVSetting())
{
g_VideoSetting.HDTVadjust.Saturation = DecIncValue(action, g_VideoSetting.HDTVadjust.Saturation, MIN_VIDEO_SATURATION, MAX_VIDEO_SATURATION, 2);
msAdjustVideoSaturation(0, g_VideoSetting.HDTVadjust.Saturation );
}
else
{
g_VideoSetting.SDTVadjust.Saturation = DecIncValue(action, g_VideoSetting.SDTVadjust.Saturation, MIN_VIDEO_SATURATION, MAX_VIDEO_SATURATION, 2);
msAdjustVideoSaturation(0, g_VideoSetting.SDTVadjust.Saturation );
}
}
}
else
{
if( SrcTypeIsVideo() )
{
g_VideoSetting.VideoPictureMode = PICTURE_MODE_USER;
if( IsSrcUseHDTVSetting() )
{
g_VideoSetting.HDTVadjust.Saturation = DecIncValue(action, g_VideoSetting.HDTVadjust.Saturation, MIN_VIDEO_SATURATION, MAX_VIDEO_SATURATION, 2);
msAdjustVideoSaturation(0, g_VideoSetting.HDTVadjust.Saturation );
}
else
{
g_VideoSetting.SDTVadjust.Saturation = DecIncValue(action, g_VideoSetting.SDTVadjust.Saturation, MIN_VIDEO_SATURATION, MAX_VIDEO_SATURATION, 2);
msAdjustVideoSaturation(0, g_VideoSetting.SDTVadjust.Saturation );
}
}
}
return TRUE;
}
WORD GetPictureSaturationValue(void)
{
if( IsSrcUseHDTVSetting() )
{
return GetScale100Value(g_VideoSetting.HDTVadjust.Saturation, MIN_VIDEO_SATURATION, MAX_VIDEO_SATURATION);
}
else
{
return GetScale100Value(g_VideoSetting.SDTVadjust.Saturation, MIN_VIDEO_SATURATION, MAX_VIDEO_SATURATION);
}
}
BOOL AdjustPictureSharpness(MenuItemActionType action)
{
if(g_ucFactoryFlag&0x80)//FACTORY MODE
{
if( SrcTypeIsVideo() )
{
if( IsSrcUseHDTVSetting())
{
g_VideoSetting.HDTVadjust.Sharpness = DecIncValue(action, g_VideoSetting.HDTVadjust.Sharpness, MIN_VIDEO_SHARPNESS, MAX_VIDEO_SHARPNESS, 1);
msAdjustSharpness(g_VideoSetting.HDTVadjust.Sharpness);
}
else
{
g_VideoSetting.SDTVadjust.Sharpness = DecIncValue(action, g_VideoSetting.SDTVadjust.Sharpness, MIN_VIDEO_SHARPNESS, MAX_VIDEO_SHARPNESS, 1);
msAdjustSharpness(g_VideoSetting.SDTVadjust.Sharpness);
}
}
}
else
{
if( SrcTypeIsVideo() )
{
g_VideoSetting.VideoPictureMode = PICTURE_MODE_USER;
if( IsSrcUseHDTVSetting() )
{
g_VideoSetting.HDTVadjust.Sharpness = DecIncValue(action, g_VideoSetting.HDTVadjust.Sharpness, MIN_VIDEO_SHARPNESS, MAX_VIDEO_SHARPNESS, 1);
msAdjustSharpness(g_VideoSetting.HDTVadjust.Sharpness);
}
else
{
g_VideoSetting.SDTVadjust.Sharpness = DecIncValue(action, g_VideoSetting.SDTVadjust.Sharpness, MIN_VIDEO_SHARPNESS, MAX_VIDEO_SHARPNESS, 1);
msAdjustSharpness(g_VideoSetting.SDTVadjust.Sharpness);
}
return TRUE;
}
}
return TRUE;
}
WORD GetPictureSharpnessValue(void)
{
if( IsSrcUseHDTVSetting() )
{
return GetScale100Value(g_VideoSetting.HDTVadjust.Sharpness, MIN_VIDEO_SHARPNESS, MAX_VIDEO_SHARPNESS);
}
else
{
return GetScale100Value(g_VideoSetting.SDTVadjust.Sharpness, MIN_VIDEO_SHARPNESS, MAX_VIDEO_SHARPNESS);
}
}
BOOL AdjustColorTone(MenuItemActionType action)
{
if( SrcTypeIsVideo() )
{
g_VideoSetting.ColorTempIndex=DecIncValue_Cycle( action, g_VideoSetting.ColorTempIndex, 0, VIDEO_COLOR_TEMP_NUMS-1, 1 );
usrLoadVideoColorTempSetting( &g_VideoColorTempSetting, g_VideoSetting.ColorTempIndex );
SetVideoColorTemp( );
}
return TRUE;
}
BOOL AdjustPictureScale(MenuItemActionType action)
{
if( (SrcTypeIsPC() && !IsSrcColorSpaceYUV()) || !IsSrcHasSignal() )
return FALSE;
g_ucVideoScreen=DecIncValue_Cycle( action, g_ucVideoScreen, 0, VIDEOSCREEN_NUMS-1, 1 );
g_VideoSetting.VideoScreen = g_ucVideoScreen;
msProgWindow( g_ucVideoScreen );
return TRUE;
}
BOOL AdjustPicturePictureMode(MenuItemActionType action)
{
BYTE ucPMIdx;
if( SrcTypeIsVideo() )
{
g_VideoSetting.VideoPictureMode=DecIncValue_Cycle( action, g_VideoSetting.VideoPictureMode, 0, PICTURE_MODE_NUMS-1, 1 );
ucPMIdx = g_VideoSetting.VideoPictureMode;
if( PICTURE_MODE_USER != g_VideoSetting.VideoPictureMode ) // Preset mode
{
usrResetPictureSetting( g_VideoSetting.VideoPictureMode );
}
else
{
usrLoadPictureSetting();
g_VideoSetting.VideoPictureMode = ucPMIdx;
}
if( SrcTypeIsVideo() )
{
if( IsSrcUseHDTVSetting() )
{
msAdjustBrightness(g_VideoSetting.HDTVadjust.Brightness );
msAdjustVideoContrast(0, g_VideoSetting.HDTVadjust.Contrast );
msAdjustVideoHue(0, g_VideoSetting.HDTVadjust.Hue );
msAdjustVideoSaturation(0, g_VideoSetting.HDTVadjust.Saturation );
msAdjustSharpness(g_VideoSetting.HDTVadjust.Sharpness);
}
else
{
msAdjustBrightness(g_VideoSetting.SDTVadjust.Brightness );
msAdjustVideoContrast(0, g_VideoSetting.SDTVadjust.Contrast );
msAdjustVideoHue(0, g_VideoSetting.SDTVadjust.Hue );
msAdjustVideoSaturation(0, g_VideoSetting.SDTVadjust.Saturation );
msAdjustSharpness(g_VideoSetting.SDTVadjust.Sharpness);
}
}
}
return TRUE;
}
//======================== Pc ==============================
BOOL AdjustPcContrast(MenuItemActionType action)
{
if( SrcTypeIsPC() && !(IsSrcColorSpaceYUV()) )
{
g_PCColorSetting.Contrast = DecIncValue(action, g_PCColorSetting.Contrast, MIN_PC_CONTRAST, MAX_PC_CONTRAST, 2);
msAdjustPCContrast( 0, g_PCColorSetting.Contrast );
}
return TRUE;
}
WORD GetPcContrastValue(void)
{
return GetScale100Value(g_PCColorSetting.Contrast, MIN_PC_CONTRAST, MAX_PC_CONTRAST);
}
BOOL AdjustPcBrightness(MenuItemActionType action)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -