#include #include #include #include #include #include namespace mbgl { using namespace style; RenderVectorSource::RenderVectorSource(Immutable impl_, const TaggedScheduler& threadPool_) : RenderTileSetSource(std::move(impl_), threadPool_) {} const std::optional& RenderVectorSource::getTileset() const { return static_cast(*baseImpl).tileset; } void RenderVectorSource::updateInternal(const Tileset& tileset, const std::vector>& layers, const bool needsRendering, const bool needsRelayout, const TileParameters& parameters) { tilePyramid.update(layers, needsRendering, needsRelayout, parameters, *baseImpl, util::tileSize_I, tileset.zoomRange, tileset.bounds, [&](const OverscaledTileID& tileID, TileObserver* observer_) -> std::unique_ptr { if (!isMLT.has_value()) { auto impl = staticImmutableCast(baseImpl); assert(impl->tileset); // we should have one by now if (impl->tileset) { isMLT = (impl->tileset->vectorEncoding == Tileset::VectorEncoding::MLT); } } if (isMLT && *isMLT) { return std::make_unique( tileID, baseImpl->id, parameters, tileset, observer_, fastPFOREnabled); } else { return std::make_unique( tileID, baseImpl->id, parameters, tileset, observer_); } }); } } // namespace mbgl