textmarqueectrl.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /*
  2. ** Command & Conquer Renegade(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /***********************************************************************************************
  19. *** 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 ***
  20. ***********************************************************************************************
  21. * *
  22. * Project Name : wwui *
  23. * *
  24. * $Archive:: /Commando/Code/wwui/textmarqueectrl.h $*
  25. * *
  26. * Author:: Patrick Smith *
  27. * *
  28. * $Modtime:: 9/18/01 3:56p $*
  29. * *
  30. * $Revision:: 2 $*
  31. * *
  32. *---------------------------------------------------------------------------------------------*
  33. * Functions: *
  34. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
  35. #if defined(_MSC_VER)
  36. #pragma once
  37. #endif
  38. #ifndef __TEXTMARQUEECTRL_H
  39. #define __TEXTMARQUEECTRL_H
  40. #include "dialogcontrol.h"
  41. #include "render2dsentence.h"
  42. #include "vector.h"
  43. //////////////////////////////////////////////////////////////////////
  44. //
  45. // TextMarqueeCtrlClass
  46. //
  47. //////////////////////////////////////////////////////////////////////
  48. class TextMarqueeCtrlClass : public DialogControlClass
  49. {
  50. public:
  51. ///////////////////////////////////////////////////////////////////
  52. // Public constructors/destructors
  53. ///////////////////////////////////////////////////////////////////
  54. TextMarqueeCtrlClass (void);
  55. ~TextMarqueeCtrlClass (void);
  56. ///////////////////////////////////////////////////////////////////
  57. // Public methods
  58. ///////////////////////////////////////////////////////////////////
  59. //
  60. // Inherited
  61. //
  62. void Render (void);
  63. void Set_Text (const WCHAR *title);
  64. //
  65. // Configuration
  66. //
  67. void Set_Scroll_Rate (float rows_per_sec) { ScrollRate = rows_per_sec; }
  68. float Get_Scroll_Rate (void) { return ScrollRate; }
  69. protected:
  70. ///////////////////////////////////////////////////////////////////
  71. // Protected classes
  72. ///////////////////////////////////////////////////////////////////
  73. typedef struct _CREDIT_LINE
  74. {
  75. _CREDIT_LINE (void) :
  76. FontIndex (0), Color (0), Height (0) {}
  77. _CREDIT_LINE (const WCHAR *text, int font_index, int color) :
  78. Text (text), FontIndex (font_index), Color (color) {}
  79. bool operator== (const _CREDIT_LINE &src) { return false; }
  80. bool operator!= (const _CREDIT_LINE &src) { return true; }
  81. WideStringClass Text;
  82. int FontIndex;
  83. int Color;
  84. float Height;
  85. } CREDIT_LINE;
  86. ///////////////////////////////////////////////////////////////////
  87. // Protected methods
  88. ///////////////////////////////////////////////////////////////////
  89. void Update_Client_Rect (void);
  90. void On_Frame_Update (void);
  91. void Create_Control_Renderer (void);
  92. void Create_Text_Renderer (void);
  93. void Calculate_Row_Count (void);
  94. int Read_Tag (const WCHAR *text, CREDIT_LINE &line);
  95. const WCHAR * Read_Line (const WCHAR *text, CREDIT_LINE &line);
  96. void Build_Credit_Lines (void);
  97. ///////////////////////////////////////////////////////////////////
  98. // Protected member data
  99. ///////////////////////////////////////////////////////////////////
  100. Render2DClass ControlRenderer;
  101. Render2DSentenceClass TextRenderers[2];
  102. float ScrollPos;
  103. int PixelHeight;
  104. float ScrollRate;
  105. DynamicVectorClass<CREDIT_LINE> CreditLines;
  106. };
  107. #endif //__TEXTMARQUEECTRL_H