diff options
author | Matthias Rauter <matthias.rauter@qt.io> | 2023-02-02 11:46:59 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-02-15 07:07:10 +0000 |
commit | 6265c39b33073224c81386dea0cf54597e1d1462 (patch) | |
tree | 5a9c547fde2215f2f04d8227b3b33785a0eb2619 | |
parent | 9da3d0db57c30ccc48118fcc323b826291604adf (diff) | |
download | qtlocation-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>
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" |