UiWidget.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #ifndef UI_WIDGET_H
  2. #define UI_WIDGET_H
  3. #include <OgreColourValue.h>
  4. #include <OgreString.h>
  5. #include <OgreVector2.h>
  6. #include <vector>
  7. #include "ScriptManager.h"
  8. #include "UiAnimation.h"
  9. class UiWidget
  10. {
  11. public:
  12. UiWidget( const Ogre::String& name );
  13. UiWidget( const Ogre::String& name, const Ogre::String& path_name, UiWidget* parent );
  14. virtual ~UiWidget();
  15. void Initialise();
  16. virtual void Update();
  17. void OnResize();
  18. virtual void Render();
  19. void SetVisible( const bool visible );
  20. bool IsVisible() const;
  21. const Ogre::String& GetName() const;
  22. void AddChild( UiWidget* widget );
  23. UiWidget* GetChild( const Ogre::String& name );
  24. void RemoveAllChildren();
  25. // animation related
  26. void AddAnimation( UiAnimation* animation );
  27. const Ogre::String& GetCurrentAnimationName() const;
  28. void PlayAnimation( const Ogre::String& animation, UiAnimation::State state, const float start, const float end );
  29. void ScriptPlayAnimation( const char* name );
  30. void ScriptPlayAnimationStop( const char* name );
  31. void ScriptPlayAnimation( const char* name, const float start, const float end );
  32. void ScriptPlayAnimationStop( const char* name, const float start, const float end );
  33. void ScriptSetDefaultAnimation( const char* animation );
  34. int ScriptAnimationSync();
  35. virtual void UpdateTransformation();
  36. enum Align
  37. {
  38. LEFT,
  39. RIGHT,
  40. CENTER
  41. };
  42. enum VerticalAlign
  43. {
  44. TOP,
  45. BOTTOM,
  46. MIDDLE
  47. };
  48. void SetAlign( const UiWidget::Align align );
  49. void SetVerticalAlign( const UiWidget::VerticalAlign valign );
  50. float GetFinalZ() const;
  51. Ogre::Vector2 GetFinalOrigin() const;
  52. Ogre::Vector2 GetFinalTranslate() const;
  53. Ogre::Vector2 GetFinalSize() const;
  54. Ogre::Vector2 GetFinalScale() const;
  55. float GetFinalRotation() const;
  56. void SetOriginX( const float percent, const float x );
  57. void SetOriginY( const float percent, const float y );
  58. void SetX( const float percent, const float x );
  59. void SetY( const float percent, const float y );
  60. void SetZ( const float z );
  61. void SetWidth( const float percent, const float width );
  62. void SetHeight( const float percent, const float height );
  63. void SetScale( const Ogre::Vector2& scale );
  64. void SetRotation( const float degree );
  65. void SetScissor( bool scissor );
  66. int GetScissorTop() const;
  67. int GetScissorBottom() const;
  68. int GetScissorLeft() const;
  69. int GetScissorRight() const;
  70. void SetColour( const float r, const float g, const float b );
  71. void SetColours( const float r1, const float g1, const float b1, const float r2, const float g2, const float b2, const float r3, const float g3, const float b3, const float r4, const float g4, const float b4 );
  72. void SetAlpha( const float a );
  73. private:
  74. UiWidget();
  75. protected:
  76. Ogre::String m_Name;
  77. Ogre::String m_PathName;
  78. UiWidget* m_Parent;
  79. std::vector< UiWidget* > m_Children;
  80. float m_ScreenWidth;
  81. float m_ScreenHeight;
  82. bool m_Visible;
  83. Ogre::ColourValue m_Colour1;
  84. Ogre::ColourValue m_Colour2;
  85. Ogre::ColourValue m_Colour3;
  86. Ogre::ColourValue m_Colour4;
  87. Align m_Align;
  88. VerticalAlign m_VerticalAlign;
  89. bool m_UpdateTransformation;
  90. Ogre::Vector2 m_FinalOrigin;
  91. Ogre::Vector2 m_FinalTranslate;
  92. float m_FinalZ;
  93. Ogre::Vector2 m_FinalSize;
  94. Ogre::Vector2 m_FinalScale;
  95. float m_FinalRotation;
  96. float m_OriginXPercent;
  97. float m_OriginX;
  98. float m_OriginYPercent;
  99. float m_OriginY;
  100. float m_XPercent;
  101. float m_X;
  102. float m_YPercent;
  103. float m_Y;
  104. float m_Z;
  105. float m_WidthPercent;
  106. float m_Width;
  107. float m_HeightPercent;
  108. float m_Height;
  109. Ogre::Vector2 m_Scale;
  110. float m_Rotation;
  111. bool m_Scissor;
  112. int m_ScissorTop;
  113. int m_ScissorBottom;
  114. int m_ScissorLeft;
  115. int m_ScissorRight;
  116. UiAnimation* m_AnimationCurrent;
  117. std::vector< ScriptId > m_AnimationSync;
  118. UiAnimation::State m_AnimationState;
  119. Ogre::String m_AnimationDefault;
  120. float m_AnimationEndTime;
  121. std::vector< UiAnimation* > m_Animations;
  122. };
  123. #endif // UI_WIDGET_H