#pragma once #include #include #include #include #include #include #include #include #include #include #include "map_renderer.hpp" namespace mbgl { class RenderedQueryOptions; class SourceQueryOptions; namespace util { class AsyncTask; } // namespace util namespace android { class AndroidRendererFrontend : public RendererFrontend { public: AndroidRendererFrontend(MapRenderer&); ~AndroidRendererFrontend() override; void reset() override; void setObserver(RendererObserver&) override; void update(std::shared_ptr) override; // Feature querying std::vector queryRenderedFeatures(const ScreenCoordinate&, const RenderedQueryOptions&) const; std::vector queryRenderedFeatures(const ScreenBox&, const RenderedQueryOptions&) const; std::vector querySourceFeatures(const std::string& sourceID, const SourceQueryOptions&) const; AnnotationIDs queryPointAnnotations(const ScreenBox& box) const; AnnotationIDs queryShapeAnnotations(const ScreenBox& box) const; // Feature extension query FeatureExtensionValue queryFeatureExtensions(const std::string& sourceID, const Feature& feature, const std::string& extension, const std::string& extensionField, const optional>& args) const; // Memory void reduceMemoryUse(); private: MapRenderer& mapRenderer; util::RunLoop* mapRunLoop; std::unique_ptr updateAsyncTask; std::shared_ptr updateParams; }; } // namespace android } // namespace mbgl