diff options
Diffstat (limited to 'platform/default/include/mbgl/gfx/headless_frontend.hpp')
-rw-r--r-- | platform/default/include/mbgl/gfx/headless_frontend.hpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/platform/default/include/mbgl/gfx/headless_frontend.hpp b/platform/default/include/mbgl/gfx/headless_frontend.hpp new file mode 100644 index 0000000000..7f937b34b8 --- /dev/null +++ b/platform/default/include/mbgl/gfx/headless_frontend.hpp @@ -0,0 +1,64 @@ +#pragma once + +#include <mbgl/map/camera.hpp> +#include <mbgl/renderer/renderer_frontend.hpp> +#include <mbgl/gfx/headless_backend.hpp> +#include <mbgl/util/async_task.hpp> +#include <mbgl/util/optional.hpp> + +#include <memory> + +namespace mbgl { + +class Renderer; +class Map; +class TransformState; + +class HeadlessFrontend : public RendererFrontend { +public: + HeadlessFrontend(float pixelRatio_, + const optional<std::string> programCacheDir = {}, + gfx::ContextMode mode = gfx::ContextMode::Unique, + const optional<std::string> localFontFamily = {}); + HeadlessFrontend(Size, + float pixelRatio_, + const optional<std::string> programCacheDir = {}, + gfx::ContextMode mode = gfx::ContextMode::Unique, + const optional<std::string> localFontFamily = {}); + ~HeadlessFrontend() override; + + void reset() override; + void update(std::shared_ptr<UpdateParameters>) 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<TransformState> getTransformState() const; + +private: + Size size; + float pixelRatio; + + std::unique_ptr<gfx::HeadlessBackend> backend; + util::AsyncTask asyncInvalidate; + + std::unique_ptr<Renderer> renderer; + std::shared_ptr<UpdateParameters> updateParameters; +}; + +} // namespace mbgl |