#pragma once #include #include #include #include namespace mbgl { class FileSource; class Scheduler; class Renderer; class RendererBackend; class Map; class HeadlessFrontend : public RendererFrontend { public: HeadlessFrontend(float pixelRatio_, FileSource&, Scheduler&); HeadlessFrontend(Size, float pixelRatio_, FileSource&, Scheduler&); ~HeadlessFrontend() override; void reset() override; void update(std::shared_ptr) override; void setObserver(RendererObserver&) override; Size getSize() const; void setSize(Size); Renderer* getRenderer(); RendererBackend* getBackend(); PremultipliedImage readStillImage(); PremultipliedImage render(Map&); private: Size size; float pixelRatio; HeadlessBackend backend; util::AsyncTask asyncInvalidate; std::unique_ptr renderer; std::shared_ptr updateParameters; }; } // namespace mbgl