summaryrefslogtreecommitdiff
path: root/test/src
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-06-13 10:50:16 +0300
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-07-18 10:45:12 +0200
commit3832f8d0d8194b81ea34a045e19b0d5bc7a89e25 (patch)
treebbb4b277e1e74bde457271b9b9a5b6a9ec3ad5fb /test/src
parent39a732d7ae3cb1b927d94c4b1154b42d9565356a (diff)
downloadqtlocation-mapboxgl-3832f8d0d8194b81ea34a045e19b0d5bc7a89e25.tar.gz
[core] renderer interface
Diffstat (limited to 'test/src')
-rw-r--r--test/src/mbgl/test/stub_renderer_frontend.cpp52
-rw-r--r--test/src/mbgl/test/stub_renderer_frontend.hpp44
-rw-r--r--test/src/mbgl/test/util.cpp2
3 files changed, 97 insertions, 1 deletions
diff --git a/test/src/mbgl/test/stub_renderer_frontend.cpp b/test/src/mbgl/test/stub_renderer_frontend.cpp
new file mode 100644
index 0000000000..7edcfd397e
--- /dev/null
+++ b/test/src/mbgl/test/stub_renderer_frontend.cpp
@@ -0,0 +1,52 @@
+#include <mbgl/test/stub_renderer_frontend.hpp>
+
+#include <mbgl/map/view.hpp>
+#include <mbgl/renderer/renderer.hpp>
+
+namespace mbgl {
+
+StubRendererFrontend::StubRendererFrontend(std::unique_ptr<Renderer> renderer_, InvalidateCallback invalidate)
+ : renderer(std::move(renderer_))
+ , asyncInvalidate([this, invalidate=std::move(invalidate)]() {
+ invalidate(*this);
+ }) {
+}
+
+StubRendererFrontend::StubRendererFrontend(std::unique_ptr<Renderer> renderer_, View& view)
+ : renderer(std::move(renderer_))
+ , asyncInvalidate([&]() {
+ this->render(view);
+ }) {
+}
+
+StubRendererFrontend::~StubRendererFrontend() {
+ reset();
+}
+
+void StubRendererFrontend::reset() {
+ if (renderer) {
+ renderer.reset();
+ }
+}
+
+void StubRendererFrontend::setObserver(RendererObserver& observer) {
+ if (!renderer) return;
+ renderer->setObserver(&observer);
+}
+
+void StubRendererFrontend::update(std::shared_ptr<UpdateParameters> params) {
+ updateParameters = std::move(params);
+ asyncInvalidate.send();
+}
+
+void StubRendererFrontend::render(View& view) {
+ if (!updateParameters || !renderer) return;
+ renderer->render(view, *updateParameters);
+}
+
+Renderer* StubRendererFrontend::getRenderer() {
+ return renderer.get();
+}
+
+} // namespace mbgl
+
diff --git a/test/src/mbgl/test/stub_renderer_frontend.hpp b/test/src/mbgl/test/stub_renderer_frontend.hpp
new file mode 100644
index 0000000000..f6dd1d0472
--- /dev/null
+++ b/test/src/mbgl/test/stub_renderer_frontend.hpp
@@ -0,0 +1,44 @@
+
+#pragma once
+
+#include <mbgl/renderer/renderer_frontend.hpp>
+#include <mbgl/util/async_task.hpp>
+#include <mbgl/util/geo.hpp>
+#include <mbgl/util/feature.hpp>
+#include <mbgl/renderer/query.hpp>
+
+#include <functional>
+#include <memory>
+
+namespace mbgl {
+
+class Renderer;
+class View;
+
+class StubRendererFrontend : public RendererFrontend {
+public:
+ // Calls the provided callback when it's time to render
+ using InvalidateCallback = std::function<void (StubRendererFrontend&)>;
+ StubRendererFrontend(std::unique_ptr<Renderer>, InvalidateCallback);
+
+ // Will render async
+ StubRendererFrontend(std::unique_ptr<Renderer>, View&);
+
+ ~StubRendererFrontend() override;
+
+ void reset() override;
+
+ void setObserver(RendererObserver&) override;
+
+ void update(std::shared_ptr<UpdateParameters>) override;
+ void render(View& view);
+
+ Renderer* getRenderer();
+
+private:
+ std::unique_ptr<Renderer> renderer;
+ std::shared_ptr<UpdateParameters> updateParameters;
+ util::AsyncTask asyncInvalidate;
+};
+
+} // namespace mbgl
diff --git a/test/src/mbgl/test/util.cpp b/test/src/mbgl/test/util.cpp
index 7ca2d72504..f3b0bbc96f 100644
--- a/test/src/mbgl/test/util.cpp
+++ b/test/src/mbgl/test/util.cpp
@@ -106,7 +106,7 @@ std::shared_ptr<HeadlessDisplay> sharedDisplay() {
PremultipliedImage render(Map& map, OffscreenView& view) {
PremultipliedImage result;
- map.renderStill(view, [&](std::exception_ptr) {
+ map.renderStill([&](std::exception_ptr) {
result = view.readStillImage();
});