diff options
-rw-r--r-- | include/cru/ui/style/Styler.hpp | 12 | ||||
-rw-r--r-- | src/ui/style/Styler.cpp | 15 |
2 files changed, 25 insertions, 2 deletions
diff --git a/include/cru/ui/style/Styler.hpp b/include/cru/ui/style/Styler.hpp index 0b48f1ce..89731033 100644 --- a/include/cru/ui/style/Styler.hpp +++ b/include/cru/ui/style/Styler.hpp @@ -1,13 +1,21 @@ #pragma once #include "../Base.hpp" +#include "ApplyBorderStyleInfo.hpp" #include "cru/common/Base.hpp" -#include <optional> - namespace cru::ui::style { class Styler : public Object { public: virtual void Apply(controls::Control* control) const; }; +class BorderStyler : public Styler { + public: + explicit BorderStyler(ApplyBorderStyleInfo style); + + void Apply(controls::Control* control) const override; + + private: + ApplyBorderStyleInfo style_; +}; } // namespace cru::ui::style diff --git a/src/ui/style/Styler.cpp b/src/ui/style/Styler.cpp index e69de29b..823ac718 100644 --- a/src/ui/style/Styler.cpp +++ b/src/ui/style/Styler.cpp @@ -0,0 +1,15 @@ +#include "cru/ui/style/Styler.hpp" +#include "cru/ui/controls/Control.hpp" +#include "cru/ui/controls/IBorderControl.hpp" +#include "cru/ui/style/ApplyBorderStyleInfo.hpp" + +namespace cru::ui::style { +BorderStyler::BorderStyler(ApplyBorderStyleInfo style) + : style_(std::move(style)) {} + +void BorderStyler::Apply(controls::Control *control) const { + if (auto border_control = dynamic_cast<controls::IBorderControl *>(control)) { + border_control->ApplyBorderStyle(style_); + } +} +} // namespace cru::ui::style |