#include #include #include #include #include #include #include #include #include namespace mbgl { std::unique_ptr LayerManager::createLayer( const std::string& type, const std::string& id, const style::conversion::Convertible& value, style::conversion::Error& error) noexcept { LayerFactory* factory = getFactory(type); if (factory) { auto layer = factory->createLayer(id, value); if (!layer) { error.message = "Error parsing layer " + id + " of type: " + type; } return layer; } else { error.message = "Null factory for type: " + type; } error.message = "Unsupported layer type! " + error.message; return nullptr; } std::unique_ptr LayerManager::createBucket(const BucketParameters& parameters, const std::vector>& layers) noexcept { assert(!layers.empty()); assert(parameters.layerType->layout == style::LayerTypeInfo::Layout::NotRequired); LayerFactory* factory = getFactory(parameters.layerType); assert(factory); return factory->createBucket(parameters, layers); } std::unique_ptr LayerManager::createLayout(const LayoutParameters& parameters, std::unique_ptr tileLayer, const std::vector>& layers) noexcept { assert(!layers.empty()); assert(parameters.bucketParameters.layerType->layout == style::LayerTypeInfo::Layout::Required); LayerFactory* factory = getFactory(parameters.bucketParameters.layerType); assert(factory); return factory->createLayout(parameters, std::move(tileLayer), layers); } std::unique_ptr LayerManager::createRenderLayer(Immutable impl) noexcept { LayerFactory* factory = getFactory(impl->getTypeInfo()); assert(factory); return factory->createRenderLayer(std::move(impl)); } } // namespace mbgl