add aspect ratio pref

This commit is contained in:
Chris Danford
2004-12-23 06:50:19 +00:00
parent 0e2ceed54c
commit 9b457eb241
11 changed files with 75 additions and 15 deletions
+2 -1
View File
@@ -2976,7 +2976,7 @@ Line6=conf,RandomBackgrounds
[ScreenAppearanceOptions]
Fallback=ScreenOptionsSubmenu
LineNames=1,2,3,4,5,6,7,8,9,10,11,12,13
LineNames=1,2,3,4,5,6,7,8,9,10,11,12,13,14
OptionMenuFlags=together;explanations
Line1=conf,Language
Line2=conf,Announcer
@@ -2991,6 +2991,7 @@ Line10=conf,CourseSort
Line11=conf,RandomAtEnd
Line12=conf,Translations
Line13=conf,Lyrics
Line14=conf,AspectRatio
[ScreenOtherOptions]
Fallback=ScreenOptionsSubmenu
+2 -2
View File
@@ -153,8 +153,8 @@ void Lua::UpdateGlobals()
ASSERT( L );
/* Important: explicitly refresh cached metrics that we use. */
SCREEN_WIDTH.Read();
SCREEN_HEIGHT.Read();
THEME_SCREEN_WIDTH.Read();
THEME_SCREEN_HEIGHT.Read();
lua_pushnumber( L, SCREEN_WIDTH );
lua_setglobal( L, "SCREEN_WIDTH" );
+1
View File
@@ -75,6 +75,7 @@ PrefsManager::PrefsManager() :
m_iMovieColorDepth ( Options, "MovieColorDepth", 16 ),
m_iMaxTextureResolution ( Options, "MaxTextureResolution", 2048 ),
m_iRefreshRate ( Options, "RefreshRate", REFRESH_DEFAULT ),
m_fAspectRatio ( Options, "AspectRatio", 4/3.0f ),
m_bShowStats ( Options, "ShowStats",
#ifdef DEBUG
true
+1
View File
@@ -26,6 +26,7 @@ public:
Preference<int> m_iMovieColorDepth;
Preference<int> m_iMaxTextureResolution;
Preference<int> m_iRefreshRate;
Preference<float> m_fAspectRatio;
Preference<bool> m_bShowStats;
Preference<bool> m_bShowBanners;
+31 -2
View File
@@ -1,8 +1,37 @@
#include "global.h"
#include "ScreenDimensions.h"
#include "PrefsManager.h"
ThemeMetric<float> THEME_SCREEN_WIDTH("Common","ScreenWidth");
ThemeMetric<float> THEME_SCREEN_HEIGHT("Common","ScreenHeight");
//
// The theme's logical resolution specifies the minimum screen width
// and the minimum screen height with a 4:3 aspect ratio. Scale just one
// of the dimensions up to meet the requested aspect ratio.
//
#define ASPECT_4_TO_3 (4/3.0f)
float ScreenWidth()
{
float fScale = 1;
if( PREFSMAN->m_fAspectRatio > ASPECT_4_TO_3 )
fScale = PREFSMAN->m_fAspectRatio / ASPECT_4_TO_3;
ASSERT( fScale >= 1 );
return THEME_SCREEN_WIDTH * fScale;
}
float ScreenHeight()
{
float fScale = 1;
if( PREFSMAN->m_fAspectRatio < ASPECT_4_TO_3 )
fScale = ASPECT_4_TO_3 / PREFSMAN->m_fAspectRatio;
ASSERT( fScale >= 1 );
return THEME_SCREEN_HEIGHT * fScale;
}
ThemeMetric<float> SCREEN_WIDTH("Common","ScreenWidth");
ThemeMetric<float> SCREEN_HEIGHT("Common","ScreenHeight");
/*
* (c) 2001-2002 Chris Danford
+7 -2
View File
@@ -6,8 +6,13 @@
#include "ThemeManager.h"
#include "ThemeMetric.h"
extern ThemeMetric<float> SCREEN_WIDTH;
extern ThemeMetric<float> SCREEN_HEIGHT;
#define SCREEN_WIDTH ScreenWidth()
#define SCREEN_HEIGHT ScreenHeight()
float ScreenWidth();
float ScreenHeight();
extern ThemeMetric<float> THEME_SCREEN_WIDTH;
extern ThemeMetric<float> THEME_SCREEN_HEIGHT;
#define SCREEN_LEFT (0)
#define SCREEN_RIGHT (SCREEN_WIDTH)
+6 -3
View File
@@ -95,6 +95,9 @@ void ScreenManager::ThemeChanged()
SAFE_DELETE( m_SystemLayer );
m_SystemLayer = new ScreenSystemLayer;
m_SystemLayer->RefreshCreditsMessages();
// reload shared BGA
m_pSharedBGA->LoadFromAniDir( m_sLastLoadedBackgroundPath );
}
void ScreenManager::EmptyDeleteQueue()
@@ -361,9 +364,9 @@ retry:
if( sNewBGA.empty() )
{
m_pSharedBGA->Unload();
m_sLastLoadedBackground = "";
m_sLastLoadedBackgroundPath = "";
}
else if( m_sLastLoadedBackground != sNewBGA )
else if( m_sLastLoadedBackgroundPath != sNewBGA )
{
// Create the new background before deleting the previous so that we keep
// any common textures loaded.
@@ -372,7 +375,7 @@ retry:
SAFE_DELETE( m_pSharedBGA );
m_pSharedBGA = pNewBGA;
m_sLastLoadedBackground = sNewBGA;
m_sLastLoadedBackgroundPath = sNewBGA;
}
bool bWasOnSystemMenu = GAMESTATE->m_bIsOnSystemMenu;
+1 -1
View File
@@ -66,7 +66,7 @@ private:
vector<Screen*> m_ScreenStack; // bottommost to topmost
ScreenSystemLayer *m_SystemLayer;
CString m_sLastLoadedBackground;
CString m_sLastLoadedBackgroundPath;
CString m_sDelayedScreen;
ScreenMessage m_MessageSendOnPop;
vector<Screen*> m_vPreparedScreens;
+13 -2
View File
@@ -21,6 +21,7 @@
#include "RageSoundManager.h"
#include "ProfileManager.h"
#include "StepsUtil.h"
#include "LuaHelpers.h"
#define LINE_NAMES THEME->GetMetric (m_sName,"LineNames")
#define OPTION_MENU_FLAGS THEME->GetMetric (m_sName,"OptionMenuFlags")
@@ -535,9 +536,19 @@ void ScreenOptionsMaster::ExportOptions()
if( m_sNextScreen == "" )
m_sNextScreen = NEXT_SCREEN;
/* Did the theme change? */
if( ChangeMask & OPT_APPLY_ASPECT_RATIO )
{
Lua::UpdateGlobals(); // This needs to be done before resetting the projection matrix below
SCREENMAN->ThemeChanged(); // recreate ScreenSystemLayer and SharedBGA
}
/* If the theme changes, we need to reset RageDisplay to apply new theme
* window title and icon. */
/* If the aspect ratio changes, we need to reset RageDisplay so that the
* projection matrix is re-created using the new screen dimensions. */
if( (ChangeMask & OPT_APPLY_THEME) ||
(ChangeMask & OPT_APPLY_GRAPHICS) ) // reset graphics to apply new window title and icon
(ChangeMask & OPT_APPLY_GRAPHICS) ||
(ChangeMask & OPT_APPLY_ASPECT_RATIO) )
ApplyGraphicOptions();
if( ChangeMask & OPT_SAVE_PREFERENCES )
+10 -2
View File
@@ -440,6 +440,12 @@ static void RefreshRate( int &sel, bool ToSel, const ConfOption *pConfOption )
MoveMap( sel, PREFSMAN->m_iRefreshRate.Value(), ToSel, mapping, ARRAYSIZE(mapping) );
}
static void AspectRatio( int &sel, bool ToSel, const ConfOption *pConfOption )
{
const float mapping[] = { 3/4.f,1,4/3.0f,16/10.0f,16/9.f, 8/3.f };
MoveMap( sel, PREFSMAN->m_fAspectRatio.Value(), ToSel, mapping, ARRAYSIZE(mapping) );
}
/* Sound options */
MOVE( ResamplingQuality, PREFSMAN->m_iSoundResampleQuality );
MOVE( AttractSoundFrequency,PREFSMAN->m_iAttractSoundFrequency );
@@ -546,11 +552,13 @@ static void InitializeConfOptions()
ADD( ConfOption( "DelayedTextureDelete", MovePref, "OFF","ON" ) );
g_ConfOptions.back().m_iEffects = OPT_APPLY_GRAPHICS;
ADD( ConfOption( "CelShade\nModels", CelShadeModels, "OFF","ON" ) );
ADD( ConfOption( "SmoothLines", SmoothLines, "OFF","ON" ) );
ADD( ConfOption( "Smooth\nLines", SmoothLines, "OFF","ON" ) );
g_ConfOptions.back().m_iEffects = OPT_APPLY_GRAPHICS;
ADD( ConfOption( "Refresh\nRate", RefreshRate, "DEFAULT","60","70","72","75","80","85","90","100","120","150" ) );
g_ConfOptions.back().m_iEffects = OPT_APPLY_GRAPHICS;
ADD( ConfOption( "Vsync", MovePref, "NO", "YES" ) );
ADD( ConfOption( "Aspect\nRatio", AspectRatio, "3:4","1:1","4:3","16:10","16:9","8:3" ) );
g_ConfOptions.back().m_iEffects = OPT_APPLY_ASPECT_RATIO;
ADD( ConfOption( "Vsync", MovePref, "NO", "YES" ) );
g_ConfOptions.back().m_iEffects = OPT_APPLY_GRAPHICS;
ADD( ConfOption( "ShowStats", MovePref, "OFF","ON" ) );
ADD( ConfOption( "ShowBanners", MovePref, "OFF","ON" ) );
+1
View File
@@ -8,6 +8,7 @@ static const int MAX_OPTIONS=16;
#define OPT_RESET_GAME (1<<3)
#define OPT_APPLY_SOUND (1<<4)
#define OPT_APPLY_SONG (1<<5)
#define OPT_APPLY_ASPECT_RATIO (1<<6)
struct ConfOption
{