#pragma once #include #include #include #include #include #include #include #include #include namespace mbgl { struct CameraOptions; class ClientOptions; class LatLngBounds; class ResourceOptions; namespace style { class Style; } // namespace style class MapSnapshotterObserver { public: virtual ~MapSnapshotterObserver() = default; static MapSnapshotterObserver& nullObserver(); virtual void onDidFailLoadingStyle(const std::string&) {} virtual void onDidFinishLoadingStyle() {} virtual void onStyleImageMissing(const std::string&) {} }; class MapSnapshotter { public: MapSnapshotter(Size size, float pixelRatio, const ResourceOptions&, const ClientOptions&, MapSnapshotterObserver&, optional localFontFamily = nullopt); MapSnapshotter(Size size, float pixelRatio, const ResourceOptions&, const ClientOptions& = ClientOptions()); ~MapSnapshotter(); void setStyleURL(const std::string& styleURL); std::string getStyleURL() const; void setStyleJSON(const std::string& styleJSON); std::string getStyleJSON() const; void setSize(const Size&); Size getSize() const; void setCameraOptions(const CameraOptions&); CameraOptions getCameraOptions() const; void setRegion(const LatLngBounds&); LatLngBounds getRegion() const; style::Style& getStyle(); const style::Style& getStyle() const; using PointForFn = std::function; using LatLngForFn = std::function; using Attributions = std::vector; using Callback = std::function; void snapshot(Callback); void cancel(); private: class Impl; std::unique_ptr impl; }; } // namespace mbgl