#pragma once #include #include #include #include #include #include #include #include #include namespace mbgl { class FileSource; class RendererBackend; class RendererObserver; class RenderedQueryOptions; class Scheduler; class SourceQueryOptions; class UpdateParameters; class Renderer { public: Renderer(RendererBackend&, float pixelRatio_, FileSource&, Scheduler&, GLContextMode = GLContextMode::Unique, const optional programCacheDir = {}); ~Renderer(); void setObserver(RendererObserver*); void render(const UpdateParameters&); // Feature queries std::vector queryRenderedFeatures(const ScreenLineString&, const RenderedQueryOptions& options = {}) const; std::vector queryRenderedFeatures(const ScreenCoordinate& point, const RenderedQueryOptions& options = {}) const; std::vector queryRenderedFeatures(const ScreenBox& box, const RenderedQueryOptions& options = {}) const; std::vector querySourceFeatures(const std::string& sourceID, const SourceQueryOptions& options = {}) const; AnnotationIDs queryPointAnnotations(const ScreenBox& box) const; // Debug void dumpDebugLogs(); // Memory void onLowMemory(); private: class Impl; std::unique_ptr impl; }; } // namespace mbgl