diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-09-25 19:30:34 +0200 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-09-26 11:47:34 +0200 |
commit | 5a12539d34976dd68186c70c3b69fcad8156d0a6 (patch) | |
tree | 08a2e1694246af17c82105eef621faf44c425376 /platform/qt | |
parent | 546109d642135750d7f6859b16e2f818e48c3fca (diff) | |
download | qtlocation-mapboxgl-5a12539d34976dd68186c70c3b69fcad8156d0a6.tar.gz |
[Qt] Replace remaining Mapbox-specific features as MapParameter
Diffstat (limited to 'platform/qt')
-rw-r--r-- | platform/qt/include/qquickmapboxgl.hpp | 17 | ||||
-rw-r--r-- | platform/qt/qmlapp/main.qml | 22 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxgl.cpp | 79 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxglrenderer.cpp | 4 |
4 files changed, 56 insertions, 66 deletions
diff --git a/platform/qt/include/qquickmapboxgl.hpp b/platform/qt/include/qquickmapboxgl.hpp index c7634b9ba9..419d5328b5 100644 --- a/platform/qt/include/qquickmapboxgl.hpp +++ b/platform/qt/include/qquickmapboxgl.hpp @@ -34,10 +34,6 @@ class Q_DECL_EXPORT QQuickMapboxGL : public QQuickFramebufferObject Q_PROPERTY(bool copyrightsVisible READ copyrightsVisible WRITE setCopyrightsVisible NOTIFY copyrightsVisibleChanged) Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) - // MapboxGL QML Type interface. - Q_PROPERTY(qreal bearing READ bearing WRITE setBearing NOTIFY bearingChanged) - Q_PROPERTY(qreal pitch READ pitch WRITE setPitch NOTIFY pitchChanged) - // Proposed Qt interface - based on the example documentation below: // http://doc.qt.io/qt-5/qtqml-referenceexamples-properties-example.html Q_PROPERTY(QQmlListProperty<QQuickMapboxGLMapParameter> parameters READ parameters) @@ -78,13 +74,6 @@ public: Q_INVOKABLE void pan(int dx, int dy); - // MapboxGL QML Type interface. - void setBearing(qreal bearing); - qreal bearing() const; - - void setPitch(qreal pitch); - qreal pitch() const; - // Proposed Qt interface implementation. QQmlListProperty<QQuickMapboxGLMapParameter> parameters(); @@ -106,10 +95,6 @@ signals: void copyrightLinkActivated(const QString &link); void copyrightsVisibleChanged(bool visible); - // Mapbox-specific signals. - void bearingChanged(qreal angle); - void pitchChanged(qreal angle); - public slots: void setCenter(const QGeoCoordinate ¢er); @@ -158,6 +143,8 @@ private: bool parseStyleLayer(QQuickMapboxGLMapParameter *); bool parseStyleSource(QQuickMapboxGLMapParameter *); bool parseStyleFilter(QQuickMapboxGLMapParameter *); + bool parseBearing(QQuickMapboxGLMapParameter *); + bool parsePitch(QQuickMapboxGLMapParameter *); qreal m_minimumZoomLevel = 0; qreal m_maximumZoomLevel = 20; diff --git a/platform/qt/qmlapp/main.qml b/platform/qt/qmlapp/main.qml index 37db2bb41d..825dcabe00 100644 --- a/platform/qt/qmlapp/main.qml +++ b/platform/qt/qmlapp/main.qml @@ -172,6 +172,14 @@ ApplicationWindow { property var type: "filter" property var layer: "markerBackground" property var filter: [ "==", "$type", "Point" ] + }, + MapParameter { + property var type: "bearing" + property var angle: bearingSlider.value + }, + MapParameter { + property var type: "pitch" + property var angle: pitchSlider.value } ] @@ -180,9 +188,6 @@ ApplicationWindow { minimumZoomLevel: 0 maximumZoomLevel: 20 - bearing: bearingSlider.value - pitch: pitchSlider.value - color: landColorDialog.color copyrightsVisible: true @@ -255,6 +260,14 @@ ApplicationWindow { MapParameter { property var type: "style" property var url: "mapbox://styles/mapbox/satellite-streets-v9" + }, + MapParameter { + property var type: "bearing" + property var angle: bearingSlider.value + }, + MapParameter { + property var type: "pitch" + property var angle: pitchSlider.value } ] @@ -263,9 +276,6 @@ ApplicationWindow { minimumZoomLevel: mapFront.minimumZoomLevel maximumZoomLevel: mapFront.maximumZoomLevel - bearing: mapFront.bearing - pitch: mapFront.pitch - Image { anchors.right: parent.right anchors.bottom: parent.bottom diff --git a/platform/qt/src/qquickmapboxgl.cpp b/platform/qt/src/qquickmapboxgl.cpp index 9ebe526939..8d91085f46 100644 --- a/platform/qt/src/qquickmapboxgl.cpp +++ b/platform/qt/src/qquickmapboxgl.cpp @@ -18,7 +18,9 @@ namespace { static const QRegularExpression s_camelCase {"([a-z0-9])([A-Z])"}; -static const QStringList s_parameterTypes = QStringList() << "style" << "paint" << "layout" << "layer" << "source" << "filter" << "image"; +static const QStringList s_parameterTypes = QStringList() + << "style" << "paint" << "layout" << "layer" << "source" << "filter" << "image" + << "bearing" << "pitch"; } // namespace @@ -201,48 +203,6 @@ void QQuickMapboxGL::pan(int dx, int dy) update(); } -void QQuickMapboxGL::setBearing(qreal angle) -{ - angle = std::fmod(angle, 360.); - - if (m_bearing == angle) { - return; - } - - m_bearing = angle; - - m_syncState |= BearingNeedsSync; - update(); - - emit bearingChanged(m_bearing); -} - -qreal QQuickMapboxGL::bearing() const -{ - return m_bearing; -} - -void QQuickMapboxGL::setPitch(qreal angle) -{ - angle = qMin(qMax(0., angle), mbgl::util::PITCH_MAX * mbgl::util::RAD2DEG); - - if (m_pitch == angle) { - return; - } - - m_pitch = angle; - - m_syncState |= PitchNeedsSync; - update(); - - emit pitchChanged(m_pitch); -} - -qreal QQuickMapboxGL::pitch() const -{ - return m_pitch; -} - void QQuickMapboxGL::onMapChanged(QMapbox::MapChange change) { if (change == QMapbox::MapChangeDidFinishLoadingStyle) { @@ -351,6 +311,27 @@ bool QQuickMapboxGL::parseStyleFilter(QQuickMapboxGLMapParameter *param) return true; } +bool QQuickMapboxGL::parseBearing(QQuickMapboxGLMapParameter *param) +{ + qreal angle = param->property("angle").toReal(); + if (m_bearing == angle) return false; + m_bearing = angle; + m_syncState |= BearingNeedsSync; + update(); + return true; +} + +bool QQuickMapboxGL::parsePitch(QQuickMapboxGLMapParameter *param) +{ + qreal angle = param->property("angle").toReal(); + angle = qMin(qMax(0., angle), mbgl::util::PITCH_MAX * mbgl::util::RAD2DEG); + if (m_pitch == angle) return false; + m_pitch = angle; + m_syncState |= PitchNeedsSync; + update(); + return true; +} + void QQuickMapboxGL::processMapParameter(QQuickMapboxGLMapParameter *param) { bool needsUpdate = false; @@ -379,6 +360,12 @@ void QQuickMapboxGL::processMapParameter(QQuickMapboxGLMapParameter *param) case 6: // image needsUpdate |= parseImage(param); break; + case 7: // bearing + needsUpdate |= parseBearing(param); + break; + case 8: // pitch + needsUpdate |= parsePitch(param); + break; } if (needsUpdate) update(); } @@ -420,6 +407,12 @@ void QQuickMapboxGL::onParameterPropertyUpdated(const QString &propertyName) case 6: // image needsUpdate |= parseImage(param); break; + case 7: // bearing + needsUpdate |= parseBearing(param); + break; + case 8: // pitch + needsUpdate |= parsePitch(param); + break; } if (needsUpdate) update(); } diff --git a/platform/qt/src/qquickmapboxglrenderer.cpp b/platform/qt/src/qquickmapboxglrenderer.cpp index 44df8f9340..4208047380 100644 --- a/platform/qt/src/qquickmapboxglrenderer.cpp +++ b/platform/qt/src/qquickmapboxglrenderer.cpp @@ -70,11 +70,11 @@ void QQuickMapboxGLRenderer::synchronize(QQuickFramebufferObject *item) } if (syncStatus & QQuickMapboxGL::BearingNeedsSync) { - m_map->setBearing(quickMap->bearing()); + m_map->setBearing(quickMap->m_bearing); } if (syncStatus & QQuickMapboxGL::PitchNeedsSync) { - m_map->setPitch(quickMap->pitch()); + m_map->setPitch(quickMap->m_pitch); } if (!quickMap->m_styleLoaded) { |