summaryrefslogtreecommitdiff
path: root/platform/qt
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-09-25 19:30:34 +0200
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-09-26 11:47:34 +0200
commit5a12539d34976dd68186c70c3b69fcad8156d0a6 (patch)
tree08a2e1694246af17c82105eef621faf44c425376 /platform/qt
parent546109d642135750d7f6859b16e2f818e48c3fca (diff)
downloadqtlocation-mapboxgl-5a12539d34976dd68186c70c3b69fcad8156d0a6.tar.gz
[Qt] Replace remaining Mapbox-specific features as MapParameter
Diffstat (limited to 'platform/qt')
-rw-r--r--platform/qt/include/qquickmapboxgl.hpp17
-rw-r--r--platform/qt/qmlapp/main.qml22
-rw-r--r--platform/qt/src/qquickmapboxgl.cpp79
-rw-r--r--platform/qt/src/qquickmapboxglrenderer.cpp4
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 &center);
@@ -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) {