aboutsummaryrefslogtreecommitdiff
path: root/src/ui/mapper/style/ContentBrushStylerMapper.cpp
blob: b35713747bb6f5f996c8ee31b2b1634c6e078d14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "cru/ui/mapper/style/ContentBrushStylerMapper.h"
#include "cru/base/ClonablePtr.h"
#include "cru/platform/graphics/Brush.h"
#include "cru/ui/mapper/MapperRegistry.h"
#include "cru/ui/style/Styler.h"
#include "cru/xml/XmlNode.h"

namespace cru::ui::mapper::style {
ContentBrushStylerMapper::ContentBrushStylerMapper() {
  SetAllowedTags({u"ContentBrushStyler"});
}

ContentBrushStylerMapper::~ContentBrushStylerMapper() {}

ClonablePtr<ui::style::ContentBrushStyler>
ContentBrushStylerMapper::DoMapFromXml(xml::XmlElementNode* node) {
  auto brush_mapper = MapperRegistry::GetInstance()
                          ->GetSharedPtrMapper<platform::graphics::IBrush>();

  std::shared_ptr<platform::graphics::IBrush> brush;

  for (auto child_node : node->GetChildren()) {
    if (child_node->IsElementNode()) {
      brush = brush_mapper->MapFromXml(child_node->AsElement());
    }
  }

  return ui::style::ContentBrushStyler::Create(std::move(brush));
}
}  // namespace cru::ui::mapper::style