aboutsummaryrefslogtreecommitdiff
path: root/src/ui/mapper/FontMapper.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-01-27 21:37:38 +0800
committercrupest <crupest@outlook.com>2022-01-27 21:37:38 +0800
commit103bcb137273729a0f23ff3771e26150a64454ba (patch)
tree5d75e869cc4b1bf0f2afdfbc9ed5ff0f78e0d030 /src/ui/mapper/FontMapper.cpp
parent560c0ead613658a2b7444907c3d1d69e49be8c32 (diff)
downloadcru-103bcb137273729a0f23ff3771e26150a64454ba.tar.gz
cru-103bcb137273729a0f23ff3771e26150a64454ba.tar.bz2
cru-103bcb137273729a0f23ff3771e26150a64454ba.zip
...
Diffstat (limited to 'src/ui/mapper/FontMapper.cpp')
-rw-r--r--src/ui/mapper/FontMapper.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ui/mapper/FontMapper.cpp b/src/ui/mapper/FontMapper.cpp
new file mode 100644
index 00000000..26a17c5f
--- /dev/null
+++ b/src/ui/mapper/FontMapper.cpp
@@ -0,0 +1,20 @@
+#include "cru/ui/mapper/FontMapper.hpp"
+#include "../Helper.hpp"
+#include "cru/platform/graphics/Factory.hpp"
+
+namespace cru::ui::mapper {
+bool FontMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
+ return node->GetTag().CaseInsensitiveEqual(u"font");
+}
+
+std::shared_ptr<platform::graphics::IFont> FontMapper::DoMapFromXml(
+ xml::XmlElementNode* node) {
+ auto font_family_attr = node->GetOptionalAttribute(u"family");
+ auto font_size_attr = node->GetOptionalAttribute(u"size");
+
+ auto font_family = font_family_attr.value_or(u"");
+ auto font_size = font_size_attr ? font_size_attr->ParseToFloat() : 24.0f;
+
+ return GetGraphicsFactory()->CreateFont(font_family, font_size);
+}
+} // namespace cru::ui::mapper