diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2019-04-02 14:11:37 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2019-05-28 16:11:05 +0200 |
commit | 7f9274035bad30980e03574c315904ab7a85fe83 (patch) | |
tree | 7b9cd0f2e2883d6da22611eaa68fae07bb7245b6 /platform/default | |
parent | 33ee7e23de24bd3c076eafef819029cf45451d23 (diff) | |
download | qtlocation-mapboxgl-7f9274035bad30980e03574c315904ab7a85fe83.tar.gz |
[core] refactor program object creation
Diffstat (limited to 'platform/default')
-rw-r--r-- | platform/default/include/mbgl/gfx/headless_backend.hpp | 9 | ||||
-rw-r--r-- | platform/default/src/mbgl/gfx/headless_frontend.cpp | 6 | ||||
-rw-r--r-- | platform/default/src/mbgl/gl/headless_backend.cpp | 12 |
3 files changed, 17 insertions, 10 deletions
diff --git a/platform/default/include/mbgl/gfx/headless_backend.hpp b/platform/default/include/mbgl/gfx/headless_backend.hpp index de9283dcdf..325422323a 100644 --- a/platform/default/include/mbgl/gfx/headless_backend.hpp +++ b/platform/default/include/mbgl/gfx/headless_backend.hpp @@ -1,6 +1,7 @@ #pragma once #include <mbgl/gfx/renderable.hpp> +#include <mbgl/gfx/backend.hpp> #include <mbgl/gfx/renderer_backend.hpp> #include <mbgl/util/image.hpp> @@ -15,8 +16,12 @@ namespace gfx { class HeadlessBackend : public gfx::Renderable { public: // Factory. - static std::unique_ptr<HeadlessBackend> make(Size = { 256, 256 }, gfx::ContextMode = gfx::ContextMode::Unique); - + static std::unique_ptr<HeadlessBackend> + Create(const Size size = { 256, 256 }, + const gfx::ContextMode contextMode = gfx::ContextMode::Unique) { + return Backend::Create<HeadlessBackend, Size, gfx::ContextMode>(size, contextMode); + } + virtual PremultipliedImage readStillImage() = 0; virtual RendererBackend* getRendererBackend() = 0; void setSize(Size); diff --git a/platform/default/src/mbgl/gfx/headless_frontend.cpp b/platform/default/src/mbgl/gfx/headless_frontend.cpp index 025abdd87a..0e97c40e49 100644 --- a/platform/default/src/mbgl/gfx/headless_frontend.cpp +++ b/platform/default/src/mbgl/gfx/headless_frontend.cpp @@ -23,9 +23,9 @@ HeadlessFrontend::HeadlessFrontend(Size size_, const gfx::ContextMode contextMode, const optional<std::string> localFontFamily) : size(size_), - pixelRatio(pixelRatio_), - backend(gfx::HeadlessBackend::make( { static_cast<uint32_t>(size.width * pixelRatio), - static_cast<uint32_t>(size.height * pixelRatio) }, contextMode)), + pixelRatio(pixelRatio_), + backend(gfx::HeadlessBackend::Create({ static_cast<uint32_t>(size.width * pixelRatio), + static_cast<uint32_t>(size.height * pixelRatio) }, contextMode)), asyncInvalidate([this] { if (renderer && updateParameters) { gfx::BackendScope guard { *getBackend() }; diff --git a/platform/default/src/mbgl/gl/headless_backend.cpp b/platform/default/src/mbgl/gl/headless_backend.cpp index c81952fadc..732e4babae 100644 --- a/platform/default/src/mbgl/gl/headless_backend.cpp +++ b/platform/default/src/mbgl/gl/headless_backend.cpp @@ -79,20 +79,22 @@ void HeadlessBackend::updateAssumedState() { PremultipliedImage HeadlessBackend::readStillImage() { return static_cast<gl::Context&>(getContext()).readFramebuffer<PremultipliedImage>(size); } - + RendererBackend* HeadlessBackend::getRendererBackend() { return this; } } // namespace gl -#ifndef OVERRIDE_HEADLESS_BACKEND_FACTORY -// Default factory implementation. -std::unique_ptr<gfx::HeadlessBackend> gfx::HeadlessBackend::make(Size size, gfx::ContextMode contextMode) { +namespace gfx { + +template <> +std::unique_ptr<gfx::HeadlessBackend> +Backend::Create<gfx::Backend::Type::OpenGL>(const Size size, const gfx::ContextMode contextMode) { return std::make_unique<gl::HeadlessBackend>(size, contextMode); } -#endif +} // namespace gfx } // namespace mbgl |