#pragma once #include #include #include #include #include #include #include namespace mbgl { class Renderer; class RendererBackend; class View; } // namespace mbgl namespace node_mbgl { class NodeRendererFrontend : public mbgl::RendererFrontend { public: using ViewAccessorFunction = std::function; NodeRendererFrontend(std::unique_ptr, mbgl::RendererBackend&, ViewAccessorFunction); ~NodeRendererFrontend(); void reset() override; void setObserver(mbgl::RendererObserver&) override; void update(std::shared_ptr) override; // Feature querying std::vector queryRenderedFeatures(const mbgl::ScreenCoordinate&, const mbgl::RenderedQueryOptions& options = {}) const; std::vector queryRenderedFeatures(const mbgl::ScreenBox&, const mbgl::RenderedQueryOptions& = {}) const; void dumpDebugLogs(); private: std::unique_ptr renderer; std::shared_ptr updateParameters; mbgl::util::AsyncTask asyncInvalidate; }; } // namespace node_mbgl