diff options
Diffstat (limited to 'src/mbgl/layermanager/layer_manager.cpp')
-rw-r--r-- | src/mbgl/layermanager/layer_manager.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mbgl/layermanager/layer_manager.cpp b/src/mbgl/layermanager/layer_manager.cpp index 8f42bc9218..e6195caeba 100644 --- a/src/mbgl/layermanager/layer_manager.cpp +++ b/src/mbgl/layermanager/layer_manager.cpp @@ -1,6 +1,9 @@ #include <mbgl/layermanager/layer_manager.hpp> +#include <mbgl/layout/layout.hpp> #include <mbgl/layermanager/layer_factory.hpp> +#include <mbgl/renderer/bucket.hpp> +#include <mbgl/renderer/bucket_parameters.hpp> #include <mbgl/renderer/render_layer.hpp> #include <mbgl/style/layer.hpp> #include <mbgl/style/layer_impl.hpp> @@ -22,6 +25,24 @@ std::unique_ptr<style::Layer> LayerManager::createLayer( return nullptr; } +std::unique_ptr<Bucket> LayerManager::createBucket(const BucketParameters& parameters, const std::vector<const RenderLayer*>& 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<Layout> LayerManager::createLayout(const LayoutParameters& parameters, + std::unique_ptr<GeometryTileLayer> tileLayer, + const std::vector<const RenderLayer*>& 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<RenderLayer> LayerManager::createRenderLayer(Immutable<style::Layer::Impl> impl) noexcept { LayerFactory* factory = getFactory(impl->getTypeInfo()); assert(factory); |