diff options
author | crupest <crupest@outlook.com> | 2022-01-22 22:22:45 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-01-22 22:22:45 +0800 |
commit | 14d9efc39635dab2c6c0f791d6b0a63c92d941ee (patch) | |
tree | 0e974083611d5725a2135928749026ac237884f4 /include/cru/ui | |
parent | 0e71e7022ee4cfec5b27e178ee1bb7d6977f6b3e (diff) | |
download | cru-14d9efc39635dab2c6c0f791d6b0a63c92d941ee.tar.gz cru-14d9efc39635dab2c6c0f791d6b0a63c92d941ee.tar.bz2 cru-14d9efc39635dab2c6c0f791d6b0a63c92d941ee.zip |
...
Diffstat (limited to 'include/cru/ui')
-rw-r--r-- | include/cru/ui/mapper/BorderStyleMapper.hpp (renamed from include/cru/ui/mapper/style/BorderStyleMapper.hpp) | 8 | ||||
-rw-r--r-- | include/cru/ui/mapper/ColorMapper.hpp | 4 | ||||
-rw-r--r-- | include/cru/ui/mapper/CornerRadiusMapper.hpp | 3 | ||||
-rw-r--r-- | include/cru/ui/mapper/CursorMapper.hpp | 5 | ||||
-rw-r--r-- | include/cru/ui/mapper/Mapper.hpp | 14 | ||||
-rw-r--r-- | include/cru/ui/mapper/PointMapper.hpp | 4 | ||||
-rw-r--r-- | include/cru/ui/mapper/SizeMapper.hpp | 4 | ||||
-rw-r--r-- | include/cru/ui/mapper/ThicknessMapper.hpp | 4 | ||||
-rw-r--r-- | include/cru/ui/style/ApplyBorderStyleInfo.hpp | 5 |
9 files changed, 29 insertions, 22 deletions
diff --git a/include/cru/ui/mapper/style/BorderStyleMapper.hpp b/include/cru/ui/mapper/BorderStyleMapper.hpp index 40a3e883..4d9ae774 100644 --- a/include/cru/ui/mapper/style/BorderStyleMapper.hpp +++ b/include/cru/ui/mapper/BorderStyleMapper.hpp @@ -1,9 +1,9 @@ #pragma once -#include "../Mapper.hpp" +#include "Mapper.hpp" #include "cru/ui/style/ApplyBorderStyleInfo.hpp" #include "cru/xml/XmlNode.hpp" -namespace cru::ui::mapper::style { +namespace cru::ui::mapper { class CRU_UI_API BorderStyleMapper : BasicMapper<ui::style::ApplyBorderStyleInfo> { public: @@ -14,7 +14,7 @@ class CRU_UI_API BorderStyleMapper bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; protected: - std::unique_ptr<ui::style::ApplyBorderStyleInfo> DoMapFromXml( + ui::style::ApplyBorderStyleInfo DoMapFromXml( xml::XmlElementNode* node) override; }; -} // namespace cru::ui::mapper::style +} // namespace cru::ui::mapper diff --git a/include/cru/ui/mapper/ColorMapper.hpp b/include/cru/ui/mapper/ColorMapper.hpp index 33333025..668a4fc2 100644 --- a/include/cru/ui/mapper/ColorMapper.hpp +++ b/include/cru/ui/mapper/ColorMapper.hpp @@ -13,7 +13,7 @@ class ColorMapper : public BasicMapper<Color> { bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; protected: - std::unique_ptr<Color> DoMapFromString(String str) override; - std::unique_ptr<Color> DoMapFromXml(xml::XmlElementNode* node) override; + Color DoMapFromString(String str) override; + Color DoMapFromXml(xml::XmlElementNode* node) override; }; } // namespace cru::ui::mapper diff --git a/include/cru/ui/mapper/CornerRadiusMapper.hpp b/include/cru/ui/mapper/CornerRadiusMapper.hpp index b9fe6a52..4d83f2de 100644 --- a/include/cru/ui/mapper/CornerRadiusMapper.hpp +++ b/include/cru/ui/mapper/CornerRadiusMapper.hpp @@ -12,7 +12,6 @@ class CRU_UI_API CornerRadiusMapper : public BasicMapper<CornerRadius> { bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; protected: - std::unique_ptr<CornerRadius> DoMapFromXml( - xml::XmlElementNode* node) override; + CornerRadius DoMapFromXml(xml::XmlElementNode* node) override; }; } // namespace cru::ui::mapper diff --git a/include/cru/ui/mapper/CursorMapper.hpp b/include/cru/ui/mapper/CursorMapper.hpp new file mode 100644 index 00000000..b4254061 --- /dev/null +++ b/include/cru/ui/mapper/CursorMapper.hpp @@ -0,0 +1,5 @@ +#pragma once +#include "Mapper.hpp" +#include "cru/platform/gui/Cursor.hpp" + +namespace cru::ui::mapper::style {} diff --git a/include/cru/ui/mapper/Mapper.hpp b/include/cru/ui/mapper/Mapper.hpp index 79aa39aa..d15b63aa 100644 --- a/include/cru/ui/mapper/Mapper.hpp +++ b/include/cru/ui/mapper/Mapper.hpp @@ -5,6 +5,7 @@ #include "cru/common/Exception.hpp" #include "cru/xml/XmlNode.hpp" +#include <type_traits> #include <typeindex> #include <typeinfo> @@ -41,6 +42,9 @@ class CRU_UI_API MapperBase : public Object { template <typename T> class CRU_UI_API BasicMapper : public MapperBase { public: + static_assert(std::is_default_constructible_v<T>, + "T must be default constructible."); + BasicMapper() : MapperBase(typeid(T)) {} CRU_DELETE_COPY(BasicMapper) @@ -49,7 +53,7 @@ class CRU_UI_API BasicMapper : public MapperBase { ~BasicMapper() override = default; virtual bool SupportMapFromString() { return false; } - virtual std::unique_ptr<T> MapFromString(String str) { + virtual T MapFromString(String str) { if (!SupportMapFromString()) { throw Exception(u"This mapper does not support map from string."); } @@ -61,7 +65,7 @@ class CRU_UI_API BasicMapper : public MapperBase { virtual bool XmlElementIsOfThisType(xml::XmlElementNode* node) { return false; } - std::unique_ptr<T> MapFromXml(xml::XmlElementNode* node) { + T MapFromXml(xml::XmlElementNode* node) { if (!SupportMapFromXml()) { throw new Exception(u"This mapper does not support map from xml."); } @@ -74,9 +78,7 @@ class CRU_UI_API BasicMapper : public MapperBase { } protected: - virtual std::unique_ptr<T> DoMapFromString(String str) { return nullptr; } - virtual std::unique_ptr<T> DoMapFromXml(xml::XmlElementNode* node) { - return nullptr; - } + virtual T DoMapFromString(String str) { return {}; } + virtual T DoMapFromXml(xml::XmlElementNode* node) { return {}; } }; } // namespace cru::ui::mapper diff --git a/include/cru/ui/mapper/PointMapper.hpp b/include/cru/ui/mapper/PointMapper.hpp index 5641af01..b1837fe1 100644 --- a/include/cru/ui/mapper/PointMapper.hpp +++ b/include/cru/ui/mapper/PointMapper.hpp @@ -12,7 +12,7 @@ class CRU_UI_API PointMapper : public BasicMapper<Point> { bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; protected: - std::unique_ptr<Point> DoMapFromString(String str) override; - std::unique_ptr<Point> DoMapFromXml(xml::XmlElementNode* node) override; + Point DoMapFromString(String str) override; + Point DoMapFromXml(xml::XmlElementNode* node) override; }; } // namespace cru::ui::mapper diff --git a/include/cru/ui/mapper/SizeMapper.hpp b/include/cru/ui/mapper/SizeMapper.hpp index 20558bf4..6ab4b97d 100644 --- a/include/cru/ui/mapper/SizeMapper.hpp +++ b/include/cru/ui/mapper/SizeMapper.hpp @@ -12,7 +12,7 @@ class CRU_UI_API SizeMapper : public BasicMapper<Size> { bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; protected: - std::unique_ptr<Size> DoMapFromString(String str) override; - std::unique_ptr<Size> DoMapFromXml(xml::XmlElementNode* node) override; + Size DoMapFromString(String str) override; + Size DoMapFromXml(xml::XmlElementNode* node) override; }; } // namespace cru::ui::mapper diff --git a/include/cru/ui/mapper/ThicknessMapper.hpp b/include/cru/ui/mapper/ThicknessMapper.hpp index 68bbcf49..4ffbeb9b 100644 --- a/include/cru/ui/mapper/ThicknessMapper.hpp +++ b/include/cru/ui/mapper/ThicknessMapper.hpp @@ -16,7 +16,7 @@ class CRU_UI_API ThicknessMapper : public BasicMapper<Thickness> { bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; protected: - std::unique_ptr<Thickness> DoMapFromString(String str) override; - std::unique_ptr<Thickness> DoMapFromXml(xml::XmlElementNode* node) override; + Thickness DoMapFromString(String str) override; + Thickness DoMapFromXml(xml::XmlElementNode* node) override; }; } // namespace cru::ui::mapper diff --git a/include/cru/ui/style/ApplyBorderStyleInfo.hpp b/include/cru/ui/style/ApplyBorderStyleInfo.hpp index 3923ebb4..7ae5b2c5 100644 --- a/include/cru/ui/style/ApplyBorderStyleInfo.hpp +++ b/include/cru/ui/style/ApplyBorderStyleInfo.hpp @@ -5,9 +5,10 @@ namespace cru::ui::style { struct ApplyBorderStyleInfo { + ApplyBorderStyleInfo() = default; + explicit ApplyBorderStyleInfo( - std::optional<std::shared_ptr<platform::graphics::IBrush>> border_brush = - std::nullopt, + std::optional<std::shared_ptr<platform::graphics::IBrush>> border_brush, std::optional<Thickness> border_thickness = std::nullopt, std::optional<CornerRadius> border_radius = std::nullopt, std::optional<std::shared_ptr<platform::graphics::IBrush>> |