add ClampOutputPercent for displays that can't display the full range of brightness
This commit is contained in:
@@ -2656,6 +2656,7 @@ BottomEdge=SCREEN_BOTTOM-20
|
|||||||
BlinkDangerAll=1
|
BlinkDangerAll=1
|
||||||
DangerAllIsOpaque=1
|
DangerAllIsOpaque=1
|
||||||
BrightnessFadeCommand=
|
BrightnessFadeCommand=
|
||||||
|
ClampOutputPercent=0
|
||||||
|
|
||||||
[Judgment]
|
[Judgment]
|
||||||
BooOddCommand=
|
BooOddCommand=
|
||||||
|
|||||||
@@ -31,10 +31,27 @@ ThemeMetric<float> BOTTOM_EDGE ("Background","BottomEdge");
|
|||||||
ThemeMetric<bool> BLINK_DANGER_ALL ("Background","BlinkDangerAll");
|
ThemeMetric<bool> BLINK_DANGER_ALL ("Background","BlinkDangerAll");
|
||||||
ThemeMetric<bool> DANGER_ALL_IS_OPAQUE ("Background","DangerAllIsOpaque");
|
ThemeMetric<bool> DANGER_ALL_IS_OPAQUE ("Background","DangerAllIsOpaque");
|
||||||
ThemeMetric<apActorCommands> BRIGHTNESS_FADE_COMMAND ("Background","BrightnessFadeCommand");
|
ThemeMetric<apActorCommands> BRIGHTNESS_FADE_COMMAND ("Background","BrightnessFadeCommand");
|
||||||
|
ThemeMetric<float> CLAMP_OUTPUT_PERCENT ("Background","ClampOutputPercent");
|
||||||
|
|
||||||
static float g_fBackgroundCenterWidth = 40;
|
static float g_fBackgroundCenterWidth = 40;
|
||||||
const CString STATIC_BACKGROUND = "static background";
|
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()
|
Background::Background()
|
||||||
{
|
{
|
||||||
m_iCurBGChangeIndex = -1;
|
m_iCurBGChangeIndex = -1;
|
||||||
@@ -59,11 +76,8 @@ void Background::Init()
|
|||||||
|
|
||||||
bool bOneOrMoreChars = false;
|
bool bOneOrMoreChars = false;
|
||||||
bool bShowingBeginnerHelper = false;
|
bool bShowingBeginnerHelper = false;
|
||||||
FOREACH_PlayerNumber( p )
|
FOREACH_HumanPlayer( p )
|
||||||
{
|
{
|
||||||
if( !GAMESTATE->IsHumanPlayer(p) )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
bOneOrMoreChars = true;
|
bOneOrMoreChars = true;
|
||||||
// Disable dancing characters if BH will be showing.
|
// Disable dancing characters if BH will be showing.
|
||||||
if( PREFSMAN->m_bShowBeginnerHelper && BeginnerHelper::CanUse() &&
|
if( PREFSMAN->m_bShowBeginnerHelper && BeginnerHelper::CanUse() &&
|
||||||
@@ -74,19 +88,21 @@ void Background::Init()
|
|||||||
if( bOneOrMoreChars && !bShowingBeginnerHelper )
|
if( bOneOrMoreChars && !bShowingBeginnerHelper )
|
||||||
m_pDancingCharacters = new DancingCharacters;
|
m_pDancingCharacters = new DancingCharacters;
|
||||||
|
|
||||||
m_quadBorder[0].StretchTo( RectF(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) );
|
RageColor c = GetBrightnessColor(0);
|
||||||
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) );
|
|
||||||
|
|
||||||
this->AddChild( &m_quadBorder[0] );
|
m_quadBorderLeft.StretchTo( RectF(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) );
|
||||||
this->AddChild( &m_quadBorder[1] );
|
m_quadBorderLeft.SetDiffuse( c );
|
||||||
this->AddChild( &m_quadBorder[2] );
|
m_quadBorderTop.StretchTo( RectF(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) );
|
||||||
this->AddChild( &m_quadBorder[3] );
|
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 );
|
this->AddChild( &m_Brightness );
|
||||||
}
|
}
|
||||||
@@ -735,8 +751,8 @@ void BrightnessOverlay::SetActualBrightness()
|
|||||||
if( !GAMESTATE->IsHumanPlayer(PLAYER_2) )
|
if( !GAMESTATE->IsHumanPlayer(PLAYER_2) )
|
||||||
fRightBrightness = fLeftBrightness;
|
fRightBrightness = fLeftBrightness;
|
||||||
|
|
||||||
RageColor LeftColor( 0,0,0,1-fLeftBrightness );
|
RageColor LeftColor = GetBrightnessColor(fLeftBrightness);
|
||||||
RageColor RightColor( 0,0,0,1-fRightBrightness );
|
RageColor RightColor = GetBrightnessColor(fRightBrightness);
|
||||||
|
|
||||||
m_quadBGBrightness[PLAYER_1].SetDiffuse( LeftColor );
|
m_quadBGBrightness[PLAYER_1].SetDiffuse( LeftColor );
|
||||||
m_quadBGBrightness[PLAYER_2].SetDiffuse( RightColor );
|
m_quadBGBrightness[PLAYER_2].SetDiffuse( RightColor );
|
||||||
@@ -746,9 +762,11 @@ void BrightnessOverlay::SetActualBrightness()
|
|||||||
|
|
||||||
void BrightnessOverlay::Set( float fBrightness )
|
void BrightnessOverlay::Set( float fBrightness )
|
||||||
{
|
{
|
||||||
|
RageColor c = GetBrightnessColor(fBrightness);
|
||||||
|
|
||||||
FOREACH_PlayerNumber(pn)
|
FOREACH_PlayerNumber(pn)
|
||||||
m_quadBGBrightness[pn].SetDiffuse( RageColor(0,0,0,1-fBrightness) );
|
m_quadBGBrightness[pn].SetDiffuse( c );
|
||||||
m_quadBGBrightnessFade.SetDiffuse( RageColor(0,0,0,1-fBrightness) );
|
m_quadBGBrightnessFade.SetDiffuse( c );
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrightnessOverlay::FadeToActualBrightness()
|
void BrightnessOverlay::FadeToActualBrightness()
|
||||||
|
|||||||
@@ -73,7 +73,9 @@ protected:
|
|||||||
Actor *m_pFadingBGA;
|
Actor *m_pFadingBGA;
|
||||||
float m_fSecsLeftInFade;
|
float m_fSecsLeftInFade;
|
||||||
float m_fLastMusicSeconds;
|
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;
|
BrightnessOverlay m_Brightness;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user