From ebd87a5442772e9e840cd5c00be56cccfddb5c68 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Mon, 10 Dec 2018 17:21:08 +0200 Subject: [core, android, darwin] Move layer factories to separate files --- src/mbgl/layermanager/symbol_layer_factory.cpp | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/mbgl/layermanager/symbol_layer_factory.cpp (limited to 'src/mbgl/layermanager/symbol_layer_factory.cpp') diff --git a/src/mbgl/layermanager/symbol_layer_factory.cpp b/src/mbgl/layermanager/symbol_layer_factory.cpp new file mode 100644 index 0000000000..8acefb9f41 --- /dev/null +++ b/src/mbgl/layermanager/symbol_layer_factory.cpp @@ -0,0 +1,31 @@ +#include + +#include +#include +#include + +namespace mbgl { + +const style::LayerTypeInfo* SymbolLayerFactory::getTypeInfo() const noexcept { + return style::SymbolLayer::Impl::staticTypeInfo(); +} + +std::unique_ptr SymbolLayerFactory::createLayer(const std::string& id, const style::conversion::Convertible& value) noexcept { + optional source = getSource(value); + if (!source) { + return nullptr; + } + + std::unique_ptr layer = std::unique_ptr(new style::SymbolLayer(id, *source)); + if (!initSourceLayerAndFilter(layer.get(), value)) { + return nullptr; + } + return layer; +} + +std::unique_ptr SymbolLayerFactory::createRenderLayer(Immutable impl) noexcept { + assert(impl->getTypeInfo() == getTypeInfo()); + return std::make_unique(staticImmutableCast(std::move(impl))); +} + +} // namespace mbgl -- cgit v1.2.1