add ClampOutputPercent for displays that can't display the full range of brightness

This commit is contained in:
Chris Danford
2005-04-15 11:03:04 +00:00
parent c8636e1728
commit 1469f8ffd7
3 changed files with 42 additions and 21 deletions
+1
View File
@@ -2656,6 +2656,7 @@ BottomEdge=SCREEN_BOTTOM-20
BlinkDangerAll=1
DangerAllIsOpaque=1
BrightnessFadeCommand=
ClampOutputPercent=0
[Judgment]
BooOddCommand=
+38 -20
View File
@@ -31,10 +31,27 @@ ThemeMetric<float> BOTTOM_EDGE ("Background","BottomEdge");
ThemeMetric<bool> BLINK_DANGER_ALL ("Background","BlinkDangerAll");
ThemeMetric<bool> DANGER_ALL_IS_OPAQUE ("Background","DangerAllIsOpaque");
ThemeMetric<apActorCommands> BRIGHTNESS_FADE_COMMAND ("Background","BrightnessFadeCommand");
ThemeMetric<float> CLAMP_OUTPUT_PERCENT ("Background","ClampOutputPercent");
static float g_fBackgroundCenterWidth = 40;
const CString STATIC_BACKGROUND = "static background";
static RageColor GetBrightnessColor( float fBrightnessPercent )
{
RageColor cBrightness = RageColor( 0,0,0,1-fBrightnessPercent );
RageColor cClamp = RageColor( 0.5f,0.5f,0.5f,CLAMP_OUTPUT_PERCENT );
// blend the two colors above as if cBrightness is drawn, then cClamp drawn on top
cBrightness.a *= (1-cClamp.a); // premultiply alpha
RageColor ret;
ret.a = cBrightness.a + cClamp.a;
ret.r = (cBrightness.r * cBrightness.a + cClamp.r * cClamp.a) / ret.a;
ret.g = (cBrightness.g * cBrightness.a + cClamp.g * cClamp.a) / ret.a;
ret.b = (cBrightness.b * cBrightness.a + cClamp.b * cClamp.a) / ret.a;
return ret;
}
Background::Background()
{
m_iCurBGChangeIndex = -1;
@@ -59,11 +76,8 @@ void Background::Init()
bool bOneOrMoreChars = false;
bool bShowingBeginnerHelper = false;
FOREACH_PlayerNumber( p )
FOREACH_HumanPlayer( p )
{
if( !GAMESTATE->IsHumanPlayer(p) )
continue;
bOneOrMoreChars = true;
// Disable dancing characters if BH will be showing.
if( PREFSMAN->m_bShowBeginnerHelper && BeginnerHelper::CanUse() &&
@@ -74,19 +88,21 @@ void Background::Init()
if( bOneOrMoreChars && !bShowingBeginnerHelper )
m_pDancingCharacters = new DancingCharacters;
m_quadBorder[0].StretchTo( RectF(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[0].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[1].StretchTo( RectF(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) );
m_quadBorder[1].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[2].StretchTo( RectF(RIGHT_EDGE,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_quadBorder[2].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[3].StretchTo( RectF(LEFT_EDGE,BOTTOM_EDGE,RIGHT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[3].SetDiffuse( RageColor(0,0,0,1) );
RageColor c = GetBrightnessColor(0);
this->AddChild( &m_quadBorder[0] );
this->AddChild( &m_quadBorder[1] );
this->AddChild( &m_quadBorder[2] );
this->AddChild( &m_quadBorder[3] );
m_quadBorderLeft.StretchTo( RectF(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) );
m_quadBorderLeft.SetDiffuse( c );
m_quadBorderTop.StretchTo( RectF(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) );
m_quadBorderTop.SetDiffuse( c );
m_quadBorderRight.StretchTo( RectF(RIGHT_EDGE,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_quadBorderRight.SetDiffuse( c );
m_quadBorderBottom.StretchTo( RectF(LEFT_EDGE,BOTTOM_EDGE,RIGHT_EDGE,SCREEN_BOTTOM) );
m_quadBorderBottom.SetDiffuse( c );
this->AddChild( &m_quadBorderLeft );
this->AddChild( &m_quadBorderTop );
this->AddChild( &m_quadBorderRight );
this->AddChild( &m_quadBorderBottom );
this->AddChild( &m_Brightness );
}
@@ -735,8 +751,8 @@ void BrightnessOverlay::SetActualBrightness()
if( !GAMESTATE->IsHumanPlayer(PLAYER_2) )
fRightBrightness = fLeftBrightness;
RageColor LeftColor( 0,0,0,1-fLeftBrightness );
RageColor RightColor( 0,0,0,1-fRightBrightness );
RageColor LeftColor = GetBrightnessColor(fLeftBrightness);
RageColor RightColor = GetBrightnessColor(fRightBrightness);
m_quadBGBrightness[PLAYER_1].SetDiffuse( LeftColor );
m_quadBGBrightness[PLAYER_2].SetDiffuse( RightColor );
@@ -746,9 +762,11 @@ void BrightnessOverlay::SetActualBrightness()
void BrightnessOverlay::Set( float fBrightness )
{
RageColor c = GetBrightnessColor(fBrightness);
FOREACH_PlayerNumber(pn)
m_quadBGBrightness[pn].SetDiffuse( RageColor(0,0,0,1-fBrightness) );
m_quadBGBrightnessFade.SetDiffuse( RageColor(0,0,0,1-fBrightness) );
m_quadBGBrightness[pn].SetDiffuse( c );
m_quadBGBrightnessFade.SetDiffuse( c );
}
void BrightnessOverlay::FadeToActualBrightness()
+3 -1
View File
@@ -73,7 +73,9 @@ protected:
Actor *m_pFadingBGA;
float m_fSecsLeftInFade;
float m_fLastMusicSeconds;
Quad m_quadBorder[4]; // l, t, r, b - cover up the edge of animations that might hang outside of the background rectangle
// cover up the edge of animations that might hang outside of the background rectangle
Quad m_quadBorderLeft, m_quadBorderTop, m_quadBorderRight, m_quadBorderBottom;
BrightnessOverlay m_Brightness;
};