summaryrefslogtreecommitdiff
path: root/platform/default
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-11-22 15:17:51 +0100
committerKonstantin Käfer <mail@kkaefer.com>2016-11-22 20:58:51 +0100
commit117863f1114551407c481abc752f5fcfd139c878 (patch)
tree4c408a8a3809df59fdfac1bc622ea79fbdbe611e /platform/default
parent3bc79e316e343d59f77811bca4ed6c594431e91c (diff)
downloadqtlocation-mapboxgl-117863f1114551407c481abc752f5fcfd139c878.tar.gz
[build] move headless rendering files to platform/default
Diffstat (limited to 'platform/default')
-rw-r--r--platform/default/headless_backend_osmesa.cpp2
-rw-r--r--platform/default/mbgl/gl/headless_backend.cpp (renamed from platform/default/headless_backend.cpp)4
-rw-r--r--platform/default/mbgl/gl/headless_backend.hpp57
-rw-r--r--platform/default/mbgl/gl/headless_display.cpp (renamed from platform/default/headless_display.cpp)2
-rw-r--r--platform/default/mbgl/gl/headless_display.hpp20
-rw-r--r--platform/default/mbgl/gl/offscreen_view.cpp (renamed from platform/default/offscreen_view.cpp)2
-rw-r--r--platform/default/mbgl/gl/offscreen_view.hpp33
7 files changed, 115 insertions, 5 deletions
diff --git a/platform/default/headless_backend_osmesa.cpp b/platform/default/headless_backend_osmesa.cpp
index 04709d4a1b..3dac5913ac 100644
--- a/platform/default/headless_backend_osmesa.cpp
+++ b/platform/default/headless_backend_osmesa.cpp
@@ -1,4 +1,4 @@
-#include <mbgl/platform/default/headless_backend.hpp>
+#include <mbgl/gl/headless_backend.hpp>
#include <mbgl/platform/log.hpp>
#include <GL/osmesa.h>
diff --git a/platform/default/headless_backend.cpp b/platform/default/mbgl/gl/headless_backend.cpp
index 30ce8d2230..0bfdf11c98 100644
--- a/platform/default/headless_backend.cpp
+++ b/platform/default/mbgl/gl/headless_backend.cpp
@@ -1,5 +1,5 @@
-#include <mbgl/platform/default/headless_backend.hpp>
-#include <mbgl/platform/default/headless_display.hpp>
+#include <mbgl/gl/headless_backend.hpp>
+#include <mbgl/gl/headless_display.hpp>
#include <cassert>
#include <stdexcept>
diff --git a/platform/default/mbgl/gl/headless_backend.hpp b/platform/default/mbgl/gl/headless_backend.hpp
new file mode 100644
index 0000000000..da8c55e044
--- /dev/null
+++ b/platform/default/mbgl/gl/headless_backend.hpp
@@ -0,0 +1,57 @@
+#pragma once
+
+#include <mbgl/gl/extension.hpp>
+
+#include <mbgl/map/backend.hpp>
+
+#include <memory>
+#include <functional>
+
+namespace mbgl {
+
+class HeadlessDisplay;
+
+class HeadlessBackend : public Backend {
+public:
+ HeadlessBackend();
+ HeadlessBackend(std::shared_ptr<HeadlessDisplay>);
+ ~HeadlessBackend() override;
+
+ void invalidate() override;
+ void activate() override;
+ void deactivate() override;
+ void notifyMapChange(MapChange) override;
+
+ void setMapChangeCallback(std::function<void(MapChange)>&& cb) { mapChangeCallback = std::move(cb); }
+
+ struct Impl {
+ virtual ~Impl() {}
+ virtual void activateContext() = 0;
+ virtual void deactivateContext() {}
+ };
+
+private:
+ // Implementation specific functions
+ static gl::glProc initializeExtension(const char*);
+
+ bool hasContext() const { return bool(impl); }
+ bool hasDisplay();
+
+ void createContext();
+
+private:
+ void destroyContext();
+
+ void activateContext();
+ void deactivateContext();
+
+ std::unique_ptr<Impl> impl;
+ std::shared_ptr<HeadlessDisplay> display;
+
+ bool extensionsLoaded = false;
+ bool active = false;
+
+ std::function<void(MapChange)> mapChangeCallback;
+};
+
+} // namespace mbgl
diff --git a/platform/default/headless_display.cpp b/platform/default/mbgl/gl/headless_display.cpp
index 4ab111f775..6247046c29 100644
--- a/platform/default/headless_display.cpp
+++ b/platform/default/mbgl/gl/headless_display.cpp
@@ -1,4 +1,4 @@
-#include <mbgl/platform/default/headless_display.hpp>
+#include <mbgl/gl/headless_display.hpp>
namespace mbgl {
diff --git a/platform/default/mbgl/gl/headless_display.hpp b/platform/default/mbgl/gl/headless_display.hpp
new file mode 100644
index 0000000000..a5c95085b8
--- /dev/null
+++ b/platform/default/mbgl/gl/headless_display.hpp
@@ -0,0 +1,20 @@
+#pragma once
+
+#include <memory>
+
+namespace mbgl {
+
+class HeadlessDisplay {
+public:
+ HeadlessDisplay();
+ ~HeadlessDisplay();
+
+ template <typename DisplayAttribute>
+ DisplayAttribute attribute() const;
+
+private:
+ class Impl;
+ std::unique_ptr<Impl> impl;
+};
+
+} // namespace mbgl
diff --git a/platform/default/offscreen_view.cpp b/platform/default/mbgl/gl/offscreen_view.cpp
index 574686ebc9..16faf6a4a9 100644
--- a/platform/default/offscreen_view.cpp
+++ b/platform/default/mbgl/gl/offscreen_view.cpp
@@ -1,4 +1,4 @@
-#include <mbgl/platform/default/offscreen_view.hpp>
+#include <mbgl/gl/offscreen_view.hpp>
#include <mbgl/gl/context.hpp>
#include <cstring>
diff --git a/platform/default/mbgl/gl/offscreen_view.hpp b/platform/default/mbgl/gl/offscreen_view.hpp
new file mode 100644
index 0000000000..0e839e14cc
--- /dev/null
+++ b/platform/default/mbgl/gl/offscreen_view.hpp
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <mbgl/map/view.hpp>
+#include <mbgl/gl/framebuffer.hpp>
+#include <mbgl/gl/renderbuffer.hpp>
+#include <mbgl/util/optional.hpp>
+#include <mbgl/util/image.hpp>
+
+namespace mbgl {
+
+namespace gl {
+class Context;
+} // namespace gl
+
+class OffscreenView : public View {
+public:
+ OffscreenView(gl::Context&, Size size = { 256, 256 });
+
+ void bind() override;
+
+ PremultipliedImage readStillImage();
+
+public:
+ const Size size;
+
+private:
+ gl::Context& context;
+ optional<gl::Framebuffer> framebuffer;
+ optional<gl::Renderbuffer<gl::RenderbufferType::RGBA>> color;
+ optional<gl::Renderbuffer<gl::RenderbufferType::DepthStencil>> depthStencil;
+};
+
+} // namespace mbgl