#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace mbgl { using namespace style; Map::Map(RendererFrontend& rendererFrontend, MapObserver& mapObserver, const Size size, const float pixelRatio, FileSource& fileSource, Scheduler& scheduler, MapMode mapMode, ConstrainMode constrainMode, ViewportMode viewportMode, bool crossSourceCollisions) : impl(std::make_unique(*this, rendererFrontend, mapObserver, fileSource, scheduler, size, pixelRatio, mapMode, constrainMode, viewportMode, crossSourceCollisions)) {} Map::~Map() = default; void Map::renderStill(StillImageCallback callback) { if (!callback) { Log::Error(Event::General, "StillImageCallback not set"); return; } if (impl->mode != MapMode::Static && impl->mode != MapMode::Tile) { callback(std::make_exception_ptr(util::MisuseException("Map is not in static or tile image render modes"))); return; } if (impl->stillImageRequest) { callback(std::make_exception_ptr(util::MisuseException("Map is currently rendering an image"))); return; } if (impl->style->impl->getLastError()) { callback(impl->style->impl->getLastError()); return; } impl->stillImageRequest = std::make_unique(std::move(callback)); impl->onUpdate(); } void Map::renderStill(const CameraOptions& camera, MapDebugOptions debugOptions, StillImageCallback callback) { impl->cameraMutated = true; impl->debugOptions = debugOptions; impl->transform.jumpTo(camera); renderStill(std::move(callback)); } void Map::triggerRepaint() { impl->onUpdate(); } #pragma mark - Style style::Style& Map::getStyle() { return *impl->style; } const style::Style& Map::getStyle() const { return *impl->style; } void Map::setStyle(std::unique_ptr