diff options
-rw-r--r-- | src/ui/control.h | 3 | ||||
-rw-r--r-- | src/ui/controls/button.cpp | 5 | ||||
-rw-r--r-- | src/ui/controls/button.h | 4 | ||||
-rw-r--r-- | src/ui/controls/linear_layout.cpp | 5 | ||||
-rw-r--r-- | src/ui/controls/linear_layout.h | 4 | ||||
-rw-r--r-- | src/ui/controls/text_block.cpp | 5 | ||||
-rw-r--r-- | src/ui/controls/text_block.h | 56 | ||||
-rw-r--r-- | src/ui/controls/text_box.cpp | 5 | ||||
-rw-r--r-- | src/ui/controls/text_box.h | 4 | ||||
-rw-r--r-- | src/ui/controls/toggle_button.cpp | 5 | ||||
-rw-r--r-- | src/ui/controls/toggle_button.h | 4 |
11 files changed, 69 insertions, 31 deletions
diff --git a/src/ui/control.h b/src/ui/control.h index 25cd5c0a..a9dbc7a4 100644 --- a/src/ui/control.h +++ b/src/ui/control.h @@ -63,8 +63,7 @@ namespace cru public: //*************** region: tree *************** - //TODO! - //virtual StringView GetControlType() const = 0; + virtual StringView GetControlType() const = 0; bool IsContainer() const { diff --git a/src/ui/controls/button.cpp b/src/ui/controls/button.cpp index e600eb89..6c1024c4 100644 --- a/src/ui/controls/button.cpp +++ b/src/ui/controls/button.cpp @@ -22,6 +22,11 @@ namespace cru::ui::controls GetBorderProperty() = normal_border_; } + StringView Button::GetControlType() const + { + return control_type; + } + void Button::OnMouseClickBegin(MouseButton button) { GetBorderProperty() = pressed_border_; diff --git a/src/ui/controls/button.h b/src/ui/controls/button.h index e0ece85a..f50a6cbd 100644 --- a/src/ui/controls/button.h +++ b/src/ui/controls/button.h @@ -9,6 +9,8 @@ namespace cru::ui::controls class Button : public Control { public: + static constexpr auto control_type = L"Button"; + static Button* Create(const std::initializer_list<Control*>& children = std::initializer_list<Control*>()) { const auto button = new Button(); @@ -27,6 +29,8 @@ namespace cru::ui::controls Button& operator=(Button&& other) = delete; ~Button() override = default; + StringView GetControlType() const override final; + protected: void OnMouseClickBegin(MouseButton button) override final; void OnMouseClickEnd(MouseButton button) override final; diff --git a/src/ui/controls/linear_layout.cpp b/src/ui/controls/linear_layout.cpp index fb5d3db7..c23957ed 100644 --- a/src/ui/controls/linear_layout.cpp +++ b/src/ui/controls/linear_layout.cpp @@ -20,6 +20,11 @@ namespace cru::ui::controls return Size(AtLeast0(size.width), AtLeast0(size.height)); } + StringView LinearLayout::GetControlType() const + { + return control_type; + } + Size LinearLayout::OnMeasureContent(const Size& available_size) { auto rest_available_size_for_children = available_size; diff --git a/src/ui/controls/linear_layout.h b/src/ui/controls/linear_layout.h index 997f28ea..1c2232bb 100644 --- a/src/ui/controls/linear_layout.h +++ b/src/ui/controls/linear_layout.h @@ -7,6 +7,8 @@ namespace cru::ui::controls class LinearLayout : public Control { public: + static constexpr auto control_type = L"LinearLayout"; + enum class Orientation { Horizontal, @@ -31,6 +33,8 @@ namespace cru::ui::controls LinearLayout& operator=(LinearLayout&& other) = delete; ~LinearLayout() override = default; + StringView GetControlType() const override final; + protected: Size OnMeasureContent(const Size& available_size) override; void OnLayoutContent(const Rect& rect) override; diff --git a/src/ui/controls/text_block.cpp b/src/ui/controls/text_block.cpp index ecffb69e..7c52684d 100644 --- a/src/ui/controls/text_block.cpp +++ b/src/ui/controls/text_block.cpp @@ -13,6 +13,11 @@ namespace cru { } + + StringView TextBlock::GetControlType() const + { + return control_type; + } } } } diff --git a/src/ui/controls/text_block.h b/src/ui/controls/text_block.h index c307fd2f..cd0af1cc 100644 --- a/src/ui/controls/text_block.h +++ b/src/ui/controls/text_block.h @@ -2,37 +2,35 @@ #include "text_control.h" -namespace cru +namespace cru::ui::controls { - namespace ui + class TextBlock : public TextControl { - namespace controls - { - class TextBlock : public TextControl - { - public: - static TextBlock* Create( - const String& text = L"", - const Microsoft::WRL::ComPtr<IDWriteTextFormat>& init_text_format = nullptr, - const Microsoft::WRL::ComPtr<ID2D1Brush>& init_brush = nullptr) - { - const auto text_block = new TextBlock(init_text_format, init_brush); - text_block->SetText(text); - return text_block; - } + public: + static constexpr auto control_type = L"TextBlock"; - protected: - TextBlock( - const Microsoft::WRL::ComPtr<IDWriteTextFormat>& init_text_format, - const Microsoft::WRL::ComPtr<ID2D1Brush>& init_brush - ); - public: - TextBlock(const TextBlock& other) = delete; - TextBlock(TextBlock&& other) = delete; - TextBlock& operator=(const TextBlock& other) = delete; - TextBlock& operator=(TextBlock&& other) = delete; - ~TextBlock() override = default; - }; + static TextBlock* Create( + const String& text = L"", + const Microsoft::WRL::ComPtr<IDWriteTextFormat>& init_text_format = nullptr, + const Microsoft::WRL::ComPtr<ID2D1Brush>& init_brush = nullptr) + { + const auto text_block = new TextBlock(init_text_format, init_brush); + text_block->SetText(text); + return text_block; } - } + + protected: + TextBlock( + const Microsoft::WRL::ComPtr<IDWriteTextFormat>& init_text_format, + const Microsoft::WRL::ComPtr<ID2D1Brush>& init_brush + ); + public: + TextBlock(const TextBlock& other) = delete; + TextBlock(TextBlock&& other) = delete; + TextBlock& operator=(const TextBlock& other) = delete; + TextBlock& operator=(TextBlock&& other) = delete; + ~TextBlock() override = default; + + StringView GetControlType() const override final; + }; } diff --git a/src/ui/controls/text_box.cpp b/src/ui/controls/text_box.cpp index d6c3d132..a132ba67 100644 --- a/src/ui/controls/text_box.cpp +++ b/src/ui/controls/text_box.cpp @@ -27,6 +27,11 @@ namespace cru::ui::controls TextBox::~TextBox() = default; + StringView TextBox::GetControlType() const + { + return control_type; + } + void TextBox::OnDrawContent(ID2D1DeviceContext* device_context) { TextControl::OnDrawContent(device_context); diff --git a/src/ui/controls/text_box.h b/src/ui/controls/text_box.h index a2f4e6e8..85a5942d 100644 --- a/src/ui/controls/text_box.h +++ b/src/ui/controls/text_box.h @@ -8,6 +8,8 @@ namespace cru::ui::controls class TextBox : public TextControl { public: + static constexpr auto control_type = L"TextBox"; + static TextBox* Create( const Microsoft::WRL::ComPtr<IDWriteTextFormat>& init_text_format = nullptr, const Microsoft::WRL::ComPtr<ID2D1Brush>& init_brush = nullptr) @@ -27,6 +29,8 @@ namespace cru::ui::controls TextBox& operator=(TextBox&& other) = delete; ~TextBox() override; + StringView GetControlType() const override final; + protected: void OnDrawContent(ID2D1DeviceContext* device_context) override; diff --git a/src/ui/controls/toggle_button.cpp b/src/ui/controls/toggle_button.cpp index c0244bb6..9bcd7a26 100644 --- a/src/ui/controls/toggle_button.cpp +++ b/src/ui/controls/toggle_button.cpp @@ -28,6 +28,11 @@ namespace cru::ui::controls return D2D1::Point2F(point.x, point.y); } + StringView ToggleButton::GetControlType() const + { + return control_type; + } + bool ToggleButton::IsPointInside(const Point& point) { const auto size = GetSize(); diff --git a/src/ui/controls/toggle_button.h b/src/ui/controls/toggle_button.h index 90bbd49b..6f3683de 100644 --- a/src/ui/controls/toggle_button.h +++ b/src/ui/controls/toggle_button.h @@ -7,6 +7,8 @@ namespace cru::ui::controls class ToggleButton : public Control { public: + static constexpr auto control_type = L"ToggleButton"; + static ToggleButton* Create() { return new ToggleButton(); @@ -22,6 +24,8 @@ namespace cru::ui::controls ToggleButton& operator=(ToggleButton&& other) = delete; ~ToggleButton() override = default; + StringView GetControlType() const override final; + bool IsPointInside(const Point& point) override; bool GetState() const |