aboutsummaryrefslogtreecommitdiff
path: root/src/ui/mapper/FontMapper.cpp
diff options
context:
space:
mode:
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