From 1cc6e51838fcd5fc986dbb3e13bbb85f11a348be Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 24 Jan 2022 17:52:47 +0800 Subject: ... --- include/cru/ui/mapper/style/AndConditionMapper.hpp | 24 ++++++++++++++++++++++ .../cru/ui/mapper/style/FocusConditionMapper.hpp | 9 +++++++- include/cru/ui/mapper/style/IConditionMapper.hpp | 17 +++++++++++++++ include/cru/ui/mapper/style/NoConditionMapper.hpp | 9 +++++++- include/cru/ui/mapper/style/OrConditionMapper.hpp | 24 ++++++++++++++++++++++ 5 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 include/cru/ui/mapper/style/AndConditionMapper.hpp create mode 100644 include/cru/ui/mapper/style/IConditionMapper.hpp create mode 100644 include/cru/ui/mapper/style/OrConditionMapper.hpp (limited to 'include/cru/ui/mapper/style') 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, + public virtual IConditionMapper { + public: + CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(AndConditionMapper) + + public: + bool SupportMapFromXml() override { return true; } + bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + + ClonablePtr MapConditionFromXml( + xml::XmlElementNode* node) override { + return MapFromXml(node); + } + + protected: + ClonablePtr 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 { +class FocusConditionMapper : public BasicPtrMapper, + public virtual IConditionMapper { public: CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(FocusConditionMapper) @@ -11,6 +13,11 @@ class FocusConditionMapper : public BasicPtrMapper { bool SupportMapFromXml() override { return true; } bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + ClonablePtr MapConditionFromXml( + xml::XmlElementNode* node) override { + return MapFromXml(node); + } + protected: ClonablePtr 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(this)->XmlElementIsOfThisType(node); + } + + virtual ClonablePtr 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 { +class NoConditionMapper : public BasicPtrMapper, + public virtual IConditionMapper { public: CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(NoConditionMapper) @@ -14,6 +16,11 @@ class NoConditionMapper : public BasicPtrMapper { bool SupportMapFromXml() override { return true; } bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + ClonablePtr MapConditionFromXml( + xml::XmlElementNode* node) override { + return MapFromXml(node); + } + protected: ClonablePtr 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, + public virtual IConditionMapper { + public: + CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(OrConditionMapper) + + public: + bool SupportMapFromXml() override { return true; } + bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + + ClonablePtr MapConditionFromXml( + xml::XmlElementNode* node) override { + return MapFromXml(node); + } + + protected: + ClonablePtr DoMapFromXml( + xml::XmlElementNode* node) override; +}; +} // namespace cru::ui::mapper::style -- cgit v1.2.3