diff options
Diffstat (limited to 'src/ui/mapper/ColorMapper.cpp')
-rw-r--r-- | src/ui/mapper/ColorMapper.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
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<Color> ColorMapper::DoMapFromString(String str) { + auto c = Color::Parse(str); + if (!c) { + throw Exception(u"Invalid color value."); + } + return std::make_unique<Color>(*c); +} + +std::unique_ptr<Color> ColorMapper::DoMapFromXml(xml::XmlElementNode* node) { + auto value_attr = node->GetOptionalAttribute(u"value"); + if (!value_attr) { + return std::make_unique<Color>(colors::transparent); + } + return DoMapFromString(*value_attr); +} +} // namespace cru::ui::mapper |