diff options
author | crupest <crupest@outlook.com> | 2022-01-22 00:30:08 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-01-22 00:30:08 +0800 |
commit | bc1f7cce2440310c2544bf3ea48b44dc4ff04eac (patch) | |
tree | 332737f28edd231bb0d74e262054ba80f8959709 /src/ui/mapper | |
parent | 83eb8263b1c1970bac4f811fdd2e221df63145e1 (diff) | |
download | cru-bc1f7cce2440310c2544bf3ea48b44dc4ff04eac.tar.gz cru-bc1f7cce2440310c2544bf3ea48b44dc4ff04eac.tar.bz2 cru-bc1f7cce2440310c2544bf3ea48b44dc4ff04eac.zip |
...
Diffstat (limited to 'src/ui/mapper')
-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 |