aboutsummaryrefslogtreecommitdiff
path: root/src/ui/mapper/style/BorderStylerMapper.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-01-23 21:48:08 +0800
committercrupest <crupest@outlook.com>2022-01-23 21:48:08 +0800
commit275fe302cd03adf59fff1a0e4a08f13c6cfcaf31 (patch)
tree542bd59bca9459b93813c9cae9e964b229efafd4 /src/ui/mapper/style/BorderStylerMapper.cpp
parentda9bdf2baced1ff51350c98047b7ade68fcae930 (diff)
downloadcru-275fe302cd03adf59fff1a0e4a08f13c6cfcaf31.tar.gz
cru-275fe302cd03adf59fff1a0e4a08f13c6cfcaf31.tar.bz2
cru-275fe302cd03adf59fff1a0e4a08f13c6cfcaf31.zip
...
Diffstat (limited to 'src/ui/mapper/style/BorderStylerMapper.cpp')
-rw-r--r--src/ui/mapper/style/BorderStylerMapper.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/ui/mapper/style/BorderStylerMapper.cpp b/src/ui/mapper/style/BorderStylerMapper.cpp
new file mode 100644
index 00000000..8a5df83d
--- /dev/null
+++ b/src/ui/mapper/style/BorderStylerMapper.cpp
@@ -0,0 +1,34 @@
+#include "cru/ui/mapper/style/BorderStylerMapper.hpp"
+#include "cru/common/ClonablePtr.hpp"
+#include "cru/ui/mapper/MapperRegistry.hpp"
+#include "cru/ui/style/ApplyBorderStyleInfo.hpp"
+#include "cru/ui/style/Styler.hpp"
+#include "cru/xml/XmlNode.hpp"
+
+namespace cru::ui::mapper::style {
+using cru::ui::style::ApplyBorderStyleInfo;
+using cru::ui::style::BorderStyler;
+
+bool BorderStylerMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
+ return node->GetTag().CaseInsensitiveEqual(u"BorderStyler");
+}
+
+ClonablePtr<BorderStyler> BorderStylerMapper::DoMapFromXml(
+ xml::XmlElementNode* node) {
+ auto border_style_mapper =
+ MapperRegistry::GetInstance()->GetMapper<ApplyBorderStyleInfo>();
+
+ ApplyBorderStyleInfo border_style;
+
+ for (auto child : node->GetChildren()) {
+ if (child->GetType() == xml::XmlElementNode::Type::Element) {
+ auto child_element = child->AsElement();
+ if (border_style_mapper->XmlElementIsOfThisType(child_element)) {
+ border_style = border_style_mapper->MapFromXml(child_element);
+ }
+ }
+ }
+
+ return BorderStyler::Create(std::move(border_style));
+}
+} // namespace cru::ui::mapper::style