diff options
author | Aleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com> | 2019-05-21 07:37:49 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-21 07:37:49 +0300 |
commit | 3cd8c6c1fda6c7691e0a71b6ef7a393ea0e50108 (patch) | |
tree | 99b4d40a6697d6a3b2ba5b45a68f5f0aee94855b /platform/default/include | |
parent | 88ef7d89c46b4c4e6e8ad84a5c8e9f410ef6d3cb (diff) | |
download | qtlocation-mapboxgl-3cd8c6c1fda6c7691e0a71b6ef7a393ea0e50108.tar.gz |
[core] Refactor HeadlessFrontend/Backend: GL separation and factory (#14692)
Refactor out HeadlessFrontend and HeadlessBackend gl independent code to gfx.
Define gl::HeadlessBackend as subclass, instantiated by gfx::HeadlessBackend static factory method.
GL dependent tests are still using gl::HeadlessBackend directly (not through gfx).
Diffstat (limited to 'platform/default/include')
-rw-r--r-- | platform/default/include/mbgl/gfx/headless_backend.hpp | 29 | ||||
-rw-r--r-- | platform/default/include/mbgl/gfx/headless_frontend.hpp (renamed from platform/default/include/mbgl/gl/headless_frontend.hpp) | 8 | ||||
-rw-r--r-- | platform/default/include/mbgl/gl/headless_backend.hpp | 17 |
3 files changed, 36 insertions, 18 deletions
diff --git a/platform/default/include/mbgl/gfx/headless_backend.hpp b/platform/default/include/mbgl/gfx/headless_backend.hpp new file mode 100644 index 0000000000..de9283dcdf --- /dev/null +++ b/platform/default/include/mbgl/gfx/headless_backend.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include <mbgl/gfx/renderable.hpp> +#include <mbgl/gfx/renderer_backend.hpp> +#include <mbgl/util/image.hpp> + +#include <memory> + +namespace mbgl { +namespace gfx { + +// Common headless backend interface, provides HeadlessBackend backend factory +// and enables extending gfx::Renderable with platform specific implementation +// of readStillImage. +class HeadlessBackend : public gfx::Renderable { +public: + // Factory. + static std::unique_ptr<HeadlessBackend> make(Size = { 256, 256 }, gfx::ContextMode = gfx::ContextMode::Unique); + + virtual PremultipliedImage readStillImage() = 0; + virtual RendererBackend* getRendererBackend() = 0; + void setSize(Size); + +protected: + HeadlessBackend(Size); +}; + +} // namespace gfx +} // namespace mbgl diff --git a/platform/default/include/mbgl/gl/headless_frontend.hpp b/platform/default/include/mbgl/gfx/headless_frontend.hpp index 1e693bdef1..7f937b34b8 100644 --- a/platform/default/include/mbgl/gl/headless_frontend.hpp +++ b/platform/default/include/mbgl/gfx/headless_frontend.hpp @@ -2,7 +2,7 @@ #include <mbgl/map/camera.hpp> #include <mbgl/renderer/renderer_frontend.hpp> -#include <mbgl/gl/headless_backend.hpp> +#include <mbgl/gfx/headless_backend.hpp> #include <mbgl/util/async_task.hpp> #include <mbgl/util/optional.hpp> @@ -14,10 +14,6 @@ class Renderer; class Map; class TransformState; -namespace gfx { -class RendererBackend; -} // namespace gfx - class HeadlessFrontend : public RendererFrontend { public: HeadlessFrontend(float pixelRatio_, @@ -58,7 +54,7 @@ private: Size size; float pixelRatio; - gl::HeadlessBackend backend; + std::unique_ptr<gfx::HeadlessBackend> backend; util::AsyncTask asyncInvalidate; std::unique_ptr<Renderer> renderer; diff --git a/platform/default/include/mbgl/gl/headless_backend.hpp b/platform/default/include/mbgl/gl/headless_backend.hpp index b2141e9540..8aefb5ff6c 100644 --- a/platform/default/include/mbgl/gl/headless_backend.hpp +++ b/platform/default/include/mbgl/gl/headless_backend.hpp @@ -1,26 +1,21 @@ #pragma once -#include <mbgl/gfx/renderable.hpp> +#include <mbgl/gfx/headless_backend.hpp> #include <mbgl/gl/renderer_backend.hpp> - #include <memory> #include <functional> namespace mbgl { namespace gl { -class HeadlessBackend final : public gl::RendererBackend, public gfx::Renderable { +class HeadlessBackend final : public gl::RendererBackend, public gfx::HeadlessBackend { public: HeadlessBackend(Size = { 256, 256 }, gfx::ContextMode = gfx::ContextMode::Unique); ~HeadlessBackend() override; - - gfx::Renderable& getDefaultRenderable() override; - - Size getFramebufferSize() const; void updateAssumedState() override; - - void setSize(Size); - PremultipliedImage readStillImage(); + gfx::Renderable& getDefaultRenderable() override; + PremultipliedImage readStillImage() override; + RendererBackend* getRendererBackend() override; class Impl { public: @@ -41,8 +36,6 @@ private: private: std::unique_ptr<Impl> impl; - - float pixelRatio; bool active = false; }; |