From b926fbe742f8efa5d88edfc292abe560aeecfe45 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Wed, 17 Dec 2003 09:47:03 +0000 Subject: [PATCH] replacing SetTextMaxWidth with more general SetMaxWidth --- stepmania/src/BitmapText.cpp | 26 ++++++++++++++++++++++---- stepmania/src/BitmapText.h | 5 ++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/stepmania/src/BitmapText.cpp b/stepmania/src/BitmapText.cpp index 6eae5bee4a..a9016861bb 100644 --- a/stepmania/src/BitmapText.cpp +++ b/stepmania/src/BitmapText.cpp @@ -78,6 +78,7 @@ BitmapText::BitmapText() m_bRainbow = false; m_iWrapWidthPixels = -1; + m_fMaxWidth = 0; } BitmapText::~BitmapText() @@ -303,11 +304,28 @@ void BitmapText::SetText( CString sText, CString sAlternateText, int iWrapWidthP } BuildChars(); + UpdateBaseZoom(); } void BitmapText::SetTextMaxWidth( float MaxWidth, const CString &text, const CString &alttext ) { + m_fMaxWidth = MaxWidth; this->SetText(text, alttext); +} + +void BitmapText::SetMaxWidth( float MaxWidth ) +{ + m_fMaxWidth = MaxWidth; + UpdateBaseZoom(); +} + +void BitmapText::UpdateBaseZoom() +{ + if( m_fMaxWidth == 0 ) + { + this->SetBaseZoomX( 1 ); + return; + } const float Width = GetUnzoomedWidth(); @@ -315,10 +333,9 @@ void BitmapText::SetTextMaxWidth( float MaxWidth, const CString &text, const CSt if( !Width ) return; - /* Never decrease the zoom. Important: make sure you reset zoom before - * changing text with this function. */ - const float Zoom = min( GetZoom(), MaxWidth/Width ); - this->SetZoomX( Zoom ); + /* Never decrease the zoom. */ + const float Zoom = min( 1, m_fMaxWidth/Width ); + this->SetBaseZoomX( Zoom ); } bool BitmapText::StringWillUseAlternate(CString sText, CString sAlternateText) const @@ -446,6 +463,7 @@ void BitmapText::HandleCommand( const CStringArray &asTokens ) // Commands that go in the tweening queue: // Commands that take effect immediately (ignoring the tweening queue): if( sName=="wrapwidthpixels" ) SetWrapWidthPixels( iParam(1) ); + else if( sName=="maxwidth" ) SetMaxWidth( fParam(1) ); else { Actor::HandleCommand( asTokens ); diff --git a/stepmania/src/BitmapText.h b/stepmania/src/BitmapText.h index 9f753483bb..dda84fd4f7 100644 --- a/stepmania/src/BitmapText.h +++ b/stepmania/src/BitmapText.h @@ -27,7 +27,8 @@ public: bool LoadFromNumbers( CString sTexturePath ) { return LoadFromTextureAndChars(sTexturePath,"0123456789%. :x"); }; bool LoadFromTextureAndChars( CString sTexturePath, CString sChars ); void SetText( CString sText, CString sAlternateText = "", int iWrapWidthPixels = -1 ); - void SetTextMaxWidth( float MaxWidth, const CString &text, const CString &alttext = "" ); + void SetMaxWidth( float MaxWidth ); + void SetTextMaxWidth( float MaxWidth, const CString &text, const CString &alttext = "" ); // deprecated void SetWrapWidthPixels( int iWrapWidthPixels ); void CropToWidth( int iWidthInSourcePixels ); @@ -56,6 +57,7 @@ protected: vector m_wTextLines; vector m_iLineWidths; // in source pixels int m_iWrapWidthPixels; // -1 = no wrap + float m_fMaxWidth; bool m_bRainbow; @@ -64,6 +66,7 @@ protected: void BuildChars(); void DrawChars(); + void UpdateBaseZoom(); };