aboutsummaryrefslogtreecommitdiff
path: root/include/cru/ui/mapper/style/StylerMapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/ui/mapper/style/StylerMapper.h')
-rw-r--r--include/cru/ui/mapper/style/StylerMapper.h39
1 files changed, 39 insertions, 0 deletions
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