aboutsummaryrefslogtreecommitdiff
path: root/include/cru/ui/mapper/style
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/ui/mapper/style')
-rw-r--r--include/cru/ui/mapper/style/AndConditionMapper.h25
-rw-r--r--include/cru/ui/mapper/style/BorderStylerMapper.h28
-rw-r--r--include/cru/ui/mapper/style/CheckedConditionMapper.h26
-rw-r--r--include/cru/ui/mapper/style/ClickStateConditionMapper.h26
-rw-r--r--include/cru/ui/mapper/style/ConditionMapper.h41
-rw-r--r--include/cru/ui/mapper/style/ContentBrushStylerMapper.h25
-rw-r--r--include/cru/ui/mapper/style/CursorStylerMapper.h26
-rw-r--r--include/cru/ui/mapper/style/FocusConditionMapper.h26
-rw-r--r--include/cru/ui/mapper/style/FontStylerMapper.h24
-rw-r--r--include/cru/ui/mapper/style/HoverConditionMapper.h26
-rw-r--r--include/cru/ui/mapper/style/IConditionMapper.h17
-rw-r--r--include/cru/ui/mapper/style/IStylerMapper.h17
-rw-r--r--include/cru/ui/mapper/style/MarginStylerMapper.h26
-rw-r--r--include/cru/ui/mapper/style/NoConditionMapper.h29
-rw-r--r--include/cru/ui/mapper/style/OrConditionMapper.h25
-rw-r--r--include/cru/ui/mapper/style/PaddingStylerMapper.h26
-rw-r--r--include/cru/ui/mapper/style/PreferredSizeStylerMapper.h26
-rw-r--r--include/cru/ui/mapper/style/StyleRuleMapper.h23
-rw-r--r--include/cru/ui/mapper/style/StyleRuleSetMapper.h13
-rw-r--r--include/cru/ui/mapper/style/StylerMapper.h39
20 files changed, 87 insertions, 427 deletions
diff --git a/include/cru/ui/mapper/style/AndConditionMapper.h b/include/cru/ui/mapper/style/AndConditionMapper.h
deleted file mode 100644
index 5569e0fc..00000000
--- a/include/cru/ui/mapper/style/AndConditionMapper.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IConditionMapper.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API AndConditionMapper
- : public BasicClonePtrMapper<ui::style::AndCondition>,
- public virtual IConditionMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(AndConditionMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Condition> MapConditionFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::AndCondition> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/BorderStylerMapper.h b/include/cru/ui/mapper/style/BorderStylerMapper.h
deleted file mode 100644
index c1554255..00000000
--- a/include/cru/ui/mapper/style/BorderStylerMapper.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "cru/base/ClonePtr.h"
-#include "cru/ui/mapper/style/IStylerMapper.h"
-#include "cru/ui/style/Styler.h"
-#include "cru/base/xml/XmlNode.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API BorderStylerMapper
- : public BasicClonePtrMapper<ui::style::BorderStyler>,
- public virtual IStylerMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(BorderStylerMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Styler> MapStylerFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::BorderStyler> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/CheckedConditionMapper.h b/include/cru/ui/mapper/style/CheckedConditionMapper.h
deleted file mode 100644
index 87d892a7..00000000
--- a/include/cru/ui/mapper/style/CheckedConditionMapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IConditionMapper.h"
-#include "cru/ui/style/Condition.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API CheckedConditionMapper
- : public BasicClonePtrMapper<ui::style::CheckedCondition>,
- public virtual IConditionMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(CheckedConditionMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Condition> MapConditionFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::CheckedCondition> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/ClickStateConditionMapper.h b/include/cru/ui/mapper/style/ClickStateConditionMapper.h
deleted file mode 100644
index 13c72a36..00000000
--- a/include/cru/ui/mapper/style/ClickStateConditionMapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IConditionMapper.h"
-#include "cru/ui/style/Condition.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API ClickStateConditionMapper
- : public BasicClonePtrMapper<ui::style::ClickStateCondition>,
- public virtual IConditionMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(ClickStateConditionMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Condition> MapConditionFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- public:
- ClonePtr<ui::style::ClickStateCondition> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/ConditionMapper.h b/include/cru/ui/mapper/style/ConditionMapper.h
new file mode 100644
index 00000000..a7bddefb
--- /dev/null
+++ b/include/cru/ui/mapper/style/ConditionMapper.h
@@ -0,0 +1,41 @@
+#pragma once
+#include "../../Base.h"
+#include "../../style/Condition.h"
+#include "../Mapper.h"
+
+#include <cru/base/ClonePtr.h>
+#include <cru/base/xml/XmlNode.h>
+
+namespace cru::ui::mapper::style {
+using ui::style::Condition;
+
+struct CRU_UI_API IConditionMapper : virtual Interface {
+ virtual bool XmlElementIsOfThisType(xml::XmlElementNode* node) = 0;
+ virtual ClonePtr<Condition> MapConditionFromXml(
+ xml::XmlElementNode* node) = 0;
+};
+
+#define CRU_DECLARE_CONDITION_MAPPER(condition_name) \
+ using ui::style::condition_name##Condition; \
+ class CRU_UI_API condition_name##ConditionMapper \
+ : public BasicClonePtrMapper<condition_name##Condition>, \
+ public virtual IConditionMapper { \
+ CRU_UI_DECLARE_CAN_MAP_FROM_XML_ELEMENT_TAG( \
+ condition_name##Condition, ClonePtr<condition_name##Condition>) \
+ \
+ ClonePtr<Condition> MapConditionFromXml( \
+ xml::XmlElementNode* node) override { \
+ return MapFromXml(node); \
+ } \
+ };
+
+CRU_DECLARE_CONDITION_MAPPER(No)
+CRU_DECLARE_CONDITION_MAPPER(And)
+CRU_DECLARE_CONDITION_MAPPER(Or)
+CRU_DECLARE_CONDITION_MAPPER(ClickState)
+CRU_DECLARE_CONDITION_MAPPER(Checked)
+CRU_DECLARE_CONDITION_MAPPER(Focus)
+CRU_DECLARE_CONDITION_MAPPER(Hover)
+
+#undef CRU_DECLARE_CONDITION_MAPPER
+} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/ContentBrushStylerMapper.h b/include/cru/ui/mapper/style/ContentBrushStylerMapper.h
deleted file mode 100644
index d15eb28a..00000000
--- a/include/cru/ui/mapper/style/ContentBrushStylerMapper.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IStylerMapper.h"
-
-namespace cru::ui::mapper::style {
-class ContentBrushStylerMapper
- : public BasicClonePtrMapper<ui::style::ContentBrushStyler>,
- public virtual IStylerMapper {
- public:
- ContentBrushStylerMapper();
- ~ContentBrushStylerMapper() override;
-
- public:
- bool SupportMapFromXml() override { return true; }
-
- ClonePtr<ui::style::Styler> MapStylerFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::ContentBrushStyler> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/CursorStylerMapper.h b/include/cru/ui/mapper/style/CursorStylerMapper.h
deleted file mode 100644
index 54ade7f0..00000000
--- a/include/cru/ui/mapper/style/CursorStylerMapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "cru/ui/mapper/style/IStylerMapper.h"
-#include "cru/ui/style/Styler.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API CursorStylerMapper
- : public BasicClonePtrMapper<ui::style::CursorStyler>,
- public virtual IStylerMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(CursorStylerMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Styler> MapStylerFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::CursorStyler> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/FocusConditionMapper.h b/include/cru/ui/mapper/style/FocusConditionMapper.h
deleted file mode 100644
index e18150cf..00000000
--- a/include/cru/ui/mapper/style/FocusConditionMapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IConditionMapper.h"
-#include "cru/ui/style/Condition.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API FocusConditionMapper
- : public BasicClonePtrMapper<ui::style::FocusCondition>,
- public virtual IConditionMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(FocusConditionMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Condition> MapConditionFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::FocusCondition> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/FontStylerMapper.h b/include/cru/ui/mapper/style/FontStylerMapper.h
deleted file mode 100644
index 6a79eb99..00000000
--- a/include/cru/ui/mapper/style/FontStylerMapper.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IStylerMapper.h"
-
-namespace cru::ui::mapper::style {
-class FontStylerMapper : public BasicClonePtrMapper<ui::style::FontStyler>,
- public virtual IStylerMapper {
- public:
- FontStylerMapper();
- ~FontStylerMapper() override;
-
- public:
- bool SupportMapFromXml() override { return true; }
-
- ClonePtr<ui::style::Styler> MapStylerFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::FontStyler> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/HoverConditionMapper.h b/include/cru/ui/mapper/style/HoverConditionMapper.h
deleted file mode 100644
index faa889e7..00000000
--- a/include/cru/ui/mapper/style/HoverConditionMapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IConditionMapper.h"
-#include "cru/ui/style/Condition.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API HoverConditionMapper
- : public BasicClonePtrMapper<ui::style::HoverCondition>,
- public virtual IConditionMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(HoverConditionMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Condition> MapConditionFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::HoverCondition> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/IConditionMapper.h b/include/cru/ui/mapper/style/IConditionMapper.h
deleted file mode 100644
index 27c09e82..00000000
--- a/include/cru/ui/mapper/style/IConditionMapper.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-#include "../../Base.h"
-#include "cru/base/ClonePtr.h"
-#include "cru/ui/mapper/Mapper.h"
-#include "cru/ui/style/Condition.h"
-#include "cru/base/xml/XmlNode.h"
-
-namespace cru::ui::mapper::style {
-struct CRU_UI_API IConditionMapper : virtual Interface {
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) {
- return dynamic_cast<MapperBase*>(this)->XmlElementIsOfThisType(node);
- }
-
- virtual ClonePtr<ui::style::Condition> MapConditionFromXml(
- xml::XmlElementNode* node) = 0;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/IStylerMapper.h b/include/cru/ui/mapper/style/IStylerMapper.h
deleted file mode 100644
index ce9c4243..00000000
--- a/include/cru/ui/mapper/style/IStylerMapper.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-#include "../../Base.h"
-#include "cru/base/ClonePtr.h"
-#include "cru/ui/mapper/Mapper.h"
-#include "cru/ui/style/Styler.h"
-#include "cru/base/xml/XmlNode.h"
-
-namespace cru::ui::mapper::style {
-struct CRU_UI_API IStylerMapper : virtual Interface {
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) {
- return dynamic_cast<MapperBase*>(this)->XmlElementIsOfThisType(node);
- }
-
- virtual ClonePtr<ui::style::Styler> MapStylerFromXml(
- xml::XmlElementNode* node) = 0;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/MarginStylerMapper.h b/include/cru/ui/mapper/style/MarginStylerMapper.h
deleted file mode 100644
index b20452a9..00000000
--- a/include/cru/ui/mapper/style/MarginStylerMapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "cru/ui/mapper/style/IStylerMapper.h"
-#include "cru/ui/style/Styler.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API MarginStylerMapper
- : public BasicClonePtrMapper<ui::style::MarginStyler>,
- public virtual IStylerMapper {
- public:
- MarginStylerMapper();
- ~MarginStylerMapper();
-
- public:
- bool SupportMapFromXml() override { return true; }
-
- ClonePtr<ui::style::Styler> MapStylerFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::MarginStyler> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/NoConditionMapper.h b/include/cru/ui/mapper/style/NoConditionMapper.h
deleted file mode 100644
index 8acb79e0..00000000
--- a/include/cru/ui/mapper/style/NoConditionMapper.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IConditionMapper.h"
-#include "cru/base/Base.h"
-#include "cru/base/ClonePtr.h"
-#include "cru/ui/style/Condition.h"
-#include "cru/base/xml/XmlNode.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API NoConditionMapper
- : public BasicClonePtrMapper<ui::style::NoCondition>,
- public virtual IConditionMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(NoConditionMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Condition> MapConditionFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::NoCondition> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/OrConditionMapper.h b/include/cru/ui/mapper/style/OrConditionMapper.h
deleted file mode 100644
index 0aa5b241..00000000
--- a/include/cru/ui/mapper/style/OrConditionMapper.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "IConditionMapper.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API OrConditionMapper
- : public BasicClonePtrMapper<ui::style::OrCondition>,
- public virtual IConditionMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(OrConditionMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Condition> MapConditionFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::OrCondition> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/PaddingStylerMapper.h b/include/cru/ui/mapper/style/PaddingStylerMapper.h
deleted file mode 100644
index bf0c5650..00000000
--- a/include/cru/ui/mapper/style/PaddingStylerMapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "cru/ui/mapper/style/IStylerMapper.h"
-#include "cru/ui/style/Styler.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API PaddingStylerMapper
- : public BasicClonePtrMapper<ui::style::PaddingStyler>,
- public virtual IStylerMapper {
- public:
- PaddingStylerMapper();
- ~PaddingStylerMapper();
-
- public:
- bool SupportMapFromXml() override { return true; }
-
- ClonePtr<ui::style::Styler> MapStylerFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::PaddingStyler> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/PreferredSizeStylerMapper.h b/include/cru/ui/mapper/style/PreferredSizeStylerMapper.h
deleted file mode 100644
index ee4f5705..00000000
--- a/include/cru/ui/mapper/style/PreferredSizeStylerMapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "../Mapper.h"
-#include "cru/ui/mapper/style/IStylerMapper.h"
-#include "cru/ui/style/Styler.h"
-
-namespace cru::ui::mapper::style {
-class CRU_UI_API PreferredSizeStylerMapper
- : public BasicClonePtrMapper<ui::style::PreferredSizeStyler>,
- public virtual IStylerMapper {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(PreferredSizeStylerMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- ClonePtr<ui::style::Styler> MapStylerFromXml(
- xml::XmlElementNode* node) override {
- return MapFromXml(node);
- }
-
- protected:
- ClonePtr<ui::style::PreferredSizeStyler> DoMapFromXml(
- xml::XmlElementNode* node) override;
-};
-} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/StyleRuleMapper.h b/include/cru/ui/mapper/style/StyleRuleMapper.h
index 37790058..8ca47cce 100644
--- a/include/cru/ui/mapper/style/StyleRuleMapper.h
+++ b/include/cru/ui/mapper/style/StyleRuleMapper.h
@@ -1,24 +1,11 @@
#pragma once
+#include "../../style/StyleRule.h"
#include "../Mapper.h"
-#include "cru/base/Base.h"
-#include "cru/base/ClonePtr.h"
-#include "cru/ui/style/StyleRule.h"
-#include "cru/base/xml/XmlNode.h"
namespace cru::ui::mapper::style {
-class CRU_UI_API StyleRuleMapper : public BasicClonePtrMapper<ui::style::StyleRule> {
- private:
- constexpr static auto kLogTag = "StyleRuleMapper";
-
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(StyleRuleMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- protected:
- ClonePtr<ui::style::StyleRule> DoMapFromXml(
- xml::XmlElementNode* node) override;
+class CRU_UI_API StyleRuleMapper
+ : public BasicClonePtrMapper<ui::style::StyleRule> {
+ CRU_UI_DECLARE_CAN_MAP_FROM_XML_ELEMENT_TAG(StyleRule,
+ ClonePtr<ui::style::StyleRule>)
};
} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/StyleRuleSetMapper.h b/include/cru/ui/mapper/style/StyleRuleSetMapper.h
index 6b848458..06084e73 100644
--- a/include/cru/ui/mapper/style/StyleRuleSetMapper.h
+++ b/include/cru/ui/mapper/style/StyleRuleSetMapper.h
@@ -1,21 +1,12 @@
#pragma once
-#include <memory>
#include "../../style/StyleRuleSet.h"
#include "../Mapper.h"
namespace cru::ui::mapper::style {
class CRU_UI_API StyleRuleSetMapper
: public BasicSharedPtrMapper<ui::style::StyleRuleSet> {
- public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(StyleRuleSetMapper)
-
- public:
- bool SupportMapFromXml() override { return true; }
- bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
-
- protected:
- std::shared_ptr<ui::style::StyleRuleSet> DoMapFromXml(
- xml::XmlElementNode* node) override;
+ CRU_UI_DECLARE_CAN_MAP_FROM_XML_ELEMENT_TAG(
+ StyleRuleSet, std::shared_ptr<ui::style::StyleRuleSet>)
};
;
} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/StylerMapper.h b/include/cru/ui/mapper/style/StylerMapper.h
new file mode 100644
index 00000000..569684ab
--- /dev/null
+++ b/include/cru/ui/mapper/style/StylerMapper.h
@@ -0,0 +1,39 @@
+#pragma once
+#include "../../Base.h"
+#include "cru/base/ClonePtr.h"
+#include "cru/base/xml/XmlNode.h"
+#include "cru/ui/mapper/Mapper.h"
+#include "cru/ui/style/Styler.h"
+
+namespace cru::ui::mapper::style {
+using ui::style::Styler;
+using cru::ui::style::ApplyBorderStyleInfo;
+
+struct CRU_UI_API IStylerMapper : virtual Interface {
+ virtual bool XmlElementIsOfThisType(xml::XmlElementNode* node) = 0;
+ virtual ClonePtr<Styler> MapStylerFromXml(xml::XmlElementNode* node) = 0;
+};
+
+#define CRU_DECLARE_STYLER_MAPPER(styler_name) \
+ using ui::style::styler_name##Styler; \
+ class CRU_UI_API styler_name##StylerMapper \
+ : public BasicClonePtrMapper<styler_name##Styler>, \
+ public virtual IStylerMapper { \
+ CRU_UI_DECLARE_CAN_MAP_FROM_XML_ELEMENT_TAG(styler_name##Styler, \
+ ClonePtr<styler_name##Styler>) \
+ \
+ ClonePtr<Styler> MapStylerFromXml(xml::XmlElementNode* node) override { \
+ return MapFromXml(node); \
+ } \
+ };
+
+CRU_DECLARE_STYLER_MAPPER(Border)
+CRU_DECLARE_STYLER_MAPPER(ContentBrush)
+CRU_DECLARE_STYLER_MAPPER(Cursor)
+CRU_DECLARE_STYLER_MAPPER(Font)
+CRU_DECLARE_STYLER_MAPPER(Margin)
+CRU_DECLARE_STYLER_MAPPER(Padding)
+CRU_DECLARE_STYLER_MAPPER(PreferredSize)
+
+#undef CRU_DECLARE_STYLER_MAPPER
+} // namespace cru::ui::mapper::style