#pragma once #include #include "Label.hpp" #include "Panel.hpp" namespace gui { class CheckBox : public UINode { protected: glm::vec4 checkColor {1.0f, 1.0f, 1.0f, 0.4f}; boolsupplier supplier = nullptr; boolconsumer consumer = nullptr; bool checked = false; public: explicit CheckBox(GUI& gui, bool checked = false); virtual void draw(const DrawContext& pctx, const Assets& assets) override; virtual void mouseRelease(int x, int y) override; virtual void setSupplier(boolsupplier supplier); virtual void setConsumer(boolconsumer consumer); virtual CheckBox* setChecked(bool flag); virtual bool isChecked() const { if (supplier) return supplier(); return checked; } }; class FullCheckBox : public Panel { protected: std::shared_ptr checkbox; std::shared_ptr