2
0

UICheckBox.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <UI/UIStaticText.h>
  6. #include <UI/UITexturedQuad.h>
  7. /// Check box control that allows the user to select between true or false
  8. class UICheckBox : public UIStaticText
  9. {
  10. public:
  11. JPH_DECLARE_RTTI_VIRTUAL(JPH_NO_EXPORT, UICheckBox)
  12. enum EState
  13. {
  14. STATE_UNCHECKED,
  15. STATE_CHECKED
  16. };
  17. using ClickAction = function<void(EState)>;
  18. /// Properties
  19. void SetState(EState inState) { mState = inState; }
  20. EState GetState() const { return mState; }
  21. void SetClickAction(ClickAction inAction) { mClickAction = inAction; }
  22. void SetUncheckedStateQuad(const UITexturedQuad &inQuad) { mUncheckedState = inQuad; }
  23. void SetCheckedStateQuad(const UITexturedQuad &inQuad) { mCheckedState = inQuad; }
  24. /// When added to a parent
  25. virtual void OnAdded() override;
  26. /// Cloning / copying
  27. virtual void CopyTo(UIElement *ioElement) const override;
  28. /// Actions
  29. virtual bool MouseDown(int inX, int inY) override;
  30. virtual bool MouseUp(int inX, int inY) override;
  31. virtual bool MouseMove(int inX, int inY) override;
  32. virtual void MouseCancel() override;
  33. /// Draw element
  34. virtual void Draw() const override;
  35. protected:
  36. /// Properties
  37. Color mDownTextColor { Color::sGrey };
  38. Color mHighlightTextColor { Color::sWhite };
  39. int mPaddingBetweenCheckboxAndText = 8;
  40. ClickAction mClickAction;
  41. UITexturedQuad mUncheckedState;
  42. UITexturedQuad mCheckedState;
  43. /// State
  44. EState mState = STATE_UNCHECKED;
  45. bool mPressed = false;
  46. };