summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Rauter <matthias.rauter@qt.io>2023-02-02 11:46:59 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-02-15 07:07:10 +0000
commit6265c39b33073224c81386dea0cf54597e1d1462 (patch)
tree5a9c547fde2215f2f04d8227b3b33785a0eb2619
parent9da3d0db57c30ccc48118fcc323b826291604adf (diff)
downloadqtlocation-6265c39b33073224c81386dea0cf54597e1d1462.tar.gz
Add baseline tests to qtlocation
Testing rendering of QDeclarativeMapItems. Change-Id: I9767314945a022006fdf02341744018c04206099 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 51a895b3d280ce5103785e016e82b77676c26c5f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--tests/baseline/CMakeLists.txt7
-rw-r--r--tests/baseline/mapitems/CMakeLists.txt40
-rw-r--r--tests/baseline/mapitems/data/circle/circle_concentric1.qml47
-rw-r--r--tests/baseline/mapitems/data/circle/circle_concentric2.qml47
-rw-r--r--tests/baseline/mapitems/data/circle/circle_concentric3.qml47
-rw-r--r--tests/baseline/mapitems/data/circle/circle_concentric4.qml47
-rw-r--r--tests/baseline/mapitems/data/circle/circle_grid1.qml47
-rw-r--r--tests/baseline/mapitems/data/circle/circle_grid2.qml39
-rw-r--r--tests/baseline/mapitems/data/circle/circle_grid3.qml39
-rw-r--r--tests/baseline/mapitems/data/circle/circle_poles.qml48
-rw-r--r--tests/baseline/mapitems/data/polygon/include/GeometryAfrica.qml534
-rw-r--r--tests/baseline/mapitems/data/polygon/include/GeometryAntarctica.qml113
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_africa1.qml24
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_africa1_tilt.qml25
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_africa1_tilt_bear.qml26
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_africa2.qml24
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_antarctica1.qml23
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_antarctica2.qml23
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_antarctica3.qml24
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_hole.qml52
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_hole_bear.qml53
-rw-r--r--tests/baseline/mapitems/data/polygon/polygon_hole_tilt.qml53
-rw-r--r--tests/baseline/mapitems/data/polyline/polyline_dateborder.qml103
-rw-r--r--tests/baseline/mapitems/data/polyline/polyline_dateborder2.qml40
-rw-r--r--tests/baseline/mapitems/data/polyline/polyline_local.qml53
-rw-r--r--tests/baseline/mapitems/data/polyline/polyline_poles.qml80
-rw-r--r--tests/baseline/mapitems/data/rectangle/rectangle_concentric1.qml54
-rw-r--r--tests/baseline/mapitems/data/rectangle/rectangle_concentric2.qml54
-rw-r--r--tests/baseline/mapitems/data/rectangle/rectangle_concentric3.qml54
-rw-r--r--tests/baseline/mapitems/data/rectangle/rectangle_grid1.qml53
-rw-r--r--tests/baseline/mapitems/data/rectangle/rectangle_grid2.qml70
-rw-r--r--tests/baseline/mapitems/tst_baseline_mapitems.cpp240
32 files changed, 2183 insertions, 0 deletions
diff --git a/tests/baseline/CMakeLists.txt b/tests/baseline/CMakeLists.txt
new file mode 100644
index 00000000..f38e01c3
--- /dev/null
+++ b/tests/baseline/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+# Special case: test includes the QBaselineTest module sources from qtbase directly
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../../qtbase/tests/baseline/shared")
+ add_subdirectory(mapitems)
+endif()
diff --git a/tests/baseline/mapitems/CMakeLists.txt b/tests/baseline/mapitems/CMakeLists.txt
new file mode 100644
index 00000000..4ca8454d
--- /dev/null
+++ b/tests/baseline/mapitems/CMakeLists.txt
@@ -0,0 +1,40 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+file(GLOB_RECURSE test_data_glob
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/*)
+list(APPEND test_data ${test_data_glob})
+
+qt_internal_add_test(tst_baseline_mapitems
+ SOURCES
+ ../../../../qtbase/tests/baseline/shared/baselineprotocol.cpp
+ ../../../../qtbase/tests/baseline/shared/baselineprotocol.h
+ ../../../../qtbase/tests/baseline/shared/lookup3.cpp
+ ../../../../qtbase/tests/baseline/shared/qbaselinetest.cpp
+ ../../../../qtbase/tests/baseline/shared/qbaselinetest.h
+ tst_baseline_mapitems.cpp
+ INCLUDE_DIRECTORIES
+ ../../../../qtbase/tests/baseline/shared
+ LIBRARIES
+ Qt::Core
+ Qt::Gui
+ Qt::LocationPrivate
+ Qt::Positioning
+ Qt::Qml
+ Qt::Quick
+ TESTDATA ${test_data}
+)
+
+# Make the QML files available to Creator's locator.
+target_sources(tst_baseline_mapitems
+ PRIVATE
+ ${test_data}
+)
+
+#add_dependencies(tst_baseline_mapitems qmlscenegrabber)
+
+set_source_files_properties(${test_data}
+ PROPERTIES
+ HEADER_FILE_ONLY ON
+)
diff --git a/tests/baseline/mapitems/data/circle/circle_concentric1.qml b/tests/baseline/mapitems/data/circle/circle_concentric1.qml
new file mode 100644
index 00000000..a4be266d
--- /dev/null
+++ b/tests/baseline/mapitems/data/circle/circle_concentric1.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 20)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "#30ff0000",
+ "#30ffa500",
+ "#30ffff00",
+ "#3000ff00",
+ "#300000ff",
+ "#30ee82ee"
+ ]
+ property int count: 20
+ model: count
+ MapCircle
+ {
+ center
+ {
+ longitude: 20
+ latitude: 0
+ }
+ radius: ((c.count-index-1)/(c.count-1)*(6371-1000)+500)*Math.PI*1000
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 1
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/circle/circle_concentric2.qml b/tests/baseline/mapitems/data/circle/circle_concentric2.qml
new file mode 100644
index 00000000..45184c09
--- /dev/null
+++ b/tests/baseline/mapitems/data/circle/circle_concentric2.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, -20)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "#30ff0000",
+ "#30ffa500",
+ "#30ffff00",
+ "#3000ff00",
+ "#300000ff",
+ "#30ee82ee"
+ ]
+ property int count: 20
+ model: count
+ MapCircle
+ {
+ center
+ {
+ longitude: 20
+ latitude: 80
+ }
+ radius: ((c.count-index-1)/(c.count-1)*(6371-1000)+500)*Math.PI*1000
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 1
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/circle/circle_concentric3.qml b/tests/baseline/mapitems/data/circle/circle_concentric3.qml
new file mode 100644
index 00000000..55918fc9
--- /dev/null
+++ b/tests/baseline/mapitems/data/circle/circle_concentric3.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 40)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "#30ff0000",
+ "#30ffa500",
+ "#30ffff00",
+ "#3000ff00",
+ "#300000ff",
+ "#30ee82ee"
+ ]
+ property int count: 20
+ model: count
+ MapCircle
+ {
+ center
+ {
+ longitude: 20
+ latitude: -80
+ }
+ radius: ((c.count-index-1)/(c.count-1)*(6371-1000)+500)*Math.PI*1000
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 1
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/circle/circle_concentric4.qml b/tests/baseline/mapitems/data/circle/circle_concentric4.qml
new file mode 100644
index 00000000..2232b88f
--- /dev/null
+++ b/tests/baseline/mapitems/data/circle/circle_concentric4.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, -110)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "#30ff0000",
+ "#30ffa500",
+ "#30ffff00",
+ "#3000ff00",
+ "#300000ff",
+ "#30ee82ee"
+ ]
+ property int count: 20
+ model: count
+ MapCircle
+ {
+ center
+ {
+ longitude: 170
+ latitude: 30
+ }
+ radius: ((c.count-index-1)/(c.count-1)*(6371-1000)+500)*Math.PI*1000
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 1
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/circle/circle_grid1.qml b/tests/baseline/mapitems/data/circle/circle_grid1.qml
new file mode 100644
index 00000000..53ce8eb7
--- /dev/null
+++ b/tests/baseline/mapitems/data/circle/circle_grid1.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 20)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "violet"
+ ]
+ property int count: c.colors.length
+ model: count*count
+ MapCircle
+ {
+ center
+ {
+ longitude: -180+360*(index%c.count+0.5)/(c.count)
+ latitude: -90+180*(Math.floor(index/c.count)+0.5)/(c.count)
+ }
+ radius: 2000*1000
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 0.3
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/circle/circle_grid2.qml b/tests/baseline/mapitems/data/circle/circle_grid2.qml
new file mode 100644
index 00000000..14ab12ba
--- /dev/null
+++ b/tests/baseline/mapitems/data/circle/circle_grid2.qml
@@ -0,0 +1,39 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 20)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property int count: 4
+ model: count*count
+ MapCircle
+ {
+ center
+ {
+ longitude: -180+360*(index%c.count+0.5)/(c.count)
+ latitude: -90+180*(Math.floor(index/c.count)+0.5)/(c.count)
+ }
+ radius: 4000*1000
+ color: 'green'
+ border.width: 1
+ autoFadeIn: false
+ opacity: 0.3
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/circle/circle_grid3.qml b/tests/baseline/mapitems/data/circle/circle_grid3.qml
new file mode 100644
index 00000000..fa36657e
--- /dev/null
+++ b/tests/baseline/mapitems/data/circle/circle_grid3.qml
@@ -0,0 +1,39 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 20)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property int count: 2
+ model: count*count
+ MapCircle
+ {
+ center
+ {
+ longitude: -180+360*(index%c.count+0.5)/(c.count)
+ latitude: -90+180*(Math.floor(index/c.count)+0.5)/(c.count)
+ }
+ radius: 8000*1000
+ color: 'green'
+ border.width: 1
+ autoFadeIn: false
+ opacity: 0.3
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/circle/circle_poles.qml b/tests/baseline/mapitems/data/circle/circle_poles.qml
new file mode 100644
index 00000000..0aece161
--- /dev/null
+++ b/tests/baseline/mapitems/data/circle/circle_poles.qml
@@ -0,0 +1,48 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 20)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+ MapCircle
+ {
+ center
+ {
+ longitude: 0
+ latitude: -90
+ }
+ radius: 0.25*Math.PI*6371*1000
+ color: 'red'
+ smooth: true
+ border.width: 1
+ autoFadeIn: false
+ opacity: 0.5
+ }
+ MapCircle
+ {
+ center
+ {
+ longitude: 0
+ latitude: 90
+ }
+ radius: 0.25*Math.PI*6371*1000
+ color: 'green'
+ smooth: true
+ border.width: 1
+ autoFadeIn: false
+ opacity: 0.5
+ }
+}
diff --git a/tests/baseline/mapitems/data/polygon/include/GeometryAfrica.qml b/tests/baseline/mapitems/data/polygon/include/GeometryAfrica.qml
new file mode 100644
index 00000000..29871563
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/include/GeometryAfrica.qml
@@ -0,0 +1,534 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+/* Raw Geometry Data:
+ *
+ * source:
+ * https://gist.github.com/hrbrmstr/91ea5cc9474286c72838
+ *
+ * license: MIT Licensed
+ */
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+MapPolygon {
+ color: "green"
+ autoFadeIn: false
+ opacity: 0.5
+ geoShape: QtPositioning.polygon(
+ [
+ QtPositioning.coordinate(5.773365020751953, 0.694651007652283),
+ QtPositioning.coordinate(5.944513320922852, 0.635833263397217),
+ QtPositioning.coordinate(6.058594703674316, 0.506461620330811),
+ QtPositioning.coordinate(6.08104133605957, 0.405138850212097),
+ QtPositioning.coordinate(6.058575630187988, 0.311319380998611),
+ QtPositioning.coordinate(6.098194122314453, 0.217222213745117),
+ QtPositioning.coordinate(6.023333072662354, 0.353749960660934),
+ QtPositioning.coordinate(6.069791316986084, 0.430416643619537),
+ QtPositioning.coordinate(5.991944313049316, 0.574999928474426),
+ QtPositioning.coordinate(5.75993013381958, 0.663749933242798),
+ QtPositioning.coordinate(5.757777214050293, 0.255833327770233),
+ QtPositioning.coordinate(4.730833053588867, -2.058888912200928),
+ QtPositioning.coordinate(5.095832824707031, -3.148611545562744),
+ QtPositioning.coordinate(5.146839618682861, -2.847951412200928),
+ QtPositioning.coordinate(5.142221450805664, -3.136111259460449),
+ QtPositioning.coordinate(5.364305019378662, -3.14020848274231),
+ QtPositioning.coordinate(5.119166374206543, -3.297986268997192),
+ QtPositioning.coordinate(5.25666618347168, -4.003541946411133),
+ QtPositioning.coordinate(5.25916576385498, -3.734722375869751),
+ QtPositioning.coordinate(5.35333251953125, -3.754444599151611),
+ QtPositioning.coordinate(5.37263822555542, -3.811736106872559),
+ QtPositioning.coordinate(5.276041030883789, -3.738750219345093),
+ QtPositioning.coordinate(5.295555114746094, -4.468056201934814),
+ QtPositioning.coordinate(5.17652702331543, -4.80750036239624),
+ QtPositioning.coordinate(5.230971813201904, -4.00569486618042),
+ QtPositioning.coordinate(5.128610610961914, -4.893889427185059),
+ QtPositioning.coordinate(5.2147216796875, -5.026667594909668),
+ QtPositioning.coordinate(5.228957653045654, -5.322916984558105),
+ QtPositioning.coordinate(5.118471622467041, -5.360486507415771),
+ QtPositioning.coordinate(5.12522554397583, -5.014204978942871),
+ QtPositioning.coordinate(5.020138740539551, -5.897500514984131),
+ QtPositioning.coordinate(4.349166393280029, -7.436389446258545),
+ QtPositioning.coordinate(4.5708327293396, -8.242154121398926),
+ QtPositioning.coordinate(5.122776985168457, -9.238889694213867),
+ QtPositioning.coordinate(6.162221908569336, -10.371945381164551),
+ QtPositioning.coordinate(6.271110534667969, -10.764167785644531),
+ QtPositioning.coordinate(6.908055305480957, -11.463335037231445),
+ QtPositioning.coordinate(7.388610363006592, -12.504167556762695),
+ QtPositioning.coordinate(7.591041088104248, -12.184306144714355),
+ QtPositioning.coordinate(7.555416107177734, -12.460556983947754),
+ QtPositioning.coordinate(7.903263568878174, -12.958959579467773),
+ QtPositioning.coordinate(8.247768402099609, -12.974334716796875),
+ QtPositioning.coordinate(8.194999694824219, -13.132778167724609),
+ QtPositioning.coordinate(8.49756908416748, -13.285000801086426),
+ QtPositioning.coordinate(8.369582176208496, -13.055903434753418),
+ QtPositioning.coordinate(8.48527717590332, -13.095556259155273),
+ QtPositioning.coordinate(8.567777633666992, -12.897500991821289),
+ QtPositioning.coordinate(8.556943893432617, -13.189444541931152),
+ QtPositioning.coordinate(8.861944198608398, -13.132223129272461),
+ QtPositioning.coordinate(9.560075759887695, -13.493133544921875),
+ QtPositioning.coordinate(9.541465759277344, -13.679512023925781),
+ QtPositioning.coordinate(9.952190399169922, -13.688638687133789),
+ QtPositioning.coordinate(9.849443435668945, -13.822361946105957),
+ QtPositioning.coordinate(10.293609619140625, -14.457500457763672),
+ QtPositioning.coordinate(10.506673812866211, -14.53582763671875),
+ QtPositioning.coordinate(10.473331451416016, -14.660696029663086),
+ QtPositioning.coordinate(10.842777252197266, -14.516528129577637),
+ QtPositioning.coordinate(10.640483856201172, -14.698611259460449),
+ QtPositioning.coordinate(10.917499542236328, -14.818889617919922),
+ QtPositioning.coordinate(11.028887748718262, -14.690417289733887),
+ QtPositioning.coordinate(10.771943092346191, -15.005416870117188),
+ QtPositioning.coordinate(10.977638244628906, -15.115695953369141),
+ QtPositioning.coordinate(11.195276260375977, -15.02277946472168),
+ QtPositioning.coordinate(10.995901107788086, -15.232917785644531),
+ QtPositioning.coordinate(11.229755401611328, -15.208820343017578),
+ QtPositioning.coordinate(11.141804695129395, -15.353472709655762),
+ QtPositioning.coordinate(11.287428855895996, -15.426667213439941),
+ QtPositioning.coordinate(11.425912857055664, -15.265279769897461),
+ QtPositioning.coordinate(11.33281135559082, -15.50114631652832),
+ QtPositioning.coordinate(11.619304656982422, -15.282084465026855),
+ QtPositioning.coordinate(11.594165802001953, -15.027223587036133),
+ QtPositioning.coordinate(11.681463241577148, -15.339035034179688),
+ QtPositioning.coordinate(11.55312442779541, -15.444340705871582),
+ QtPositioning.coordinate(11.683666229248047, -15.423528671264648),
+ QtPositioning.coordinate(11.725415229797363, -15.556112289428711),
+ QtPositioning.coordinate(11.865276336669922, -15.458612442016602),
+ QtPositioning.coordinate(11.893331527709961, -15.130834579467773),
+ QtPositioning.coordinate(11.802637100219727, -15.0665283203125),
+ QtPositioning.coordinate(11.746944427490234, -14.955972671508789),
+ QtPositioning.coordinate(11.958053588867188, -14.991111755371094),
+ QtPositioning.coordinate(11.958887100219727, -15.43083381652832),
+ QtPositioning.coordinate(11.735276222229004, -15.959444999694824),
+ QtPositioning.coordinate(12.009904861450195, -15.705810546875),
+ QtPositioning.coordinate(11.905553817749023, -16.202777862548828),
+ QtPositioning.coordinate(12.105833053588867, -16.349723815917969),
+ QtPositioning.coordinate(12.333332061767578, -16.115280151367188),
+ QtPositioning.coordinate(12.171804428100586, -16.455280303955078),
+ QtPositioning.coordinate(12.422915458679199, -16.793195724487305),
+ QtPositioning.coordinate(12.632637977600098, -16.583751678466797),
+ QtPositioning.coordinate(12.545414924621582, -16.37437629699707),
+ QtPositioning.coordinate(12.531040191650391, -15.634444236755371),
+ QtPositioning.coordinate(12.637082099914551, -15.509305953979492),
+ QtPositioning.coordinate(12.782081604003906, -15.529862403869629),
+ QtPositioning.coordinate(12.832915306091309, -15.391806602478027),
+ QtPositioning.coordinate(12.805763244628906, -15.526876449584961),
+ QtPositioning.coordinate(12.557082176208496, -15.645625114440918),
+ QtPositioning.coordinate(12.724939346313477, -16.021377563476562),
+ QtPositioning.coordinate(12.576804161071777, -16.421667098999023),
+ QtPositioning.coordinate(12.783332824707031, -16.593959808349609),
+ QtPositioning.coordinate(12.56472110748291, -16.752918243408203),
+ QtPositioning.coordinate(13.323331832885742, -16.821666717529297),
+ QtPositioning.coordinate(13.471735000610352, -16.709932327270508),
+ QtPositioning.coordinate(13.295068740844727, -16.554723739624023),
+ QtPositioning.coordinate(13.25263786315918, -16.194725036621094),
+ QtPositioning.coordinate(13.424860000610352, -16.155904769897461),
+ QtPositioning.coordinate(13.438610076904297, -15.328334808349609),
+ QtPositioning.coordinate(13.451526641845703, -15.305764198303223),
+ QtPositioning.coordinate(13.491054534912109, -15.297176361083984),
+ QtPositioning.coordinate(13.528679847717285, -15.547223091125488),
+ QtPositioning.coordinate(13.368610382080078, -16.513336181640625),
+ QtPositioning.coordinate(13.696873664855957, -16.642152786254883),
+ QtPositioning.coordinate(13.958054542541504, -16.490837097167969),
+ QtPositioning.coordinate(13.770449638366699, -16.69843864440918),
+ QtPositioning.coordinate(13.953471183776855, -16.74534797668457),
+ QtPositioning.coordinate(13.961666107177734, -16.638889312744141),
+ QtPositioning.coordinate(14.166388511657715, -16.367431640625),
+ QtPositioning.coordinate(14.01249885559082, -16.775836944580078),
+ QtPositioning.coordinate(14.654443740844727, -17.175556182861328),
+ QtPositioning.coordinate(14.750137329101562, -17.532779693603516),
+ QtPositioning.coordinate(14.931110382080078, -17.129169464111328),
+ QtPositioning.coordinate(15.75666618347168, -16.546390533447266),
+ QtPositioning.coordinate(16.611387252807617, -16.467641830444336),
+ QtPositioning.coordinate(17.734580993652344, -16.039447784423828),
+ QtPositioning.coordinate(18.913055419921875, -16.179168701171875),
+ QtPositioning.coordinate(19.352218627929688, -16.511669158935547),
+ QtPositioning.coordinate(19.467498779296875, -16.3094482421875),
+ QtPositioning.coordinate(19.410066604614258, -16.461736679077148),
+ QtPositioning.coordinate(20.226108551025391, -16.196807861328125),
+ QtPositioning.coordinate(21.158470153808594, -16.923681259155273),
+ QtPositioning.coordinate(20.837429046630859, -17.101528167724609),
+ QtPositioning.coordinate(21.945415496826172, -16.916252136230469),
+ QtPositioning.coordinate(22.564582824707031, -16.362709045410156),
+ QtPositioning.coordinate(23.909439086914062, -15.779446601867676),
+ QtPositioning.coordinate(23.648504257202148, -15.993976593017578),
+ QtPositioning.coordinate(23.788055419921875, -15.933055877685547),
+ QtPositioning.coordinate(24.68964958190918, -14.90090274810791),
+ QtPositioning.coordinate(26.163330078125, -14.483333587646484),
+ QtPositioning.coordinate(26.731666564941406, -13.574167251586914),
+ QtPositioning.coordinate(27.92048454284668, -12.962709426879883),
+ QtPositioning.coordinate(28.303747177124023, -11.511945724487305),
+ QtPositioning.coordinate(29.317914962768555, -10.228196144104004),
+ QtPositioning.coordinate(30.164997100830078, -9.640973091125488),
+ QtPositioning.coordinate(30.402498245239258, -9.608403205871582),
+ QtPositioning.coordinate(30.726943969726562, -9.853889465332031),
+ QtPositioning.coordinate(31.446662902832031, -9.809167861938477),
+ QtPositioning.coordinate(32.183609008789062, -9.277778625488281),
+ QtPositioning.coordinate(32.543952941894531, -9.279340744018555),
+ QtPositioning.coordinate(33.25054931640625, -8.538333892822266),
+ QtPositioning.coordinate(34.018608093261719, -6.843055725097656),
+ QtPositioning.coordinate(35.7906494140625, -5.918744087219238),
+ QtPositioning.coordinate(35.914440155029297, -5.45555591583252),
+ QtPositioning.coordinate(35.885791778564453, -5.307649612426758),
+ QtPositioning.coordinate(35.574371337890625, -5.248958587646484),
+ QtPositioning.coordinate(35.208885192871094, -4.695834159851074),
+ QtPositioning.coordinate(35.191383361816406, -3.336250305175781),
+ QtPositioning.coordinate(35.418052673339844, -2.986111164093018),
+ QtPositioning.coordinate(35.125133514404297, -2.834861278533936),
+ QtPositioning.coordinate(35.234577178955078, -2.883680820465088),
+ QtPositioning.coordinate(35.073326110839844, -1.979722261428833),
+ QtPositioning.coordinate(35.322494506835938, -1.352222442626953),
+ QtPositioning.coordinate(35.67694091796875, -1.03583025932312),
+ QtPositioning.coordinate(35.902774810791016, -0.373125046491623),
+ QtPositioning.coordinate(35.784023284912109, -0.106666676700115),
+ QtPositioning.coordinate(36.10333251953125, 0.204166650772095),
+ QtPositioning.coordinate(36.512214660644531, 1.182499885559082),
+ QtPositioning.coordinate(36.589160919189453, 2.572499752044678),
+ QtPositioning.coordinate(36.794784545898438, 2.900207996368408),
+ QtPositioning.coordinate(36.914718627929688, 3.901666402816772),
+ QtPositioning.coordinate(36.893886566162109, 4.788749217987061),
+ QtPositioning.coordinate(36.640274047851562, 5.328055381774902),
+ QtPositioning.coordinate(37.086387634277344, 6.398332595825195),
+ QtPositioning.coordinate(36.884300231933594, 6.920415878295898),
+ QtPositioning.coordinate(37.077220916748047, 7.292499542236328),
+ QtPositioning.coordinate(36.844444274902344, 7.932221412658691),
+ QtPositioning.coordinate(37.328334808349609, 9.858680725097656),
+ QtPositioning.coordinate(37.150772094726562, 9.808313369750977),
+ QtPositioning.coordinate(37.179580688476562, 10.254859924316406),
+ QtPositioning.coordinate(37.145515441894531, 10.132012367248535),
+ QtPositioning.coordinate(36.877147674560547, 10.344235420227051),
+ QtPositioning.coordinate(36.810829162597656, 10.192776679992676),
+ QtPositioning.coordinate(36.735137939453125, 10.336943626403809),
+ QtPositioning.coordinate(37.085968017578125, 11.039373397827148),
+ QtPositioning.coordinate(36.904441833496094, 11.10222053527832),
+ QtPositioning.coordinate(36.465343475341797, 10.796387672424316),
+ QtPositioning.coordinate(36.351104736328125, 10.512777328491211),
+ QtPositioning.coordinate(36.117355346679688, 10.456178665161133),
+ QtPositioning.coordinate(35.788604736328125, 10.685832977294922),
+ QtPositioning.coordinate(35.637355804443359, 11.027082443237305),
+ QtPositioning.coordinate(35.241943359375, 11.126665115356445),
+ QtPositioning.coordinate(34.670276641845703, 10.731388092041016),
+ QtPositioning.coordinate(34.168605804443359, 10.007082939147949),
+ QtPositioning.coordinate(33.748603820800781, 10.266387939453125),
+ QtPositioning.coordinate(33.70416259765625, 10.715970993041992),
+ QtPositioning.coordinate(33.473743438720703, 10.751666069030762),
+ QtPositioning.coordinate(33.612636566162109, 11.055832862854004),
+ QtPositioning.coordinate(33.210063934326172, 11.174304008483887),
+ QtPositioning.coordinate(32.837776184082031, 12.301248550415039),
+ QtPositioning.coordinate(32.918888092041016, 13.251110076904297),
+ QtPositioning.coordinate(32.398605346679688, 15.165833473205566),
+ QtPositioning.coordinate(31.389720916748047, 15.754304885864258),
+ QtPositioning.coordinate(31.082220077514648, 17.367219924926758),
+ QtPositioning.coordinate(30.276386260986328, 18.957498550415039),
+ QtPositioning.coordinate(30.417221069335938, 19.617774963378906),
+ QtPositioning.coordinate(30.850830078125, 20.057638168334961),
+ QtPositioning.coordinate(31.149997711181641, 20.155551910400391),
+ QtPositioning.coordinate(31.748189926147461, 19.919580459594727),
+ QtPositioning.coordinate(32.184715270996094, 20.084442138671875),
+ QtPositioning.coordinate(32.5609130859375, 20.567626953125),
+ QtPositioning.coordinate(32.944442749023438, 21.713886260986328),
+ QtPositioning.coordinate(32.6197509765625, 23.119163513183594),
+ QtPositioning.coordinate(32.332111358642578, 23.085100173950195),
+ QtPositioning.coordinate(32.216224670410156, 23.247196197509766),
+ QtPositioning.coordinate(31.966526031494141, 24.982637405395508),
+ QtPositioning.coordinate(31.540760040283203, 25.173887252807617),
+ QtPositioning.coordinate(31.617774963378906, 25.947219848632812),
+ QtPositioning.coordinate(31.376108169555664, 27.323192596435547),
+ QtPositioning.coordinate(31.222774505615234, 27.438888549804688),
+ QtPositioning.coordinate(31.243749618530273, 27.84416389465332),
+ QtPositioning.coordinate(31.098052978515625, 27.92138671875),
+ QtPositioning.coordinate(31.078887939453125, 28.429721832275391),
+ QtPositioning.coordinate(30.824165344238281, 29.034999847412109),
+ QtPositioning.coordinate(31.320274353027344, 30.064441680908203),
+ QtPositioning.coordinate(31.237358093261719, 30.289718627929688),
+ QtPositioning.coordinate(31.502843856811523, 30.355449676513672),
+ QtPositioning.coordinate(31.575693130493164, 30.956110000610352),
+ QtPositioning.coordinate(31.380275726318359, 30.59388542175293),
+ QtPositioning.coordinate(31.496664047241211, 31.126455307006836),
+ QtPositioning.coordinate(31.597011566162109, 31.01222038269043),
+ QtPositioning.coordinate(31.442218780517578, 31.556941986083984),
+ QtPositioning.coordinate(31.534917831420898, 31.8717041015625),
+ QtPositioning.coordinate(31.529884338378906, 31.921480178833008),
+ QtPositioning.coordinate(31.290933609008789, 32.202491760253906),
+ QtPositioning.coordinate(31.527566909790039, 31.909650802612305),
+ QtPositioning.coordinate(31.277393341064453, 31.777462005615234),
+ QtPositioning.coordinate(31.074165344238281, 32.14306640625),
+ QtPositioning.coordinate(31.124303817749023, 32.279788970947266),
+ QtPositioning.coordinate(31.282426834106445, 32.214752197265625),
+ QtPositioning.coordinate(31.033538818359375, 32.711799621582031),
+ QtPositioning.coordinate(31.323329925537109, 34.216659545898438),
+ QtPositioning.coordinate(29.486705780029297, 34.903800964355469),
+ QtPositioning.coordinate(27.728610992431641, 34.254440307617188),
+ QtPositioning.coordinate(28.554443359375, 33.242774963378906),
+ QtPositioning.coordinate(28.995067596435547, 33.172561645507812),
+ QtPositioning.coordinate(29.454719543457031, 32.741386413574219),
+ QtPositioning.coordinate(30.002706527709961, 32.575618743896484),
+ QtPositioning.coordinate(29.594860076904297, 32.340827941894531),
+ QtPositioning.coordinate(29.340553283691406, 32.596382141113281),
+ QtPositioning.coordinate(28.867774963378906, 32.688606262207031),
+ QtPositioning.coordinate(27.883052825927734, 33.558883666992188),
+ QtPositioning.coordinate(27.643886566162109, 33.494720458984375),
+ QtPositioning.coordinate(27.236663818359375, 33.837356567382812),
+ QtPositioning.coordinate(26.655275344848633, 33.938327789306641),
+ QtPositioning.coordinate(24.517498016357422, 35.13861083984375),
+ QtPositioning.coordinate(23.907011032104492, 35.811176300048828),
+ QtPositioning.coordinate(23.942914962768555, 35.485832214355469),
+ QtPositioning.coordinate(22.970693588256836, 35.668888092041016),
+ QtPositioning.coordinate(22.053194046020508, 36.886245727539062),
+ QtPositioning.coordinate(21.608608245849609, 36.911384582519531),
+ QtPositioning.coordinate(21.063261032104492, 37.306591033935547),
+ QtPositioning.coordinate(21.207914352416992, 37.103187561035156),
+ QtPositioning.coordinate(18.853887557983398, 37.435688018798828),
+ QtPositioning.coordinate(18.066802978515625, 38.589023590087891),
+ QtPositioning.coordinate(17.188610076904297, 39.001937866210938),
+ QtPositioning.coordinate(15.986248970031738, 39.270137786865234),
+ QtPositioning.coordinate(15.088054656982422, 39.718051910400391),
+ QtPositioning.coordinate(15.489442825317383, 39.881385803222656),
+ QtPositioning.coordinate(14.971110343933105, 40.175411224365234),
+ QtPositioning.coordinate(15.007776260375977, 40.454856872558594),
+ QtPositioning.coordinate(14.705554962158203, 40.807220458984375),
+ QtPositioning.coordinate(14.630693435668945, 41.172218322753906),
+ QtPositioning.coordinate(13.93638801574707, 41.677219390869141),
+ QtPositioning.coordinate(13.573471069335938, 42.284580230712891),
+ QtPositioning.coordinate(13.217915534973145, 42.373813629150391),
+ QtPositioning.coordinate(12.844999313354492, 42.804718017578125),
+ QtPositioning.coordinate(12.828956604003906, 43.077980041503906),
+ QtPositioning.coordinate(12.476728439331055, 43.327495574951172),
+ QtPositioning.coordinate(11.993263244628906, 43.370903015136719),
+ QtPositioning.coordinate(11.511942863464355, 42.531524658203125),
+ QtPositioning.coordinate(11.570833206176758, 43.157218933105469),
+ QtPositioning.coordinate(10.447776794433594, 44.278327941894531),
+ QtPositioning.coordinate(10.421526908874512, 44.892078399658203),
+ QtPositioning.coordinate(10.872984886169434, 45.758884429931641),
+ QtPositioning.coordinate(10.689999580383301, 46.453330993652344),
+ QtPositioning.coordinate(11.178956985473633, 47.396663665771484),
+ QtPositioning.coordinate(11.135137557983398, 48.125690460205078),
+ QtPositioning.coordinate(11.315553665161133, 48.521385192871094),
+ QtPositioning.coordinate(11.245832443237305, 48.987220764160156),
+ QtPositioning.coordinate(11.514582633972168, 50.093189239501953),
+ QtPositioning.coordinate(11.979166030883789, 50.769439697265625),
+ QtPositioning.coordinate(11.816665649414062, 51.278327941894531),
+ QtPositioning.coordinate(11.328054428100586, 51.076385498046875),
+ QtPositioning.coordinate(10.633609771728516, 51.145553588867188),
+ QtPositioning.coordinate(10.44666576385498, 51.017215728759766),
+ QtPositioning.coordinate(10.538055419921875, 51.189437866210938),
+ QtPositioning.coordinate(10.397359848022461, 51.391246795654297),
+ QtPositioning.coordinate(10.312221527099609, 50.895828247070312),
+ QtPositioning.coordinate(9.437870979309082, 50.838539123535156),
+ QtPositioning.coordinate(7.946110725402832, 49.829299926757812),
+ QtPositioning.coordinate(6.149722099304199, 49.04083251953125),
+ QtPositioning.coordinate(4.523055076599121, 48.000553131103516),
+ QtPositioning.coordinate(2.437222003936768, 46.025550842285156),
+ QtPositioning.coordinate(1.551944255828857, 44.544994354248047),
+ QtPositioning.coordinate(0.649998784065247, 43.488609313964844),
+ QtPositioning.coordinate(-0.896111130714417, 42.066665649414062),
+ QtPositioning.coordinate(-1.958055734634399, 41.315277099609375),
+ QtPositioning.coordinate(-2.019166946411133, 40.89166259765625),
+ QtPositioning.coordinate(-2.304375171661377, 40.958469390869141),
+ QtPositioning.coordinate(-2.236111164093018, 40.854995727539062),
+ QtPositioning.coordinate(-2.552847385406494, 40.630481719970703),
+ QtPositioning.coordinate(-2.671111345291138, 40.231109619140625),
+ QtPositioning.coordinate(-3.265694618225098, 40.125480651855469),
+ QtPositioning.coordinate(-4.633889198303223, 39.402496337890625),
+ QtPositioning.coordinate(-4.669617652893066, 39.203025817871094),
+ QtPositioning.coordinate(-6.039722919464111, 38.776107788085938),
+ QtPositioning.coordinate(-6.385278224945068, 38.870830535888672),
+ QtPositioning.coordinate(-6.99431324005127, 39.547882080078125),
+ QtPositioning.coordinate(-7.498888969421387, 39.288330078125),
+ QtPositioning.coordinate(-7.757778167724609, 39.299720764160156),
+ QtPositioning.coordinate(-7.814167022705078, 39.446662902832031),
+ QtPositioning.coordinate(-8.267862319946289, 39.2952880859375),
+ QtPositioning.coordinate(-9.92388916015625, 39.791107177734375),
+ QtPositioning.coordinate(-10.654167175292969, 40.584442138671875),
+ QtPositioning.coordinate(-11.317779541015625, 40.387771606445312),
+ QtPositioning.coordinate(-12.504931449890137, 40.474159240722656),
+ QtPositioning.coordinate(-12.755416870117188, 40.645969390869141),
+ QtPositioning.coordinate(-12.969236373901367, 40.412773132324219),
+ QtPositioning.coordinate(-12.970694541931152, 40.592910766601562),
+ QtPositioning.coordinate(-14.02166748046875, 40.649715423583984),
+ QtPositioning.coordinate(-14.167500495910645, 40.532772064208984),
+ QtPositioning.coordinate(-14.202084541320801, 40.722774505615234),
+ QtPositioning.coordinate(-14.484724044799805, 40.6361083984375),
+ QtPositioning.coordinate(-14.423473358154297, 40.821109771728516),
+ QtPositioning.coordinate(-14.734167098999023, 40.84527587890625),
+ QtPositioning.coordinate(-15.183890342712402, 40.514442443847656),
+ QtPositioning.coordinate(-15.254861831665039, 40.684299468994141),
+ QtPositioning.coordinate(-15.498889923095703, 40.578330993652344),
+ QtPositioning.coordinate(-16.305557250976562, 39.782634735107422),
+ QtPositioning.coordinate(-16.536945343017578, 39.6986083984375),
+ QtPositioning.coordinate(-16.984376907348633, 39.096179962158203),
+ QtPositioning.coordinate(-17.385833740234375, 37.853050231933594),
+ QtPositioning.coordinate(-18.001392364501953, 36.98388671875),
+ QtPositioning.coordinate(-17.875556945800781, 36.846385955810547),
+ QtPositioning.coordinate(-18.108612060546875, 36.943885803222656),
+ QtPositioning.coordinate(-18.891391754150391, 36.252777099609375),
+ QtPositioning.coordinate(-18.813056945800781, 36.100135803222656),
+ QtPositioning.coordinate(-19.860418319702148, 34.890689849853516),
+ QtPositioning.coordinate(-19.618612289428711, 34.626800537109375),
+ QtPositioning.coordinate(-19.825904846191406, 34.776103973388672),
+ QtPositioning.coordinate(-20.391181945800781, 34.666938781738281),
+ QtPositioning.coordinate(-20.933300018310547, 35.111801147460938),
+ QtPositioning.coordinate(-22.407501220703125, 35.306732177734375),
+ QtPositioning.coordinate(-22.460002899169922, 35.397216796875),
+ QtPositioning.coordinate(-22.095800399780273, 35.480552673339844),
+ QtPositioning.coordinate(-22.232501983642578, 35.545272827148438),
+ QtPositioning.coordinate(-22.919672012329102, 35.597267150878906),
+ QtPositioning.coordinate(-23.695278167724609, 35.347770690917969),
+ QtPositioning.coordinate(-23.969448089599609, 35.3397216796875),
+ QtPositioning.coordinate(-23.795488357543945, 35.522911071777344),
+ QtPositioning.coordinate(-24.169445037841797, 35.456108093261719),
+ QtPositioning.coordinate(-24.654167175292969, 35.012214660644531),
+ QtPositioning.coordinate(-25.612085342407227, 32.811107635498047),
+ QtPositioning.coordinate(-25.972433090209961, 32.587150573730469),
+ QtPositioning.coordinate(-26.291112899780273, 32.843189239501953),
+ QtPositioning.coordinate(-26.087709426879883, 32.945621490478516),
+ QtPositioning.coordinate(-27.007503509521484, 32.868331909179688),
+ QtPositioning.coordinate(-28.531391143798828, 32.394439697265625),
+ QtPositioning.coordinate(-29.390834808349609, 31.325832366943359),
+ QtPositioning.coordinate(-31.281112670898438, 30.023887634277344),
+ QtPositioning.coordinate(-33.040557861328125, 27.899997711181641),
+ QtPositioning.coordinate(-33.753334045410156, 26.530551910400391),
+ QtPositioning.coordinate(-33.767227172851562, 25.724998474121094),
+ QtPositioning.coordinate(-34.031951904296875, 25.701942443847656),
+ QtPositioning.coordinate(-33.968055725097656, 25.022636413574219),
+ QtPositioning.coordinate(-34.201667785644531, 24.824718475341797),
+ QtPositioning.coordinate(-33.983894348144531, 23.649303436279297),
+ QtPositioning.coordinate(-34.090904235839844, 23.366178512573242),
+ QtPositioning.coordinate(-34.011184692382812, 22.539163589477539),
+ QtPositioning.coordinate(-34.383056640625, 21.802497863769531),
+ QtPositioning.coordinate(-34.464729309082031, 20.504444122314453),
+ QtPositioning.coordinate(-34.822002410888672, 20.0),
+ QtPositioning.coordinate(-34.595283508300781, 19.320413589477539),
+ QtPositioning.coordinate(-34.409172058105469, 19.278192520141602),
+ QtPositioning.coordinate(-34.378894805908203, 18.819719314575195),
+ QtPositioning.coordinate(-34.088893890380859, 18.799026489257812),
+ QtPositioning.coordinate(-34.099445343017578, 18.485969543457031),
+ QtPositioning.coordinate(-34.348308563232422, 18.485027313232422),
+ QtPositioning.coordinate(-34.255836486816406, 18.380275726318359),
+ QtPositioning.coordinate(-33.701950073242188, 18.43902587890625),
+ QtPositioning.coordinate(-32.830833435058594, 17.847499847412109),
+ QtPositioning.coordinate(-32.585697174072266, 18.308609008789062),
+ QtPositioning.coordinate(-31.734584808349609, 18.217914581298828),
+ QtPositioning.coordinate(-30.342292785644531, 17.277914047241211),
+ QtPositioning.coordinate(-29.094375610351562, 16.818330764770508),
+ QtPositioning.coordinate(-28.578178405761719, 16.489589691162109),
+ QtPositioning.coordinate(-27.956111907958984, 15.689722061157227),
+ QtPositioning.coordinate(-26.735279083251953, 15.094999313354492),
+ QtPositioning.coordinate(-26.601667404174805, 15.171804428100586),
+ QtPositioning.coordinate(-25.741947174072266, 14.834304809570312),
+ QtPositioning.coordinate(-25.058889389038086, 14.85666561126709),
+ QtPositioning.coordinate(-24.103336334228516, 14.462637901306152),
+ QtPositioning.coordinate(-22.552780151367188, 14.511388778686523),
+ QtPositioning.coordinate(-20.862363815307617, 13.403887748718262),
+ QtPositioning.coordinate(-18.928058624267578, 12.460832595825195),
+ QtPositioning.coordinate(-17.988195419311523, 11.767638206481934),
+ QtPositioning.coordinate(-15.850695610046387, 11.73124885559082),
+ QtPositioning.coordinate(-15.56944465637207, 12.014999389648438),
+ QtPositioning.coordinate(-13.424375534057617, 12.512706756591797),
+ QtPositioning.coordinate(-12.784444808959961, 12.969999313354492),
+ QtPositioning.coordinate(-12.508607864379883, 13.459158897399902),
+ QtPositioning.coordinate(-11.936112403869629, 13.764165878295898),
+ QtPositioning.coordinate(-10.956111907958984, 13.849443435668945),
+ QtPositioning.coordinate(-9.08125114440918, 12.984582901000977),
+ QtPositioning.coordinate(-8.740278244018555, 13.38749885559082),
+ QtPositioning.coordinate(-8.393750190734863, 13.391804695129395),
+ QtPositioning.coordinate(-6.950278282165527, 12.817777633666992),
+ QtPositioning.coordinate(-6.103611469268799, 12.246249198913574),
+ QtPositioning.coordinate(-5.856329917907715, 13.17888069152832),
+ QtPositioning.coordinate(-5.811944961547852, 12.897915840148926),
+ QtPositioning.coordinate(-6.016667366027832, 12.435832977294922),
+ QtPositioning.coordinate(-5.86472225189209, 12.264999389648438),
+ QtPositioning.coordinate(-5.323333740234375, 12.176109313964844),
+ QtPositioning.coordinate(-4.54263973236084, 11.774166107177734),
+ QtPositioning.coordinate(-2.447916746139526, 9.702498435974121),
+ QtPositioning.coordinate(-2.639722347259521, 10.016109466552734),
+ QtPositioning.coordinate(-2.523889303207397, 10.133471488952637),
+ QtPositioning.coordinate(-2.370694637298584, 9.610971450805664),
+ QtPositioning.coordinate(-1.907500028610229, 9.322498321533203),
+ QtPositioning.coordinate(-2.068403005599976, 9.536873817443848),
+ QtPositioning.coordinate(-1.926944494247437, 9.518054962158203),
+ QtPositioning.coordinate(-1.849444508552551, 9.262776374816895),
+ QtPositioning.coordinate(-1.243055701255798, 8.985485076904297),
+ QtPositioning.coordinate(-1.306905508041382, 9.016393661499023),
+ QtPositioning.coordinate(-1.530277967453003, 9.233331680297852),
+ QtPositioning.coordinate(-1.638889074325562, 9.291110992431641),
+ QtPositioning.coordinate(-1.596666812896729, 9.513887405395508),
+ QtPositioning.coordinate(-1.570416808128357, 9.288331985473633),
+ QtPositioning.coordinate(-1.498611211776733, 9.251388549804688),
+ QtPositioning.coordinate(-1.399722337722778, 9.336943626403809),
+ QtPositioning.coordinate(-1.341944456100464, 9.352777481079102),
+ QtPositioning.coordinate(-1.285590291023254, 9.333436012268066),
+ QtPositioning.coordinate(-1.411250114440918, 9.22472095489502),
+ QtPositioning.coordinate(-1.297639012336731, 9.026665687561035),
+ QtPositioning.coordinate(-0.641111135482788, 8.709999084472656),
+ QtPositioning.coordinate(-0.813888967037201, 9.007776260375977),
+ QtPositioning.coordinate(-0.371666669845581, 9.298332214355469),
+ QtPositioning.coordinate(0.362013846635818, 9.350832939147949),
+ QtPositioning.coordinate(0.167222201824188, 9.466943740844727),
+ QtPositioning.coordinate(0.116249993443489, 9.746526718139648),
+ QtPositioning.coordinate(0.185277760028839, 9.921110153198242),
+ QtPositioning.coordinate(0.293680518865585, 9.497707366943359),
+ QtPositioning.coordinate(0.580972194671631, 9.305137634277344),
+ QtPositioning.coordinate(0.67249995470047, 9.542221069335938),
+ QtPositioning.coordinate(0.481111109256744, 9.599998474121094),
+ QtPositioning.coordinate(0.996597111225128, 9.572012901306152),
+ QtPositioning.coordinate(1.074722170829773, 9.845901489257812),
+ QtPositioning.coordinate(1.174722075462341, 9.360276222229004),
+ QtPositioning.coordinate(1.929791569709778, 9.813401222229004),
+ QtPositioning.coordinate(3.085208177566528, 9.965137481689453),
+ QtPositioning.coordinate(3.811527490615845, 9.543054580688477),
+ QtPositioning.coordinate(3.865277767181396, 9.722499847412109),
+ QtPositioning.coordinate(4.112915992736816, 9.48836612701416),
+ QtPositioning.coordinate(3.899444341659546, 9.434999465942383),
+ QtPositioning.coordinate(4.099791049957275, 8.974096298217773),
+ QtPositioning.coordinate(4.588333129882812, 8.898611068725586),
+ QtPositioning.coordinate(4.681388854980469, 8.666387557983398),
+ QtPositioning.coordinate(4.502638339996338, 8.714165687561035),
+ QtPositioning.coordinate(4.52354097366333, 8.508401870727539),
+ QtPositioning.coordinate(4.820409297943115, 8.585213661193848),
+ QtPositioning.coordinate(4.699860572814941, 8.506942749023438),
+ QtPositioning.coordinate(4.856666564941406, 8.274721145629883),
+ QtPositioning.coordinate(4.547499656677246, 8.293679237365723),
+ QtPositioning.coordinate(4.497499465942383, 7.695277214050293),
+ QtPositioning.coordinate(4.539999485015869, 7.537221431732178),
+ QtPositioning.coordinate(4.706555366516113, 7.55040454864502),
+ QtPositioning.coordinate(4.557777404785156, 7.272499084472656),
+ QtPositioning.coordinate(4.753055095672607, 7.074305057525635),
+ QtPositioning.coordinate(4.506943702697754, 7.179443836212158),
+ QtPositioning.coordinate(4.434721946716309, 7.073055267333984),
+ QtPositioning.coordinate(4.724860668182373, 6.963888645172119),
+ QtPositioning.coordinate(4.371318817138672, 7.008679866790771),
+ QtPositioning.coordinate(4.392638683319092, 6.871665954589844),
+ QtPositioning.coordinate(4.763472080230713, 6.76284646987915),
+ QtPositioning.coordinate(4.348332405090332, 6.848610877990723),
+ QtPositioning.coordinate(4.348194122314453, 6.720485210418701),
+ QtPositioning.coordinate(4.603540897369385, 6.732429981231689),
+ QtPositioning.coordinate(4.331805229187012, 6.692360401153564),
+ QtPositioning.coordinate(4.301561832427979, 6.251179695129395),
+ QtPositioning.coordinate(4.449999332427979, 6.252777576446533),
+ QtPositioning.coordinate(4.282776832580566, 6.172222137451172),
+ QtPositioning.coordinate(4.338333129882812, 5.935832500457764),
+ QtPositioning.coordinate(4.655832767486572, 5.582360744476318),
+ QtPositioning.coordinate(5.116527080535889, 5.384235382080078),
+ QtPositioning.coordinate(5.1449294090271, 5.493402004241943),
+ QtPositioning.coordinate(5.160554885864258, 5.368332862854004),
+ QtPositioning.coordinate(5.329999923706055, 5.345276832580566),
+ QtPositioning.coordinate(5.414721488952637, 5.539721488952637),
+ QtPositioning.coordinate(5.536735534667969, 5.636041164398193),
+ QtPositioning.coordinate(5.433194160461426, 5.26194429397583),
+ QtPositioning.coordinate(5.577638149261475, 5.214791297912598),
+ QtPositioning.coordinate(5.616943836212158, 5.502499580383301),
+ QtPositioning.coordinate(5.574860572814941, 5.182082653045654),
+ QtPositioning.coordinate(6.359930038452148, 4.410207748413086),
+ QtPositioning.coordinate(6.445138454437256, 3.391319036483765),
+ QtPositioning.coordinate(6.612777709960938, 3.80722188949585),
+ QtPositioning.coordinate(6.578332901000977, 3.443055152893066),
+ QtPositioning.coordinate(6.385555267333984, 3.319166660308838),
+ QtPositioning.coordinate(6.186388492584229, 1.468888759613037),
+ QtPositioning.coordinate(6.040277481079102, 1.098888874053955),
+ QtPositioning.coordinate(5.78083324432373, 0.944999933242798),
+ QtPositioning.coordinate(5.773365020751953, 0.694651007652283)
+ ]
+ )
+}
diff --git a/tests/baseline/mapitems/data/polygon/include/GeometryAntarctica.qml b/tests/baseline/mapitems/data/polygon/include/GeometryAntarctica.qml
new file mode 100644
index 00000000..661999be
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/include/GeometryAntarctica.qml
@@ -0,0 +1,113 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+/* Raw Geometry Data:
+ *
+ * source:
+ * https://gist.github.com/hrbrmstr/91ea5cc9474286c72838
+ *
+ * license: MIT Licensed
+ */
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+MapPolygon {
+ color: "green"
+ autoFadeIn: false
+ geoShape: QtPositioning.polygon(
+ [
+ QtPositioning.coordinate(-82.081680297851562, 163.76611328125),
+ QtPositioning.coordinate(-84.30224609375, 180.0),
+ QtPositioning.coordinate(-90.0, 180.0),
+ QtPositioning.coordinate(-90.0, -180.0),
+ QtPositioning.coordinate(-84.305343627929688, -180.0),
+ QtPositioning.coordinate(-84.984725952148438, -138.589447021484375),
+ QtPositioning.coordinate(-84.012786865234375, -153.053070068359375),
+ QtPositioning.coordinate(-82.577789306640625, -151.794189453125),
+ QtPositioning.coordinate(-81.252296447753906, -156.9560546875),
+ QtPositioning.coordinate(-80.460556030273438, -145.524169921875),
+ QtPositioning.coordinate(-78.7197265625, -155.906402587890625),
+ QtPositioning.coordinate(-78.311668395996094, -153.750442504882812),
+ QtPositioning.coordinate(-77.108062744140625, -157.753082275390625),
+ QtPositioning.coordinate(-77.761123657226562, -149.6622314453125),
+ QtPositioning.coordinate(-77.466400146484375, -146.26861572265625),
+ QtPositioning.coordinate(-76.759033203125, -145.461334228515625),
+ QtPositioning.coordinate(-76.451950073242188, -146.9322509765625),
+ QtPositioning.coordinate(-76.382156372070312, -149.503341674804688),
+ QtPositioning.coordinate(-76.443344116210938, -145.479461669921875),
+ QtPositioning.coordinate(-74.532791137695312, -134.30389404296875),
+ QtPositioning.coordinate(-75.096260070800781, -99.513893127441406),
+ QtPositioning.coordinate(-73.637924194335938, -103.013343811035156),
+ QtPositioning.coordinate(-73.610565185546875, -99.195556640625),
+ QtPositioning.coordinate(-73.326400756835938, -103.036117553710938),
+ QtPositioning.coordinate(-72.73333740234375, -103.176116943359375),
+ QtPositioning.coordinate(-73.943344116210938, -82.134170532226562),
+ QtPositioning.coordinate(-73.050567626953125, -80.695556640625),
+ QtPositioning.coordinate(-73.873062133789062, -76.962783813476562),
+ QtPositioning.coordinate(-73.197235107421875, -69.4283447265625),
+ QtPositioning.coordinate(-72.40618896484375, -66.800277709960938),
+ QtPositioning.coordinate(-69.413543701171875, -68.832778930664062),
+ QtPositioning.coordinate(-69.021263122558594, -66.659873962402344),
+ QtPositioning.coordinate(-67.527091979980469, -66.433761596679688),
+ QtPositioning.coordinate(-67.171043395996094, -67.602455139160156),
+ QtPositioning.coordinate(-63.205421447753906, -57.197780609130859),
+ QtPositioning.coordinate(-67.562850952148438, -65.611808776855469),
+ QtPositioning.coordinate(-68.707923889160156, -65.319450378417969),
+ QtPositioning.coordinate(-68.835769653320312, -63.861354827880859),
+ QtPositioning.coordinate(-68.51611328125, -64.39154052734375),
+ QtPositioning.coordinate(-68.413475036621094, -62.738128662109375),
+ QtPositioning.coordinate(-68.531394958496094, -63.966804504394531),
+ QtPositioning.coordinate(-71.742500305175781, -60.905696868896484),
+ QtPositioning.coordinate(-72.04937744140625, -62.546043395996094),
+ QtPositioning.coordinate(-72.897369384765625, -59.777362823486328),
+ QtPositioning.coordinate(-73.133346557617188, -61.903060913085938),
+ QtPositioning.coordinate(-73.709381103515625, -60.591533660888672),
+ QtPositioning.coordinate(-74.832229614257812, -61.887504577636719),
+ QtPositioning.coordinate(-76.707778930664062, -70.476394653320312),
+ QtPositioning.coordinate(-75.918899536132812, -77.77166748046875),
+ QtPositioning.coordinate(-77.656257629394531, -72.84820556640625),
+ QtPositioning.coordinate(-78.360145568847656, -84.101882934570312),
+ QtPositioning.coordinate(-83.033340454101562, -58.210838317871094),
+ QtPositioning.coordinate(-80.276947021484375, -28.319446563720703),
+ QtPositioning.coordinate(-79.664237976074219, -30.203750610351562),
+ QtPositioning.coordinate(-79.017715454101562, -27.090139389038086),
+ QtPositioning.coordinate(-78.771949768066406, -36.299724578857422),
+ QtPositioning.coordinate(-75.733901977539062, -17.778614044189453),
+ QtPositioning.coordinate(-73.94451904296875, -13.711459159851074),
+ QtPositioning.coordinate(-73.770004272460938, -16.893474578857422),
+ QtPositioning.coordinate(-70.90020751953125, -9.869357109069824),
+ QtPositioning.coordinate(-71.825836181640625, -8.366945266723633),
+ QtPositioning.coordinate(-70.074462890625, 8.682855606079102),
+ QtPositioning.coordinate(-70.546417236328125, 23.246753692626953),
+ QtPositioning.coordinate(-68.4827880859375, 34.140357971191406),
+ QtPositioning.coordinate(-69.988632202148438, 38.650367736816406),
+ QtPositioning.coordinate(-68.5220947265625, 41.111885070800781),
+ QtPositioning.coordinate(-65.84002685546875, 53.778961181640625),
+ QtPositioning.coordinate(-67.75390625, 69.644790649414062),
+ QtPositioning.coordinate(-69.359054565429688, 69.746170043945312),
+ QtPositioning.coordinate(-70.390571594238281, 67.646987915039062),
+ QtPositioning.coordinate(-70.662788391113281, 69.2471923828125),
+ QtPositioning.coordinate(-72.066192626953125, 67.340263366699219),
+ QtPositioning.coordinate(-72.425003051757812, 68.936416625976562),
+ QtPositioning.coordinate(-71.942230224609375, 70.839797973632812),
+ QtPositioning.coordinate(-70.01251220703125, 72.930068969726562),
+ QtPositioning.coordinate(-66.894744873046875, 87.502517700195312),
+ QtPositioning.coordinate(-66.036262512207031, 88.23529052734375),
+ QtPositioning.coordinate(-66.831130981445312, 108.82421875),
+ QtPositioning.coordinate(-65.713348388671875, 113.315338134765625),
+ QtPositioning.coordinate(-67.142242431640625, 128.844345092773438),
+ QtPositioning.coordinate(-66.198066711425781, 134.25225830078125),
+ QtPositioning.coordinate(-64.925308227539062, 134.407257080078125),
+ QtPositioning.coordinate(-66.093063354492188, 134.947784423828125),
+ QtPositioning.coordinate(-71.351669311523438, 170.453033447265625),
+ QtPositioning.coordinate(-73.52752685546875, 169.07916259765625),
+ QtPositioning.coordinate(-75.098007202148438, 162.547500610351562),
+ QtPositioning.coordinate(-76.948768615722656, 162.34210205078125),
+ QtPositioning.coordinate(-78.65716552734375, 167.263671875),
+ QtPositioning.coordinate(-80.288619995117188, 158.066757202148438),
+ QtPositioning.coordinate(-82.081680297851562, 163.76611328125)
+ ]
+ )
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_africa1.qml b/tests/baseline/mapitems/data/polygon/polygon_africa1.qml
new file mode 100644
index 00000000..e6fa4737
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_africa1.qml
@@ -0,0 +1,24 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+import "include"
+
+Map {
+ id: map
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(20, 30)
+
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 4
+ copyrightsVisible: false
+
+ GeometryAfrica{}
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_africa1_tilt.qml b/tests/baseline/mapitems/data/polygon/polygon_africa1_tilt.qml
new file mode 100644
index 00000000..5bddfd36
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_africa1_tilt.qml
@@ -0,0 +1,25 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+import "include"
+
+Map {
+ id: map
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(20, 30)
+ tilt: 30
+
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 4
+ copyrightsVisible: false
+
+ GeometryAfrica{}
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_africa1_tilt_bear.qml b/tests/baseline/mapitems/data/polygon/polygon_africa1_tilt_bear.qml
new file mode 100644
index 00000000..e8d035bd
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_africa1_tilt_bear.qml
@@ -0,0 +1,26 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+import "include"
+
+Map {
+ id: map
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(20, 30)
+ tilt: 30
+ bearing: 34
+
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 4
+ copyrightsVisible: false
+
+ GeometryAfrica{}
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_africa2.qml b/tests/baseline/mapitems/data/polygon/polygon_africa2.qml
new file mode 100644
index 00000000..ce8ef11a
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_africa2.qml
@@ -0,0 +1,24 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+import "include"
+
+Map {
+ id: map
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, -160)
+
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ GeometryAfrica{}
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_antarctica1.qml b/tests/baseline/mapitems/data/polygon/polygon_antarctica1.qml
new file mode 100644
index 00000000..f2360d7b
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_antarctica1.qml
@@ -0,0 +1,23 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+import "include"
+
+Map {
+ id: map
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 0)
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ GeometryAntarctica{}
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_antarctica2.qml b/tests/baseline/mapitems/data/polygon/polygon_antarctica2.qml
new file mode 100644
index 00000000..215061ff
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_antarctica2.qml
@@ -0,0 +1,23 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+import "include"
+
+Map {
+ id: map
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 90)
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ GeometryAntarctica{}
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_antarctica3.qml b/tests/baseline/mapitems/data/polygon/polygon_antarctica3.qml
new file mode 100644
index 00000000..4728bd44
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_antarctica3.qml
@@ -0,0 +1,24 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+import "include"
+
+Map {
+ id: map
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 180)
+
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ GeometryAntarctica{}
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_hole.qml b/tests/baseline/mapitems/data/polygon/polygon_hole.qml
new file mode 100644
index 00000000..0dfee0eb
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_hole.qml
@@ -0,0 +1,52 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(52, 22)
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 4
+ copyrightsVisible: false
+
+ MapPolygon {
+ color: "green"
+ autoFadeIn: false
+ geoShape: QtPositioning.polygon(
+ [
+ QtPositioning.coordinate(51.11, 17.13),
+ QtPositioning.coordinate(50.42, 30.54),
+ QtPositioning.coordinate(58.36, 26.70)
+ ],
+ [
+ [
+ QtPositioning.coordinate(54.36, 23.46),
+ QtPositioning.coordinate(51.91, 20.52),
+ QtPositioning.coordinate(51.50, 28.25),
+ QtPositioning.coordinate(54.36, 26.80)
+ ]
+ ]
+ )
+ }
+
+ MapPolygon {
+ color: "blue"
+ autoFadeIn: false
+ geoShape: QtPositioning.polygon(
+ [
+ QtPositioning.coordinate(54.36, 33.46),
+ QtPositioning.coordinate(51.91, 30.52),
+ QtPositioning.coordinate(51.50, 38.25),
+ QtPositioning.coordinate(54.36, 36.80)
+ ]
+ )
+ }
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_hole_bear.qml b/tests/baseline/mapitems/data/polygon/polygon_hole_bear.qml
new file mode 100644
index 00000000..7053f065
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_hole_bear.qml
@@ -0,0 +1,53 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(52, 22)
+ bearing: 54
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 4
+ copyrightsVisible: false
+
+ MapPolygon {
+ color: "green"
+ autoFadeIn: false
+ geoShape: QtPositioning.polygon(
+ [
+ QtPositioning.coordinate(51.11, 17.13),
+ QtPositioning.coordinate(50.42, 30.54),
+ QtPositioning.coordinate(58.36, 26.70)
+ ],
+ [
+ [
+ QtPositioning.coordinate(54.36, 23.46),
+ QtPositioning.coordinate(51.91, 20.52),
+ QtPositioning.coordinate(51.50, 28.25),
+ QtPositioning.coordinate(54.36, 26.80)
+ ]
+ ]
+ )
+ }
+
+ MapPolygon {
+ color: "blue"
+ autoFadeIn: false
+ geoShape: QtPositioning.polygon(
+ [
+ QtPositioning.coordinate(54.36, 33.46),
+ QtPositioning.coordinate(51.91, 30.52),
+ QtPositioning.coordinate(51.50, 38.25),
+ QtPositioning.coordinate(54.36, 36.80)
+ ]
+ )
+ }
+}
diff --git a/tests/baseline/mapitems/data/polygon/polygon_hole_tilt.qml b/tests/baseline/mapitems/data/polygon/polygon_hole_tilt.qml
new file mode 100644
index 00000000..dfcc7433
--- /dev/null
+++ b/tests/baseline/mapitems/data/polygon/polygon_hole_tilt.qml
@@ -0,0 +1,53 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(52, 22)
+ tilt: 60
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 4
+ copyrightsVisible: false
+
+ MapPolygon {
+ color: "green"
+ autoFadeIn: false
+ geoShape: QtPositioning.polygon(
+ [
+ QtPositioning.coordinate(51.11, 17.13),
+ QtPositioning.coordinate(50.42, 30.54),
+ QtPositioning.coordinate(58.36, 26.70)
+ ],
+ [
+ [
+ QtPositioning.coordinate(54.36, 23.46),
+ QtPositioning.coordinate(51.91, 20.52),
+ QtPositioning.coordinate(51.50, 28.25),
+ QtPositioning.coordinate(54.36, 26.80)
+ ]
+ ]
+ )
+ }
+
+ MapPolygon {
+ color: "blue"
+ autoFadeIn: false
+ geoShape: QtPositioning.polygon(
+ [
+ QtPositioning.coordinate(54.36, 33.46),
+ QtPositioning.coordinate(51.91, 30.52),
+ QtPositioning.coordinate(51.50, 38.25),
+ QtPositioning.coordinate(54.36, 36.80)
+ ]
+ )
+ }
+}
diff --git a/tests/baseline/mapitems/data/polyline/polyline_dateborder.qml b/tests/baseline/mapitems/data/polyline/polyline_dateborder.qml
new file mode 100644
index 00000000..cf74ba9c
--- /dev/null
+++ b/tests/baseline/mapitems/data/polyline/polyline_dateborder.qml
@@ -0,0 +1,103 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 0)
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "yellow"
+ line.width: 10
+ path: [
+ QtPositioning.coordinate(44, 137),
+ QtPositioning.coordinate(40, 159),
+ QtPositioning.coordinate(52, 172),
+ QtPositioning.coordinate(48, -173),
+ QtPositioning.coordinate(53, -124),
+ QtPositioning.coordinate(45, -66),
+ QtPositioning.coordinate(55, -17)
+ ]
+ }
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "blue"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(35, 90),
+ QtPositioning.coordinate(35, -90)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "blue"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(30, -91),
+ QtPositioning.coordinate(30, 91)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "blue"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(25, 120),
+ QtPositioning.coordinate(25, -120)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "blue"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(20, 179),
+ QtPositioning.coordinate(20, -179)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "green"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(15, 180),
+ QtPositioning.coordinate(15, -180)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "green"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(10, -179),
+ QtPositioning.coordinate(10, 179)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "green"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(5, -179),
+ QtPositioning.coordinate(5, 179)
+ ]
+ }
+}
diff --git a/tests/baseline/mapitems/data/polyline/polyline_dateborder2.qml b/tests/baseline/mapitems/data/polyline/polyline_dateborder2.qml
new file mode 100644
index 00000000..203281af
--- /dev/null
+++ b/tests/baseline/mapitems/data/polyline/polyline_dateborder2.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 0)
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "blue"
+ line.width: 2
+ path: [
+ QtPositioning.coordinate(60, 100),
+ QtPositioning.coordinate(55, -100),
+ QtPositioning.coordinate(50, 0),
+ QtPositioning.coordinate(45, 100),
+ QtPositioning.coordinate(40, 0),
+ QtPositioning.coordinate(35, -100),
+ QtPositioning.coordinate(30, 100),
+ QtPositioning.coordinate(25, -100),
+ QtPositioning.coordinate(20, 0),
+ QtPositioning.coordinate(15, 100),
+ QtPositioning.coordinate(10, 0),
+ QtPositioning.coordinate( 5, -100)
+ ]
+ }
+
+}
diff --git a/tests/baseline/mapitems/data/polyline/polyline_local.qml b/tests/baseline/mapitems/data/polyline/polyline_local.qml
new file mode 100644
index 00000000..cfd0f959
--- /dev/null
+++ b/tests/baseline/mapitems/data/polyline/polyline_local.qml
@@ -0,0 +1,53 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(52, 22)
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 4
+ copyrightsVisible: false
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "yellow"
+ line.width: 15
+ path: [
+ QtPositioning.coordinate(51, 17),
+ QtPositioning.coordinate(60, 12),
+ QtPositioning.coordinate(58, 26),
+ QtPositioning.coordinate(45, 32),
+ QtPositioning.coordinate(52, 21)
+ ]
+ }
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "green"
+ line.width: 2
+ path: [
+ QtPositioning.coordinate(53, 15),
+ QtPositioning.coordinate(49, 32),
+ QtPositioning.coordinate(57, 27)
+ ]
+ }
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "blue"
+ line.width: 2
+ path: [
+ QtPositioning.coordinate(49, 15),
+ QtPositioning.coordinate(47, 32),
+ QtPositioning.coordinate(54, 24),
+ QtPositioning.coordinate(49, 15)
+ ]
+ }
+}
diff --git a/tests/baseline/mapitems/data/polyline/polyline_poles.qml b/tests/baseline/mapitems/data/polyline/polyline_poles.qml
new file mode 100644
index 00000000..7abd7060
--- /dev/null
+++ b/tests/baseline/mapitems/data/polyline/polyline_poles.qml
@@ -0,0 +1,80 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 0)
+
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "blue"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(-90, -10),
+ QtPositioning.coordinate(90, -10)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "yellow"
+ line.width: 10
+ path: [
+ QtPositioning.coordinate(90, 10),
+ QtPositioning.coordinate(-90, 10)
+ ]
+ }
+
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "magenta"
+ line.width: 15
+ path: [
+ QtPositioning.coordinate(-90, -180),
+ QtPositioning.coordinate(90, -180)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "cyan"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(-90, 180),
+ QtPositioning.coordinate(90, 180)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "green"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(-90, -170),
+ QtPositioning.coordinate(90, 170)
+ ]
+ }
+
+ MapPolyline {
+ autoFadeIn: false
+ line.color: "green"
+ line.width: 5
+ path: [
+ QtPositioning.coordinate(-90, 170),
+ QtPositioning.coordinate(90, -170)
+ ]
+ }
+}
diff --git a/tests/baseline/mapitems/data/rectangle/rectangle_concentric1.qml b/tests/baseline/mapitems/data/rectangle/rectangle_concentric1.qml
new file mode 100644
index 00000000..375337e1
--- /dev/null
+++ b/tests/baseline/mapitems/data/rectangle/rectangle_concentric1.qml
@@ -0,0 +1,54 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 50)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "#30ff0000",
+ "#30ffa500",
+ "#30ffff00",
+ "#3000ff00",
+ "#300000ff",
+ "#30ee82ee"
+ ]
+ property int count: 20
+ model: count
+ MapRectangle
+ {
+ property int rWidth: ((c.count-index-1)/(c.count-1)*(180-5)+5)
+ property int rHeight: rWidth
+
+ topLeft
+ {
+ longitude: Math.min(180, Math.max(-180, 20 - rWidth/2))
+ latitude: Math.min(90, Math.max(-90, 20 - rHeight/2))
+ }
+ bottomRight
+ {
+ longitude: Math.min(180, Math.max(-180, 20 + rWidth/2))
+ latitude: Math.min(90, Math.max(-90, 20 + rHeight/2))
+ }
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 1
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/rectangle/rectangle_concentric2.qml b/tests/baseline/mapitems/data/rectangle/rectangle_concentric2.qml
new file mode 100644
index 00000000..7e1b5b37
--- /dev/null
+++ b/tests/baseline/mapitems/data/rectangle/rectangle_concentric2.qml
@@ -0,0 +1,54 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 50)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "#30ff0000",
+ "#30ffa500",
+ "#30ffff00",
+ "#3000ff00",
+ "#300000ff",
+ "#30ee82ee"
+ ]
+ property int count: 20
+ model: count
+ MapRectangle
+ {
+ property int rWidth: ((c.count-index-1)/(c.count-1)*(180-5)+5)
+ property int rHeight: rWidth
+
+ topLeft
+ {
+ longitude: Math.min(180, Math.max(-180, 20 - rWidth/2))
+ latitude: Math.min(90, Math.max(-90, -20 - rHeight/2))
+ }
+ bottomRight
+ {
+ longitude: Math.min(180, Math.max(-180, 20 + rWidth/2))
+ latitude: Math.min(90, Math.max(-90, -20 + rHeight/2))
+ }
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 1
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/rectangle/rectangle_concentric3.qml b/tests/baseline/mapitems/data/rectangle/rectangle_concentric3.qml
new file mode 100644
index 00000000..39582127
--- /dev/null
+++ b/tests/baseline/mapitems/data/rectangle/rectangle_concentric3.qml
@@ -0,0 +1,54 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 47.4)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "#30ff0000",
+ "#30ffa500",
+ "#30ffff00",
+ "#3000ff00",
+ "#300000ff",
+ "#30ee82ee"
+ ]
+ property int count: 20
+ model: count
+ MapRectangle
+ {
+ property int rHeight: ((c.count-index-1)/(c.count-1)*(180-5)+5)
+ property int rWidth: rHeight*5
+
+ topLeft
+ {
+ longitude: Math.min(175, Math.max(-180, 20 - rWidth/2))
+ latitude: Math.min(90, Math.max(-90, 20 - rHeight/2))
+ }
+ bottomRight
+ {
+ longitude: Math.min(175, Math.max(-180, 20 + rWidth/2))
+ latitude: Math.min(90, Math.max(-90, 20 + rHeight/2))
+ }
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 1
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/rectangle/rectangle_grid1.qml b/tests/baseline/mapitems/data/rectangle/rectangle_grid1.qml
new file mode 100644
index 00000000..1a74c003
--- /dev/null
+++ b/tests/baseline/mapitems/data/rectangle/rectangle_grid1.qml
@@ -0,0 +1,53 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 30)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property var colors: [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "violet"
+ ]
+ property double rWidth: 15
+ property double rHeight: 15
+ property int count: c.colors.length
+ model: count*count
+ MapRectangle
+ {
+ topLeft
+ {
+ longitude: Math.min(180, Math.max(-180, -180+360*(index%c.count+0.5)/(c.count) - c.rWidth/2))
+ latitude: Math.min(90, Math.max(-90, -90+180*(Math.floor(index/c.count)+0.5)/(c.count) - c.rHeight/2))
+ }
+ bottomRight
+ {
+ longitude: Math.min(180, Math.max(-180, -180+360*(index%c.count+0.5)/(c.count) + c.rWidth/2))
+ latitude: Math.min(90, Math.max(-90, -90+180*(Math.floor(index/c.count)+0.5)/(c.count) + c.rHeight/2))
+ }
+ color: c.colors[Math.floor(index%c.colors.length)]
+ border.width: 1
+ autoFadeIn: false
+ opacity: 0.3
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/data/rectangle/rectangle_grid2.qml b/tests/baseline/mapitems/data/rectangle/rectangle_grid2.qml
new file mode 100644
index 00000000..29f0f8a0
--- /dev/null
+++ b/tests/baseline/mapitems/data/rectangle/rectangle_grid2.qml
@@ -0,0 +1,70 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+Map {
+ width: 512
+ height: 512
+
+ center: QtPositioning.coordinate(0, 20)
+
+ id: map
+ plugin: Plugin {
+ name: "osm"
+ }
+ zoomLevel: 1
+ copyrightsVisible: false
+
+ Repeater {
+ id: c
+ property double rWidth: 70
+ property double rHeight: 50
+ property int count: 4
+ model: count*count
+ MapRectangle
+ {
+ topLeft
+ {
+ longitude: Math.min(180, Math.max(-180, -180+360*(index%c.count+0.5)/(c.count) - c.rWidth/2))
+ latitude: Math.min(90, Math.max(-90, -90+180*(Math.floor(index/c.count)+0.5)/(c.count) - c.rHeight/2))
+ }
+ bottomRight
+ {
+ longitude: Math.min(180, Math.max(-180, -180+360*(index%c.count+0.5)/(c.count) + c.rWidth/2))
+ latitude: Math.min(90, Math.max(-90, -90+180*(Math.floor(index/c.count)+0.5)/(c.count) + c.rHeight/2))
+ }
+ color: 'green'
+ border.width: 1
+ autoFadeIn: false
+ opacity: 0.3
+ }
+ }
+
+ Repeater {
+ id: c2
+ property double rWidth: 40
+ property double rHeight: 40
+ property int count: 4
+ model: count*count
+ MapRectangle
+ {
+ topLeft
+ {
+ longitude: Math.min(180, Math.max(-180, -180+360*(index%c2.count+0.5)/(c2.count) - c2.rWidth/2))
+ latitude: Math.min(90, Math.max(-90, -90+180*(Math.floor(index/c2.count)+0.5)/(c2.count) - c2.rHeight/2))
+ }
+ bottomRight
+ {
+ longitude: Math.min(180, Math.max(-180, -180+360*(index%c2.count+0.5)/(c2.count) + c2.rWidth/2))
+ latitude: Math.min(90, Math.max(-90, -90+180*(Math.floor(index/c2.count)+0.5)/(c2.count) + c2.rHeight/2))
+ }
+ color: 'blue'
+ border.width: 1
+ autoFadeIn: false
+ opacity: 0.3
+ }
+ }
+}
diff --git a/tests/baseline/mapitems/tst_baseline_mapitems.cpp b/tests/baseline/mapitems/tst_baseline_mapitems.cpp
new file mode 100644
index 00000000..3ee8f90d
--- /dev/null
+++ b/tests/baseline/mapitems/tst_baseline_mapitems.cpp
@@ -0,0 +1,240 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#include <qbaselinetest.h>
+
+#include <QtCore/QDirIterator>
+#include <QtCore/QDebug>
+#include <QtCore/QProcess>
+#include <QtGui/QGuiApplication>
+#include <QtGui/QImage>
+#include <QtGui/QPalette>
+#include <QtGui/QFont>
+
+#include <algorithm>
+
+QString blockify(const QByteArray& s)
+{
+ const char* indent = "\n | ";
+ QByteArray block = s.trimmed();
+ block.replace('\n', indent);
+ block.prepend(indent);
+ block.append('\n');
+ return block;
+}
+
+class tst_Baseline_MapItems : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_Baseline_MapItems();
+
+private Q_SLOTS:
+ void initTestCase();
+ void init();
+ void cleanup();
+
+ void circle_data() { setupTestSuite(); }
+ void circle() { runTest(); }
+
+private:
+ void test();
+
+ void setupTestSuite();
+ void runTest(const QString& style = QString());
+ bool renderAndGrab(const QString& qmlFile, const QStringList& extraArgs, QImage *screenshot, QString *errMsg);
+
+ QString testSuitePath;
+ QString grabberPath;
+ QStringList testFiles;
+ int consecutiveErrors; // Not test failures (image mismatches), but system failures (so no image at all)
+ bool aborted; // This run given up because of too many system failures
+};
+
+
+tst_Baseline_MapItems::tst_Baseline_MapItems()
+ : consecutiveErrors(0), aborted(false)
+{
+}
+
+
+void tst_Baseline_MapItems::initTestCase()
+{
+ QString dataDir = QFINDTESTDATA("./data/.");
+ if (dataDir.isEmpty())
+ dataDir = QStringLiteral("data");
+ QFileInfo fi(dataDir);
+ if (!fi.exists() || !fi.isDir() || !fi.isReadable())
+ QSKIP("Test suite data directory missing or unreadable: " + fi.canonicalFilePath().toLatin1());
+ testSuitePath = fi.canonicalFilePath();
+
+#if defined(Q_OS_WIN)
+ grabberPath = QFINDTESTDATA("../../../../qtdeclarative/tests/baseline/scenegraph/qmlscenegrabber.exe");
+#elif defined(Q_OS_DARWIN)
+ grabberPath = QFINDTESTDATA("../../../../qtdeclarative/tests/baseline/scenegraph/qmlscenegrabber.app/Contents/MacOS/qmlscenegrabber");
+#else
+ grabberPath = QFINDTESTDATA("../../../../qtdeclarative/tests/baseline/scenegraph/qmlscenegrabber");
+#endif
+ if (grabberPath.isEmpty())
+ grabberPath = QCoreApplication::applicationDirPath() + "../../../../qtdeclarative/tests/baseline/scenegraph/qmlscenegrabber.exe";
+
+ QBaselineTest::setProject("MapItems");
+ // Set key platform properties that are relevant for the appearance of controls
+ const QString platformName = QGuiApplication::platformName() + "-" + QSysInfo::productType();
+ QBaselineTest::addClientProperty("PlatformName", platformName);
+ QBaselineTest::addClientProperty("OSVersion", QSysInfo::productVersion());
+
+ const char *backendVarName = "QT_QUICK_BACKEND";
+ const QString backend = qEnvironmentVariable(backendVarName, QString::fromLatin1("default"));
+ QBaselineTest::addClientProperty(QString::fromLatin1(backendVarName), backend);
+
+ QString stack = backend;
+ if (stack != QLatin1String("software")) {
+#if defined(Q_OS_WIN)
+ const char *defaultRhiBackend = "d3d11";
+#elif defined(Q_OS_DARWIN)
+ const char *defaultRhiBackend = "metal";
+#else
+ const char *defaultRhiBackend = "opengl";
+#endif
+ const QString rhiBackend = qEnvironmentVariable("QSG_RHI_BACKEND", QString::fromLatin1(defaultRhiBackend));
+ stack = QString::fromLatin1("RHI_%1").arg(rhiBackend);
+ }
+
+ QBaselineTest::addClientProperty(QString::fromLatin1("GraphicsStack"), stack);
+
+ // Assume that text that's darker than the background means we run in light mode
+ // See also qwidgetbaselinetest.cpp
+ QPalette palette;
+ QFont font;
+ QByteArray appearanceBytes;
+ {
+ QDataStream appearanceStream(&appearanceBytes, QIODevice::WriteOnly);
+ appearanceStream << palette << font;
+ const qreal screenDpr = QGuiApplication::primaryScreen()->devicePixelRatio();
+ if (screenDpr != 1.0) {
+ qWarning() << "DPR is" << screenDpr << "- images will not be compared to 1.0 baseline!";
+ appearanceStream << screenDpr;
+ }
+ }
+ const quint16 appearanceId = qChecksum(appearanceBytes);
+
+ const QColor windowColor = palette.window().color();
+ const QColor textColor = palette.text().color();
+ const QString appearanceIdString = (windowColor.value() > textColor.value()
+ ? QString("light-%1") : QString("dark-%1"))
+ .arg(appearanceId, 0, 16);
+ QBaselineTest::addClientProperty("AppearanceID", appearanceIdString);
+
+ QByteArray msg;
+ if (!QBaselineTest::connectToBaselineServer(&msg))
+ QSKIP(msg);
+}
+
+void tst_Baseline_MapItems::init()
+{
+ consecutiveErrors = 0;
+ aborted = false;
+}
+
+void tst_Baseline_MapItems::cleanup()
+{
+ // Allow subsystems time to settle
+ if (!aborted)
+ QTest::qWait(20);
+}
+
+void tst_Baseline_MapItems::setupTestSuite()
+{
+ QTest::addColumn<QString>("qmlFile");
+
+ const QStringView qmlExt(u".qml");
+ if (testFiles.isEmpty()) {
+ QDirIterator it(testSuitePath, QDirIterator::Subdirectories);
+ while (it.hasNext()) {
+ const QString fp = it.next().toLatin1();
+ if (fp.endsWith(qmlExt))
+ testFiles.append(it.filePath());
+ }
+ std::sort(testFiles.begin(), testFiles.end());
+ }
+
+ if (testFiles.isEmpty())
+ QSKIP("No .qml test files found in " + testSuitePath.toLatin1());
+
+ for (const auto &filePath : std::as_const(testFiles)) {
+ QString itemName = filePath.sliced(testSuitePath.size() + 1);
+ itemName = itemName.left(itemName.size() - qmlExt.size());
+ QBaselineTest::newRow(itemName.toLatin1()) << filePath;
+ }
+}
+
+
+void tst_Baseline_MapItems::runTest(const QString& style)
+{
+ if (aborted)
+ QSKIP("System too unstable.");
+
+ QFETCH(QString, qmlFile);
+
+ QImage screenShot;
+ QString errorMessage;
+ QStringList args;
+ if (!style.isEmpty())
+ args.append({"-style", style});
+ if (renderAndGrab(qmlFile, args, &screenShot, &errorMessage)) {
+ consecutiveErrors = 0;
+ } else {
+ if (++consecutiveErrors >= 3)
+ aborted = true; // Just give up if screen grabbing fails 3 times in a row
+ QFAIL(qPrintable("QuickView grabbing failed: " + errorMessage));
+ }
+
+ QBASELINE_TEST(screenShot);
+}
+
+
+bool tst_Baseline_MapItems::renderAndGrab(const QString& qmlFile, const QStringList& extraArgs, QImage *screenshot, QString *errMsg)
+{
+ bool usePipe = true; // Whether to transport the grabbed image using temp. file or pipe. TBD: cmdline option
+ QProcess grabber;
+ grabber.setProcessChannelMode(QProcess::ForwardedErrorChannel);
+ QStringList args = extraArgs;
+ QString tmpfile = usePipe ? QString("-") : QString("/tmp/qmlscenegrabber-%1-out.ppm").arg(QCoreApplication::applicationPid());
+ args << qmlFile << "-o" << tmpfile;
+ grabber.start(grabberPath, args, QIODevice::ReadOnly);
+ grabber.waitForFinished(17000); //### hardcoded, must be larger than the scene timeout in qmlscenegrabber
+ if (grabber.state() != QProcess::NotRunning) {
+ grabber.terminate();
+ grabber.waitForFinished(3000);
+ }
+ QImage img;
+ bool res = usePipe ? img.load(&grabber, "ppm") : img.load(tmpfile);
+ if (!res || img.isNull()) {
+ if (errMsg) {
+ QString s("Failed to grab screen. qmlscenegrabber exitcode: %1. Process error: %2. Stderr:%3");
+ *errMsg = s.arg(grabber.exitCode()).arg(grabber.errorString()).arg(blockify(grabber.readAllStandardError()));
+ }
+ if (!usePipe)
+ QFile::remove(tmpfile);
+ return false;
+ }
+ if (screenshot)
+ *screenshot = img;
+ if (!usePipe)
+ QFile::remove(tmpfile);
+ return true;
+}
+
+#define main _realmain
+QTEST_MAIN(tst_Baseline_MapItems)
+#undef main
+
+int main(int argc, char *argv[])
+{
+ QBaselineTest::handleCmdLineArgs(&argc, &argv);
+ return _realmain(argc, argv);
+}
+
+#include "tst_baseline_mapitems.moc"