From 6f9ccdc9983c2cade1955c611b36b74a1caf037a Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 23 Jan 2022 22:37:40 +0800 Subject: ... --- src/ui/mapper/style/CursorStylerMapper.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/ui/mapper/style/CursorStylerMapper.cpp (limited to 'src/ui/mapper') diff --git a/src/ui/mapper/style/CursorStylerMapper.cpp b/src/ui/mapper/style/CursorStylerMapper.cpp new file mode 100644 index 00000000..0b29c938 --- /dev/null +++ b/src/ui/mapper/style/CursorStylerMapper.cpp @@ -0,0 +1,27 @@ +#include "cru/ui/mapper/style/CursorStylerMapper.hpp" +#include "cru/common/ClonablePtr.hpp" +#include "cru/platform/gui/Cursor.hpp" +#include "cru/ui/mapper/MapperRegistry.hpp" +#include "cru/ui/style/Styler.hpp" + +namespace cru::ui::mapper::style { +bool CursorStylerMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) { + return node->GetTag().CaseInsensitiveEqual(u"cursor"); +} + +ClonablePtr CursorStylerMapper::DoMapFromXml( + xml::XmlElementNode* node) { + auto cursor_mapper = + MapperRegistry::GetInstance()->GetRefMapper(); + std::shared_ptr cursor; + + for (auto child : node->GetChildren()) { + if (child->GetType() == xml::XmlNode::Type::Element && + cursor_mapper->XmlElementIsOfThisType(child->AsElement())) { + cursor = cursor_mapper->MapFromXml(child->AsElement()); + } + } + + return ui::style::CursorStyler::Create(cursor); +} +} // namespace cru::ui::mapper::style -- cgit v1.2.3