aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ui/control.h3
-rw-r--r--src/ui/controls/button.cpp5
-rw-r--r--src/ui/controls/button.h4
-rw-r--r--src/ui/controls/linear_layout.cpp5
-rw-r--r--src/ui/controls/linear_layout.h4
-rw-r--r--src/ui/controls/text_block.cpp5
-rw-r--r--src/ui/controls/text_block.h56
-rw-r--r--src/ui/controls/text_box.cpp5
-rw-r--r--src/ui/controls/text_box.h4
-rw-r--r--src/ui/controls/toggle_button.cpp5
-rw-r--r--src/ui/controls/toggle_button.h4
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