#pragma once #include #include #include #include #include #include #include #include #include namespace mbgl { class UpdateParameters; class PaintParameters; class RenderStyle; class RenderStaticData; class Renderer::Impl : public RenderStyleObserver { public: Impl(RendererBackend&, float pixelRatio_, FileSource&, Scheduler&, GLContextMode, const optional programCacheDir); ~Impl() final; void setObserver(RendererObserver*); void render(const UpdateParameters&); std::vector queryRenderedFeatures(const ScreenLineString&, const RenderedQueryOptions&) const; std::vector querySourceFeatures(const std::string& sourceID, const SourceQueryOptions&) const; void onLowMemory(); void dumDebugLogs(); // RenderStyleObserver implementation void onInvalidate() override; void onResourceError(std::exception_ptr) override; private: void doRender(PaintParameters&); friend class Renderer; RendererBackend& backend; RendererObserver* observer; const GLContextMode contextMode; const float pixelRatio; const optional programCacheDir; enum class RenderState { Never, Partial, Fully, }; RenderState renderState = RenderState::Never; FrameHistory frameHistory; TransformState transformState; std::unique_ptr renderStyle; std::unique_ptr staticData; }; } // namespace mbgl