#pragma once #include #include #include #include #include #include #include #include namespace mbgl { class Renderer; class RenderedQueryOptions; class SourceQueryOptions; namespace android { class AndroidRendererFrontend : public RendererFrontend { public: using InvalidateCallback = std::function; AndroidRendererFrontend(std::unique_ptr, RendererBackend&, InvalidateCallback); ~AndroidRendererFrontend() override; void reset() override; void setObserver(RendererObserver&) override; void update(std::shared_ptr) override; void render(); // 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; // Memory void onLowMemory(); private: std::unique_ptr renderer; RendererBackend& backend; std::shared_ptr updateParameters; util::AsyncTask asyncInvalidate; }; } // namespace android } // namespace mbgl