From bc1f7cce2440310c2544bf3ea48b44dc4ff04eac Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 22 Jan 2022 00:30:08 +0800 Subject: ... --- src/ui/mapper/ColorMapper.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/ui/mapper/ColorMapper.cpp (limited to 'src/ui/mapper') diff --git a/src/ui/mapper/ColorMapper.cpp b/src/ui/mapper/ColorMapper.cpp new file mode 100644 index 00000000..be633a86 --- /dev/null +++ b/src/ui/mapper/ColorMapper.cpp @@ -0,0 +1,23 @@ +#include "cru/ui/mapper/ColorMapper.hpp" + +namespace cru::ui::mapper { +bool ColorMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) { + return node->GetTag() == u"color"; +} + +std::unique_ptr ColorMapper::DoMapFromString(String str) { + auto c = Color::Parse(str); + if (!c) { + throw Exception(u"Invalid color value."); + } + return std::make_unique(*c); +} + +std::unique_ptr ColorMapper::DoMapFromXml(xml::XmlElementNode* node) { + auto value_attr = node->GetOptionalAttribute(u"value"); + if (!value_attr) { + return std::make_unique(colors::transparent); + } + return DoMapFromString(*value_attr); +} +} // namespace cru::ui::mapper -- cgit v1.2.3