From 56633dab8c1bf9d25a6367a651b5b054055a2130 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 27 Jan 2022 20:07:15 +0800 Subject: ... --- include/cru/ui/mapper/BrushMapper.hpp | 20 ++++++++++++++++++++ include/cru/xml/XmlNode.hpp | 3 +++ 2 files changed, 23 insertions(+) create mode 100644 include/cru/ui/mapper/BrushMapper.hpp (limited to 'include/cru') diff --git a/include/cru/ui/mapper/BrushMapper.hpp b/include/cru/ui/mapper/BrushMapper.hpp new file mode 100644 index 00000000..b2021076 --- /dev/null +++ b/include/cru/ui/mapper/BrushMapper.hpp @@ -0,0 +1,20 @@ +#pragma once +#include "Mapper.hpp" +#include "cru/common/Base.hpp" +#include "cru/platform/graphics/Brush.hpp" +#include "cru/xml/XmlNode.hpp" + +namespace cru::ui::mapper { +class BrushMapper : public BasicRefMapper { + public: + CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(BrushMapper) + + public: + bool SupportMapFromXml() override { return true; } + bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + + protected: + std::shared_ptr DoMapFromXml( + xml::XmlElementNode* node) override; +}; +} // namespace cru::ui::mapper diff --git a/include/cru/xml/XmlNode.hpp b/include/cru/xml/XmlNode.hpp index f308c9de..d1cb9430 100644 --- a/include/cru/xml/XmlNode.hpp +++ b/include/cru/xml/XmlNode.hpp @@ -33,6 +33,9 @@ class CRU_XML_API XmlNode { virtual XmlNode* Clone() const = 0; + bool IsTextNode() const { return type_ == Type::Text; } + bool IsElementNode() const { return type_ == Type::Element; } + XmlElementNode* AsElement(); XmlTextNode* AsText(); const XmlElementNode* AsElement() const; -- cgit v1.2.3