diff options
Diffstat (limited to 'include/cru')
-rw-r--r-- | include/cru/ui/mapper/BrushMapper.hpp | 20 | ||||
-rw-r--r-- | include/cru/xml/XmlNode.hpp | 3 |
2 files changed, 23 insertions, 0 deletions
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<platform::graphics::IBrush> { + public: + CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(BrushMapper) + + public: + bool SupportMapFromXml() override { return true; } + bool XmlElementIsOfThisType(xml::XmlElementNode* node) override; + + protected: + std::shared_ptr<platform::graphics::IBrush> 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; |