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