diff options
Diffstat (limited to 'platform/node/src/node_renderer_frontend.cpp')
-rw-r--r-- | platform/node/src/node_renderer_frontend.cpp | 50 |
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 |