aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2018-11-19 23:56:00 +0800
committerGitHub <noreply@github.com>2018-11-19 23:56:00 +0800
commit30333294fcd5917a9f3572f0c4c6dfc2ec429a3c (patch)
tree7d5d91ba4a0d979ceefea05bbe99efc47a9bf6a3 /src/ui
parent3edc249f48b4d7e692c782c1ca4809e07fa0726f (diff)
parent5291b587708b7f1b9be9187aa4df99ea2cfe0538 (diff)
downloadcru-30333294fcd5917a9f3572f0c4c6dfc2ec429a3c.tar.gz
cru-30333294fcd5917a9f3572f0c4c6dfc2ec429a3c.tar.bz2
cru-30333294fcd5917a9f3572f0c4c6dfc2ec429a3c.zip
Merge pull request #23 from crupest/20-framelayout
Add FrameLayout.
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/controls/frame_layout.cpp16
-rw-r--r--src/ui/controls/frame_layout.hpp33
-rw-r--r--src/ui/ui_base.hpp15
3 files changed, 64 insertions, 0 deletions
diff --git a/src/ui/controls/frame_layout.cpp b/src/ui/controls/frame_layout.cpp
new file mode 100644
index 00000000..32d25edc
--- /dev/null
+++ b/src/ui/controls/frame_layout.cpp
@@ -0,0 +1,16 @@
+#include "frame_layout.hpp"
+
+namespace cru::ui::controls
+{
+ FrameLayout::FrameLayout() : Control(true)
+ {
+
+ }
+
+ FrameLayout::~FrameLayout() = default;
+
+ StringView FrameLayout::GetControlType() const
+ {
+ return control_type;
+ }
+}
diff --git a/src/ui/controls/frame_layout.hpp b/src/ui/controls/frame_layout.hpp
new file mode 100644
index 00000000..ca022780
--- /dev/null
+++ b/src/ui/controls/frame_layout.hpp
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <initializer_list>
+
+#include "ui/control.hpp"
+
+namespace cru::ui::controls
+{
+ class FrameLayout : public Control
+ {
+ public:
+ static constexpr auto control_type = L"FrameLayout";
+
+ static FrameLayout* Create(const std::initializer_list<Control*>& children = std::initializer_list<Control*>{})
+ {
+ const auto layout = new FrameLayout();
+ for (auto child : children)
+ layout->AddChild(child);
+ return layout;
+ }
+
+ protected:
+ FrameLayout();
+ public:
+ FrameLayout(const FrameLayout& other) = delete;
+ FrameLayout(FrameLayout&& other) = delete;
+ FrameLayout& operator=(const FrameLayout& other) = delete;
+ FrameLayout& operator=(FrameLayout&& other) = delete;
+ ~FrameLayout() override;
+
+ StringView GetControlType() const override final;
+ };
+}
diff --git a/src/ui/ui_base.hpp b/src/ui/ui_base.hpp
index c20d44b6..d9c9d0b2 100644
--- a/src/ui/ui_base.hpp
+++ b/src/ui/ui_base.hpp
@@ -91,6 +91,21 @@ namespace cru::ui
return top + bottom;
}
+ void SetLeftRight(const float value)
+ {
+ left = right = value;
+ }
+
+ void SetTopBottom(const float value)
+ {
+ top = bottom = value;
+ }
+
+ void SetAll(const float value)
+ {
+ left = top = right = bottom = value;
+ }
+
float Validate() const
{
return left >= 0.0 && top >= 0.0 && right >= 0.0 && bottom >= 0.0;