From 8ff17ffc9af865b1a1735e4759d234c7e62ba79e Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 22 Mar 2016 12:04:34 +0200 Subject: [Qt] Expose {add,remove}CustomLayer --- platform/qt/include/qmapbox.hpp | 16 ++++++++++++++++ platform/qt/include/qmapboxgl.hpp | 8 ++++++++ platform/qt/src/qmapboxgl.cpp | 23 +++++++++++++++++++++++ 3 files changed, 47 insertions(+) (limited to 'platform') diff --git a/platform/qt/include/qmapbox.hpp b/platform/qt/include/qmapbox.hpp index d9a9f37f30..937d895a7f 100644 --- a/platform/qt/include/qmapbox.hpp +++ b/platform/qt/include/qmapbox.hpp @@ -42,6 +42,22 @@ struct Q_DECL_EXPORT CameraOptions { Q_DECL_EXPORT NetworkMode networkMode(); Q_DECL_EXPORT void setNetworkMode(NetworkMode); +// This struct is a 1:1 copy of mbgl::CustomLayerRenderParameters. +struct Q_DECL_EXPORT CustomLayerRenderParameters { + double width; + double height; + double latitude; + double longitude; + double zoom; + double bearing; + double pitch; + double altitude; +}; + +typedef void (*CustomLayerInitializeFunction)(void* context) ; +typedef void (*CustomLayerRenderFunction)(void* context, const CustomLayerRenderParameters&); +typedef void (*CustomLayerDeinitializeFunction)(void* context); + } Q_DECLARE_METATYPE(QMapbox::Coordinate); diff --git a/platform/qt/include/qmapboxgl.hpp b/platform/qt/include/qmapboxgl.hpp index 6e1368ea95..7a7389bfec 100644 --- a/platform/qt/include/qmapboxgl.hpp +++ b/platform/qt/include/qmapboxgl.hpp @@ -168,6 +168,14 @@ public: void setMargins(const QMargins &margins); QMargins margins() const; + void addCustomLayer(const QString &id, + QMapbox::CustomLayerInitializeFunction, + QMapbox::CustomLayerRenderFunction, + QMapbox::CustomLayerDeinitializeFunction, + void* context, + char* before = NULL); + void removeCustomLayer(const QString& id); + public slots: void render(); void connectionEstablished(); diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index e904c38947..df0e89a53d 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -542,6 +542,29 @@ QMargins QMapboxGL::margins() const ); } +void QMapboxGL::addCustomLayer(const QString &id, + QMapbox::CustomLayerInitializeFunction initFn, + QMapbox::CustomLayerRenderFunction renderFn, + QMapbox::CustomLayerDeinitializeFunction deinitFn, + void *context_, + char *before) +{ + d_ptr->mapObj->addCustomLayer( + id.toStdString(), + reinterpret_cast(initFn), + // This cast is safe as long as both mbgl:: and QMapbox:: + // CustomLayerRenderParameters members remains the same. + (mbgl::CustomLayerRenderFunction)renderFn, + reinterpret_cast(deinitFn), + context_, + before == NULL ? nullptr : before); +} + +void QMapboxGL::removeCustomLayer(const QString& id) +{ + d_ptr->mapObj->removeCustomLayer(id.toStdString()); +} + void QMapboxGL::render() { d_ptr->mapObj->render(); -- cgit v1.2.1