/* ** Command & Conquer Renegade(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ /*********************************************************************************************** *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *** *********************************************************************************************** * * * Project Name : wwui * * * * $Archive:: /Commando/Code/wwui/textmarqueectrl.h $* * * * Author:: Patrick Smith * * * * $Modtime:: 9/18/01 3:56p $* * * * $Revision:: 2 $* * * *---------------------------------------------------------------------------------------------* * Functions: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #if defined(_MSC_VER) #pragma once #endif #ifndef __TEXTMARQUEECTRL_H #define __TEXTMARQUEECTRL_H #include "dialogcontrol.h" #include "render2dsentence.h" #include "vector.h" ////////////////////////////////////////////////////////////////////// // // TextMarqueeCtrlClass // ////////////////////////////////////////////////////////////////////// class TextMarqueeCtrlClass : public DialogControlClass { public: /////////////////////////////////////////////////////////////////// // Public constructors/destructors /////////////////////////////////////////////////////////////////// TextMarqueeCtrlClass (void); ~TextMarqueeCtrlClass (void); /////////////////////////////////////////////////////////////////// // Public methods /////////////////////////////////////////////////////////////////// // // Inherited // void Render (void); void Set_Text (const WCHAR *title); // // Configuration // void Set_Scroll_Rate (float rows_per_sec) { ScrollRate = rows_per_sec; } float Get_Scroll_Rate (void) { return ScrollRate; } protected: /////////////////////////////////////////////////////////////////// // Protected classes /////////////////////////////////////////////////////////////////// typedef struct _CREDIT_LINE { _CREDIT_LINE (void) : FontIndex (0), Color (0), Height (0) {} _CREDIT_LINE (const WCHAR *text, int font_index, int color) : Text (text), FontIndex (font_index), Color (color) {} bool operator== (const _CREDIT_LINE &src) { return false; } bool operator!= (const _CREDIT_LINE &src) { return true; } WideStringClass Text; int FontIndex; int Color; float Height; } CREDIT_LINE; /////////////////////////////////////////////////////////////////// // Protected methods /////////////////////////////////////////////////////////////////// void Update_Client_Rect (void); void On_Frame_Update (void); void Create_Control_Renderer (void); void Create_Text_Renderer (void); void Calculate_Row_Count (void); int Read_Tag (const WCHAR *text, CREDIT_LINE &line); const WCHAR * Read_Line (const WCHAR *text, CREDIT_LINE &line); void Build_Credit_Lines (void); /////////////////////////////////////////////////////////////////// // Protected member data /////////////////////////////////////////////////////////////////// Render2DClass ControlRenderer; Render2DSentenceClass TextRenderers[2]; float ScrollPos; int PixelHeight; float ScrollRate; DynamicVectorClass CreditLines; }; #endif //__TEXTMARQUEECTRL_H