#include #include #include #include #include #include #include #include #include #include namespace mbgl { using namespace style; std::unique_ptr RenderSource::create(Immutable impl) { switch (impl->type) { case SourceType::Vector: return std::make_unique(staticImmutableCast(impl)); case SourceType::Raster: return std::make_unique(staticImmutableCast(impl)); case SourceType::GeoJSON: return std::make_unique(staticImmutableCast(impl)); case SourceType::Video: assert(false); return nullptr; case SourceType::Annotations: return std::make_unique(staticImmutableCast(impl)); case SourceType::Image: return std::make_unique(staticImmutableCast(impl)); case SourceType::CustomVector: return std::make_unique(staticImmutableCast(impl)); } // Not reachable, but placate GCC. assert(false); return nullptr; } static RenderSourceObserver nullObserver; RenderSource::RenderSource(Immutable impl) : baseImpl(impl), observer(&nullObserver) { } void RenderSource::setObserver(RenderSourceObserver* observer_) { observer = observer_; } void RenderSource::onTileChanged(Tile& tile) { observer->onTileChanged(*this, tile.id); } void RenderSource::onTileError(Tile& tile, std::exception_ptr error) { observer->onTileError(*this, tile.id, error); } bool RenderSource::isEnabled() const { return enabled; } } // namespace mbgl