BsGUIButtonBase.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #pragma once
  2. #include "BsPrerequisites.h"
  3. #include "BsGUIElement.h"
  4. #include "BsImageSprite.h"
  5. #include "BsTextSprite.h"
  6. #include "BsGUIContent.h"
  7. #include "boost/signal.hpp"
  8. namespace BansheeEngine
  9. {
  10. enum class GUIButtonState
  11. {
  12. Normal = 0x01,
  13. Hover = 0x02,
  14. Active = 0x04,
  15. Focused = 0x08,
  16. NormalOn = 0x11,
  17. HoverOn = 0x12,
  18. ActiveOn = 0x14,
  19. FocusedOn = 0x18
  20. };
  21. class BS_EXPORT GUIButtonBase : public GUIElement
  22. {
  23. public:
  24. void setContent(const GUIContent& content);
  25. void _setOn(bool on);
  26. bool _isOn() const;
  27. boost::signal<void()> onClick;
  28. boost::signal<void()> onHover;
  29. boost::signal<void()> onOut;
  30. protected:
  31. GUIButtonBase(GUIWidget& parent, const GUIElementStyle* style, const GUIContent& content, const GUILayoutOptions& layoutOptions);
  32. virtual ~GUIButtonBase();
  33. /**
  34. * @copydoc GUIElement::getNumRenderElements()
  35. */
  36. virtual CM::UINT32 getNumRenderElements() const;
  37. /**
  38. * @copydoc GUIElement::getMaterial()
  39. */
  40. virtual const GUIMaterialInfo& getMaterial(CM::UINT32 renderElementIdx) const;
  41. /**
  42. * @copydoc GUIElement::getNumQuads()
  43. */
  44. virtual CM::UINT32 getNumQuads(CM::UINT32 renderElementIdx) const;
  45. /**
  46. * @copydoc GUIElement::fillBuffer()
  47. */
  48. virtual void fillBuffer(CM::UINT8* vertices, CM::UINT8* uv, CM::UINT32* indices, CM::UINT32 startingQuad,
  49. CM::UINT32 maxNumQuads, CM::UINT32 vertexStride, CM::UINT32 indexStride, CM::UINT32 renderElementIdx) const;
  50. /**
  51. * @copydoc GUIElement::updateRenderElementsInternal()
  52. */
  53. virtual void updateRenderElementsInternal();
  54. /**
  55. * @copydoc GUIElement::updateBounds()
  56. */
  57. virtual void updateClippedBounds();
  58. virtual bool mouseEvent(const GUIMouseEvent& ev);
  59. virtual CM::Int2 _getOptimalSize() const;
  60. virtual CM::UINT32 _getRenderElementDepth(CM::UINT32 renderElementIdx) const;
  61. TEXT_SPRITE_DESC getTextDesc() const;
  62. void setState(GUIButtonState state);
  63. private:
  64. ImageSprite* mImageSprite;
  65. ImageSprite* mContentImageSprite;
  66. TextSprite* mTextSprite;
  67. GUIButtonState mActiveState;
  68. IMAGE_SPRITE_DESC mImageDesc;
  69. GUIContent mContent;
  70. boost::signals::connection mLocStringUpdatedConn;
  71. };
  72. }