diff options
Diffstat (limited to 'include/cru/ui/controls')
-rw-r--r-- | include/cru/ui/controls/flex_layout.hpp | 5 | ||||
-rw-r--r-- | include/cru/ui/controls/stack_layout.hpp | 37 | ||||
-rw-r--r-- | include/cru/ui/controls/text_box.hpp | 20 |
3 files changed, 58 insertions, 4 deletions
diff --git a/include/cru/ui/controls/flex_layout.hpp b/include/cru/ui/controls/flex_layout.hpp index ff8ec53b..7861534a 100644 --- a/include/cru/ui/controls/flex_layout.hpp +++ b/include/cru/ui/controls/flex_layout.hpp @@ -2,7 +2,6 @@ #include "../layout_control.hpp" #include "../render/flex_layout_render_object.hpp" -#include "../window.hpp" #include <memory> @@ -29,9 +28,7 @@ class FlexLayout : public LayoutControl { FlexLayout& operator=(FlexLayout&& other) = delete; ~FlexLayout() override = default; - std::string_view GetControlType() const final { - return control_type; - } + std::string_view GetControlType() const final { return control_type; } render::RenderObject* GetRenderObject() const override; diff --git a/include/cru/ui/controls/stack_layout.hpp b/include/cru/ui/controls/stack_layout.hpp new file mode 100644 index 00000000..298de089 --- /dev/null +++ b/include/cru/ui/controls/stack_layout.hpp @@ -0,0 +1,37 @@ +#pragma once +#include "../layout_control.hpp" + +#include <memory> + +namespace cru::ui::render { +class StackLayoutRenderObject; +} + +namespace cru::ui::controls { +class StackLayout : public LayoutControl { + public: + static constexpr std::string_view control_type = "StackLayout"; + + static StackLayout* Create() { return new StackLayout(); } + + protected: + StackLayout(); + + public: + CRU_DELETE_COPY(StackLayout) + CRU_DELETE_MOVE(StackLayout) + + ~StackLayout() override; + + std::string_view GetControlType() const final { return control_type; } + + render::RenderObject* GetRenderObject() const override; + + protected: + void OnAddChild(Control* child, int position) override; + void OnRemoveChild(Control* child, int position) override; + + private: + std::shared_ptr<render::StackLayoutRenderObject> render_object_; +}; +} // namespace cru::ui::controls diff --git a/include/cru/ui/controls/text_box.hpp b/include/cru/ui/controls/text_box.hpp new file mode 100644 index 00000000..48168e9d --- /dev/null +++ b/include/cru/ui/controls/text_box.hpp @@ -0,0 +1,20 @@ +#pragma once +#include "../no_child_control.hpp" + +namespace cru::ui::controls { +class TextBox : public NoChildControl { + public: + static constexpr std::string_view control_type = "TextBox"; + + protected: + TextBox(); + + public: + CRU_DELETE_COPY(TextBox) + CRU_DELETE_MOVE(TextBox) + + ~TextBox() override; + + std::string_view GetControlType() const final { return control_type; } +}; +} // namespace cru::ui::controls |