diff options
author | crupest <crupest@outlook.com> | 2022-01-24 17:52:47 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-01-24 17:52:47 +0800 |
commit | 1cc6e51838fcd5fc986dbb3e13bbb85f11a348be (patch) | |
tree | 438ed0961b708139f2c3f8429052a737e0b8e334 /include/cru/ui/mapper/style | |
parent | 6d64ac7d354831b687aee1b7450d539411648888 (diff) | |
download | cru-1cc6e51838fcd5fc986dbb3e13bbb85f11a348be.tar.gz cru-1cc6e51838fcd5fc986dbb3e13bbb85f11a348be.tar.bz2 cru-1cc6e51838fcd5fc986dbb3e13bbb85f11a348be.zip |
...
Diffstat (limited to 'include/cru/ui/mapper/style')
-rw-r--r-- | include/cru/ui/mapper/style/AndConditionMapper.hpp | 24 | ||||
-rw-r--r-- | include/cru/ui/mapper/style/FocusConditionMapper.hpp | 9 | ||||
-rw-r--r-- | include/cru/ui/mapper/style/IConditionMapper.hpp | 17 | ||||
-rw-r--r-- | include/cru/ui/mapper/style/NoConditionMapper.hpp | 9 | ||||
-rw-r--r-- | include/cru/ui/mapper/style/OrConditionMapper.hpp | 24 |
5 files changed, 81 insertions, 2 deletions
diff --git a/include/cru/ui/mapper/style/AndConditionMapper.hpp b/include/cru/ui/mapper/style/AndConditionMapper.hpp new file mode 100644 index 00000000..ef6ecdd8 --- /dev/null +++ b/include/cru/ui/mapper/style/AndConditionMapper.hpp @@ -0,0 +1,24 @@ +#pragma once +#include "../Mapper.hpp" +#include "IConditionMapper.hpp" + +namespace cru::ui::mapper::style { +class AndConditionMapper : public BasicPtrMapper<ui::style::AndCondition>, + public virtual IConditionMapper { + public: + CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(AndConditionMapper) + + public: + bool SupportMapFromXml() override { return true; } + bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + + ClonablePtr<ui::style::Condition> MapConditionFromXml( + xml::XmlElementNode* node) override { + return MapFromXml(node); + } + + protected: + ClonablePtr<ui::style::AndCondition> DoMapFromXml( + xml::XmlElementNode* node) override; +}; +} // namespace cru::ui::mapper::style diff --git a/include/cru/ui/mapper/style/FocusConditionMapper.hpp b/include/cru/ui/mapper/style/FocusConditionMapper.hpp index bf84304d..974a6739 100644 --- a/include/cru/ui/mapper/style/FocusConditionMapper.hpp +++ b/include/cru/ui/mapper/style/FocusConditionMapper.hpp @@ -1,9 +1,11 @@ #pragma once #include "../Mapper.hpp" +#include "IConditionMapper.hpp" #include "cru/ui/style/Condition.hpp" namespace cru::ui::mapper::style { -class FocusConditionMapper : public BasicPtrMapper<ui::style::FocusCondition> { +class FocusConditionMapper : public BasicPtrMapper<ui::style::FocusCondition>, + public virtual IConditionMapper { public: CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(FocusConditionMapper) @@ -11,6 +13,11 @@ class FocusConditionMapper : public BasicPtrMapper<ui::style::FocusCondition> { bool SupportMapFromXml() override { return true; } bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + ClonablePtr<ui::style::Condition> MapConditionFromXml( + xml::XmlElementNode* node) override { + return MapFromXml(node); + } + protected: ClonablePtr<ui::style::FocusCondition> DoMapFromXml( xml::XmlElementNode* node) override; diff --git a/include/cru/ui/mapper/style/IConditionMapper.hpp b/include/cru/ui/mapper/style/IConditionMapper.hpp new file mode 100644 index 00000000..f5d7ad1e --- /dev/null +++ b/include/cru/ui/mapper/style/IConditionMapper.hpp @@ -0,0 +1,17 @@ +#pragma once +#include "../../Base.hpp" +#include "cru/common/ClonablePtr.hpp" +#include "cru/ui/mapper/Mapper.hpp" +#include "cru/ui/style/Condition.hpp" +#include "cru/xml/XmlNode.hpp" + +namespace cru::ui::mapper::style { +struct IConditionMapper : virtual Interface { + bool XmlElementIsOfThisType(xml::XmlElementNode* node) { + return dynamic_cast<MapperBase*>(this)->XmlElementIsOfThisType(node); + } + + virtual ClonablePtr<ui::style::Condition> MapConditionFromXml( + xml::XmlElementNode* node) = 0; +}; +} // namespace cru::ui::mapper::style diff --git a/include/cru/ui/mapper/style/NoConditionMapper.hpp b/include/cru/ui/mapper/style/NoConditionMapper.hpp index 21d186b5..79985e89 100644 --- a/include/cru/ui/mapper/style/NoConditionMapper.hpp +++ b/include/cru/ui/mapper/style/NoConditionMapper.hpp @@ -1,12 +1,14 @@ #pragma once #include "../Mapper.hpp" +#include "IConditionMapper.hpp" #include "cru/common/Base.hpp" #include "cru/common/ClonablePtr.hpp" #include "cru/ui/style/Condition.hpp" #include "cru/xml/XmlNode.hpp" namespace cru::ui::mapper::style { -class NoConditionMapper : public BasicPtrMapper<ui::style::NoCondition> { +class NoConditionMapper : public BasicPtrMapper<ui::style::NoCondition>, + public virtual IConditionMapper { public: CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(NoConditionMapper) @@ -14,6 +16,11 @@ class NoConditionMapper : public BasicPtrMapper<ui::style::NoCondition> { bool SupportMapFromXml() override { return true; } bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + ClonablePtr<ui::style::Condition> MapConditionFromXml( + xml::XmlElementNode* node) override { + return MapFromXml(node); + } + protected: ClonablePtr<ui::style::NoCondition> DoMapFromXml( xml::XmlElementNode* node) override; diff --git a/include/cru/ui/mapper/style/OrConditionMapper.hpp b/include/cru/ui/mapper/style/OrConditionMapper.hpp new file mode 100644 index 00000000..252d8340 --- /dev/null +++ b/include/cru/ui/mapper/style/OrConditionMapper.hpp @@ -0,0 +1,24 @@ +#pragma once +#include "../Mapper.hpp" +#include "IConditionMapper.hpp" + +namespace cru::ui::mapper::style { +class OrConditionMapper : public BasicPtrMapper<ui::style::OrCondition>, + public virtual IConditionMapper { + public: + CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(OrConditionMapper) + + public: + bool SupportMapFromXml() override { return true; } + bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + + ClonablePtr<ui::style::Condition> MapConditionFromXml( + xml::XmlElementNode* node) override { + return MapFromXml(node); + } + + protected: + ClonablePtr<ui::style::OrCondition> DoMapFromXml( + xml::XmlElementNode* node) override; +}; +} // namespace cru::ui::mapper::style |