#pragma once #include "Element.hpp" namespace GUIStuff { class CheckBox : public Element { public: CheckBox(GUIManager& gui); virtual void clay_draw(SkCanvas* canvas, UpdateInputData& io, Clay_RenderCommand* command, bool skiaAA) override; virtual void input_mouse_button_callback(const InputManager::MouseButtonCallbackArgs& button) override; virtual void input_finger_touch_callback(const InputManager::FingerTouchCallbackArgs& touch) override; virtual void update() override; void layout(const Clay_ElementId& id, const std::function& isTicked, const std::function& onClick); private: static constexpr float CHECKBOX_ANIMATION_TIME = 0.3; float hoverAnimation = 0.0; bool oldIsTicked = false; bool isHeld = false; bool is_hovering_animation(); std::function isTicked; std::function onClick; }; }