aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-01-23 23:19:30 +0800
committercrupest <crupest@outlook.com>2022-01-23 23:19:30 +0800
commit6d64ac7d354831b687aee1b7450d539411648888 (patch)
tree376146eb9f1cfd4162250d8fb62e78d8bd082e9f /src
parent6f9ccdc9983c2cade1955c611b36b74a1caf037a (diff)
downloadcru-6d64ac7d354831b687aee1b7450d539411648888.tar.gz
cru-6d64ac7d354831b687aee1b7450d539411648888.tar.bz2
cru-6d64ac7d354831b687aee1b7450d539411648888.zip
...
Diffstat (limited to 'src')
-rw-r--r--src/ui/CMakeLists.txt2
-rw-r--r--src/ui/mapper/style/FocusConditionMapper.cpp22
-rw-r--r--src/ui/mapper/style/NoConditionMapper.cpp14
3 files changed, 38 insertions, 0 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index 76a3530c..da4754f6 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -37,6 +37,8 @@ add_library(cru_ui SHARED
mapper/ThicknessMapper.cpp
mapper/style/BorderStylerMapper.cpp
mapper/style/CursorStylerMapper.cpp
+ mapper/style/FocusConditionMapper.cpp
+ mapper/style/NoConditionMapper.cpp
render/BorderRenderObject.cpp
render/CanvasRenderObject.cpp
render/FlexLayoutRenderObject.cpp
diff --git a/src/ui/mapper/style/FocusConditionMapper.cpp b/src/ui/mapper/style/FocusConditionMapper.cpp
new file mode 100644
index 00000000..46f9f2c7
--- /dev/null
+++ b/src/ui/mapper/style/FocusConditionMapper.cpp
@@ -0,0 +1,22 @@
+#include "cru/common/ClonablePtr.hpp"
+#include "cru/ui/mapper/style/FocusConditionMapper.hpp"
+#include "cru/ui/style/Condition.hpp"
+#include "cru/xml/XmlNode.hpp"
+
+namespace cru::ui::mapper::style {
+bool FocusConditionMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
+ return node->GetTag().CaseInsensitiveEqual(u"FocusCondition");
+}
+
+ClonablePtr<ui::style::FocusCondition> FocusConditionMapper::DoMapFromXml(
+ xml::XmlElementNode* node) {
+ auto value = node->GetAttributeCaseInsensitive(u"value");
+ if (value.CaseInsensitiveEqual(u"true")) {
+ return ui::style::FocusCondition::Create(true);
+ } else if (value.CaseInsensitiveEqual(u"false")) {
+ return ui::style::FocusCondition::Create(false);
+ } else {
+ throw Exception(u"Invalid value for FocusCondition: " + value);
+ }
+}
+} // namespace cru::ui::mapper::style
diff --git a/src/ui/mapper/style/NoConditionMapper.cpp b/src/ui/mapper/style/NoConditionMapper.cpp
new file mode 100644
index 00000000..03aae69f
--- /dev/null
+++ b/src/ui/mapper/style/NoConditionMapper.cpp
@@ -0,0 +1,14 @@
+#include "cru/ui/mapper/style/NoConditionMapper.hpp"
+#include "cru/common/ClonablePtr.hpp"
+#include "cru/xml/XmlNode.hpp"
+
+namespace cru::ui::mapper::style {
+bool NoConditionMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
+ return node->GetTag().CaseInsensitiveEqual(u"NoCondition");
+}
+
+ClonablePtr<ui::style::NoCondition> NoConditionMapper::DoMapFromXml(
+ xml::XmlElementNode* node) {
+ return ui::style::NoCondition::Create();
+}
+} // namespace cru::ui::mapper::style