summaryrefslogtreecommitdiff
path: root/platform/node/src/node_renderer_frontend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/node/src/node_renderer_frontend.cpp')
-rw-r--r--platform/node/src/node_renderer_frontend.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/platform/node/src/node_renderer_frontend.cpp b/platform/node/src/node_renderer_frontend.cpp
new file mode 100644
index 0000000000..4722b45351
--- /dev/null
+++ b/platform/node/src/node_renderer_frontend.cpp
@@ -0,0 +1,50 @@
+#include "node_renderer_frontend.hpp"
+#include <mbgl/renderer/renderer.hpp>
+#include <mbgl/map/backend_scope.hpp>
+
+namespace node_mbgl {
+
+NodeRendererFrontend::NodeRendererFrontend(std::unique_ptr<mbgl::Renderer> renderer_, ViewAccessorFunction getView)
+ : renderer(std::move(renderer_))
+ , asyncInvalidate([&, this, getView] {
+ if (renderer && updateParameters) {
+ renderer->render(*getView(), *updateParameters);
+ }
+ }) {
+}
+
+NodeRendererFrontend::~NodeRendererFrontend() = default;
+
+void NodeRendererFrontend::reset() {
+ assert(renderer);
+ renderer.reset();
+}
+
+void NodeRendererFrontend::setObserver(mbgl::RendererObserver& observer_) {
+ assert(renderer);
+ renderer->setObserver(&observer_);
+}
+
+void NodeRendererFrontend::update(std::shared_ptr<mbgl::UpdateParameters> updateParameters_) {
+ updateParameters = updateParameters_;
+ asyncInvalidate.send();
+}
+
+std::vector<mbgl::Feature> NodeRendererFrontend::queryRenderedFeatures(const mbgl::ScreenBox& box,
+ const mbgl::RenderedQueryOptions& options) const {
+ assert(renderer);
+ return renderer->queryRenderedFeatures(box, options);
+}
+
+std::vector<mbgl::Feature> NodeRendererFrontend::queryRenderedFeatures(const mbgl::ScreenCoordinate& point,
+ const mbgl::RenderedQueryOptions& options) const {
+ assert(renderer);
+ return renderer->queryRenderedFeatures(point, options);
+}
+
+void NodeRendererFrontend::dumpDebugLogs() {
+ assert(renderer);
+ return renderer->dumpDebugLogs();
+}
+
+} // namespace node_mbgl