summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2017-02-07 12:28:02 +0100
committerPaolo Angelelli <paolo.angelelli@qt.io>2017-02-28 14:39:10 +0000
commit9deba5318b646d92ffa276dcdd48af08506f8fa7 (patch)
treea404f33015b5c3b3bfddd37f56d8c1035ca51518 /tests
parent4e96893901c39fd7a65751549ec82bd18475006f (diff)
downloadqtlocation-9deba5318b646d92ffa276dcdd48af08506f8fa7.tar.gz
Fix frustum footprint calculation in QGeoCameraTiles
The old algorithm for computing the frustum footprint has problems with certain viewport sizes when tilting the map. This patch fixes the problem, and also removes the dependency on a local copy of qsort that was necessary in order for that algorithm to work properly. Task-number: QTBUG-58684 Task-number: QTBUG-34088 Change-Id: I36aaaa90c567cd19a4ae66dba8def0aec0b00534 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp b/tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp
index 33ebda67..1ac0abfa 100644
--- a/tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp
+++ b/tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp
@@ -69,6 +69,7 @@ private slots:
void tilesMapType();
void tilesPositions();
void tilesPositions_data();
+ void test_tilted_frustum();
};
void tst_QGeoCameraTiles::row(const PositionTestInfo &pti, int xOffset, int yOffset, int tileX, int tileY, int tileW, int tileH)
@@ -116,6 +117,29 @@ void tst_QGeoCameraTiles::test_group(const PositionTestInfo &pti, QList<int> &xV
}
}
+void tst_QGeoCameraTiles::test_tilted_frustum()
+{
+ // ctFull : Full map in the view, all 16 zl2 tiles visible. Using this as control.
+ QGeoCameraData cameraFull;
+ cameraFull.setZoomLevel(2);
+ cameraFull.setCenter(QGeoCoordinate(0,0));
+ QGeoCameraTiles ctFull;
+ ctFull.setTileSize(64);
+ ctFull.setCameraData(cameraFull);
+ ctFull.setScreenSize(QSize(256, 256));
+
+ QGeoCameraData camera;
+ camera.setZoomLevel(2.322);
+ camera.setTilt(30);
+ camera.setCenter(QWebMercator::mercatorToCoord(QDoubleVector2D(0.75, 0.5)));
+ QGeoCameraTiles ct;
+ ct.setTileSize(64);
+ ct.setScreenSize(QSize(320, 180));
+ ct.setCameraData(camera);
+
+ QCOMPARE(ct.createTiles(), ctFull.createTiles());
+}
+
void tst_QGeoCameraTiles::tilesPlugin()
{
QGeoCameraData camera;