#pragma once #include #include #include #include #include #include #include namespace mbgl { class FileSource; class Scheduler; class Renderer; class RendererBackend; class Map; class TransformState; class HeadlessFrontend : public RendererFrontend { public: HeadlessFrontend(float pixelRatio_, FileSource&, Scheduler&, const optional programCacheDir = {}, GLContextMode mode = GLContextMode::Unique, const optional localFontFamily = {}); HeadlessFrontend(Size, float pixelRatio_, FileSource&, Scheduler&, const optional programCacheDir = {}, GLContextMode mode = GLContextMode::Unique, const optional localFontFamily = {}); ~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(); CameraOptions getCameraOptions(); bool hasImage(const std::string&); bool hasLayer(const std::string&); bool hasSource(const std::string&); PremultipliedImage readStillImage(); PremultipliedImage render(Map&); optional getTransformState() const; private: Size size; float pixelRatio; HeadlessBackend backend; util::AsyncTask asyncInvalidate; std::unique_ptr renderer; std::shared_ptr updateParameters; }; } // namespace mbgl