diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-05-13 15:35:54 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-05-13 17:29:36 +0300 |
commit | c1dde52c73061a49d576454a9ab4739e72561ca6 (patch) | |
tree | e4dbac5c318e016db9eac0f73347d7325e0afdff | |
parent | d36111abedf0d13d6078e6c75d55668bb8786141 (diff) | |
download | qtlocation-mapboxgl-c1dde52c73061a49d576454a9ab4739e72561ca6.tar.gz |
[Qt] Fix map aspect ratio
Take QGuiApplication::devicePixelRatio() in consideration when resizing
the map.
Fixes #4889.
-rw-r--r-- | platform/qt/app/mapwindow.cpp | 9 | ||||
-rw-r--r-- | platform/qt/src/qmapboxgl.cpp | 9 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxglrenderer.cpp | 3 |
3 files changed, 17 insertions, 4 deletions
diff --git a/platform/qt/app/mapwindow.cpp b/platform/qt/app/mapwindow.cpp index 3e0b373db3..7a431f9801 100644 --- a/platform/qt/app/mapwindow.cpp +++ b/platform/qt/app/mapwindow.cpp @@ -149,13 +149,16 @@ void MapWindow::initializeGL() void MapWindow::resizeGL(int w, int h) { - m_map.resize(QSize(w, h)); + QSize size(w, h); +#if QT_VERSION >= 0x050000 + size /= qApp->devicePixelRatio(); +#endif + m_map.resize(size); + glViewport(0, 0, size.width(), size.height()); } void MapWindow::paintGL() { - glViewport(0, 0, width(), height()); - m_frameDraws++; m_map.render(); } diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index e0f57cc0dc..32e0f43c8d 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -11,7 +11,12 @@ #include <mbgl/util/geo.hpp> #include <mbgl/util/traits.hpp> +#if QT_VERSION >= 0x050000 +#include <QGuiApplication> +#else #include <QCoreApplication> +#endif + #include <QImage> #include <QMapboxGL> #include <QMargins> @@ -636,8 +641,12 @@ QMapboxGLPrivate::~QMapboxGLPrivate() float QMapboxGLPrivate::getPixelRatio() const { +#if QT_VERSION >= 0x050000 + return qApp->devicePixelRatio(); +#else // FIXME: Should handle pixel ratio. return 1.0; +#endif } std::array<uint16_t, 2> QMapboxGLPrivate::getSize() const diff --git a/platform/qt/src/qquickmapboxglrenderer.cpp b/platform/qt/src/qquickmapboxglrenderer.cpp index 6212c4f128..45549cd400 100644 --- a/platform/qt/src/qquickmapboxglrenderer.cpp +++ b/platform/qt/src/qquickmapboxglrenderer.cpp @@ -3,6 +3,7 @@ #include <QMapboxGL> #include <QQuickMapboxGL> +#include <QGuiApplication> #include <QSize> #include <QOpenGLFramebufferObject> #include <QOpenGLFramebufferObjectFormat> @@ -27,7 +28,7 @@ QQuickMapboxGLRenderer::~QQuickMapboxGLRenderer() QOpenGLFramebufferObject* QQuickMapboxGLRenderer::createFramebufferObject(const QSize &size) { - m_map->resize(size); + m_map->resize(size / qApp->devicePixelRatio()); QOpenGLFramebufferObjectFormat format; format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil); |