summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.cmake.conf5
-rw-r--r--CMakeLists.txt4
-rw-r--r--LICENSES/BSD-3-Clause.txt9
-rw-r--r--LICENSES/GFDL-1.3-no-invariants-only.txt451
-rw-r--r--LICENSES/GPL-3.0-only.txt (renamed from LICENSE.GPL3)0
-rw-r--r--LICENSES/LicenseRef-Qt-Commercial.txt8
-rw-r--r--LICENSES/Qt-GPL-exception-1.0.txt22
-rw-r--r--coin/axivion/ci_config_linux.json41
-rw-r--r--coin/module_config.yaml11
-rw-r--r--conanfile.py59
-rw-r--r--dependencies.yaml6
-rw-r--r--examples/CMakeLists.txt5
-rw-r--r--examples/datavisualization/CMakeLists.txt31
-rw-r--r--examples/datavisualization/bars/CMakeLists.txt41
-rw-r--r--examples/datavisualization/bars/bars.pro17
-rw-r--r--examples/datavisualization/bars/doc/images/bars-example.pngbin238712 -> 0 bytes
-rw-r--r--examples/datavisualization/bars/doc/src/bars.qdoc228
-rw-r--r--examples/datavisualization/bars/graphmodifier.h111
-rw-r--r--examples/datavisualization/bars/main.cpp337
-rw-r--r--examples/datavisualization/custominput/CMakeLists.txt52
-rw-r--r--examples/datavisualization/custominput/custominput.pro20
-rw-r--r--examples/datavisualization/custominput/custominput.qrc5
-rw-r--r--examples/datavisualization/custominput/custominputhandler.cpp65
-rw-r--r--examples/datavisualization/custominput/custominputhandler.h45
-rw-r--r--examples/datavisualization/custominput/data/data.txt1060
-rw-r--r--examples/datavisualization/custominput/doc/images/custominput-example.pngbin62422 -> 0 bytes
-rw-r--r--examples/datavisualization/custominput/doc/src/custominput.qdoc87
-rw-r--r--examples/datavisualization/custominput/main.cpp103
-rw-r--r--examples/datavisualization/custominput/scatterdatamodifier.cpp184
-rw-r--r--examples/datavisualization/custominput/scatterdatamodifier.h69
-rw-r--r--examples/datavisualization/customitems/CMakeLists.txt65
-rw-r--r--examples/datavisualization/customitems/customitemgraph.cpp329
-rw-r--r--examples/datavisualization/customitems/customitemgraph.h67
-rw-r--r--examples/datavisualization/customitems/customitems.pro19
-rw-r--r--examples/datavisualization/customitems/customitems.qrc12
-rw-r--r--examples/datavisualization/customitems/doc/images/customitems-example.pngbin109729 -> 0 bytes
-rw-r--r--examples/datavisualization/customitems/doc/src/customitems.qdoc86
-rw-r--r--examples/datavisualization/customitems/main.cpp140
-rw-r--r--examples/datavisualization/customproxy/CMakeLists.txt52
-rw-r--r--examples/datavisualization/customproxy/customproxy.pro25
-rw-r--r--examples/datavisualization/customproxy/customproxy.qrc5
-rw-r--r--examples/datavisualization/customproxy/data/raindata.txt158
-rw-r--r--examples/datavisualization/customproxy/doc/images/customproxy-example.pngbin173744 -> 0 bytes
-rw-r--r--examples/datavisualization/customproxy/doc/src/customproxy.qdoc122
-rw-r--r--examples/datavisualization/customproxy/main.cpp54
-rw-r--r--examples/datavisualization/customproxy/rainfallgraph.cpp167
-rw-r--r--examples/datavisualization/customproxy/rainfallgraph.h60
-rw-r--r--examples/datavisualization/customproxy/variantbardatamapping.cpp144
-rw-r--r--examples/datavisualization/customproxy/variantbardatamapping.h91
-rw-r--r--examples/datavisualization/customproxy/variantbardataproxy.h77
-rw-r--r--examples/datavisualization/customproxy/variantdataset.cpp74
-rw-r--r--examples/datavisualization/customproxy/variantdataset.h68
-rw-r--r--examples/datavisualization/datavisualization.pro22
-rw-r--r--examples/datavisualization/draggableaxes/CMakeLists.txt41
-rw-r--r--examples/datavisualization/draggableaxes/axesinputhandler.h80
-rw-r--r--examples/datavisualization/draggableaxes/data.cpp173
-rw-r--r--examples/datavisualization/draggableaxes/data.h57
-rw-r--r--examples/datavisualization/draggableaxes/doc/images/draggableaxes-example.pngbin90050 -> 0 bytes
-rw-r--r--examples/datavisualization/draggableaxes/doc/src/draggableaxes.qdoc133
-rw-r--r--examples/datavisualization/draggableaxes/draggableaxes.pro18
-rw-r--r--examples/datavisualization/draggableaxes/main.cpp78
-rw-r--r--examples/datavisualization/graphgallery/CMakeLists.txt75
-rw-r--r--examples/datavisualization/graphgallery/axesinputhandler.cpp (renamed from examples/datavisualization/draggableaxes/axesinputhandler.cpp)38
-rw-r--r--examples/datavisualization/graphgallery/axesinputhandler.h54
-rw-r--r--examples/datavisualization/graphgallery/bargraph.cpp329
-rw-r--r--examples/datavisualization/graphgallery/bargraph.h26
-rw-r--r--examples/datavisualization/graphgallery/custominputhandler.cpp (renamed from examples/datavisualization/texturesurface/custominputhandler.cpp)56
-rw-r--r--examples/datavisualization/graphgallery/custominputhandler.h76
-rw-r--r--examples/datavisualization/graphgallery/data/layer_1.png (renamed from examples/datavisualization/customitems/layer_1.png)bin34540 -> 34540 bytes
-rw-r--r--examples/datavisualization/graphgallery/data/layer_2.png (renamed from examples/datavisualization/customitems/layer_2.png)bin10553 -> 10553 bytes
-rw-r--r--examples/datavisualization/graphgallery/data/layer_3.png (renamed from examples/datavisualization/customitems/layer_3.png)bin7119 -> 7119 bytes
-rw-r--r--examples/datavisualization/graphgallery/data/license.txt (renamed from examples/datavisualization/texturesurface/license.txt)0
-rw-r--r--examples/datavisualization/graphgallery/data/maptexture.jpg (renamed from examples/datavisualization/texturesurface/maptexture.jpg)bin352922 -> 352922 bytes
-rw-r--r--examples/datavisualization/graphgallery/data/oilrig.obj (renamed from examples/datavisualization/customitems/oilrig.obj)0
-rw-r--r--examples/datavisualization/graphgallery/data/pipe.obj (renamed from examples/datavisualization/customitems/pipe.obj)0
-rw-r--r--examples/datavisualization/graphgallery/data/raindata.txt158
-rw-r--r--examples/datavisualization/graphgallery/data/refinery.obj (renamed from examples/datavisualization/customitems/refinery.obj)0
-rw-r--r--examples/datavisualization/graphgallery/data/topography.png (renamed from examples/datavisualization/texturesurface/topography.png)bin395504 -> 395504 bytes
-rw-r--r--examples/datavisualization/graphgallery/doc/images/graphgallery-example.pngbin0 -> 375425 bytes
-rw-r--r--examples/datavisualization/graphgallery/doc/src/graphgallery.qdoc705
-rw-r--r--examples/datavisualization/graphgallery/graphgallery.pro49
-rw-r--r--examples/datavisualization/graphgallery/graphgallery.qrc13
-rw-r--r--examples/datavisualization/graphgallery/graphmodifier.cpp (renamed from examples/datavisualization/bars/graphmodifier.cpp)203
-rw-r--r--examples/datavisualization/graphgallery/graphmodifier.h87
-rw-r--r--examples/datavisualization/graphgallery/highlightseries.cpp (renamed from examples/datavisualization/texturesurface/highlightseries.cpp)51
-rw-r--r--examples/datavisualization/graphgallery/highlightseries.h35
-rw-r--r--examples/datavisualization/graphgallery/main.cpp52
-rw-r--r--examples/datavisualization/graphgallery/rainfalldata.cpp117
-rw-r--r--examples/datavisualization/graphgallery/rainfalldata.h43
-rw-r--r--examples/datavisualization/graphgallery/scatterdatamodifier.cpp191
-rw-r--r--examples/datavisualization/graphgallery/scatterdatamodifier.h49
-rw-r--r--examples/datavisualization/graphgallery/scattergraph.cpp142
-rw-r--r--examples/datavisualization/graphgallery/scattergraph.h26
-rw-r--r--examples/datavisualization/graphgallery/surfacegraph.cpp346
-rw-r--r--examples/datavisualization/graphgallery/surfacegraph.h26
-rw-r--r--examples/datavisualization/graphgallery/surfacegraphmodifier.cpp647
-rw-r--r--examples/datavisualization/graphgallery/surfacegraphmodifier.h109
-rw-r--r--examples/datavisualization/graphgallery/topographicseries.cpp55
-rw-r--r--examples/datavisualization/graphgallery/topographicseries.h26
-rw-r--r--examples/datavisualization/graphgallery/variantbardatamapping.cpp85
-rw-r--r--examples/datavisualization/graphgallery/variantbardatamapping.h66
-rw-r--r--examples/datavisualization/graphgallery/variantbardataproxy.cpp (renamed from examples/datavisualization/customproxy/variantbardataproxy.cpp)67
-rw-r--r--examples/datavisualization/graphgallery/variantbardataproxy.h48
-rw-r--r--examples/datavisualization/graphgallery/variantdataset.cpp45
-rw-r--r--examples/datavisualization/graphgallery/variantdataset.h41
-rw-r--r--examples/datavisualization/itemmodel/CMakeLists.txt39
-rw-r--r--examples/datavisualization/itemmodel/doc/images/itemmodel-example-2.pngbin78536 -> 0 bytes
-rw-r--r--examples/datavisualization/itemmodel/doc/images/itemmodel-example.pngbin45381 -> 0 bytes
-rw-r--r--examples/datavisualization/itemmodel/doc/src/itemmodel.qdoc196
-rw-r--r--examples/datavisualization/itemmodel/itemmodel.pro15
-rw-r--r--examples/datavisualization/itemmodel/main.cpp305
-rw-r--r--examples/datavisualization/qml3doscilloscope/datasource.h57
-rw-r--r--examples/datavisualization/qml3doscilloscope/doc/images/qml3doscilloscope-example.pngbin129028 -> 0 bytes
-rw-r--r--examples/datavisualization/qml3doscilloscope/doc/src/qml3doscilloscope.qdoc125
-rw-r--r--examples/datavisualization/qml3doscilloscope/main.cpp77
-rw-r--r--examples/datavisualization/qml3doscilloscope/qml/qml3doscilloscope/main.qml332
-rw-r--r--examples/datavisualization/qml3doscilloscope/qml3doscilloscope.qrc5
-rw-r--r--examples/datavisualization/qmlaxisdrag/CMakeLists.txt78
-rw-r--r--examples/datavisualization/qmlaxisdrag/doc/images/qmlaxisdrag-example.pngbin89048 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlaxisdrag/doc/src/qmlaxisdrag.qdoc121
-rw-r--r--examples/datavisualization/qmlaxisdrag/main.cpp60
-rw-r--r--examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/cubetexture.pngbin10429 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/main.qml329
-rw-r--r--examples/datavisualization/qmlaxisdrag/qmlaxisdrag.pro11
-rw-r--r--examples/datavisualization/qmlaxisdrag/qmlaxisdrag.qrc11
-rw-r--r--examples/datavisualization/qmlaxisformatter/CMakeLists.txt54
-rw-r--r--examples/datavisualization/qmlaxisformatter/customformatter.h79
-rw-r--r--examples/datavisualization/qmlaxisformatter/doc/images/qmlaxisformatter-example.pngbin132952 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlaxisformatter/doc/src/qmlaxisformatter.qdoc126
-rw-r--r--examples/datavisualization/qmlaxisformatter/main.cpp69
-rw-r--r--examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/main.qml195
-rw-r--r--examples/datavisualization/qmlaxisformatter/qmlaxisformatter.pro16
-rw-r--r--examples/datavisualization/qmlaxisformatter/qmlaxisformatter.qrc6
-rw-r--r--examples/datavisualization/qmlaxishandling/CMakeLists.txt (renamed from examples/datavisualization/qml3doscilloscope/CMakeLists.txt)37
-rw-r--r--examples/datavisualization/qmlaxishandling/customformatter.cpp (renamed from examples/datavisualization/qmlaxisformatter/customformatter.cpp)39
-rw-r--r--examples/datavisualization/qmlaxishandling/customformatter.h55
-rw-r--r--examples/datavisualization/qmlaxishandling/doc/images/qmlaxishandling-example.pngbin0 -> 132862 bytes
-rw-r--r--examples/datavisualization/qmlaxishandling/doc/src/qmlaxishandling.qdoc188
-rw-r--r--examples/datavisualization/qmlaxishandling/main.cpp43
-rw-r--r--examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml298
-rw-r--r--examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/AxisFormatting.qml156
-rw-r--r--examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/Data.qml (renamed from examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/Data.qml)30
-rw-r--r--examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/cube.obj (renamed from examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/cube.obj)0
-rw-r--r--examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/cubetexture.pngbin0 -> 3386 bytes
-rw-r--r--examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/main.qml47
-rw-r--r--examples/datavisualization/qmlaxishandling/qmlaxishandling.pro16
-rw-r--r--examples/datavisualization/qmlaxishandling/qmlaxishandling.qrc12
-rw-r--r--examples/datavisualization/qmlaxishandling/qmldir2
-rw-r--r--examples/datavisualization/qmlbars/CMakeLists.txt24
-rw-r--r--examples/datavisualization/qmlbars/doc/images/qmlbars-example.pngbin204973 -> 186928 bytes
-rw-r--r--examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc112
-rw-r--r--examples/datavisualization/qmlbars/main.cpp42
-rw-r--r--examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml32
-rw-r--r--examples/datavisualization/qmlbars/qml/qmlbars/Data.qml206
-rw-r--r--examples/datavisualization/qmlbars/qml/qmlbars/main.qml290
-rw-r--r--examples/datavisualization/qmlcustominput/CMakeLists.txt53
-rw-r--r--examples/datavisualization/qmlcustominput/doc/images/qmlcustominput-example.pngbin73150 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlcustominput/doc/src/qmlcustominput.qdoc90
-rw-r--r--examples/datavisualization/qmlcustominput/main.cpp60
-rw-r--r--examples/datavisualization/qmlcustominput/qml/qmlcustominput/Data.qml1106
-rw-r--r--examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml244
-rw-r--r--examples/datavisualization/qmlcustominput/qmlcustominput.pro12
-rw-r--r--examples/datavisualization/qmlcustominput/qmlcustominput.qrc6
-rw-r--r--examples/datavisualization/qmllegend/CMakeLists.txt54
-rw-r--r--examples/datavisualization/qmllegend/doc/images/qmllegend-example.pngbin98023 -> 0 bytes
-rw-r--r--examples/datavisualization/qmllegend/doc/src/qmllegend.qdoc78
-rw-r--r--examples/datavisualization/qmllegend/main.cpp60
-rw-r--r--examples/datavisualization/qmllegend/qml/qmllegend/Data.qml89
-rw-r--r--examples/datavisualization/qmllegend/qml/qmllegend/LegendItem.qml135
-rw-r--r--examples/datavisualization/qmllegend/qml/qmllegend/main.qml241
-rw-r--r--examples/datavisualization/qmllegend/qmllegend.pro13
-rw-r--r--examples/datavisualization/qmllegend/qmllegend.qrc7
-rw-r--r--examples/datavisualization/qmlmultigraph/CMakeLists.txt53
-rw-r--r--examples/datavisualization/qmlmultigraph/doc/images/qmlmultigraph-example.pngbin82347 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlmultigraph/doc/src/qmlmultigraph.qdoc55
-rw-r--r--examples/datavisualization/qmlmultigraph/main.cpp59
-rw-r--r--examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/Data.qml59
-rw-r--r--examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/main.qml225
-rw-r--r--examples/datavisualization/qmlmultigraph/qmlmultigraph.pro12
-rw-r--r--examples/datavisualization/qmlmultigraph/qmlmultigraph.qrc6
-rw-r--r--examples/datavisualization/qmlscatter/CMakeLists.txt20
-rw-r--r--examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.pngbin98086 -> 107603 bytes
-rw-r--r--examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc129
-rw-r--r--examples/datavisualization/qmlscatter/main.cpp32
-rw-r--r--examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml30
-rw-r--r--examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml241
-rw-r--r--examples/datavisualization/qmlscatter/qmlscatter.pro1
-rw-r--r--examples/datavisualization/qmlspectrogram/CMakeLists.txt53
-rw-r--r--examples/datavisualization/qmlspectrogram/doc/images/qmlspectrogram-example.pngbin80103 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlspectrogram/doc/src/qmlspectrogram.qdoc100
-rw-r--r--examples/datavisualization/qmlspectrogram/main.cpp54
-rw-r--r--examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml303
-rw-r--r--examples/datavisualization/qmlspectrogram/qmlspectrogram.pro12
-rw-r--r--examples/datavisualization/qmlspectrogram/qmlspectrogram.qrc6
-rw-r--r--examples/datavisualization/qmlsurface/CMakeLists.txt66
-rw-r--r--examples/datavisualization/qmlsurface/doc/images/qmlsurface-example.pngbin334593 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlsurface/doc/src/qmlsurface.qdoc119
-rw-r--r--examples/datavisualization/qmlsurface/heightmap.pngbin38634 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlsurface/main.cpp59
-rw-r--r--examples/datavisualization/qmlsurface/qml/qmlsurface/Data.qml10042
-rw-r--r--examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml284
-rw-r--r--examples/datavisualization/qmlsurface/qmlsurface.pro12
-rw-r--r--examples/datavisualization/qmlsurface/qmlsurface.qrc9
-rw-r--r--examples/datavisualization/qmlsurfacegallery/CMakeLists.txt60
-rw-r--r--examples/datavisualization/qmlsurfacegallery/datasource.cpp (renamed from examples/datavisualization/qml3doscilloscope/datasource.cpp)90
-rw-r--r--examples/datavisualization/qmlsurfacegallery/datasource.h38
-rw-r--r--examples/datavisualization/qmlsurfacegallery/doc/images/qmlsurfacegallery-example.pngbin0 -> 172206 bytes
-rw-r--r--examples/datavisualization/qmlsurfacegallery/doc/src/qmlsurfacegallery.qdoc238
-rw-r--r--examples/datavisualization/qmlsurfacegallery/main.cpp52
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SpectrogramData.qml (renamed from examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/Data.qml)30
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml227
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml430
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml272
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.pngbin0 -> 638731 bytes
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.readme25
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/main.qml57
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.pro (renamed from examples/datavisualization/qml3doscilloscope/qml3doscilloscope.pro)7
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.qrc10
-rw-r--r--examples/datavisualization/qmlsurfacelayers/CMakeLists.txt64
-rw-r--r--examples/datavisualization/qmlsurfacelayers/doc/images/qmlsurfacelayers-example.pngbin91579 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc91
-rw-r--r--examples/datavisualization/qmlsurfacelayers/layer_1.pngbin34540 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/layer_2.pngbin10563 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/layer_3.pngbin13022 -> 0 bytes
-rw-r--r--examples/datavisualization/qmlsurfacelayers/main.cpp64
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml309
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.pro12
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.qrc10
-rw-r--r--examples/datavisualization/rotations/CMakeLists.txt52
-rw-r--r--examples/datavisualization/rotations/doc/images/rotations-example.pngbin69487 -> 0 bytes
-rw-r--r--examples/datavisualization/rotations/doc/src/rotations.qdoc79
-rw-r--r--examples/datavisualization/rotations/main.cpp107
-rw-r--r--examples/datavisualization/rotations/mesh/largesphere.obj1938
-rw-r--r--examples/datavisualization/rotations/mesh/narrowarrow.obj413
-rw-r--r--examples/datavisualization/rotations/rotations.pro17
-rw-r--r--examples/datavisualization/rotations/rotations.qrc6
-rw-r--r--examples/datavisualization/rotations/scatterdatamodifier.cpp191
-rw-r--r--examples/datavisualization/rotations/scatterdatamodifier.h65
-rw-r--r--examples/datavisualization/scatter/CMakeLists.txt40
-rw-r--r--examples/datavisualization/scatter/doc/images/scatter-example.pngbin142496 -> 0 bytes
-rw-r--r--examples/datavisualization/scatter/doc/src/scatter.qdoc157
-rw-r--r--examples/datavisualization/scatter/main.cpp196
-rw-r--r--examples/datavisualization/scatter/scatter.pro17
-rw-r--r--examples/datavisualization/scatter/scatterdatamodifier.cpp216
-rw-r--r--examples/datavisualization/scatter/scatterdatamodifier.h78
-rw-r--r--examples/datavisualization/surface/CMakeLists.txt54
-rw-r--r--examples/datavisualization/surface/doc/images/surface-example.pngbin149046 -> 0 bytes
-rw-r--r--examples/datavisualization/surface/doc/src/surface.qdoc147
-rw-r--r--examples/datavisualization/surface/main.cpp231
-rw-r--r--examples/datavisualization/surface/mountain.pngbin34540 -> 0 bytes
-rw-r--r--examples/datavisualization/surface/surface.pro20
-rw-r--r--examples/datavisualization/surface/surface.qrc5
-rw-r--r--examples/datavisualization/surface/surfacegraph.cpp277
-rw-r--r--examples/datavisualization/surface/surfacegraph.h97
-rw-r--r--examples/datavisualization/texturesurface/CMakeLists.txt61
-rw-r--r--examples/datavisualization/texturesurface/custominputhandler.h100
-rw-r--r--examples/datavisualization/texturesurface/doc/images/texturesurface-example.pngbin157373 -> 0 bytes
-rw-r--r--examples/datavisualization/texturesurface/doc/src/texturesurface.qdoc137
-rw-r--r--examples/datavisualization/texturesurface/highlightseries.h61
-rw-r--r--examples/datavisualization/texturesurface/main.cpp121
-rw-r--r--examples/datavisualization/texturesurface/surfacegraph.cpp99
-rw-r--r--examples/datavisualization/texturesurface/surfacegraph.h61
-rw-r--r--examples/datavisualization/texturesurface/texturedsurface.qrc6
-rw-r--r--examples/datavisualization/texturesurface/texturesurface.pro25
-rw-r--r--examples/datavisualization/texturesurface/topographicseries.cpp82
-rw-r--r--examples/datavisualization/texturesurface/topographicseries.h54
-rw-r--r--examples/datavisualization/volumetric/CMakeLists.txt3
-rw-r--r--examples/datavisualization/volumetric/doc/images/volumetric-example.pngbin177203 -> 169556 bytes
-rw-r--r--examples/datavisualization/volumetric/doc/src/volumetric.qdoc127
-rw-r--r--examples/datavisualization/volumetric/main.cpp57
-rw-r--r--examples/datavisualization/volumetric/volumetric.cpp151
-rw-r--r--examples/datavisualization/volumetric/volumetric.h104
-rw-r--r--licenseRule.json89
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/datavisualization/CMakeLists.txt36
-rw-r--r--src/datavisualization/axis/qabstract3daxis.cpp30
-rw-r--r--src/datavisualization/axis/qabstract3daxis.h30
-rw-r--r--src/datavisualization/axis/qabstract3daxis_p.h30
-rw-r--r--src/datavisualization/axis/qcategory3daxis.cpp30
-rw-r--r--src/datavisualization/axis/qcategory3daxis.h30
-rw-r--r--src/datavisualization/axis/qcategory3daxis_p.h30
-rw-r--r--src/datavisualization/axis/qlogvalue3daxisformatter.cpp30
-rw-r--r--src/datavisualization/axis/qlogvalue3daxisformatter.h30
-rw-r--r--src/datavisualization/axis/qlogvalue3daxisformatter_p.h30
-rw-r--r--src/datavisualization/axis/qvalue3daxis.cpp30
-rw-r--r--src/datavisualization/axis/qvalue3daxis.h30
-rw-r--r--src/datavisualization/axis/qvalue3daxis_p.h30
-rw-r--r--src/datavisualization/axis/qvalue3daxisformatter.cpp30
-rw-r--r--src/datavisualization/axis/qvalue3daxisformatter.h30
-rw-r--r--src/datavisualization/axis/qvalue3daxisformatter_p.h30
-rw-r--r--src/datavisualization/configure.cmake3
-rw-r--r--src/datavisualization/data/abstractitemmodelhandler.cpp30
-rw-r--r--src/datavisualization/data/abstractitemmodelhandler_p.h32
-rw-r--r--src/datavisualization/data/abstractrenderitem.cpp30
-rw-r--r--src/datavisualization/data/abstractrenderitem_p.h30
-rw-r--r--src/datavisualization/data/baritemmodelhandler.cpp32
-rw-r--r--src/datavisualization/data/baritemmodelhandler_p.h30
-rw-r--r--src/datavisualization/data/barrenderitem.cpp30
-rw-r--r--src/datavisualization/data/barrenderitem_p.h30
-rw-r--r--src/datavisualization/data/customrenderitem.cpp33
-rw-r--r--src/datavisualization/data/customrenderitem_p.h32
-rw-r--r--src/datavisualization/data/labelitem.cpp30
-rw-r--r--src/datavisualization/data/labelitem_p.h30
-rw-r--r--src/datavisualization/data/qabstract3dseries.cpp30
-rw-r--r--src/datavisualization/data/qabstract3dseries.h30
-rw-r--r--src/datavisualization/data/qabstract3dseries_p.h30
-rw-r--r--src/datavisualization/data/qabstractdataproxy.cpp30
-rw-r--r--src/datavisualization/data/qabstractdataproxy.h30
-rw-r--r--src/datavisualization/data/qabstractdataproxy_p.h30
-rw-r--r--src/datavisualization/data/qbar3dseries.cpp73
-rw-r--r--src/datavisualization/data/qbar3dseries.h35
-rw-r--r--src/datavisualization/data/qbar3dseries_p.h34
-rw-r--r--src/datavisualization/data/qbardataitem.cpp30
-rw-r--r--src/datavisualization/data/qbardataitem.h30
-rw-r--r--src/datavisualization/data/qbardataitem_p.h30
-rw-r--r--src/datavisualization/data/qbardataproxy.cpp30
-rw-r--r--src/datavisualization/data/qbardataproxy.h30
-rw-r--r--src/datavisualization/data/qbardataproxy_p.h30
-rw-r--r--src/datavisualization/data/qcustom3ditem.cpp37
-rw-r--r--src/datavisualization/data/qcustom3ditem.h31
-rw-r--r--src/datavisualization/data/qcustom3ditem_p.h30
-rw-r--r--src/datavisualization/data/qcustom3dlabel.cpp30
-rw-r--r--src/datavisualization/data/qcustom3dlabel.h30
-rw-r--r--src/datavisualization/data/qcustom3dlabel_p.h30
-rw-r--r--src/datavisualization/data/qcustom3dvolume.cpp30
-rw-r--r--src/datavisualization/data/qcustom3dvolume.h30
-rw-r--r--src/datavisualization/data/qcustom3dvolume_p.h30
-rw-r--r--src/datavisualization/data/qheightmapsurfacedataproxy.cpp30
-rw-r--r--src/datavisualization/data/qheightmapsurfacedataproxy.h30
-rw-r--r--src/datavisualization/data/qheightmapsurfacedataproxy_p.h30
-rw-r--r--src/datavisualization/data/qitemmodelbardataproxy.cpp32
-rw-r--r--src/datavisualization/data/qitemmodelbardataproxy.h30
-rw-r--r--src/datavisualization/data/qitemmodelbardataproxy_p.h30
-rw-r--r--src/datavisualization/data/qitemmodelscatterdataproxy.cpp32
-rw-r--r--src/datavisualization/data/qitemmodelscatterdataproxy.h30
-rw-r--r--src/datavisualization/data/qitemmodelscatterdataproxy_p.h30
-rw-r--r--src/datavisualization/data/qitemmodelsurfacedataproxy.cpp32
-rw-r--r--src/datavisualization/data/qitemmodelsurfacedataproxy.h30
-rw-r--r--src/datavisualization/data/qitemmodelsurfacedataproxy_p.h30
-rw-r--r--src/datavisualization/data/qscatter3dseries.cpp30
-rw-r--r--src/datavisualization/data/qscatter3dseries.h30
-rw-r--r--src/datavisualization/data/qscatter3dseries_p.h30
-rw-r--r--src/datavisualization/data/qscatterdataitem.cpp30
-rw-r--r--src/datavisualization/data/qscatterdataitem.h30
-rw-r--r--src/datavisualization/data/qscatterdataitem_p.h30
-rw-r--r--src/datavisualization/data/qscatterdataproxy.cpp30
-rw-r--r--src/datavisualization/data/qscatterdataproxy.h30
-rw-r--r--src/datavisualization/data/qscatterdataproxy_p.h30
-rw-r--r--src/datavisualization/data/qsurface3dseries.cpp52
-rw-r--r--src/datavisualization/data/qsurface3dseries.h41
-rw-r--r--src/datavisualization/data/qsurface3dseries_p.h34
-rw-r--r--src/datavisualization/data/qsurfacedataitem.cpp30
-rw-r--r--src/datavisualization/data/qsurfacedataitem.h30
-rw-r--r--src/datavisualization/data/qsurfacedataitem_p.h30
-rw-r--r--src/datavisualization/data/qsurfacedataproxy.cpp30
-rw-r--r--src/datavisualization/data/qsurfacedataproxy.h30
-rw-r--r--src/datavisualization/data/qsurfacedataproxy_p.h30
-rw-r--r--src/datavisualization/data/scatteritemmodelhandler.cpp32
-rw-r--r--src/datavisualization/data/scatteritemmodelhandler_p.h30
-rw-r--r--src/datavisualization/data/scatterrenderitem.cpp30
-rw-r--r--src/datavisualization/data/scatterrenderitem_p.h30
-rw-r--r--src/datavisualization/data/surfaceitemmodelhandler.cpp32
-rw-r--r--src/datavisualization/data/surfaceitemmodelhandler_p.h30
-rw-r--r--src/datavisualization/doc/qtdatavis3d.qdocconf53
-rw-r--r--src/datavisualization/doc/snippets/doc_src_q3dbars_construction.cpp30
-rw-r--r--src/datavisualization/doc/snippets/doc_src_q3dscatter_construction.cpp30
-rw-r--r--src/datavisualization/doc/snippets/doc_src_q3dsurface_construction.cpp30
-rw-r--r--src/datavisualization/doc/snippets/doc_src_q3dtheme.cpp30
-rw-r--r--src/datavisualization/doc/snippets/doc_src_qmldatavisualization.cpp30
-rw-r--r--src/datavisualization/doc/snippets/doc_src_qtdatavisualization.cpp30
-rw-r--r--src/datavisualization/doc/snippets/doc_src_qtdatavisualization.pro30
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-index.qdoc79
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-overview.qdoc48
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc30
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc32
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-color.qdoc30
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-colorgradient.qdoc30
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc32
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc32
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization.qdoc52
-rw-r--r--src/datavisualization/engine/abstract3dcontroller.cpp48
-rw-r--r--src/datavisualization/engine/abstract3dcontroller_p.h33
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp47
-rw-r--r--src/datavisualization/engine/abstract3drenderer_p.h32
-rw-r--r--src/datavisualization/engine/abstractdeclarativeinterface.cpp11
-rw-r--r--src/datavisualization/engine/abstractdeclarativeinterface_p.h31
-rw-r--r--src/datavisualization/engine/axisrendercache.cpp32
-rw-r--r--src/datavisualization/engine/axisrendercache_p.h30
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp37
-rw-r--r--src/datavisualization/engine/bars3dcontroller_p.h31
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp45
-rw-r--r--src/datavisualization/engine/bars3drenderer_p.h30
-rw-r--r--src/datavisualization/engine/barseriesrendercache.cpp30
-rw-r--r--src/datavisualization/engine/barseriesrendercache_p.h30
-rw-r--r--src/datavisualization/engine/drawer.cpp36
-rw-r--r--src/datavisualization/engine/drawer_p.h30
-rw-r--r--src/datavisualization/engine/meshes.qrc33
-rw-r--r--src/datavisualization/engine/q3dbars.cpp32
-rw-r--r--src/datavisualization/engine/q3dbars.h30
-rw-r--r--src/datavisualization/engine/q3dbars_p.h30
-rw-r--r--src/datavisualization/engine/q3dcamera.cpp30
-rw-r--r--src/datavisualization/engine/q3dcamera.h30
-rw-r--r--src/datavisualization/engine/q3dcamera_p.h30
-rw-r--r--src/datavisualization/engine/q3dlight.cpp30
-rw-r--r--src/datavisualization/engine/q3dlight.h30
-rw-r--r--src/datavisualization/engine/q3dlight_p.h30
-rw-r--r--src/datavisualization/engine/q3dobject.cpp30
-rw-r--r--src/datavisualization/engine/q3dobject.h30
-rw-r--r--src/datavisualization/engine/q3dobject_p.h30
-rw-r--r--src/datavisualization/engine/q3dscatter.cpp34
-rw-r--r--src/datavisualization/engine/q3dscatter.h30
-rw-r--r--src/datavisualization/engine/q3dscatter_p.h30
-rw-r--r--src/datavisualization/engine/q3dscene.cpp30
-rw-r--r--src/datavisualization/engine/q3dscene.h30
-rw-r--r--src/datavisualization/engine/q3dscene_p.h30
-rw-r--r--src/datavisualization/engine/q3dsurface.cpp34
-rw-r--r--src/datavisualization/engine/q3dsurface.h30
-rw-r--r--src/datavisualization/engine/q3dsurface_p.h30
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.cpp40
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.h38
-rw-r--r--src/datavisualization/engine/qabstract3dgraph_p.h30
-rw-r--r--src/datavisualization/engine/scatter3dcontroller.cpp32
-rw-r--r--src/datavisualization/engine/scatter3dcontroller_p.h30
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp34
-rw-r--r--src/datavisualization/engine/scatter3drenderer_p.h30
-rw-r--r--src/datavisualization/engine/scatterseriesrendercache.cpp30
-rw-r--r--src/datavisualization/engine/scatterseriesrendercache_p.h30
-rw-r--r--src/datavisualization/engine/selectionpointer.cpp36
-rw-r--r--src/datavisualization/engine/selectionpointer_p.h30
-rw-r--r--src/datavisualization/engine/seriesrendercache.cpp30
-rw-r--r--src/datavisualization/engine/seriesrendercache_p.h30
-rw-r--r--src/datavisualization/engine/shaders.qrc43
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp32
-rw-r--r--src/datavisualization/engine/surface3dcontroller_p.h30
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp32
-rw-r--r--src/datavisualization/engine/surface3drenderer_p.h30
-rw-r--r--src/datavisualization/engine/surfaceseriesrendercache.cpp32
-rw-r--r--src/datavisualization/engine/surfaceseriesrendercache_p.h30
-rw-r--r--src/datavisualization/global/datavisualizationglobal_p.h30
-rw-r--r--src/datavisualization/global/qdatavisualizationglobal.h30
-rw-r--r--src/datavisualization/input/q3dinputhandler.cpp32
-rw-r--r--src/datavisualization/input/q3dinputhandler.h30
-rw-r--r--src/datavisualization/input/q3dinputhandler_p.h30
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler.cpp30
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler.h30
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler_p.h30
-rw-r--r--src/datavisualization/input/qtouch3dinputhandler.cpp40
-rw-r--r--src/datavisualization/input/qtouch3dinputhandler.h30
-rw-r--r--src/datavisualization/input/qtouch3dinputhandler_p.h30
-rw-r--r--src/datavisualization/theme/q3dtheme.cpp54
-rw-r--r--src/datavisualization/theme/q3dtheme.h32
-rw-r--r--src/datavisualization/theme/q3dtheme_p.h30
-rw-r--r--src/datavisualization/theme/thememanager.cpp30
-rw-r--r--src/datavisualization/theme/thememanager_p.h30
-rw-r--r--src/datavisualization/utils/abstractobjecthelper.cpp30
-rw-r--r--src/datavisualization/utils/abstractobjecthelper_p.h30
-rw-r--r--src/datavisualization/utils/camerahelper.cpp30
-rw-r--r--src/datavisualization/utils/camerahelper_p.h30
-rw-r--r--src/datavisualization/utils/meshloader.cpp34
-rw-r--r--src/datavisualization/utils/meshloader_p.h30
-rw-r--r--src/datavisualization/utils/objecthelper.cpp116
-rw-r--r--src/datavisualization/utils/objecthelper_p.h30
-rw-r--r--src/datavisualization/utils/qutils.h34
-rw-r--r--src/datavisualization/utils/scatterobjectbufferhelper.cpp64
-rw-r--r--src/datavisualization/utils/scatterobjectbufferhelper_p.h31
-rw-r--r--src/datavisualization/utils/scatterpointbufferhelper.cpp30
-rw-r--r--src/datavisualization/utils/scatterpointbufferhelper_p.h30
-rw-r--r--src/datavisualization/utils/shaderhelper.cpp30
-rw-r--r--src/datavisualization/utils/shaderhelper_p.h30
-rw-r--r--src/datavisualization/utils/surfaceobject.cpp30
-rw-r--r--src/datavisualization/utils/surfaceobject_p.h37
-rw-r--r--src/datavisualization/utils/texturehelper.cpp30
-rw-r--r--src/datavisualization/utils/texturehelper_p.h30
-rw-r--r--src/datavisualization/utils/utils.cpp30
-rw-r--r--src/datavisualization/utils/utils_p.h30
-rw-r--r--src/datavisualization/utils/vertexindexer.cpp31
-rw-r--r--src/datavisualization/utils/vertexindexer_p.h30
-rw-r--r--src/datavisualizationqml/CMakeLists.txt12
-rw-r--r--src/datavisualizationqml/abstractdeclarative.cpp46
-rw-r--r--src/datavisualizationqml/abstractdeclarative_p.h37
-rw-r--r--src/datavisualizationqml/colorgradient.cpp30
-rw-r--r--src/datavisualizationqml/colorgradient_p.h30
-rw-r--r--src/datavisualizationqml/declarativebars.cpp30
-rw-r--r--src/datavisualizationqml/declarativebars_p.h30
-rw-r--r--src/datavisualizationqml/declarativecolor.cpp30
-rw-r--r--src/datavisualizationqml/declarativecolor_p.h30
-rw-r--r--src/datavisualizationqml/declarativerendernode.cpp30
-rw-r--r--src/datavisualizationqml/declarativerendernode_p.h30
-rw-r--r--src/datavisualizationqml/declarativescatter.cpp30
-rw-r--r--src/datavisualizationqml/declarativescatter_p.h30
-rw-r--r--src/datavisualizationqml/declarativescene.cpp30
-rw-r--r--src/datavisualizationqml/declarativescene_p.h30
-rw-r--r--src/datavisualizationqml/declarativeseries.cpp131
-rw-r--r--src/datavisualizationqml/declarativeseries_p.h49
-rw-r--r--src/datavisualizationqml/declarativesurface.cpp30
-rw-r--r--src/datavisualizationqml/declarativesurface_p.h30
-rw-r--r--src/datavisualizationqml/declarativetheme.cpp32
-rw-r--r--src/datavisualizationqml/declarativetheme_p.h30
-rw-r--r--src/datavisualizationqml/designer/Bars3DSpecifics.qml30
-rw-r--r--src/datavisualizationqml/designer/Scatter3DSpecifics.qml30
-rw-r--r--src/datavisualizationqml/designer/Surface3DSpecifics.qml30
-rw-r--r--src/datavisualizationqml/designer/default/Bars3D.qml30
-rw-r--r--src/datavisualizationqml/designer/default/Scatter3D.qml30
-rw-r--r--src/datavisualizationqml/designer/default/Surface3D.qml30
-rw-r--r--src/datavisualizationqml/enumtostringmap.cpp30
-rw-r--r--src/datavisualizationqml/enumtostringmap_p.h31
-rw-r--r--src/datavisualizationqml/foreigntypes_p.h37
-rw-r--r--src/datavisualizationqml/glstatestore.cpp30
-rw-r--r--src/datavisualizationqml/glstatestore_p.h30
-rw-r--r--sync.profile16
-rw-r--r--tests/CMakeLists.txt3
-rw-r--r--tests/auto/CMakeLists.txt3
-rw-r--r--tests/auto/cpptest/CMakeLists.txt3
-rw-r--r--tests/auto/cpptest/common/cpptestutil.h29
-rw-r--r--tests/auto/cpptest/q3daxis-category/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3daxis-category/tst_axis.cpp34
-rw-r--r--tests/auto/cpptest/q3daxis-logvalue/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3daxis-logvalue/tst_axis.cpp30
-rw-r--r--tests/auto/cpptest/q3daxis-value/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3daxis-value/tst_axis.cpp34
-rw-r--r--tests/auto/cpptest/q3dbars-modelproxy/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp62
-rw-r--r--tests/auto/cpptest/q3dbars-proxy/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp38
-rw-r--r--tests/auto/cpptest/q3dbars-series/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dbars-series/tst_series.cpp43
-rw-r--r--tests/auto/cpptest/q3dbars/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dbars/tst_bars.cpp80
-rw-r--r--tests/auto/cpptest/q3dcustom-label/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dcustom-label/tst_custom.cpp30
-rw-r--r--tests/auto/cpptest/q3dcustom-volume/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dcustom-volume/tst_custom.cpp32
-rw-r--r--tests/auto/cpptest/q3dcustom/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dcustom/tst_custom.cpp30
-rw-r--r--tests/auto/cpptest/q3dinput-touch/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dinput-touch/tst_input.cpp30
-rw-r--r--tests/auto/cpptest/q3dinput/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dinput/tst_input.cpp30
-rw-r--r--tests/auto/cpptest/q3dscatter-modelproxy/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp30
-rw-r--r--tests/auto/cpptest/q3dscatter-proxy/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp30
-rw-r--r--tests/auto/cpptest/q3dscatter-series/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dscatter-series/tst_series.cpp30
-rw-r--r--tests/auto/cpptest/q3dscatter/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dscatter/tst_scatter.cpp52
-rw-r--r--tests/auto/cpptest/q3dscene-camera/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dscene-camera/tst_camera.cpp30
-rw-r--r--tests/auto/cpptest/q3dscene-light/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dscene-light/tst_light.cpp30
-rw-r--r--tests/auto/cpptest/q3dscene/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dscene/tst_scene.cpp30
-rw-r--r--tests/auto/cpptest/q3dsurface-heightproxy/CMakeLists.txt9
-rw-r--r--tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.qrc5
-rw-r--r--tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp30
-rw-r--r--tests/auto/cpptest/q3dsurface-modelproxy-nan/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dsurface-modelproxy-nan/tst_proxy.cpp30
-rw-r--r--tests/auto/cpptest/q3dsurface-modelproxy/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp54
-rw-r--r--tests/auto/cpptest/q3dsurface-proxy/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp30
-rw-r--r--tests/auto/cpptest/q3dsurface-series/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dsurface-series/tst_series.cpp36
-rw-r--r--tests/auto/cpptest/q3dsurface/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dsurface/tst_surface.cpp52
-rw-r--r--tests/auto/cpptest/q3dtheme/CMakeLists.txt7
-rw-r--r--tests/auto/cpptest/q3dtheme/tst_theme.cpp42
-rw-r--r--tests/auto/qmltest/CMakeLists.txt15
-rw-r--r--tests/auto/qmltest/axis3d/tst_category.qml30
-rw-r--r--tests/auto/qmltest/axis3d/tst_logvalue.qml30
-rw-r--r--tests/auto/qmltest/axis3d/tst_value.qml30
-rw-r--r--tests/auto/qmltest/bars3d/tst_bars.qml34
-rw-r--r--tests/auto/qmltest/bars3d/tst_barseries.qml53
-rw-r--r--tests/auto/qmltest/bars3d/tst_basic.qml103
-rw-r--r--tests/auto/qmltest/bars3d/tst_proxy.qml30
-rw-r--r--tests/auto/qmltest/custom3d/tst_customitem.qml30
-rw-r--r--tests/auto/qmltest/custom3d/tst_customlabel.qml30
-rw-r--r--tests/auto/qmltest/custom3d/tst_customvolume.qml30
-rw-r--r--tests/auto/qmltest/input3d/tst_input.qml30
-rw-r--r--tests/auto/qmltest/input3d/tst_touch.qml30
-rw-r--r--tests/auto/qmltest/qmltest.qrc6
-rw-r--r--tests/auto/qmltest/scatter3d/tst_basic.qml115
-rw-r--r--tests/auto/qmltest/scatter3d/tst_proxy.qml30
-rw-r--r--tests/auto/qmltest/scatter3d/tst_scatter.qml30
-rw-r--r--tests/auto/qmltest/scatter3d/tst_scatterseries.qml30
-rw-r--r--tests/auto/qmltest/scene3d/tst_camera.qml30
-rw-r--r--tests/auto/qmltest/scene3d/tst_light.qml30
-rw-r--r--tests/auto/qmltest/scene3d/tst_scene.qml36
-rw-r--r--tests/auto/qmltest/surface3d/tst_basic.qml111
-rw-r--r--tests/auto/qmltest/surface3d/tst_heightproxy.qml30
-rw-r--r--tests/auto/qmltest/surface3d/tst_proxy.qml30
-rw-r--r--tests/auto/qmltest/surface3d/tst_surface.qml30
-rw-r--r--tests/auto/qmltest/surface3d/tst_surfaceseries.qml40
-rw-r--r--tests/auto/qmltest/theme3d/tst_colorgradient.qml30
-rw-r--r--tests/auto/qmltest/theme3d/tst_theme.qml30
-rw-r--r--tests/auto/qmltest/theme3d/tst_themecolor.qml30
-rw-r--r--tests/auto/qmltest/tst_qmltest.cpp54
-rw-r--r--tests/manual/CMakeLists.txt4
-rw-r--r--tests/manual/barstest/CMakeLists.txt10
-rw-r--r--tests/manual/barstest/buttonwrapper.cpp14
-rw-r--r--tests/manual/barstest/buttonwrapper.h22
-rw-r--r--tests/manual/barstest/chart.cpp56
-rw-r--r--tests/manual/barstest/chart.h56
-rw-r--r--tests/manual/barstest/custominputhandler.cpp30
-rw-r--r--tests/manual/barstest/custominputhandler.h30
-rw-r--r--tests/manual/barstest/main.cpp129
-rw-r--r--tests/manual/barstest/sliderwrapper.cpp13
-rw-r--r--tests/manual/barstest/sliderwrapper.h23
-rw-r--r--tests/manual/directional/CMakeLists.txt6
-rw-r--r--tests/manual/directional/main.cpp30
-rw-r--r--tests/manual/directional/scatterdatamodifier.cpp30
-rw-r--r--tests/manual/directional/scatterdatamodifier.h30
-rw-r--r--tests/manual/galaxy/CMakeLists.txt3
-rw-r--r--tests/manual/galaxy/cumulativedistributor.cpp30
-rw-r--r--tests/manual/galaxy/cumulativedistributor.h30
-rw-r--r--tests/manual/galaxy/galaxydata.cpp30
-rw-r--r--tests/manual/galaxy/galaxydata.h30
-rw-r--r--tests/manual/galaxy/main.cpp30
-rw-r--r--tests/manual/galaxy/star.cpp30
-rw-r--r--tests/manual/galaxy/star.h30
-rw-r--r--tests/manual/itemmodeltest/CMakeLists.txt3
-rw-r--r--tests/manual/itemmodeltest/main.cpp36
-rw-r--r--tests/manual/minimalbars/CMakeLists.txt3
-rw-r--r--tests/manual/minimalscatter/CMakeLists.txt3
-rw-r--r--tests/manual/minimalsurface/CMakeLists.txt3
-rw-r--r--tests/manual/multigraphs/CMakeLists.txt6
-rw-r--r--tests/manual/multigraphs/data.cpp30
-rw-r--r--tests/manual/multigraphs/data.h30
-rw-r--r--tests/manual/multigraphs/main.cpp30
-rw-r--r--tests/manual/qmlbarsrowcolors/CMakeLists.txt31
-rw-r--r--tests/manual/qmlbarsrowcolors/main.cpp33
-rw-r--r--tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/Axes.qml41
-rw-r--r--tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/Data.qml118
-rw-r--r--tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/main.qml392
-rw-r--r--tests/manual/qmldynamicdata/CMakeLists.txt5
-rw-r--r--tests/manual/qmldynamicdata/main.cpp30
-rw-r--r--tests/manual/qmldynamicdata/qml/qmldynamicdata/main.qml41
-rw-r--r--tests/manual/qmlgradient/CMakeLists.txt5
-rw-r--r--tests/manual/qmlgradient/main.cpp30
-rw-r--r--tests/manual/qmlgradient/qml/qmlgradient/main.qml30
-rw-r--r--tests/manual/qmlheightmap/CMakeLists.txt8
-rw-r--r--tests/manual/qmlheightmap/main.cpp30
-rw-r--r--tests/manual/qmlheightmap/qml/qmlheightmap/main.qml30
-rw-r--r--tests/manual/qmlmultitest/CMakeLists.txt5
-rw-r--r--tests/manual/qmlmultitest/main.cpp30
-rw-r--r--tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml30
-rw-r--r--tests/manual/qmlmultitest/qml/qmlmultitest/main.qml30
-rw-r--r--tests/manual/qmlperf/CMakeLists.txt8
-rw-r--r--tests/manual/qmlperf/datagenerator.cpp30
-rw-r--r--tests/manual/qmlperf/datagenerator.h30
-rw-r--r--tests/manual/qmlperf/main.cpp30
-rw-r--r--tests/manual/qmlperf/qml/qmlperf/main.qml30
-rw-r--r--tests/manual/qmlvolume/CMakeLists.txt8
-rw-r--r--tests/manual/qmlvolume/datasource.cpp32
-rw-r--r--tests/manual/qmlvolume/datasource.h30
-rw-r--r--tests/manual/qmlvolume/main.cpp30
-rw-r--r--tests/manual/qmlvolume/qml/qmlvolume/main.qml54
-rw-r--r--tests/manual/scattertest/CMakeLists.txt8
-rw-r--r--tests/manual/scattertest/main.cpp30
-rw-r--r--tests/manual/scattertest/scatterchart.cpp44
-rw-r--r--tests/manual/scattertest/scatterchart.h42
-rw-r--r--tests/manual/surfacetest/CMakeLists.txt10
-rw-r--r--tests/manual/surfacetest/buttonwrapper.cpp14
-rw-r--r--tests/manual/surfacetest/buttonwrapper.h22
-rw-r--r--tests/manual/surfacetest/checkboxwrapper.cpp14
-rw-r--r--tests/manual/surfacetest/checkboxwrapper.h23
-rw-r--r--tests/manual/surfacetest/graphmodifier.cpp88
-rw-r--r--tests/manual/surfacetest/graphmodifier.h86
-rw-r--r--tests/manual/surfacetest/main.cpp81
-rw-r--r--tests/manual/volumetrictest/CMakeLists.txt6
-rw-r--r--tests/manual/volumetrictest/main.cpp30
-rw-r--r--tests/manual/volumetrictest/volumetrictest.cpp30
-rw-r--r--tests/manual/volumetrictest/volumetrictest.h30
673 files changed, 10221 insertions, 38138 deletions
diff --git a/.cmake.conf b/.cmake.conf
index 75aec070..dc1d7a92 100644
--- a/.cmake.conf
+++ b/.cmake.conf
@@ -1,2 +1,5 @@
-set(QT_REPO_MODULE_VERSION "6.3.0")
+set(QT_REPO_MODULE_VERSION "6.8.0")
set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
+set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1")
+list(APPEND QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_FOREACH=1")
+list(APPEND QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_CONTEXTLESS_CONNECT=1")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 304d73bb..f5428101 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
cmake_minimum_required(VERSION 3.16)
include(.cmake.conf)
@@ -11,6 +14,7 @@ project(QtDataVisualization
find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals)
find_package(Qt6 ${PROJECT_VERSION} CONFIG OPTIONAL_COMPONENTS
Core OpenGL Quick Qml Gui Widgets QuickTest Test)
+qt_internal_project_setup()
macro(assertTargets)
foreach(qtTarget IN ITEMS ${ARGN})
diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt
new file mode 100644
index 00000000..b91bbd89
--- /dev/null
+++ b/LICENSES/BSD-3-Clause.txt
@@ -0,0 +1,9 @@
+Copyright (c) <year> <owner>.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/LICENSES/GFDL-1.3-no-invariants-only.txt b/LICENSES/GFDL-1.3-no-invariants-only.txt
new file mode 100644
index 00000000..857214dd
--- /dev/null
+++ b/LICENSES/GFDL-1.3-no-invariants-only.txt
@@ -0,0 +1,451 @@
+
+ GNU Free Documentation License
+ Version 1.3, 3 November 2008
+
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of
+the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no
+other conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to
+give them a chance to provide you with an updated version of the
+Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other
+documents released under this License, and replace the individual
+copies of this License in the various documents with a single copy
+that is included in the collection, provided that you follow the rules
+of this License for verbatim copying of each of the documents in all
+other respects.
+
+You may extract a single document from such a collection, and
+distribute it individually under this License, provided you insert a
+copy of this License into the extracted document, and follow this
+License in all other respects regarding verbatim copying of that
+document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns. See
+https://www.gnu.org/licenses/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the site
+means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/LICENSE.GPL3 b/LICENSES/GPL-3.0-only.txt
index 94a9ed02..94a9ed02 100644
--- a/LICENSE.GPL3
+++ b/LICENSES/GPL-3.0-only.txt
diff --git a/LICENSES/LicenseRef-Qt-Commercial.txt b/LICENSES/LicenseRef-Qt-Commercial.txt
new file mode 100644
index 00000000..825b1f35
--- /dev/null
+++ b/LICENSES/LicenseRef-Qt-Commercial.txt
@@ -0,0 +1,8 @@
+Licensees holding valid commercial Qt licenses may use this software in
+accordance with the the terms contained in a written agreement between
+you and The Qt Company. Alternatively, the terms and conditions that were
+accepted by the licensee when buying and/or downloading the
+software do apply.
+
+For the latest licensing terms and conditions, see https://www.qt.io/terms-conditions.
+For further information use the contact form at https://www.qt.io/contact-us.
diff --git a/LICENSES/Qt-GPL-exception-1.0.txt b/LICENSES/Qt-GPL-exception-1.0.txt
new file mode 100644
index 00000000..d0322bf0
--- /dev/null
+++ b/LICENSES/Qt-GPL-exception-1.0.txt
@@ -0,0 +1,22 @@
+The Qt Company GPL Exception 1.0
+
+Exception 1:
+
+As a special exception you may create a larger work which contains the
+output of this application and distribute that work under terms of your
+choice, so long as the work is not otherwise derived from or based on
+this application and so long as the work does not in itself generate
+output that contains the output from this application in its original
+or modified form.
+
+Exception 2:
+
+As a special exception, you have permission to combine this application
+with Plugins licensed under the terms of your choice, to produce an
+executable, and to copy and distribute the resulting executable under
+the terms of your choice. However, the executable must be accompanied
+by a prominent notice offering all users of the executable the entire
+source code to this application, excluding the source code of the
+independent modules, but including any changes you have made to this
+application, under the terms of this license.
+
diff --git a/coin/axivion/ci_config_linux.json b/coin/axivion/ci_config_linux.json
new file mode 100644
index 00000000..7bf3dd7c
--- /dev/null
+++ b/coin/axivion/ci_config_linux.json
@@ -0,0 +1,41 @@
+{
+ "Project": {
+ "BuildSystemIntegration": {
+ "child_order": [
+ "GCCSetup",
+ "CMake",
+ "LinkLibraries"
+ ]
+ },
+ "CMake": {
+ "_active": true,
+ "_copy_from": "CMakeIntegration",
+ "build_environment": {},
+ "build_options": "-j4",
+ "generate_options": "--fresh",
+ "generator": "Ninja"
+ },
+ "GCCSetup": {
+ "_active": true,
+ "_copy_from": "Command",
+ "build_command": "gccsetup --cc gcc --cxx g++ --config ../../../axivion/"
+ },
+ "LinkLibraries": {
+ "_active": true,
+ "_copy_from": "AxivionLinker",
+ "input_files": [
+ "build/lib/lib*.so*.ir",
+ "build/qml/*/lib*.so*.ir"
+ ],
+ "ir": "build/$(env:TESTED_MODULE_COIN).ir"
+ }
+ },
+ "_Format": "1.0",
+ "_Version": "7.6.2",
+ "_VersionNum": [
+ 7,
+ 6,
+ 2,
+ 12725
+ ]
+}
diff --git a/coin/module_config.yaml b/coin/module_config.yaml
index 7004c27d..58c91b78 100644
--- a/coin/module_config.yaml
+++ b/coin/module_config.yaml
@@ -13,6 +13,11 @@ instructions:
instructions:
- !include "{{qt/qtbase}}/coin_module_test_template_v3.yaml"
disable_if:
- condition: property
- property: configureArgs
- contains_value: "-DFEATURE_widgets=OFF"
+ condition: or
+ conditions:
+ - condition: property
+ property: configureArgs
+ contains_value: "-DFEATURE_widgets=OFF"
+ - condition: property
+ property: configureArgs
+ contains_value: "-no-widgets"
diff --git a/conanfile.py b/conanfile.py
deleted file mode 100644
index 8aa42f17..00000000
--- a/conanfile.py
+++ /dev/null
@@ -1,59 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the release tools of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:GPL-EXCEPT$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## GNU General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU
-## General Public License version 3 as published by the Free Software
-## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-## included in the packaging of this file. Please review the following
-## information to ensure the GNU General Public License requirements will
-## be met: https://www.gnu.org/licenses/gpl-3.0.html.
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from conans import ConanFile
-import re
-from pathlib import Path
-
-
-def _parse_qt_version_by_key(key: str) -> str:
- with open(Path(__file__).parent.resolve() / ".cmake.conf") as f:
- m = re.search(fr'{key} .*"(.*)"', f.read())
- return m.group(1) if m else ""
-
-
-def _get_qt_minor_version() -> str:
- return ".".join(_parse_qt_version_by_key("QT_REPO_MODULE_VERSION").split(".")[:2])
-
-
-class QtDataVisualization(ConanFile):
- name = "qtdatavis3d"
- license = "GPL-3.0+, Commercial Qt License Agreement"
- author = "The Qt Company <https://www.qt.io/contact-us>"
- url = "https://code.qt.io/cgit/qt/qtdatavis3d.git"
- description = (
- "Qt Data Visualization provides UI Components for displaying 3D graphs, driven by static or "
- "dynamic data models."
- )
- topics = "qt", "qt6", "data visualization", "qtquick"
- settings = "os", "compiler", "arch", "build_type"
- # for referencing the version number and prerelease tag and dependencies info
- exports = ".cmake.conf", "dependencies.yaml"
- exports_sources = "*", "!conan*.*"
- python_requires = f"qt-conan-common/{_get_qt_minor_version()}@qt/everywhere"
- python_requires_extend = "qt-conan-common.QtLeafModule"
diff --git a/dependencies.yaml b/dependencies.yaml
index ce109216..77867112 100644
--- a/dependencies.yaml
+++ b/dependencies.yaml
@@ -1,10 +1,10 @@
dependencies:
../qtbase:
- ref: ad4faa25a524da8291525ca0afe2f2a65bf6b456
+ ref: 488545ca72b7f2a59401a42c2c264f38916e15d1
required: true
../qtdeclarative:
- ref: abd488dd3ddbe769359e3b692c6e481457e87b3b
+ ref: 22f72aa17118346059179fc3e86a6ece7b7bfb7f
required: false
../qtmultimedia:
- ref: 7b75f2709709446d91c424ed194cffa19cdbf45e
+ ref: 3f831e82c5b54cdeddbc7e00c62a8a9fe048ce4f
required: false
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 5b2f563c..9a9782af 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,4 +1,7 @@
-qt_examples_build_begin()
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+qt_examples_build_begin(EXTERNAL_BUILD)
add_subdirectory(datavisualization)
diff --git a/examples/datavisualization/CMakeLists.txt b/examples/datavisualization/CMakeLists.txt
index 4c46ac6f..4e9514b1 100644
--- a/examples/datavisualization/CMakeLists.txt
+++ b/examples/datavisualization/CMakeLists.txt
@@ -1,26 +1,13 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
if(TARGET Qt::Quick)
- add_subdirectory(qmlbars)
- add_subdirectory(qmlscatter)
- add_subdirectory(qmlsurface)
- add_subdirectory(qmlcustominput)
- add_subdirectory(qmllegend)
- add_subdirectory(qmlmultigraph)
- add_subdirectory(qml3doscilloscope)
- add_subdirectory(qmlsurfacelayers)
- add_subdirectory(qmlaxisformatter)
- add_subdirectory(qmlaxisdrag)
- add_subdirectory(qmlspectrogram)
+ qt_internal_add_example(qmlaxishandling)
+ qt_internal_add_example(qmlbars)
+ qt_internal_add_example(qmlscatter)
+ qt_internal_add_example(qmlsurfacegallery)
endif()
if(NOT ANDROID AND NOT IOS AND NOT WINRT)
- add_subdirectory(bars)
- add_subdirectory(custominput)
- add_subdirectory(customproxy)
- add_subdirectory(itemmodel)
- add_subdirectory(scatter)
- add_subdirectory(surface)
- add_subdirectory(rotations)
- add_subdirectory(draggableaxes)
- add_subdirectory(customitems)
- add_subdirectory(texturesurface)
- add_subdirectory(volumetric)
+ qt_internal_add_example(graphgallery)
+ qt_internal_add_example(volumetric)
endif()
diff --git a/examples/datavisualization/bars/CMakeLists.txt b/examples/datavisualization/bars/CMakeLists.txt
deleted file mode 100644
index 5bc76255..00000000
--- a/examples/datavisualization/bars/CMakeLists.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(bars LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(bars
- graphmodifier.cpp graphmodifier.h
- main.cpp
-)
-set_target_properties(bars PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(bars PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-install(TARGETS bars
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/bars/bars.pro b/examples/datavisualization/bars/bars.pro
deleted file mode 100644
index 148fc66e..00000000
--- a/examples/datavisualization/bars/bars.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp graphmodifier.cpp
-HEADERS += graphmodifier.h
-
-QT += widgets
-requires(qtConfig(fontcombobox))
-requires(qtConfig(combobox))
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/bars/doc/images/bars-example.png b/examples/datavisualization/bars/doc/images/bars-example.png
deleted file mode 100644
index c06fe2c1..00000000
--- a/examples/datavisualization/bars/doc/images/bars-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/bars/doc/src/bars.qdoc b/examples/datavisualization/bars/doc/src/bars.qdoc
deleted file mode 100644
index 1d2ad1ae..00000000
--- a/examples/datavisualization/bars/doc/src/bars.qdoc
+++ /dev/null
@@ -1,228 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example bars
- \title Bars Example
- \ingroup qtdatavisualization_examples
- \brief Using Q3DBars in a widget application.
-
- The bars example shows how to make a 3D bar graph using Q3DBars and combining the use of
- widgets for adjusting several adjustable qualities. The example shows how to:
-
- \list
- \li Create an application with Q3DBars and some widgets
- \li Use QBar3DSeries and QBarDataProxy to set data to the graph
- \li Adjust some graph and series properties using widget controls
- \li Select a row or a column by clicking an axis label
- \endlist
-
- It also demonstrates how having negative bar values affects the graph.
-
- For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
-
- \image bars-example.png
-
- \include examples-run.qdocinc
-
- \section1 Creating the Application
-
- First, in main.cpp, we create a QApplication, instantiate Q3DBars and a window container
- for it:
-
- \snippet bars/main.cpp 0
-
- The call to QWidget::createWindowContainer is required, as all data visualization graph classes
- (Q3DBars, Q3DScatter, Q3DSurface) inherit QWindow. Any class inheriting QWindow cannot be used
- as a widget any other way.
-
- Then we'll create horizontal and vertical layouts. We'll add the graph and the vertical
- layout into the horizontal one:
-
- \snippet bars/main.cpp 1
-
- We're not using the vertical layout for anything yet, but we'll get back to it in
- \l {Using widgets to control the graph}
-
- Next, let's create another class to handle the data addition and other interaction with the
- graph. Let's call it \c GraphModifier (See \l {Setting up the graph} and
- \l {Adding data to the graph} for details):
-
- \snippet bars/main.cpp 2
-
- The application main is done and we can show the graph and start the event loop:
-
- \snippet bars/main.cpp 3
-
- \section1 Setting up the Graph
-
- Let's set up the graph in the constructor of the \c GraphModifier class we instantiated in the
- application main:
-
- \snippet bars/graphmodifier.cpp 0
-
- Let's take a closer look at parts of the code.
-
- First we're creating the axes and the series into member variables to support changing them
- easily later on, if we want to:
-
- \snippet bars/graphmodifier.cpp 1
-
- Then we're setting some of the visual qualities for the graph:
-
- \snippet bars/graphmodifier.cpp 2
-
- We're also setting up the axes and setting them to the graph as active axes:
-
- \snippet bars/graphmodifier.cpp 3
-
- We give axis labels a small autorotation angle to make them orient somewhat toward the
- camera. This is done to improve axis label readability at extreme camera angles.
-
- Next we initialize the visual properties of the series.
- Note that the second series is initially not visible:
-
- \snippet bars/graphmodifier.cpp 8
-
- The series need to be added to the graph to show them:
-
- \snippet bars/graphmodifier.cpp 4
-
- Finally, we set the camera angle by calling the same method the camera angle change button
- in the UI uses to cycle through various camera angles:
-
- \snippet bars/graphmodifier.cpp 6
-
- There you can see that the camera is controlled via the scene object of the graph:
-
- \snippet bars/graphmodifier.cpp 10
-
- For more information about using scene and cameras, see Q3DScene and Q3DCamera.
-
- That concludes setting up the graph.
-
- \section1 Adding Data to the Graph
-
- At the end of the constructor there's a call:
-
- \snippet bars/graphmodifier.cpp 9
-
- This method is used to add data to the proxies of the two series:
-
- \snippet bars/graphmodifier.cpp 5
-
- Now the series have data to show.
-
- \section1 Using Widgets to Control the Graph
-
- There isn't much interaction yet, so let's continue by adding some widgets back in the
- application main. Let's just focus on two as an example:
-
- \snippet bars/main.cpp 4
-
- We can use these slider widgets to rotate the graph instead of just using the mouse or
- touch.
-
- Let's add them to the vertical layout we created earlier:
-
- \snippet bars/main.cpp 5
-
- Then we'll connect them to methods in \c GraphModifier:
-
- \snippet bars/main.cpp 6
-
- Here are the methods in \c GraphModifier the signals were connected to. The camera
- is controlled via the scene object. This time we specify the actual camera position
- along the orbit around the center point, instead of specifying a preset camera angle:
-
- \snippet bars/graphmodifier.cpp 7
-
- Now these two sliders can be used to rotate the graph.
-
- And so we have an application in which we can control:
-
- \list
- \li Graph rotation
- \li Label style
- \li Camera preset
- \li Background visibility
- \li Grid visibility
- \li Bar shading smoothness
- \li Visibility of the second bar series
- \li Value axis direction
- \li Axis title visibility and rotation
- \li Data range to be shown
- \li Bar style
- \li Selection mode
- \li Theme
- \li Shadow quality
- \li Font
- \li Font size
- \li Axis label rotation
- \endlist
-
- \section1 Selecting a Row/column by Clicking an Axis Label
-
- Selection by axis label is default functionality for bar graphs. As an example, you can select
- rows by clicking an axis label in the following way:
-
- \list
- \li Change selection mode to \c SelectionRow
- \li Click a year label
- \li The row with the clicked year is selected
- \endlist
-
- You can use the same method with \c SelectionSlice and \c SelectionItem flags, as long as
- you have either \c SelectionRow or \c SelectionColumn set as well.
-
- \section1 Zooming to Selection
-
- As an example of adjusting camera target we have implemented an animation of zooming to
- selection via a button press. Animation initializations are done in the constructor:
-
- \snippet bars/graphmodifier.cpp 12
-
- The function \c{GraphModifier::zoomToSelectedBar()} contains the rest of the functionality:
-
- \snippet bars/graphmodifier.cpp 11
-
- The QPropertyAnimation \c m_animationCameraTarget targets Q3DCamera::target property,
- which takes a value normalized to the range (-1, 1). We figure out where the selected bar
- is relative to axes, and use that as the end value for \c{m_animationCameraTarget}:
-
- \snippet bars/graphmodifier.cpp 13
- \dots
- \snippet bars/graphmodifier.cpp 14
-
- Likewise, we want to angle the camera so that it always points approximately to the center of
- the graph at the end of the animation:
-
- \snippet bars/graphmodifier.cpp 15
-
- \section1 Example Contents
-
-*/
diff --git a/examples/datavisualization/bars/graphmodifier.h b/examples/datavisualization/bars/graphmodifier.h
deleted file mode 100644
index 4611cc43..00000000
--- a/examples/datavisualization/bars/graphmodifier.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef GRAPHMODIFIER_H
-#define GRAPHMODIFIER_H
-
-#include <QtDataVisualization/q3dbars.h>
-#include <QtDataVisualization/qbardataproxy.h>
-#include <QtDataVisualization/qabstract3dseries.h>
-
-#include <QtGui/QFont>
-#include <QtCore/QDebug>
-#include <QtCore/QStringList>
-#include <QtCore/QPointer>
-#include <QtCore/QPropertyAnimation>
-
-class GraphModifier : public QObject
-{
- Q_OBJECT
-public:
- explicit GraphModifier(Q3DBars *bargraph);
- ~GraphModifier();
-
- void resetTemperatureData();
- void changePresetCamera();
- void changeLabelBackground();
- void changeFont(const QFont &font);
- void changeFontSize(int fontsize);
- void rotateX(int rotation);
- void rotateY(int rotation);
- void setBackgroundEnabled(int enabled);
- void setGridEnabled(int enabled);
- void setSmoothBars(int smooth);
- void setSeriesVisibility(int enabled);
- void setReverseValueAxis(int enabled);
- void setReflection(bool enabled);
-
-public Q_SLOTS:
- void changeRange(int range);
- void changeStyle(int style);
- void changeSelectionMode(int selectionMode);
- void changeTheme(int theme);
- void changeShadowQuality(int quality);
- void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
- void changeLabelRotation(int rotation);
- void setAxisTitleVisibility(bool enabled);
- void setAxisTitleFixed(bool enabled);
- void zoomToSelectedBar();
-
-Q_SIGNALS:
- void shadowQualityChanged(int quality);
- void backgroundEnabledChanged(bool enabled);
- void gridEnabledChanged(bool enabled);
- void fontChanged(const QFont &font);
- void fontSizeChanged(int size);
-
-private:
- Q3DBars *m_graph;
- float m_xRotation;
- float m_yRotation;
- int m_fontSize;
- int m_segments;
- int m_subSegments;
- float m_minval;
- float m_maxval;
- QStringList m_months;
- QStringList m_years;
- QValue3DAxis *m_temperatureAxis;
- QCategory3DAxis *m_yearAxis;
- QCategory3DAxis *m_monthAxis;
- QBar3DSeries *m_primarySeries;
- QBar3DSeries *m_secondarySeries;
- QAbstract3DSeries::Mesh m_barMesh;
- bool m_smooth;
- QPropertyAnimation m_animationCameraX;
- QPropertyAnimation m_animationCameraY;
- QPropertyAnimation m_animationCameraZoom;
- QPropertyAnimation m_animationCameraTarget;
- float m_defaultAngleX;
- float m_defaultAngleY;
- float m_defaultZoom;
- QVector3D m_defaultTarget;
-};
-
-#endif
diff --git a/examples/datavisualization/bars/main.cpp b/examples/datavisualization/bars/main.cpp
deleted file mode 100644
index eaa7c61d..00000000
--- a/examples/datavisualization/bars/main.cpp
+++ /dev/null
@@ -1,337 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "graphmodifier.h"
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QPushButton>
-#include <QtWidgets/QCheckBox>
-#include <QtWidgets/QSlider>
-#include <QtWidgets/QFontComboBox>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QMessageBox>
-#include <QtGui/QScreen>
-#include <QtGui/QFontDatabase>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- //! [0]
- QApplication app(argc, argv);
- Q3DBars *widgetgraph = new Q3DBars();
- QWidget *container = QWidget::createWindowContainer(widgetgraph);
- //! [0]
-
- if (!widgetgraph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- QSize screenSize = widgetgraph->screen()->size();
- container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
- container->setMaximumSize(screenSize);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- //! [1]
- QWidget *widget = new QWidget;
- QHBoxLayout *hLayout = new QHBoxLayout(widget);
- QVBoxLayout *vLayout = new QVBoxLayout();
- hLayout->addWidget(container, 1);
- hLayout->addLayout(vLayout);
- //! [1]
-
- widget->setWindowTitle(QStringLiteral("Average temperatures in Oulu and Helsinki, Finland (2006-2013)"));
-
- QComboBox *themeList = new QComboBox(widget);
- themeList->addItem(QStringLiteral("Qt"));
- themeList->addItem(QStringLiteral("Primary Colors"));
- themeList->addItem(QStringLiteral("Digia"));
- themeList->addItem(QStringLiteral("Stone Moss"));
- themeList->addItem(QStringLiteral("Army Blue"));
- themeList->addItem(QStringLiteral("Retro"));
- themeList->addItem(QStringLiteral("Ebony"));
- themeList->addItem(QStringLiteral("Isabelle"));
- themeList->setCurrentIndex(0);
-
- QPushButton *labelButton = new QPushButton(widget);
- labelButton->setText(QStringLiteral("Change label style"));
-
- QCheckBox *smoothCheckBox = new QCheckBox(widget);
- smoothCheckBox->setText(QStringLiteral("Smooth bars"));
- smoothCheckBox->setChecked(false);
-
-
- QComboBox *barStyleList = new QComboBox(widget);
- barStyleList->addItem(QStringLiteral("Bar"), int(QAbstract3DSeries::MeshBar));
- barStyleList->addItem(QStringLiteral("Pyramid"), int(QAbstract3DSeries::MeshPyramid));
- barStyleList->addItem(QStringLiteral("Cone"), int(QAbstract3DSeries::MeshCone));
- barStyleList->addItem(QStringLiteral("Cylinder"), int(QAbstract3DSeries::MeshCylinder));
- barStyleList->addItem(QStringLiteral("Bevel bar"), int(QAbstract3DSeries::MeshBevelBar));
- barStyleList->addItem(QStringLiteral("Sphere"), int(QAbstract3DSeries::MeshSphere));
- barStyleList->setCurrentIndex(4);
-
- QPushButton *cameraButton = new QPushButton(widget);
- cameraButton->setText(QStringLiteral("Change camera preset"));
-
- QPushButton *zoomToSelectedButton = new QPushButton(widget);
- zoomToSelectedButton->setText(QStringLiteral("Zoom to selected bar"));
-
- QComboBox *selectionModeList = new QComboBox(widget);
- selectionModeList->addItem(QStringLiteral("None"),
- int(QAbstract3DGraph::SelectionNone));
- selectionModeList->addItem(QStringLiteral("Bar"),
- int(QAbstract3DGraph::SelectionItem));
- selectionModeList->addItem(QStringLiteral("Row"),
- int(QAbstract3DGraph::SelectionRow));
- selectionModeList->addItem(QStringLiteral("Bar and Row"),
- int(QAbstract3DGraph::SelectionItemAndRow));
- selectionModeList->addItem(QStringLiteral("Column"),
- int(QAbstract3DGraph::SelectionColumn));
- selectionModeList->addItem(QStringLiteral("Bar and Column"),
- int(QAbstract3DGraph::SelectionItemAndColumn));
- selectionModeList->addItem(QStringLiteral("Row and Column"),
- int(QAbstract3DGraph::SelectionRowAndColumn));
- selectionModeList->addItem(QStringLiteral("Bar, Row and Column"),
- int(QAbstract3DGraph::SelectionItemRowAndColumn));
- selectionModeList->addItem(QStringLiteral("Slice into Row"),
- int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionRow));
- selectionModeList->addItem(QStringLiteral("Slice into Row and Item"),
- int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndRow));
- selectionModeList->addItem(QStringLiteral("Slice into Column"),
- int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionColumn));
- selectionModeList->addItem(QStringLiteral("Slice into Column and Item"),
- int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndColumn));
- selectionModeList->addItem(QStringLiteral("Multi: Bar, Row, Col"),
- int(QAbstract3DGraph::SelectionItemRowAndColumn
- | QAbstract3DGraph::SelectionMultiSeries));
- selectionModeList->addItem(QStringLiteral("Multi, Slice: Row, Item"),
- int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndRow
- | QAbstract3DGraph::SelectionMultiSeries));
- selectionModeList->addItem(QStringLiteral("Multi, Slice: Col, Item"),
- int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndColumn
- | QAbstract3DGraph::SelectionMultiSeries));
- selectionModeList->setCurrentIndex(1);
-
- QCheckBox *backgroundCheckBox = new QCheckBox(widget);
- backgroundCheckBox->setText(QStringLiteral("Show background"));
- backgroundCheckBox->setChecked(false);
-
- QCheckBox *gridCheckBox = new QCheckBox(widget);
- gridCheckBox->setText(QStringLiteral("Show grid"));
- gridCheckBox->setChecked(true);
-
- QCheckBox *seriesCheckBox = new QCheckBox(widget);
- seriesCheckBox->setText(QStringLiteral("Show second series"));
- seriesCheckBox->setChecked(false);
-
- QCheckBox *reverseValueAxisCheckBox = new QCheckBox(widget);
- reverseValueAxisCheckBox->setText(QStringLiteral("Reverse value axis"));
- reverseValueAxisCheckBox->setChecked(false);
-
- QCheckBox *reflectionCheckBox = new QCheckBox(widget);
- reflectionCheckBox->setText(QStringLiteral("Show reflections"));
- reflectionCheckBox->setChecked(false);
-
- //! [4]
- QSlider *rotationSliderX = new QSlider(Qt::Horizontal, widget);
- rotationSliderX->setTickInterval(30);
- rotationSliderX->setTickPosition(QSlider::TicksBelow);
- rotationSliderX->setMinimum(-180);
- rotationSliderX->setValue(0);
- rotationSliderX->setMaximum(180);
- QSlider *rotationSliderY = new QSlider(Qt::Horizontal, widget);
- rotationSliderY->setTickInterval(15);
- rotationSliderY->setTickPosition(QSlider::TicksAbove);
- rotationSliderY->setMinimum(-90);
- rotationSliderY->setValue(0);
- rotationSliderY->setMaximum(90);
- //! [4]
-
- QSlider *fontSizeSlider = new QSlider(Qt::Horizontal, widget);
- fontSizeSlider->setTickInterval(10);
- fontSizeSlider->setTickPosition(QSlider::TicksBelow);
- fontSizeSlider->setMinimum(1);
- fontSizeSlider->setValue(30);
- fontSizeSlider->setMaximum(100);
-
- QFontComboBox *fontList = new QFontComboBox(widget);
- fontList->setCurrentFont(QFont("Times New Roman"));
-
- QComboBox *shadowQuality = new QComboBox(widget);
- shadowQuality->addItem(QStringLiteral("None"));
- shadowQuality->addItem(QStringLiteral("Low"));
- shadowQuality->addItem(QStringLiteral("Medium"));
- shadowQuality->addItem(QStringLiteral("High"));
- shadowQuality->addItem(QStringLiteral("Low Soft"));
- shadowQuality->addItem(QStringLiteral("Medium Soft"));
- shadowQuality->addItem(QStringLiteral("High Soft"));
- shadowQuality->setCurrentIndex(5);
-
- QComboBox *rangeList = new QComboBox(widget);
- rangeList->addItem(QStringLiteral("2006"));
- rangeList->addItem(QStringLiteral("2007"));
- rangeList->addItem(QStringLiteral("2008"));
- rangeList->addItem(QStringLiteral("2009"));
- rangeList->addItem(QStringLiteral("2010"));
- rangeList->addItem(QStringLiteral("2011"));
- rangeList->addItem(QStringLiteral("2012"));
- rangeList->addItem(QStringLiteral("2013"));
- rangeList->addItem(QStringLiteral("All"));
- rangeList->setCurrentIndex(8);
-
- QCheckBox *axisTitlesVisibleCB = new QCheckBox(widget);
- axisTitlesVisibleCB->setText(QStringLiteral("Axis titles visible"));
- axisTitlesVisibleCB->setChecked(true);
-
- QCheckBox *axisTitlesFixedCB = new QCheckBox(widget);
- axisTitlesFixedCB->setText(QStringLiteral("Axis titles fixed"));
- axisTitlesFixedCB->setChecked(true);
-
- QSlider *axisLabelRotationSlider = new QSlider(Qt::Horizontal, widget);
- axisLabelRotationSlider->setTickInterval(10);
- axisLabelRotationSlider->setTickPosition(QSlider::TicksBelow);
- axisLabelRotationSlider->setMinimum(0);
- axisLabelRotationSlider->setValue(30);
- axisLabelRotationSlider->setMaximum(90);
-
- //! [5]
- vLayout->addWidget(new QLabel(QStringLiteral("Rotate horizontally")));
- vLayout->addWidget(rotationSliderX, 0, Qt::AlignTop);
- vLayout->addWidget(new QLabel(QStringLiteral("Rotate vertically")));
- vLayout->addWidget(rotationSliderY, 0, Qt::AlignTop);
- //! [5]
- vLayout->addWidget(labelButton, 0, Qt::AlignTop);
- vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
- vLayout->addWidget(zoomToSelectedButton, 0, Qt::AlignTop);
- vLayout->addWidget(backgroundCheckBox);
- vLayout->addWidget(gridCheckBox);
- vLayout->addWidget(smoothCheckBox);
- vLayout->addWidget(reflectionCheckBox);
- vLayout->addWidget(seriesCheckBox);
- vLayout->addWidget(reverseValueAxisCheckBox);
- vLayout->addWidget(axisTitlesVisibleCB);
- vLayout->addWidget(axisTitlesFixedCB);
- vLayout->addWidget(new QLabel(QStringLiteral("Show year")));
- vLayout->addWidget(rangeList);
- vLayout->addWidget(new QLabel(QStringLiteral("Change bar style")));
- vLayout->addWidget(barStyleList);
- vLayout->addWidget(new QLabel(QStringLiteral("Change selection mode")));
- vLayout->addWidget(selectionModeList);
- vLayout->addWidget(new QLabel(QStringLiteral("Change theme")));
- vLayout->addWidget(themeList);
- vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")));
- vLayout->addWidget(shadowQuality);
- vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
- vLayout->addWidget(fontList);
- vLayout->addWidget(new QLabel(QStringLiteral("Adjust font size")));
- vLayout->addWidget(fontSizeSlider);
- vLayout->addWidget(new QLabel(QStringLiteral("Axis label rotation")));
- vLayout->addWidget(axisLabelRotationSlider, 1, Qt::AlignTop);
-
- //! [2]
- GraphModifier *modifier = new GraphModifier(widgetgraph);
- //! [2]
-
- //! [6]
- QObject::connect(rotationSliderX, &QSlider::valueChanged, modifier, &GraphModifier::rotateX);
- QObject::connect(rotationSliderY, &QSlider::valueChanged, modifier, &GraphModifier::rotateY);
- //! [6]
-
- QObject::connect(labelButton, &QPushButton::clicked, modifier,
- &GraphModifier::changeLabelBackground);
- QObject::connect(cameraButton, &QPushButton::clicked, modifier,
- &GraphModifier::changePresetCamera);
- QObject::connect(zoomToSelectedButton, &QPushButton::clicked, modifier,
- &GraphModifier::zoomToSelectedBar);
-
- QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier,
- &GraphModifier::setBackgroundEnabled);
- QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier,
- &GraphModifier::setGridEnabled);
- QObject::connect(smoothCheckBox, &QCheckBox::stateChanged, modifier,
- &GraphModifier::setSmoothBars);
- QObject::connect(seriesCheckBox, &QCheckBox::stateChanged, modifier,
- &GraphModifier::setSeriesVisibility);
- QObject::connect(reverseValueAxisCheckBox, &QCheckBox::stateChanged, modifier,
- &GraphModifier::setReverseValueAxis);
- QObject::connect(reflectionCheckBox, &QCheckBox::stateChanged, modifier,
- &GraphModifier::setReflection);
-
- QObject::connect(modifier, &GraphModifier::backgroundEnabledChanged,
- backgroundCheckBox, &QCheckBox::setChecked);
- QObject::connect(modifier, &GraphModifier::gridEnabledChanged,
- gridCheckBox, &QCheckBox::setChecked);
-
- QObject::connect(rangeList, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeRange(int)));
-
- QObject::connect(barStyleList, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeStyle(int)));
-
- QObject::connect(selectionModeList, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeSelectionMode(int)));
-
- QObject::connect(themeList, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeTheme(int)));
-
- QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeShadowQuality(int)));
-
- QObject::connect(modifier, &GraphModifier::shadowQualityChanged, shadowQuality,
- &QComboBox::setCurrentIndex);
- QObject::connect(widgetgraph, &Q3DBars::shadowQualityChanged, modifier,
- &GraphModifier::shadowQualityUpdatedByVisual);
-
- QObject::connect(fontSizeSlider, &QSlider::valueChanged, modifier,
- &GraphModifier::changeFontSize);
- QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier,
- &GraphModifier::changeFont);
-
- QObject::connect(modifier, &GraphModifier::fontSizeChanged, fontSizeSlider,
- &QSlider::setValue);
- QObject::connect(modifier, &GraphModifier::fontChanged, fontList,
- &QFontComboBox::setCurrentFont);
-
- QObject::connect(axisTitlesVisibleCB, &QCheckBox::stateChanged, modifier,
- &GraphModifier::setAxisTitleVisibility);
- QObject::connect(axisTitlesFixedCB, &QCheckBox::stateChanged, modifier,
- &GraphModifier::setAxisTitleFixed);
- QObject::connect(axisLabelRotationSlider, &QSlider::valueChanged, modifier,
- &GraphModifier::changeLabelRotation);
- //! [3]
- widget->show();
- return app.exec();
- //! [3]
-}
diff --git a/examples/datavisualization/custominput/CMakeLists.txt b/examples/datavisualization/custominput/CMakeLists.txt
deleted file mode 100644
index a9008ac1..00000000
--- a/examples/datavisualization/custominput/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(custominput LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(custominput
- custominputhandler.cpp custominputhandler.h
- main.cpp
- scatterdatamodifier.cpp scatterdatamodifier.h
-)
-set_target_properties(custominput PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(custominput PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-set(custominput_resource_files
- "data/data.txt"
-)
-
-qt6_add_resources(custominput "custominput"
- PREFIX
- "/"
- FILES
- ${custominput_resource_files}
-)
-
-install(TARGETS custominput
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/custominput/custominput.pro b/examples/datavisualization/custominput/custominput.pro
deleted file mode 100644
index 1fe1c57b..00000000
--- a/examples/datavisualization/custominput/custominput.pro
+++ /dev/null
@@ -1,20 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp scatterdatamodifier.cpp \
- custominputhandler.cpp
-HEADERS += scatterdatamodifier.h \
- custominputhandler.h
-
-QT += widgets
-requires(qtConfig(combobox))
-
-RESOURCES += custominput.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/custominput/custominput.qrc b/examples/datavisualization/custominput/custominput.qrc
deleted file mode 100644
index 8ced2b91..00000000
--- a/examples/datavisualization/custominput/custominput.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>data/data.txt</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/custominput/custominputhandler.cpp b/examples/datavisualization/custominput/custominputhandler.cpp
deleted file mode 100644
index e6fe9aa5..00000000
--- a/examples/datavisualization/custominput/custominputhandler.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "custominputhandler.h"
-
-#include <QtDataVisualization/Q3DCamera>
-
-CustomInputHandler::CustomInputHandler(QObject *parent) :
- QAbstract3DInputHandler(parent)
-{
-}
-
-//! [0]
-void CustomInputHandler::mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos)
-{
- Q_UNUSED(event);
- setInputPosition(mousePos);
-}
-//! [0]
-
-//! [1]
-void CustomInputHandler::wheelEvent(QWheelEvent *event)
-{
- // Adjust zoom level based on what zoom range we're in.
- int zoomLevel = scene()->activeCamera()->zoomLevel();
- if (zoomLevel > 100)
- zoomLevel += event->angleDelta().y() / 12;
- else if (zoomLevel > 50)
- zoomLevel += event->angleDelta().y() / 60;
- else
- zoomLevel += event->angleDelta().y() / 120;
- if (zoomLevel > 500)
- zoomLevel = 500;
- else if (zoomLevel < 10)
- zoomLevel = 10;
-
- scene()->activeCamera()->setZoomLevel(zoomLevel);
-}
-//! [1]
diff --git a/examples/datavisualization/custominput/custominputhandler.h b/examples/datavisualization/custominput/custominputhandler.h
deleted file mode 100644
index ce864335..00000000
--- a/examples/datavisualization/custominput/custominputhandler.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CUSTOMINPUTHANDLER_H
-#define CUSTOMINPUTHANDLER_H
-
-#include <QtDataVisualization/QAbstract3DInputHandler>
-
-class CustomInputHandler : public QAbstract3DInputHandler
-{
- Q_OBJECT
-public:
- explicit CustomInputHandler(QObject *parent = 0);
-
- virtual void mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos);
- virtual void wheelEvent(QWheelEvent *event);
-};
-
-#endif
diff --git a/examples/datavisualization/custominput/data/data.txt b/examples/datavisualization/custominput/data/data.txt
deleted file mode 100644
index d0689b1f..00000000
--- a/examples/datavisualization/custominput/data/data.txt
+++ /dev/null
@@ -1,1060 +0,0 @@
-# Each line contains 3 floating point values
-# for x, y and z values in the scatter chart
--10.0084,5.01799,-5.04425,
--9.06229,3.07132,-4.54268,
--8.55132,4.19424,-4.03318,
--8.03806,4.75162,-3.99583,
--9.50337,4.90684,-4.21947,
--9.93819,3.42724,-3.58955,
--7.84971,3.15272,-4.90367,
--7.30477,2.91062,-4.11078,
--7.11201,3.68863,-4.52683,
--8.83267,2.96504,-3.61108,
--6.94874,2.49808,-2.92883,
--9.02606,4.7496,-4.18193,
--9.5434,3.15534,-3.83789,
--6.8679,3.66922,-3.58288,
--8.16487,1.82227,-4.64523,
--7.42165,3.18192,-4.22791,
--7.99257,3.06559,-4.33262,
--8.98851,2.64924,-4.44595,
--6.36774,3.96697,-4.38998,
--7.18413,3.32417,-4.04636,
--7.91649,3.46826,-2.78126,
--7.49495,3.12306,-3.14539,
--7.5445,2.85744,-3.68421,
-2.25354,1.36828,-1.32025,
--2.35524,-0.081203,1.23267,
-2.6517,-1.20549,2.73606,
--2.55382,3.48814,-0.454971,
--3.85468,0.263955,0.578276,
-2.85275,1.32315,1.0565,
--0.404099,-2.36811,-1.60324,
-1.58908,0.363782,-0.554303,
-0.251507,0.124637,-0.752568,
--2.45626,-0.722719,-1.11764,
-4.15342,1.92247,-0.954975,
-2.05845,0.643191,-0.121564,
-0.253468,0.814651,3.05732,
-1.51724,0.244303,2.25864,
-1.15,-0.487518,0.815931,
--0.0538979,0.124927,0.251571,
-0.941523,-0.483498,-3.2731,
-3.55074,-1.04714,-0.954301,
--2.43125,-0.964099,-0.658537,
-4.25459,0.163296,2.05563,
--0.612031,1.03234,-0.227175,
-7.8338,-0.847922,-0.959189,
--4.20076,1.44907,0.853836,
--1.59466,-1.27511,-1.5686,
--3.3567,-1.96864,1.83224,
--2.75169,-0.964221,-1.26465,
--2.45624,0.287046,-4.55032,
-2.73649,-1.48789,-0.653082,
-2.73284,2.2912,-2.4933,
--0.854321,-2.04288,3.7516,
--1.35708,-1.84915,2.35985,
--3.25001,-1.64456,-4.45419,
--0.356834,-0.569139,-1.75308,
--0.813569,-0.287899,-0.0535036,
-4.75975,-1.48817,-2.45957,
-4.35294,1.46154,0.814214,
--3.22467,2.76903,0.510435,
-2.49494,1.9286,0.552287,
--0.456521,0.688277,-0.82788,
--2.72568,2.80278,-2.45782,
--1.65023,1.32005,-2.05754,
--1.63551,1.88519,-3.65544,
--1.20008,-0.723785,0.853563,
-1.45448,1.08701,2.17385,
--3.9042,-1.16916,-0.85395,
-3.15645,0.123932,-0.950988,
--1.35924,-2.64015,-0.54254,
--4.15753,1.28294,-4.47502,
--2.7885,2.48535,-0.159651,
--3.44364,0.627232,6.11881,
--1.55639,-0.967484,2.35497,
--0.752853,1.16736,-0.757871,
--0.859974,0.640213,-1.75453,
-0.85744,0.480175,2.97204,
-4.0571,3.24083,-0.183622,
-0.658087,0.841418,0.357839,
--2.13027,0.920836,-2.758,
--0.65825,0.164257,1.69478,
--1.88335,-1.4811,-2.15408,
--1.67331,2.96982,1.85521,
--0.750937,0.282914,-0.758707,
-2.29891,1.16949,2.65927,
-2.69132,2.92632,-0.206126,
--1.65771,3.28846,2.50201,
--0.568799,2.5289,-1.15875,
--1.85383,0.528953,-2.32418,
-0.159422,-2.36165,-0.569393,
--3.96506,0.282374,-0.254519,
-0.150933,-3.88058,-0.759422,
--1.17917,-1.96176,0.95589,
--0.340817,-3.52333,-1.45715,
-3.21784,-2.56593,2.55468,
-0.609650,-2.44153,1.35813,
-1.4594,-1.96511,0.170228,
-3.55017,-2.16882,1.75539,
-2.89487,-0.727481,-0.39588,
--1.65151,-0.603877,0.250508,
--4.35232,-1.32155,-2.31877,
-2.75852,-1.88931,1.77874,
-2.75452,-0.64123,2.45546,
-0.151914,-0.888395,-0.260935,
-0.150593,0.0461652,-0.158206,
--1.22087,-2.92034,-3.78604,
--0.761622,0.161856,3.5586,
--1.88456,-2.48094,0.287091,
-1.25293,2.64374,1.6532,
--0.657609,1.32547,-0.557301,
-3.85995,2.32568,-1.38265,
-1.65572,-2.28977,0.957488,
--2.45312,-2.96071,3.45147,
--1.75259,0.365259,1.60113,
-1.14045,-0.844805,0.359343,
--1.55951,1.65687,-3.10398,
-0.441652,-1.36623,-1.55494,
--3.95762,0.288753,3.7791,
--1.80101,-0.241499,2.29693,
--0.456931,1.64399,1.35559,
--0.691421,-0.723378,2.51839,
--1.20658,-3.04063,-1.552,
--0.958574,1.48688,0.950152,
-1.76319,-1.36072,2.15866,
--3.91301,-0.328932,-2.45524,
-2.9553,3.12703,-2.43321,
-3.55939,-1.48028,0.152252,
--1.41545,3.247,0.779314,
--3.34482,-0.894538,2.09302,
-1.15338,0.362332,-2.7924,
-0.468852,0.120872,1.35593,
-1.98778,-3.32292,-0.758591,
-0.420718,-0.225014,-2.44806,
-0.550207,1.56432,2.25317,
-4.35156,-0.966178,-0.791032,
-3.35179,-1.04981,-0.854089,
-1.70857,-0.281369,-0.254686,
--3.05855,-0.443693,1.30251,
--3.9509,-2.72179,-3.83489,
-2.19632,1.32915,1.15345,
-1.42782,-0.449435,-2.85005,
--2.19053,0.049866,2.87493,
-2.45196,-2.44705,-2.85302,
-4.35263,0.245956,1.12886,
-1.8167,1.85407,-0.714159,
-1.88577,2.04227,-0.959396,
-1.6522,-2.48289,0.355373,
--3.39965,0.286834,-1.68171,
-1.85639,1.47419,2.25749,
--2.5216,-0.88573,-2.69594,
--0.143043,0.28453,-1.75898,
--2.52745,-2.76741,-0.257011,
-0.381448,-1.64793,-0.756889,
-2.30469,-1.28844,-2.79271,
--1.72491,-1.48634,-2.61686,
-0.503342,0.248352,-2.27162,
-0.457491,-1.88183,-0.951124,
--1.23123,0.963519,2.3569,
--0.55709,-0.364372,-1.82528,
-2.73963,-0.567024,-0.496936,
-1.17979,2.76252,-2.35641,
--1.20723,-2.1692,3.14368,
--0.0504301,1.76714,1.64265,
-1.45714,-0.725448,0.739217,
-0.246123,-3.27811,-0.251218,
--0.894632,1.08758,-0.17184,
--2.45217,0.565077,-0.557015,
-2.51301,1.1271,2.25057,
--1.05099,-2.1688,-1.88996,
-1.26945,-2.1225,-1.55031,
--4.30129,-0.760298,0.259868,
--0.157336,-0.237532,-2.69483,
--2.95778,1.36212,-3.65524,
-2.74003,1.16234,2.05928,
-0.955294,-1.52182,-1.05684,
--1.87004,2.72729,-0.550608,
-0.459439,2.88101,-4.4135,
-1.35069,1.08445,-0.808625,
--2.70034,-1.36291,-2.65126,
-0.353099,2.32354,-1.61885,
--0.453359,1.67524,0.122888,
-3.7506,1.12855,-3.86338,
-0.548626,2.63101,0.552261,
--0.753935,-3.52241,-3.21122,
-0.258935,-1.32453,2.25745,
--2.8797,-1.60832,-2.45626,
-0.151838,-0.565264,3.98539,
-2.1508,-1.68734,-1.75076,
--4.23947,-1.92531,2.35438,
-1.95273,-1.32736,0.313398,
-0.533647,0.646686,0.75712,
-0.856619,-0.843249,-0.577773,
--2.15649,-1.64285,-2.31055,
--0.851309,-2.84717,-0.324933,
--3.17772,-0.324817,-0.858394,
-3.45303,5.29449,0.818094,
-1.42912,0.238088,0.385617,
-0.459586,1.7661,-0.153761,
-0.855577,3.16845,-2.19548,
-2.15181,0.729021,-0.955922,
--2.40113,0.665756,-0.521366,
-1.45469,-0.462177,-1.95869,
-0.629115,-1.84769,1.86755,
-3.47576,-0.209875,-0.555502,
-0.295075,-0.840772,4.68895,
--0.253301,-2.49078,2.11749,
--1.15923,-3.163,-3.05671,
-1.45484,0.963654,-0.734942,
-0.354307,0.520772,-1.32278,
-2.65725,0.284589,-0.856856,
--1.2596,0.765493,-1.66469,
--0.656057,-2.16906,3.72144,
--0.251559,-2.36406,-1.89709,
-0.35608,-0.80463,1.85674,
-0.0508692,0.615674,0.856785,
--2.50726,2.28743,-2.05697,
-1.65272,1.29604,2.11481,
--3.2878,-0.244516,0.799732,
--2.18989,-0.847222,-0.264559,
-0.452832,0.960993,2.53691,
--2.43913,1.28957,2.75427,
--1.72889,-3.29414,-2.31426,
-0.952615,-0.0844651,0.346607,
-1.41175,0.889643,0.450356,
-2.13145,1.08697,0.223055,
--2.16002,-0.225505,-0.602641,
-0.54028,1.24765,-0.456129,
-2.55086,-0.56734,-2.65051,
--4.53921,-0.483588,-1.25013,
-3.45413,-0.44258,2.29687,
--0.257456,0.64624,1.65041,
-1.25559,-0.65493,-0.358872,
-1.9599,-1.56965,-4.17044,
-2.75996,-1.98665,3.31794,
-3.05837,1.04847,-0.975536,
--2.95407,1.40294,-2.25825,
-1.38718,0.360709,-2.98211,
-0.481728,-2.48564,3.25864,
--1.15089,0.363522,0.458662,
--2.25551,0.0421839,0.650008,
--1.85862,-0.969237,4.25313,
-1.55797,0.0465051,-3.85709,
-0.0555338,0.682957,-2.45556,
--0.186868,-0.482811,1.96957,
-2.197,-1.5248,-4.20912,
-3.40636,6.26268,-2.05757,
-0.780426,2.68048,-0.852693,
-1.65184,1.68951,-0.892089,
-2.11929,-2.44406,1.21168,
--0.153348,-1.88112,-0.357374,
--0.359393,1.76654,1.63063,
--2.15954,0.0819277,0.757621,
--0.159898,-3.36316,0.359582,
-2.74125,-2.84148,0.355785,
--1.3558,0.27827,-0.588162,
--0.354346,-2.56747,-0.984403,
--2.75082,-3.56807,1.5599,
--2.54708,-0.686147,2.75649,
-1.35138,0.692978,-2.24969,
--1.39826,-0.246682,-1.65876,
--1.46629,-1.44446,4.45293,
--1.89442,3.64549,2.05732,
--0.658093,0.0815129,3.95269,
-2.25603,2.96329,-2.35993,
-1.36323,1.64488,-0.0538547,
-1.75659,2.24227,-2.8522,
--0.0566584,-1.56465,-0.0503143,
--3.8532,-0.822258,-0.345406,
-0.951328,0.329296,-2.52211,
--2.48659,0.410856,-3.55401,
-3.72676,2.36324,3.65589,
-0.559972,0.884984,3.15283,
--1.37624,-1.36007,-2.16578,
-2.05543,0.4472,-0.82911,
--4.75258,1.8779,-1.75376,
-0.15648,2.64039,-2.21467,
--2.0593,-2.56775,1.15037,
--3.70217,2.12375,1.3652,
-1.05566,6.8299,4.02985,
--0.766882,-0.88359,1.35525,
-0.951335,-1.84689,0.178337,
-0.751608,1.1691,4.25273,
--1.36367,0.728904,0.655858,
-3.17581,-0.0844758,-1.75811,
-2.85546,-0.683618,0.653701,
--0.471118,3.04176,-2.35393,
-3.0574,-0.601996,-0.611932,
--0.854024,-0.44532,0.355575,
-0.504700,-1.92888,6.4818,
--1.25515,-1.44466,1.90429,
--1.67201,0.0461708,-0.796655,
-1.45345,-1.66159,-3.48143,
--2.84514,-1.24586,-3.47945,
-0.287402,-0.688276,-3.75664,
-3.35908,0.687828,-1.94406,
--2.39167,1.08322,-1.73508,
-1.52152,1.86032,-1.25351,
-1.55931,3.64414,1.35944,
-1.15954,-1.36058,0.758814,
--1.95325,0.0851092,-0.854106,
--2.25254,-0.523024,1.05486,
--2.68036,-1.32901,1.05877,
--0.485956,-1.52164,2.45303,
--0.0546215,0.640683,-2.85953,
-4.45295,-0.246051,-0.159626,
-3.4523,1.7215,-1.10587,
-3.35142,-1.72053,-0.252105,
-1.74251,2.76108,2.51524,
-2.15054,-2.88101,-1.7527,
--3.70517,-0.0470951,0.258921,
--0.45593,-3.47184,-2.95345,
-3.15988,-2.32107,0.105299,
-0.751449,-2.88762,-3.45245,
-2.9794,0.493172,-0.654683,
--1.87713,-2.48632,-3.534,
-1.65266,3.16008,2.1579,
--1.25239,-0.763119,2.15776,
-3.5572,0.282681,2.44174,
-0.251145,0.520256,2.3184,
--1.78596,-1.36913,-2.50818,
-3.82122,1.04473,0.456159,
-2.45979,-0.722759,-4.05123,
--0.855594,0.163792,-0.553702,
-0.656895,0.529982,3.35129,
-0.857952,-0.0885677,0.695128,
--0.143269,1.12972,-3.155,
--2.95923,0.241767,0.832165,
-0.253329,-0.622952,-0.459799,
-0.151499,2.5297,1.53059,
-0.655464,-1.49902,-1.51071,
-4.7585,1.76425,1.15164,
--1.75063,-1.44645,-3.65525,
-0.850392,0.0417223,-0.340588,
--0.557015,-0.282305,-1.85291,
--4.05639,0.522959,-2.3507,
--0.358137,-0.967852,0.807832,
--1.82056,-0.0483894,0.0541359,
--2.16623,0.129809,-2.52513,
--1.85591,-1.04417,-1.28501,
--1.79647,-3.44045,-1.73399,
-2.25342,0.161308,-0.0517495,
--1.37877,0.243596,-1.52931,
--0.059299,-0.480825,1.7137,
--2.54357,0.286685,-2.11495,
-3.92334,-0.442936,-0.852895,
--0.390023,-1.96437,1.38718,
-1.35263,2.92968,-1.1545,
--2.25892,-2.27429,-0.451533,
--0.2215,-0.126727,0.155541,
-0.715932,1.47509,-3.52895,
--0.382939,3.16461,2.65165,
--1.14437,-1.44682,0.456601,
-0.251892,-1.0431,4.31548,
--2.23281,-2.48698,0.46995,
-0.954231,-3.4323,-1.20233,
-2.75569,-1.66383,-1.95486,
-0.750644,-1.84163,-0.159206,
--0.757387,-1.84192,0.354209,
--2.85509,-2.12151,-0.954754,
--0.888427,-2.8403,-0.157387,
--1.95265,-0.445753,2.17956,
--1.05845,-2.48694,-1.25315,
--2.66497,-1.48251,0.873192,
-2.50491,-1.0833,1.99667,
-0.453931,2.52158,0.456875,
-1.55859,-0.161924,0.256619,
--2.92585,0.368018,0.35908,
-2.95509,-1.56248,-2.74469,
-3.46082,-1.76026,3.05835,
-1.75644,-2.84241,0.507631,
--0.959006,0.649579,1.10824,
-2.63856,2.0417,0.187281,
--0.150004,-0.0838836,-0.949314,
-2.26402,-1.28916,2.85284,
--0.821239,2.68795,-0.317185,
-3.47124,0.840813,-2.65322,
--0.253209,-0.244177,0.457348,
-2.76181,1.64033,-1.95329,
-1.35105,-2.96027,0.659952,
--1.45423,-0.24358,0.832696,
-1.45109,1.64958,-3.45448,
--1.15659,3.08225,1.11445,
-0.806359,1.88298,-2.13001,
-1.15538,3.04545,-0.759437,
--0.450074,1.36121,-0.155042,
--2.80924,-1.24207,2.55513,
-4.48859,2.04394,1.25324,
--0.958741,1.24575,3.65169,
-3.45143,1.3276,2.5144,
--3.25232,1.12514,-1.21425,
--2.45327,0.681109,4.35764,
-0.55395,-0.128353,-3.95705,
--0.352458,3.08882,-0.340631,
-1.35213,-2.92251,-3.31166,
-0.52621,-0.279201,0.959619,
-1.2243,-0.240093,-0.75247,
--1.29854,2.16477,3.3507,
--3.35677,2.36713,3.4585,
-0.957717,-0.885793,1.25827,
-0.150983,1.24269,5.39106,
-1.84986,1.56932,-1.05811,
--1.35563,3.82103,-1.45287,
-1.4544,-2.6453,0.58082,
-2.05908,1.16496,1.44075,
-2.9507,-2.4957,0.153512,
--1.10289,0.763085,-1.65351,
--2.50708,-2.467,1.05892,
-3.55284,-1.8509,-2.55732,
--0.848034,1.24305,-3.7516,
--1.35051,-2.48178,2.85326,
--2.18554,1.48771,-0.155205,
--0.459278,2.68404,2.85727,
-0.854722,1.47322,-3.35951,
--2.23505,-2.24254,0.353203,
-1.42395,-2.32169,0.558188,
-3.65106,1.12201,-4.58409,
-0.11,-0.68782,1.85804,
--1.9551,-0.560204,-2.0577,
-1.85964,1.32737,-4.40673,
--0.616311,0.649737,-0.30189,
--1.55375,1.52043,-3.75629,
-1.85417,0.486964,0.654806,
-3.35638,2.52599,1.94343,
-0.491389,1.40427,-1.31935,
--2.72939,0.844341,1.62621,
--0.525985,1.31415,0.484015,
-2.25998,-1.719,1.25143,
-1.79268,2.46378,-0.951188,
--3.55105,1.04122,3.9501,
-0.954251,1.28296,2.05486,
--3.15267,1.96498,-0.361707,
-1.35358,-0.921098,-1.71743,
--3.16896,-3.08548,0.903411,
-1.25127,-2.44903,2.25616,
--3.88899,0.761334,-1.05751,
--1.05163,-3.89783,-0.883668,
--4.189,1.24176,-2.63816,
-2.45671,-1.84859,0.352808,
--1.59618,2.16255,4.33699,
-2.10913,-1.88673,-0.952497,
--1.85571,-0.287392,0.277176,
-0.751967,1.04568,-1.35427,
-2.85792,1.60982,-2.05454,
--2.13152,-0.260207,-2.15124,
-1.75432,2.28936,0.756254,
-1.95711,-0.681098,-2.38037,
--0.826273,1.08361,1.6515,
--1.85118,1.89481,-0.756754,
--3.0571,2.44795,0.355341,
--0.455122,-3.58071,-2.85209,
--0.95805,0.641282,2.15189,
--1.35515,-0.234803,-0.825819,
-2.12472,-0.0444431,0.651227,
-2.67573,0.223987,2.75712,
-1.65871,-0.163059,1.6513,
--1.85429,0.68862,1.9576,
--3.05186,-2.2804,0.100919,
-3.41813,-1.88775,3.67075,
--0.753778,0.36467,1.55333,
-2.97628,-1.36502,-1.85135,
-0.477128,1.08862,0.858931,
--1.0531,1.0488,2.15218,
-2.66911,-2.08876,-0.182397,
-5.117,-2.84097,-0.953684,
-0.468302,1.88616,2.05369,
--3.16099,-2.76085,-2.75679,
--2.6593,3.52373,-1.24072,
--4.37957,-0.286903,3.63863,
--2.85958,-2.56921,-2.85723,
--0.159735,2.72758,-2.80575,
--0.951849,-0.607465,1.05633,
-1.93077,2.56422,1.25446,
--0.859754,0.248106,0.0584456,
-2.4023,2.56659,-1.2588,
-2.35295,-1.08729,2.7851,
--2.1537,-0.765032,2.83652,
-1.40185,1.29804,2.3588,
--0.991566,1.72049,4.17146,
-3.76736,-1.48837,2.05329,
--0.251896,0.765367,-1.4087,
--1.6228,0.328693,0.0528287,
-2.56735,-3.08103,0.853144,
-0.0531812,-1.96216,1.55734,
--3.77052,0.8421,-0.258953,
-2.35523,0.676643,-1.55789,
-1.16702,2.64474,-1.45533,
-2.55709,-1.56013,2.05351,
--2.15518,3.56253,3.257,
--0.553936,-1.24935,2.65224,
--0.355931,1.32374,0.859863,
--1.92974,1.2482,1.15936,
-0.350652,-2.44371,-1.35611,
-2.98996,-1.08527,-4.30641,
-1.82765,-0.440236,1.25528,
--0.689231,-1.08813,-0.668663,
--0.326426,-0.881857,-1.45371,
--1.0655,2.12466,2.34146,
-3.1563,0.523166,-2.8572,
-0.455505,2.48775,-1.33482,
-0.53939,-0.847333,0.732877,
--0.683025,-0.448889,-1.35747,
--1.7711,-0.125587,-2.55083,
--0.512871,0.520964,1.40731,
-4.93857,-1.6805,-0.127298,
-1.46098,-1.64073,1.35833,
-0.0518058,0.285151,-2.2437,
-1.5587,-1.23067,0.458753,
-3.13089,3.64132,1.45181,
--1.55648,2.167,0.153491,
-3.94451,-2.56372,-1.25276,
-4.15866,0.646921,2.65542,
--2.88189,0.562407,-1.35379,
-1.31686,1.2808,0.804375,
--2.36912,-3.08775,1.28335,
-0.575203,-0.36483,-2.43958,
-0.613108,0.526892,2.75368,
-3.96027,-0.525425,-4.25746,
--0.510821,1.28578,-0.058488,
--0.254704,-3.847,3.15258,
--0.925874,-1.72014,-3.15341,
-0.85704,0.84788,-1.75947,
--3.35712,0.722104,2.15645,
--1.67305,0.681216,1.65726,
--3.64682,0.867926,2.63525,
--0.715921,1.96081,-0.939934,
--2.45646,1.3249,-2.75733,
--1.75798,0.725382,-0.851921,
--2.78528,0.679275,-2.59212,
--2.24551,-3.4597,-1.85735,
-0.85142,2.28058,-3.75328,
--3.85054,2.44519,4.35081,
--3.6553,0.521917,0.293354,
--4.35959,-0.528198,1.55557,
-1.45186,-0.0891161,-0.468118,
-1.85594,-0.761461,-4.68083,
-0.950642,0.526239,-1.30614,
--2.50526,-0.885606,-0.362569,
--2.96569,1.68519,-1.15965,
--3.212,0.260715,1.18472,
-0.950556,-0.282806,0.776252,
-3.66678,1.08585,-2.15646,
--0.806289,1.72784,2.85906,
-0.363827,1.76644,0.931866,
--1.34204,-0.563686,-2.34091,
--2.81333,0.415358,4.28363,
-1.52053,-0.327359,0.35052,
--0.633441,-0.240518,4.05745,
--2.38947,-1.84662,-2.29572,
--1.95744,-0.863705,1.85889,
--0.0509082,-0.164164,3.8571,
-0.156438,-2.64188,1.75836,
--3.85642,1.48025,0.171659,
-0.253545,1.0852,-2.45243,
--4.11318,4.1655,-0.120976,
--1.44928,-0.328222,-0.871279,
--1.90972,-1.8495,-3.16966,
-0.359433,1.3236,-3.95045,
--2.60974,-1.04138,4.25836,
--3.16336,-0.961581,-1.65161,
--0.552909,-1.16942,4.05164,
--3.10918,-1.2402,-0.555073,
-2.25494,1.24432,3.44063,
--1.24998,-1.24928,-4.05493,
-3.05441,1.92762,1.43329,
-0.557032,-2.7688,-3.25463,
--2.05665,1.6357,0.656665,
--0.459042,0.122664,-0.152961,
-2.17715,2.96833,1.1332,
-0.0536573,-2.08635,-0.736471,
--3.15658,1.0818,-0.172166,
--1.95784,0.44402,0.612685,
-0.15168,-0.323951,2.85563,
-0.559356,1.63101,0.558005,
--2.05643,1.84615,-1.87964,
--0.254098,0.368208,1.23061,
-4.6438,-0.209283,0.695869,
--1.95087,-0.859788,0.0539467,
--0.351737,-1.04291,0.869198,
-0.776319,3.04922,-3.55278,
--0.158751,1.12538,-2.59681,
--0.560997,-1.68381,1.56935,
-1.71385,-0.446223,-1.56843,
-4.05142,-1.3243,2.85052,
-1.68685,-1.56305,2.159,
-0.359977,-1.16029,1.25037,
--2.65045,-1.28532,0.459338,
-5.42068,1.52601,-1.35562,
-1.34386,1.68231,-2.75114,
-1.25123,0.43108,0.383897,
--0.952936,3.6889,1.75759,
--3.55855,0.484241,1.15503,
--1.71394,-2.64568,-3.30684,
--2.23513,-2.46812,1.05321,
-0.160986,0.442362,-1.05077,
-2.05433,0.473204,0.823968,
-0.482077,0.0477338,4.21712,
--1.25348,0.767612,0.455813,
-1.61308,2.04125,-2.95433,
--2.05862,-0.444052,1.35177,
--3.2582,0.44354,2.15898,
--1.75935,0.0459283,2.35061,
--4.15501,0.68674,0.802439,
--1.66005,1.12067,0.552901,
--0.150828,3.4151,3.05446,
--0.274381,0.0405946,-1.45463,
-2.94543,-0.360918,1.45895,
--1.42494,1.56503,1.31012,
-3.45402,-1.27808,-4.29049,
--1.14819,0.674339,1.55807,
--0.356159,1.52295,-0.351445,
-0.387809,0.965119,1.84271,
-2.56165,-1.84639,1.65056,
--0.619108,2.24004,-2.92134,
--0.254288,-2.32744,-0.720931,
-3.3508,-2.24501,1.58268,
-1.69434,1.96814,3.97439,
-1.80785,0.685502,-1.55595,
-2.71587,1.76415,-2.98124,
--2.35151,-0.697338,-3.96269,
--1.85759,1.96899,-1.25212,
--4.05922,1.12838,-2.7597,
--2.85434,-1.36487,0.659987,
--1.75616,2.12969,-1.35032,
--2.95985,-0.0854955,3.65545,
--2.46049,2.45378,4.51969,
--0.0577358,0.0427911,0.359068,
--3.25346,0.161829,1.12956,
-3.55498,2.32482,1.33302,
-4.99905,-1.88748,0.450165,
--2.35406,-1.44715,-0.745307,
-2.44217,-0.642981,0.126924,
-1.73283,1.67362,1.91136,
-1.34239,-0.434386,-0.449795,
--0.9813,-2.72962,-3.6889,
-1.29807,-0.448566,2.13911,
-0.654017,3.54591,-1.55982,
--1.55508,-2.64564,0.555,
-1.92722,-0.322513,-2.13691,
-1.35913,-2.84853,-0.470788,
-0.257868,-2.68874,-0.268328,
--2.05043,-1.68405,-3.05075,
-1.65173,-0.446801,-0.75339,
--1.25655,0.965275,-4.15374,
--4.27942,-0.564403,1.45826,
-0.950669,-2.4416,-1.68235,
--0.0541107,0.882274,3.15308,
--1.65016,-0.886156,-3.85588,
-0.355613,0.217671,4.25412,
-0.800472,0.847259,3.11114,
-1.8599,-2.16981,-2.22314,
--2.05061,0.164561,-0.452181,
-0.854144,1.84334,-1.45981,
-1.68547,1.56536,-1.45874,
-1.25244,-0.844991,-2.95475,
--1.92348,2.32119,-1.80444,
--0.645646,2.45193,-3.65332,
-4.45803,0.527732,3.02031,
-2.74572,0.287964,-1.80485,
-0.35961,-2.56437,3.97194,
--0.956828,-1.28915,1.64424,
-0.414971,-0.235061,-2.15757,
--0.0530542,-1.08464,-4.11853,
-3.17203,-1.21013,-3.85806,
-0.758948,0.124698,-3.10188,
--1.65404,-1.16204,-1.65357,
--1.65985,3.84433,4.65101,
-2.83444,-2.69529,-1.65021,
-1.29814,-2.76926,-2.27139,
-0.462382,3.04217,3.45153,
--3.61944,1.04723,-0.638308,
-2.25235,1.64048,2.95175,
--3.05826,-0.76526,-2.38243,
--2.8506,2.12102,-0.659444,
--0.10046,0.0887098,-1.63621,
--1.55585,-1.36073,2.2076,
--0.474968,1.56568,-0.302349,
-0.36584,-2.36102,1.35289,
-0.224784,-0.637694,1.62444,
--0.658172,1.9689,-3.13712,
-0.646334,-1.04672,2.59285,
--2.63054,-1.08263,-0.851087,
-1.45804,-2.56159,-2.66388,
--2.45748,0.0409116,-2.85428,
--0.0561462,-1.24229,-1.25145,
--2.95391,-1.80896,-2.05036,
-4.36778,-0.969951,3.53686,
-2.15582,-1.67173,-0.831609,
--1.27059,-1.14919,1.7569,
--1.57398,-1.28091,-0.251735,
-2.59506,-2.6408,-0.345589,
--1.64147,-0.360324,3.1562,
--0.125427,-0.641484,-3.66095,
--1.9148,1.8885,2.12972,
--2.85768,-2.28782,-1.55719,
--1.37239,-0.485964,-2.22291,
-0.516294,0.281078,0.652612,
--1.13028,0.246659,-2.25636,
-1.7555,-1.41602,0.348449,
-1.5355,-1.32646,-2.82417,
--0.95426,2.0824,-0.383507,
-2.75739,0.241779,0.755701,
-0.752655,0.56204,-1.55738,
-1.1271,-3.76145,4.3701,
-0.326656,-1.24467,2.62222,
--0.259702,2.68152,-3.18542,
-1.88504,-0.760623,4.42592,
-2.51673,4.72252,-1.99239,
--1.66934,-0.129677,-2.49048,
--1.25499,2.36151,-2.98447,
-2.65331,0.0443886,0.108819,
--3.35439,0.0872109,-1.33429,
-3.35597,0.0403626,2.8203,
-4.45191,1.24824,-0.95821,
--0.171441,-1.52622,-4.68253,
-1.19986,1.72992,-3.29566,
--0.451339,1.92976,1.21534,
--0.743119,-0.160688,0.805688,
-2.38678,0.272829,2.75457,
-1.72464,2.08232,-0.950389,
-2.11167,1.56576,1.21969,
-3.05157,-1.56838,-0.450535,
-0.132417,-3.08279,-1.34127,
-1.65441,-0.325204,-0.825145,
-2.05515,-1.8417,1.8561,
--0.555858,1.52007,-0.80122,
--2.05026,1.52773,2.33529,
--2.35231,-3.28716,3.53598,
--2.25771,2.5667,-1.92243,
-0.386884,-3.28674,3.49336,
-0.957272,-1.68124,-1.89095,
-2.99881,2.24992,-0.0535837,
-3.19604,2.92893,-2.16276,
-2.55903,3.12413,2.95022,
--0.570758,-2.85326,-0.339255,
-0.356627,0.641074,0.355538,
--1.15777,-0.162227,-0.455885,
--2.4871,-0.885492,-0.374875,
-1.55464,-1.48929,-0.593706,
--0.852655,-2.08736,-1.18281,
-0.504087,-0.879247,1.35148,
--2.15261,1.04511,-3.25543,
--0.653745,-1.32873,-3.18964,
-0.35973,-0.844255,-1.72034,
--2.11112,0.962572,2.59386,
-1.47531,-0.693626,-3.15249,
--1.35814,0.767202,3.45094,
--3.05812,-1.26298,1.45287,
--1.63927,0.893568,-1.94978,
-0.751992,1.68559,2.3618,
-5.8205,-0.769076,-0.958994,
--2.38512,-0.166005,-1.25855,
--0.556071,-2.28164,1.57032,
-5.89172,-0.244834,0.553728,
--0.468648,-0.927756,-0.737048,
--2.66659,-1.64374,-0.995568,
-0.251499,-1.24569,0.95028,
-0.737721,2.88575,0.448918,
--0.634421,-1.84377,-2.47094,
-0.556349,2.86774,1.62621,
--3.29644,3.28642,-3.45459,
--1.45045,2.52138,2.75329,
-1.87449,-2.68651,3.60371,
--0.656424,-2.56828,1.35509,
-1.95771,-1.48325,-3.85265,
-3.85074,0.0825779,-1.65283,
--1.17278,-1.69258,-1.05875,
-1.25754,-0.0439433,1.3571,
-2.91459,2.08715,0.259842,
-0.748196,2.52132,0.659051,
--1.85745,-1.88355,1.05259,
-1.69311,1.12299,-3.05453,
--2.86301,0.123274,0.559289,
--1.43146,1.64425,-1.95053,
-2.35287,0.414621,-0.950807,
-0.952585,-0.280452,-0.844588,
--1.53836,-1.76396,2.51742,
--3.05431,2.45,-0.26571,
--0.637412,1.12028,-0.587387,
--1.71017,-0.728497,-1.05087,
-0.454027,0.849208,-0.151716,
--3.54846,0.367137,1.1484,
-0.200816,-2.08832,0.255433,
--2.15817,0.725338,0.852676,
--2.45708,-0.725538,-0.859435,
-4.25339,1.84177,-0.555145,
-0.119319,-1.32041,-1.45864,
--3.65177,0.361323,0.351554,
-0.928598,0.321024,-3.64759,
--0.250062,1.84912,7.49887,
-3.59593,0.929451,-2.15224,
-0.658599,2.36796,4.11632,
-0.55841,-1.08657,0.258326,
-1.9419,0.0488641,-3.75375,
-0.0589998,0.521351,-3.85723,
-3.45108,0.562199,4.20946,
--0.255073,2.36504,-3.556,
-1.95848,1.28698,4.25014,
-1.85411,3.12131,0.652769,
--3.3589,0.801817,-1.5591,
-2.48128,-0.163406,1.25243,
-2.52135,0.960467,1.45432,
-0.827496,-0.163021,-0.558886,
--3.45032,-0.0831453,0.851212,
--3.45334,0.855944,1.35596,
--0.834644,0.245598,-1.23878,
-3.64558,1.16831,-0.18559,
--1.45919,-3.08196,-0.329805,
--3.65715,-1.04485,0.159208,
-1.35463,-0.766382,0.558632,
--2.75899,-1.67431,-1.55069,
-1.67539,2.04337,0.912884,
-3.51677,-3.24285,0.170272,
--4.25189,0.56589,-4.35936,
--2.68545,-0.448243,0.540342,
-0.279844,-0.641466,-0.353986,
--3.27626,-3.52006,1.77644,
--0.724096,-1.84647,-2.45271,
--4.18603,0.123376,3.85066,
--4.05156,0.0499386,-0.332945,
-2.69508,2.32777,1.26256,
--0.353726,1.07252,-0.738837,
--0.947178,0.36459,1.55593,
--0.058346,2.44781,-4.35023,
-1.51586,-0.961109,-3.43483,
--2.8852,2.08863,-1.75468,
--0.297867,0.722757,0.91355,
--1.12917,-1.68328,0.175315,
--1.24248,-0.323519,-0.854841,
-0.751943,0.564075,3.95073,
-1.15436,2.81813,0.653114,
--2.55058,-2.56486,0.756618,
-0.959794,0.845224,-0.854001,
--2.15033,0.248556,-3.16151,
-0.353224,-1.68637,0.457949,
--0.753237,-2.48313,-0.355373,
-0.296585,2.04822,0.198473,
--2.4737,0.682952,1.85349,
-1.9027,0.882796,1.45908,
-0.254799,1.92572,-1.70848,
--0.951602,-0.698987,-2.22682,
-0.262582,-2.44093,1.05636,
-0.385415,-0.685667,-3.35928,
-0.055981,0.523585,-3.36093,
--0.0518635,-0.889068,-0.840648,
-0.455171,2.84624,-1.98276,
-2.85475,-0.685697,-2.45695,
--1.05047,-1.92121,0.931666,
--2.75962,-0.164458,-1.55261,
-1.91811,1.65767,3.15004,
--2.25653,0.856735,-4.351,
-1.89178,-0.728669,-3.8803,
--3.25958,-1.16223,-1.85148,
--1.6291,-2.32967,-0.874786,
-3.17524,0.327351,2.15337,
--1.05094,-0.560694,-3.4581,
-0.759785,-1.0801,-0.257876,
--0.4597,-2.2404,2.54341,
-0.242266,0.121832,7.80878,
--1.6573,1.56049,-1.61749,
-1.39912,-2.84395,-0.25965,
-0.552342,1.36924,2.95278,
--1.92932,-0.883981,0.0589583,
--1.9026,0.56297,-0.723523,
--1.25867,-0.529617,2.3503,
-2.16527,-0.723364,-1.45609,
--0.984608,-0.720375,-2.05144,
-0.946803,-0.969188,-3.14625,
-2.7986,-2.36069,1.25827,
-3.37979,-1.11699,-3.55116,
--0.753992,-1.9649,2.98548,
--0.456321,0.525303,-0.109174,
-0.8642,1.53147,-3.34749,
--0.450507,-0.443265,-2.8325,
--3.24876,3.12791,0.576143,
--3.14755,2.84502,-0.45749,
-0.226819,-1.28172,0.939501,
--0.650725,-1.40317,-1.35211,
--0.451625,1.84271,-0.950536,
--1.36693,0.850218,-1.09799,
-2.35374,-0.28759,1.55815,
-2.60577,-2.46765,1.2633,
-1.21562,-1.72153,-0.4034,
--2.43216,3.04268,1.90109,
--1.85365,-0.16523,-2.98947,
--0.953475,-2.76164,2.53396,
-2.55264,-0.645611,3.25479,
--0.675476,-0.724382,-1.4566,
-0.801062,0.16778,2.21815,
-0.680443,0.0407888,3.27279,
--3.75426,-0.247624,0.26307,
-0.427609,-0.322312,0.652005,
--2.17428,-3.68643,0.256619,
-0.456732,-2.44858,3.13051,
-0.524175,-1.88231,-1.93171,
-7.2311,1.8354,-1.2502,
-2.69502,2.25543,-4.25127,
-0.259357,2.28099,-0.476734,
--0.327316,-1.24908,0.78628,
-0.190362,-3.26019,0.0545844,
--1.25409,-0.761609,2.65361,
-2.86816,0.443709,0.556137,
-2.60289,-0.680561,0.248414,
-1.75631,-0.162859,-3.62488,
--0.559754,-0.16222,2.35858,
-0.157552,-1.72639,-0.48056,
-3.69492,-0.848265,-0.256413,
--1.4264,-1.48589,-2.724,
-1.15372,-0.27228,-2.75499,
--1.85159,1.76577,-0.858854,
-0.0580466,-0.41133,1.05649,
--1.25289,0.528142,-0.386138,
--0.858101,-0.245127,1.95078,
--1.95302,-0.0862415,-1.95806,
--2.79133,-0.527094,-0.356931,
-0.110597,0.167534,4.12784,
--0.637771,-0.526587,-1.25734,
--2.311,-0.489068,-2.8594,
--0.352617,-1.23939,-1.85435,
-1.78814,-0.265883,3.35913,
-2.75557,-2.32271,3.15559,
-2.85426,0.443661,0.921828,
--2.14262,0.400863,1.11614,
-4.45496,-0.488668,-3.7533,
-0.754719,-1.44165,0.853323,
--0.856506,1.76559,1.05702,
--0.418565,-0.921031,-2.43699,
--1.29292,-0.282271,-1.62927,
--0.759531,0.566692,-0.750991,
-0.559787,1.72479,-0.26667,
-2.75533,-0.245187,-0.543844,
--2.27924,-1.04154,-4.05156,
-3.35852,-0.561129,-2.98986,
-2.41843,-0.321119,-1.55651,
-0.85431,-0.883719,-2.17826,
-0.417867,0.242995,-0.456326,
--4.17449,-0.720086,0.355145,
--0.577386,0.0440364,-0.950268,
--2.8156,2.92346,0.958713,
--1.65138,0.963561,1.25265,
-1.45117,0.845424,0.252789,
-2.27848,-1.76777,0.117707,
--0.754248,1.08381,-2.15345,
--3.15415,-0.162292,-1.15347,
-2.55396,-1.68912,1.15698,
-0.159561,1.84202,0.428428,
--1.58079,2.04207,3.29578,
--1.05711,-0.843112,-1.98122,
-0.138866,-2.96642,-0.212247,
-2.6778,0.686972,-2.6553,
--0.498291,-0.362846,-1.0538,
-1.19872,0.0476518,-2.42077,
--2.3972,1.40393,-0.1943,
-0.85034,-1.24222,1.5646,
-0.142174,0.249903,-2.75252,
-1.15197,1.32746,-1.70104,
-0.359387,-1.65115,-2.75243,
-0.357917,-1.36406,2.55102,
--1.65268,-0.28339,2.75665,
--3.82681,-3.28984,2.55128,
--2.61371,1.08247,-0.457068,
-1.67152,-2.25527,2.45819,
--0.753832,1.1682,-1.95913,
--2.05131,3.04537,1.91954,
--0.695378,2.88924,1.41965,
-3.25767,-2.76934,-0.354127,
--0.746795,1.36034,1.85953,
-0.859135,1.08222,0.959116,
-1.15898,1.32443,3.41981,
-3.67954,0.447177,-0.414029,
-0.907323,2.12852,1.95837,
--0.683456,-0.247536,1.05621,
--1.67809,0.641544,-1.31143,
--1.30192,-0.677394,-1.95159,
--0.105665,0.365205,-1.2567,
-1.12189,-1.48969,0.957166,
-1.25554,-1.92186,-0.904086,
-0.117786,2.23836,-0.498009,
--2.85788,0.643364,0.55867,
--1.66115,2.56146,-2.28632,
--3.29334,-0.0894367,-0.656519,
-3.15561,-0.769732,1.15695,
-1.25684,0.64652,-2.6002,
-2.65231,-3.52625,1.55617,
--1.8573,-1.76276,-1.74075,
--1.55648,1.2592,2.1585,
--0.555522,2.88068,-2.85423,
--3.14249,-0.288592,-3.35534,
-2.45413,0.0854903,-2.20507,
--2.05464,0.887836,-0.658349,
-1.12708,-0.568106,-3.65865,
--0.59147,-0.685439,0.301612,
-0.473679,0.886411,-1.65386,
-1.65166,0.166741,0.751119,
--0.299287,1.72233,0.618559,
-1.15181,-0.488026,0.124448,
-0.0561315,1.04877,2.15922,
-0.154258,-0.64401,-1.31179,
-1.75863,-1.88571,-2.8537,
-3.35024,1.28154,-1.05461,
--3.71738,-2.88631,-1.05314,
--1.78258,3.08967,0.150476,
-3.47828,-2.524,-2.45502,
--0.159138,0.160633,-0.338796,
--2.15885,-0.82959,1.25022,
--1.95268,-0.841195,-3.19487,
--0.281381,-0.887435,-3.55807,
-0.415164,0.326482,-1.55411,
-1.92868,-2.84771,-0.556196,
-1.05804,1.32866,0.66596,
-2.46545,1.00747,2.35957,
--0.77358,0.284677,-1.38805,
-0.851046,0.960742,-2.70934,
--0.858208,-0.884015,1.16663,
-1.55291,0.282705,-3.18254,
-1.99034,0.286298,-1.75821,
-0.259097,-2.04379,-0.858936,
--1.5956,2.04693,-1.35234,
--0.775432,1.24465,1.95935,
-1.65595,-1.04954,-0.954437,
--2.35417,-1.76095,-0.248306,
-0.855717,-2.92161,3.4496,
--0.717941,2.52993,1.25007,
--3.42927,0.673305,0.995742,
-8.03373,-2.05136,4.02113,
-7.88929,-2.2029,5.0036,
-7.61596,-2.44569,4.54892,
-7.41949,-2.64169,3.82339,
-7.21192,-2.87947,4.89423,
-7.08346,-2.38649,4.19212,
-6.90279,-3.33038,4.9273,
-6.78959,-3.55575,3.55127,
-6.57074,-3.75902,3.32517,
-6.30756,-3.40499,3.78366,
-7.90893,-3.3237,2.48012,
-6.24078,-4.04978,3.47459,
-8.0691,-4.6865,4.08057,
-5.98731,-2.26113,2.82166,
-5.46898,-3.99581,3.25024,
-8.1461,-3.34471,3.42168,
-6.8456,-5.00126,2.36145,
-7.62888,-3.82465,2.7879,
-7.18034,-3.94376,2.74348,
-6.02527,-4.36523,2.56247,
-8.64577,-3.04345,2.62974,
-7.82539,-3.6881,2.96164,
-7.10508,-3.6174,4.22416,
-7.64684,-3.88431,3.9336,
-7.46411,-4.21516,3.32001,
-6.98777,-3.94024,3.14694,
-7.36355,-4.24875,1.72061,
-8.42011,-4.52065,2.62078,
-6.04598,-4.48682,2.74494,
-8.7682,-3.9271,3.82815,
-6.76279,-3.58031,2.92525,
-7.14794,-4.42742,2.62365,
-5.32696,-3.28733,3.34916,
-6.43655,-4.60784,2.41548,
-5.66033,-4.98497,3.72282
diff --git a/examples/datavisualization/custominput/doc/images/custominput-example.png b/examples/datavisualization/custominput/doc/images/custominput-example.png
deleted file mode 100644
index b2656b69..00000000
--- a/examples/datavisualization/custominput/doc/images/custominput-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/custominput/doc/src/custominput.qdoc b/examples/datavisualization/custominput/doc/src/custominput.qdoc
deleted file mode 100644
index 2149bd2f..00000000
--- a/examples/datavisualization/custominput/doc/src/custominput.qdoc
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example custominput
- \title Custom Input Example
- \ingroup qtdatavisualization_examples
- \brief Implementing custom input handler in a widget application.
-
- The Custom Input example shows how to customize the 3D graph controls in a widget application
- using a custom graph input handler to capture and process mouse events.
- The code in this example shows also how the camera is controlled by using QPropertyAnimation
- to animate the camera and item selection is done on mouseover rather than clicking any mouse
- buttons. Also the code shows how to implement similar zoom with mouse wheel functionality as
- the default input handler implements.
-
- \image custominput-example.png
-
- \include examples-run.qdocinc
-
- \section1 Replacing Default Input Handling
-
- The default input handling mechanism is replaced by setting the active input handler of
- Q3DScatter to \c CustomInputHandler that implements the custom behavior.
-
- \snippet custominput/scatterdatamodifier.cpp 0
-
- \section1 Implementing Custom Selection Handling
-
- The on mouseover selection handling is implemented in the \c CustomInputHandler that captures
- the mouse events. It then stores the last known coordinates to the
- QAbstract3DInputHandler::inputPosition property.
-
- \snippet custominput/custominputhandler.cpp 0
-
- As the selection is one shot, and is cleared each time a 3D frame is rendered, a timer is setup
- to retrigger selection so that the selection moves to the item currently under the mouse cursor
- as the camera animates around the graph even when the mouse cursor is not moving.
-
- \snippet custominput/scatterdatamodifier.cpp 1
-
- \section1 Implementing Custom Zoom Handling
-
- The camera has a zoom factor that represents amount of zoom in percentages. In this example the
- zoom range is limited between 10% and 500%. This range is then divided to four subranges where
- \c angleDelta is scaled to different amount of zoom change based on the current subrange.
-
- \snippet custominput/custominputhandler.cpp 1
-
- \section1 Implementing Custom Camera Handling
-
- The camera is animated to constantly rotate around the graph with two animations. The rotation
- around the graph is done with a simple QPropertyAnimation that just increments during 20
- seconds from 0 degrees to 360 degrees and sets the Q3DCamera::xRotation property.
-
- \snippet custominput/scatterdatamodifier.cpp 2
-
- The camera movement up and down is implemented with a QSequentialAnimationGroup that varies
- the Q3DCamera::yRotation property of the camera from 5 degrees to 45 degrees and back with in
- and out easing.
-
- \snippet custominput/scatterdatamodifier.cpp 3
-*/
diff --git a/examples/datavisualization/custominput/main.cpp b/examples/datavisualization/custominput/main.cpp
deleted file mode 100644
index 6491890f..00000000
--- a/examples/datavisualization/custominput/main.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "scatterdatamodifier.h"
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QPushButton>
-#include <QtWidgets/QCheckBox>
-#include <QtWidgets/QComboBox>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QMessageBox>
-#include <QtGui/QScreen>
-#include <QtGui/QFontDatabase>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QApplication app(argc, argv);
- Q3DScatter *graph = new Q3DScatter();
- QWidget *container = QWidget::createWindowContainer(graph);
-
- if (!graph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- QSize screenSize = graph->screen()->size();
- container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
- container->setMaximumSize(screenSize);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- QWidget *widget = new QWidget;
- QHBoxLayout *hLayout = new QHBoxLayout(widget);
- QVBoxLayout *vLayout = new QVBoxLayout();
- hLayout->addWidget(container, 1);
- hLayout->addLayout(vLayout);
-
- widget->setWindowTitle(QStringLiteral("Custom Input Handling"));
-
- QPushButton *cameraButton = new QPushButton(widget);
- cameraButton->setText(QStringLiteral("Toggle Camera Animation"));
-
- QComboBox *shadowQuality = new QComboBox(widget);
- shadowQuality->addItem(QStringLiteral("None"));
- shadowQuality->addItem(QStringLiteral("Low"));
- shadowQuality->addItem(QStringLiteral("Medium"));
- shadowQuality->addItem(QStringLiteral("High"));
- shadowQuality->addItem(QStringLiteral("Low Soft"));
- shadowQuality->addItem(QStringLiteral("Medium Soft"));
- shadowQuality->addItem(QStringLiteral("High Soft"));
- shadowQuality->setCurrentIndex(2);
-
- vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
- vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")), 0, Qt::AlignTop);
- vLayout->addWidget(shadowQuality, 1, Qt::AlignTop);
-
- ScatterDataModifier *modifier = new ScatterDataModifier(graph);
-
- QObject::connect(cameraButton, &QPushButton::clicked, modifier,
- &ScatterDataModifier::toggleCameraAnimation);
-
- QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeShadowQuality(int)));
-
- QObject::connect(modifier, &ScatterDataModifier::shadowQualityChanged, shadowQuality,
- &QComboBox::setCurrentIndex);
-
- widget->show();
- modifier->start();
- return app.exec();
-}
diff --git a/examples/datavisualization/custominput/scatterdatamodifier.cpp b/examples/datavisualization/custominput/scatterdatamodifier.cpp
deleted file mode 100644
index 051efe73..00000000
--- a/examples/datavisualization/custominput/scatterdatamodifier.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "scatterdatamodifier.h"
-
-#include <QtDataVisualization/QScatterDataProxy>
-#include <QtDataVisualization/QValue3DAxis>
-#include <QtDataVisualization/Q3DScene>
-#include <QtDataVisualization/Q3DCamera>
-#include <QtDataVisualization/QScatter3DSeries>
-#include <QtDataVisualization/Q3DTheme>
-#include <QtCore/qmath.h>
-#include <QtCore/QFile>
-#include <QtCore/QTextStream>
-#include <QtCore/QDebug>
-
-ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
- : m_graph(scatter),
- m_inputHandler(new CustomInputHandler())
-{
- m_graph->activeTheme()->setType(Q3DTheme::ThemeDigia);
- m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityMedium);
- m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
-
- m_graph->setAxisX(new QValue3DAxis);
- m_graph->setAxisY(new QValue3DAxis);
- m_graph->setAxisZ(new QValue3DAxis);
-
- m_graph->axisX()->setRange(-10.0f, 10.0f);
- m_graph->axisY()->setRange(-5.0f, 5.0f);
- m_graph->axisZ()->setRange(-5.0f, 5.0f);
-
- QScatter3DSeries *series = new QScatter3DSeries;
- series->setItemLabelFormat(QStringLiteral("@xLabel, @yLabel, @zLabel"));
- series->setMesh(QAbstract3DSeries::MeshCube);
- series->setItemSize(0.15f);
- m_graph->addSeries(series);
-
- //! [2]
- m_animationCameraX = new QPropertyAnimation(m_graph->scene()->activeCamera(), "xRotation");
- m_animationCameraX->setDuration(20000);
- m_animationCameraX->setStartValue(QVariant::fromValue(0.0f));
- m_animationCameraX->setEndValue(QVariant::fromValue(360.0f));
- m_animationCameraX->setLoopCount(-1);
- //! [2]
-
- //! [3]
- QPropertyAnimation *upAnimation = new QPropertyAnimation(m_graph->scene()->activeCamera(), "yRotation");
- upAnimation->setDuration(9000);
- upAnimation->setStartValue(QVariant::fromValue(5.0f));
- upAnimation->setEndValue(QVariant::fromValue(45.0f));
-
- QPropertyAnimation *downAnimation = new QPropertyAnimation(m_graph->scene()->activeCamera(), "yRotation");
- downAnimation->setDuration(9000);
- downAnimation->setStartValue(QVariant::fromValue(45.0f));
- downAnimation->setEndValue(QVariant::fromValue(5.0f));
-
- m_animationCameraY = new QSequentialAnimationGroup();
- m_animationCameraY->setLoopCount(-1);
- m_animationCameraY->addAnimation(upAnimation);
- m_animationCameraY->addAnimation(downAnimation);
- //! [3]
-
- m_animationCameraX->start();
- m_animationCameraY->start();
-
- // Give ownership of the handler to the graph and make it the active handler
- //! [0]
- m_graph->setActiveInputHandler(m_inputHandler);
- //! [0]
-
- //! [1]
- m_selectionTimer = new QTimer(this);
- m_selectionTimer->setInterval(10);
- m_selectionTimer->setSingleShot(false);
- QObject::connect(m_selectionTimer, &QTimer::timeout, this,
- &ScatterDataModifier::triggerSelection);
- m_selectionTimer->start();
- //! [1]
-}
-
-ScatterDataModifier::~ScatterDataModifier()
-{
- delete m_graph;
-}
-
-void ScatterDataModifier::start()
-{
- addData();
-}
-
-void ScatterDataModifier::addData()
-{
- QList<QVector3D> itemList;
-
- // Read data items from the file to QList
- QTextStream stream;
- QFile dataFile(":/data/data.txt");
- if (dataFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- stream.setDevice(&dataFile);
- while (!stream.atEnd()) {
- QString line = stream.readLine();
- if (line.startsWith("#")) // Ignore comments
- continue;
- QStringList strList = line.split(",", Qt::SkipEmptyParts);
- // Each line has three data items: xPos, yPos and zPos value
- if (strList.size() < 3) {
- qWarning() << "Invalid row read from data:" << line;
- continue;
- }
- itemList.append(QVector3D(
- strList.at(0).trimmed().toFloat(),
- strList.at(1).trimmed().toFloat(),
- strList.at(2).trimmed().toFloat()));
- }
- } else {
- qWarning() << "Unable to open data file:" << dataFile.fileName();
- }
-
- // Add data from the QList to datamodel
- QScatterDataArray *dataArray = new QScatterDataArray;
- dataArray->resize(itemList.count());
- QScatterDataItem *ptrToDataArray = &dataArray->first();
- for (int i = 0; i < itemList.count(); i++) {
- ptrToDataArray->setPosition(itemList.at(i));
- ptrToDataArray++;
- }
-
- m_graph->seriesList().at(0)->dataProxy()->resetArray(dataArray);
-}
-
-void ScatterDataModifier::toggleCameraAnimation()
-{
- if (m_animationCameraX->state() != QAbstractAnimation::Paused) {
- m_animationCameraX->pause();
- m_animationCameraY->pause();
- } else {
- m_animationCameraX->resume();
- m_animationCameraY->resume();
- }
-}
-
-void ScatterDataModifier::triggerSelection()
-{
- m_graph->scene()->setSelectionQueryPosition(m_inputHandler->inputPosition());
-}
-
-void ScatterDataModifier::shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality sq)
-{
- int quality = int(sq);
- emit shadowQualityChanged(quality); // connected to a checkbox in main.cpp
-}
-
-void ScatterDataModifier::changeShadowQuality(int quality)
-{
- QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality);
- m_graph->setShadowQuality(sq);
-}
diff --git a/examples/datavisualization/custominput/scatterdatamodifier.h b/examples/datavisualization/custominput/scatterdatamodifier.h
deleted file mode 100644
index 114eda7e..00000000
--- a/examples/datavisualization/custominput/scatterdatamodifier.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SCATTERDATAMODIFIER_H
-#define SCATTERDATAMODIFIER_H
-
-#include "custominputhandler.h"
-
-#include <QtDataVisualization/q3dscatter.h>
-#include <QtGui/QFont>
-#include <QtCore/QTimer>
-#include <QtCore/QPropertyAnimation>
-#include <QtCore/QSequentialAnimationGroup>
-#include <QtGui/QVector3D>
-
-class ScatterDataModifier : public QObject
-{
- Q_OBJECT
-public:
- explicit ScatterDataModifier(Q3DScatter *scatter);
- ~ScatterDataModifier();
-
- void addData();
- void toggleCameraAnimation();
- void start();
-
-public Q_SLOTS:
- void changeShadowQuality(int quality);
- void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
- void triggerSelection();
-
-Q_SIGNALS:
- void shadowQualityChanged(int quality);
-
-private:
- Q3DScatter *m_graph;
- QPropertyAnimation *m_animationCameraX;
- QSequentialAnimationGroup *m_animationCameraY;
- CustomInputHandler *m_inputHandler;
- QTimer *m_selectionTimer;
-};
-
-#endif
diff --git a/examples/datavisualization/customitems/CMakeLists.txt b/examples/datavisualization/customitems/CMakeLists.txt
deleted file mode 100644
index 54f64e25..00000000
--- a/examples/datavisualization/customitems/CMakeLists.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(customitems LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(customitems
- customitemgraph.cpp customitemgraph.h
- main.cpp
-)
-set_target_properties(customitems PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(customitems PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-set(customitems_resource_files
- "layer_1.png"
- "layer_2.png"
- "layer_3.png"
-)
-
-qt6_add_resources(customitems "customitems"
- PREFIX
- "/maps"
- FILES
- ${customitems_resource_files}
-)
-set(customitems1_resource_files
- "oilrig.obj"
- "pipe.obj"
- "refinery.obj"
-)
-
-qt6_add_resources(customitems "customitems1"
- PREFIX
- "/items"
- FILES
- ${customitems1_resource_files}
-)
-
-install(TARGETS customitems
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/customitems/customitemgraph.cpp b/examples/datavisualization/customitems/customitemgraph.cpp
deleted file mode 100644
index f1fef0b3..00000000
--- a/examples/datavisualization/customitems/customitemgraph.cpp
+++ /dev/null
@@ -1,329 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "customitemgraph.h"
-
-#include <QtDataVisualization/Q3DTheme>
-#include <QtDataVisualization/QCustom3DItem>
-#include <QtDataVisualization/QCustom3DLabel>
-#include <QtGui/QImage>
-
-CustomItemGraph::CustomItemGraph(Q3DSurface *surface, QLabel *label)
- : m_graph(surface),
- m_textField(label),
- m_previouslyAnimatedItem(0)
-{
- QImage layerOneHMap(":/maps/layer_1.png");
- QHeightMapSurfaceDataProxy *layerOneProxy = new QHeightMapSurfaceDataProxy(layerOneHMap);
- QSurface3DSeries *layerOneSeries = new QSurface3DSeries(layerOneProxy);
- layerOneSeries->setItemLabelFormat(QStringLiteral("(@xLabel, @zLabel): @yLabel"));
- layerOneProxy->setValueRanges(34.0f, 40.0f, 18.0f, 24.0f);
- layerOneSeries->setDrawMode(QSurface3DSeries::DrawSurface);
- layerOneSeries->setFlatShadingEnabled(false);
-
- QImage layerTwoHMap(":/maps/layer_2.png");
- QHeightMapSurfaceDataProxy *layerTwoProxy = new QHeightMapSurfaceDataProxy(layerTwoHMap);
- QSurface3DSeries *layerTwoSeries = new QSurface3DSeries(layerTwoProxy);
- layerTwoSeries->setItemLabelFormat(QStringLiteral("(@xLabel, @zLabel): @yLabel"));
- layerTwoProxy->setValueRanges(34.0f, 40.0f, 18.0f, 24.0f);
- layerTwoSeries->setDrawMode(QSurface3DSeries::DrawSurface);
- layerTwoSeries->setFlatShadingEnabled(false);
-
- QImage layerThreeHMap(":/maps/layer_3.png");
- QHeightMapSurfaceDataProxy *layerThreeProxy = new QHeightMapSurfaceDataProxy(layerThreeHMap);
- QSurface3DSeries *layerThreeSeries = new QSurface3DSeries(layerThreeProxy);
- layerThreeSeries->setItemLabelFormat(QStringLiteral("(@xLabel, @zLabel): @yLabel"));
- layerThreeProxy->setValueRanges(34.0f, 40.0f, 18.0f, 24.0f);
- layerThreeSeries->setDrawMode(QSurface3DSeries::DrawSurface);
- layerThreeSeries->setFlatShadingEnabled(false);
-
- m_graph->axisX()->setLabelFormat("%.1f N");
- m_graph->axisZ()->setLabelFormat("%.1f E");
- m_graph->axisX()->setRange(34.0f, 40.0f);
- m_graph->axisY()->setRange(0.0f, 200.0f);
- m_graph->axisZ()->setRange(18.0f, 24.0f);
-
- m_graph->axisX()->setTitle(QStringLiteral("Latitude"));
- m_graph->axisY()->setTitle(QStringLiteral("Height"));
- m_graph->axisZ()->setTitle(QStringLiteral("Longitude"));
-
- m_graph->addSeries(layerOneSeries);
- m_graph->addSeries(layerTwoSeries);
- m_graph->addSeries(layerThreeSeries);
-
- QLinearGradient grOne;
- grOne.setColorAt(0.0, Qt::black);
- grOne.setColorAt(0.38, Qt::darkYellow);
- grOne.setColorAt(0.39, Qt::darkGreen);
- grOne.setColorAt(0.5, Qt::darkGray);
- grOne.setColorAt(1.0, Qt::gray);
- m_graph->seriesList().at(0)->setBaseGradient(grOne);
- m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
-
- QLinearGradient grTwo;
- grTwo.setColorAt(0.385, Qt::blue);
- grTwo.setColorAt(0.395, Qt::white);
- m_graph->seriesList().at(1)->setBaseGradient(grTwo);
- m_graph->seriesList().at(1)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
-
- QLinearGradient grThree;
- grThree.setColorAt(0.0, Qt::white);
- grThree.setColorAt(0.05, Qt::black);
- m_graph->seriesList().at(2)->setBaseGradient(grThree);
- m_graph->seriesList().at(2)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
-
- m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
-
- connect(m_graph, &QAbstract3DGraph::selectedElementChanged,
- this, &CustomItemGraph::handleElementSelected);
-
- m_selectionAnimation = new QPropertyAnimation(this);
- m_selectionAnimation->setPropertyName("scaling");
- m_selectionAnimation->setDuration(500);
- m_selectionAnimation->setLoopCount(-1);
-
- QFont titleFont = QFont("Century Gothic", 30);
- titleFont.setBold(true);
- QCustom3DLabel *titleLabel = new QCustom3DLabel("Oil Rigs on Imaginary Sea", titleFont,
- QVector3D(0.0f, 1.2f, 0.0f),
- QVector3D(1.0f, 1.0f, 0.0f),
- QQuaternion());
- titleLabel->setPositionAbsolute(true);
- titleLabel->setFacingCamera(true);
- titleLabel->setBackgroundColor(QColor(0x66cdaa));
- m_graph->addCustomItem(titleLabel);
-
- toggleItemOne(true);
- toggleItemTwo(true);
-}
-
-CustomItemGraph::~CustomItemGraph()
-{
- delete m_graph;
-}
-
-void CustomItemGraph::toggleItemOne(bool show)
-{
- //! [1]
- QVector3D positionOne = QVector3D(39.0f, 77.0f, 19.2f);
- //! [1]
- QVector3D positionOnePipe = QVector3D(39.0f, 45.0f, 19.2f);
- QVector3D positionOneLabel = QVector3D(39.0f, 107.0f, 19.2f);
- if (show) {
- //! [0]
- QImage color = QImage(2, 2, QImage::Format_RGB32);
- color.fill(Qt::red);
- //! [0]
- //! [2]
- QCustom3DItem *item = new QCustom3DItem(":/items/oilrig.obj", positionOne,
- QVector3D(0.025f, 0.025f, 0.025f),
- QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, 45.0f),
- color);
- //! [2]
- //! [3]
- m_graph->addCustomItem(item);
- //! [3]
- item = new QCustom3DItem(":/items/pipe.obj", positionOnePipe,
- QVector3D(0.005f, 0.5f, 0.005f),
- QQuaternion(),
- color);
- item->setShadowCasting(false);
- m_graph->addCustomItem(item);
-
- QCustom3DLabel *label = new QCustom3DLabel();
- label->setText("Oil Rig One");
- label->setPosition(positionOneLabel);
- label->setScaling(QVector3D(1.0f, 1.0f, 1.0f));
- m_graph->addCustomItem(label);
- } else {
- resetSelection();
- //! [4]
- m_graph->removeCustomItemAt(positionOne);
- //! [4]
- m_graph->removeCustomItemAt(positionOnePipe);
- m_graph->removeCustomItemAt(positionOneLabel);
- }
-}
-
-void CustomItemGraph::toggleItemTwo(bool show)
-{
- QVector3D positionTwo = QVector3D(34.5f, 77.0f, 23.4f);
- QVector3D positionTwoPipe = QVector3D(34.5f, 45.0f, 23.4f);
- QVector3D positionTwoLabel = QVector3D(34.5f, 107.0f, 23.4f);
- if (show) {
- QImage color = QImage(2, 2, QImage::Format_RGB32);
- color.fill(Qt::red);
- QCustom3DItem *item = new QCustom3DItem();
- item->setMeshFile(":/items/oilrig.obj");
- item->setPosition(positionTwo);
- item->setScaling(QVector3D(0.025f, 0.025f, 0.025f));
- item->setRotation(QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, 25.0f));
- item->setTextureImage(color);
- m_graph->addCustomItem(item);
- item = new QCustom3DItem(":/items/pipe.obj", positionTwoPipe,
- QVector3D(0.005f, 0.5f, 0.005f),
- QQuaternion(),
- color);
- item->setShadowCasting(false);
- m_graph->addCustomItem(item);
-
- QCustom3DLabel *label = new QCustom3DLabel();
- label->setText("Oil Rig Two");
- label->setPosition(positionTwoLabel);
- label->setScaling(QVector3D(1.0f, 1.0f, 1.0f));
- m_graph->addCustomItem(label);
- } else {
- resetSelection();
- m_graph->removeCustomItemAt(positionTwo);
- m_graph->removeCustomItemAt(positionTwoPipe);
- m_graph->removeCustomItemAt(positionTwoLabel);
- }
-}
-
-void CustomItemGraph::toggleItemThree(bool show)
-{
- QVector3D positionThree = QVector3D(34.5f, 86.0f, 19.1f);
- QVector3D positionThreeLabel = QVector3D(34.5f, 116.0f, 19.1f);
- if (show) {
- QImage color = QImage(2, 2, QImage::Format_RGB32);
- color.fill(Qt::darkMagenta);
- QCustom3DItem *item = new QCustom3DItem();
- item->setMeshFile(":/items/refinery.obj");
- item->setPosition(positionThree);
- item->setScaling(QVector3D(0.04f, 0.04f, 0.04f));
- item->setRotation(QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, 75.0f));
- item->setTextureImage(color);
- m_graph->addCustomItem(item);
-
- QCustom3DLabel *label = new QCustom3DLabel();
- label->setText("Refinery");
- label->setPosition(positionThreeLabel);
- label->setScaling(QVector3D(1.0f, 1.0f, 1.0f));
- m_graph->addCustomItem(label);
- } else {
- resetSelection();
- m_graph->removeCustomItemAt(positionThree);
- m_graph->removeCustomItemAt(positionThreeLabel);
- }
-}
-
-void CustomItemGraph::toggleSeeThrough(bool seethrough)
-{
- if (seethrough) {
- m_graph->seriesList().at(0)->setDrawMode(QSurface3DSeries::DrawWireframe);
- m_graph->seriesList().at(1)->setDrawMode(QSurface3DSeries::DrawWireframe);
- } else {
- m_graph->seriesList().at(0)->setDrawMode(QSurface3DSeries::DrawSurface);
- m_graph->seriesList().at(1)->setDrawMode(QSurface3DSeries::DrawSurface);
- }
-}
-
-void CustomItemGraph::toggleOilHighlight(bool highlight)
-{
- if (highlight) {
- QLinearGradient grThree;
- grThree.setColorAt(0.0, Qt::black);
- grThree.setColorAt(0.05, Qt::red);
- m_graph->seriesList().at(2)->setBaseGradient(grThree);
- } else {
- QLinearGradient grThree;
- grThree.setColorAt(0.0, Qt::white);
- grThree.setColorAt(0.05, Qt::black);
- m_graph->seriesList().at(2)->setBaseGradient(grThree);
- }
-}
-
-void CustomItemGraph::toggleShadows(bool shadows)
-{
- if (shadows)
- m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityMedium);
- else
- m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
-}
-
-void CustomItemGraph::handleElementSelected(QAbstract3DGraph::ElementType type)
-{
- resetSelection();
- if (type == QAbstract3DGraph::ElementCustomItem) {
- QCustom3DItem *item = m_graph->selectedCustomItem();
- QString text;
- if (qobject_cast<QCustom3DLabel *>(item) != 0) {
- text.append("Custom label: ");
- } else {
- QStringList split = item->meshFile().split("/");
- text.append(split.last());
- text.append(": ");
- }
- int index = m_graph->selectedCustomItemIndex();
- text.append(QString::number(index));
- m_textField->setText(text);
- m_previouslyAnimatedItem = item;
- m_previousScaling = item->scaling();
- m_selectionAnimation->setTargetObject(item);
- m_selectionAnimation->setStartValue(item->scaling());
- m_selectionAnimation->setEndValue(item->scaling() * 1.5f);
- m_selectionAnimation->start();
- } else if (type == QAbstract3DGraph::ElementSeries) {
- QString text = "Surface (";
- QSurface3DSeries *series = m_graph->selectedSeries();
- if (series) {
- QPoint point = series->selectedPoint();
- QString posStr;
- posStr.setNum(point.x());
- text.append(posStr);
- text.append(", ");
- posStr.setNum(point.y());
- text.append(posStr);
- }
- text.append(")");
- m_textField->setText(text);
- } else if (type > QAbstract3DGraph::ElementSeries
- && type < QAbstract3DGraph::ElementCustomItem) {
- int index = m_graph->selectedLabelIndex();
- QString text;
- if (type == QAbstract3DGraph::ElementAxisXLabel)
- text.append("Axis X label: ");
- else if (type == QAbstract3DGraph::ElementAxisYLabel)
- text.append("Axis Y label: ");
- else
- text.append("Axis Z label: ");
- text.append(QString::number(index));
- m_textField->setText(text);
- } else {
- m_textField->setText("Nothing");
- }
-}
-
-void CustomItemGraph::resetSelection()
-{
- m_selectionAnimation->stop();
- if (m_previouslyAnimatedItem)
- m_previouslyAnimatedItem->setScaling(m_previousScaling);
- m_previouslyAnimatedItem = 0;
-}
diff --git a/examples/datavisualization/customitems/customitemgraph.h b/examples/datavisualization/customitems/customitemgraph.h
deleted file mode 100644
index 1b2af81f..00000000
--- a/examples/datavisualization/customitems/customitemgraph.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CUSTOMITEMGRAPH_H
-#define CUSTOMITEMGRAPH_H
-
-#include <QtDataVisualization/Q3DSurface>
-#include <QtDataVisualization/QSurfaceDataProxy>
-#include <QtDataVisualization/QHeightMapSurfaceDataProxy>
-#include <QtDataVisualization/QSurface3DSeries>
-#include <QtWidgets/QSlider>
-#include <QtWidgets/QLabel>
-#include <QtCore/QPropertyAnimation>
-
-class CustomItemGraph : public QObject
-{
- Q_OBJECT
-public:
- explicit CustomItemGraph(Q3DSurface *surface, QLabel *label);
- ~CustomItemGraph();
-
- void toggleItemOne(bool show);
- void toggleItemTwo(bool show);
- void toggleItemThree(bool show);
- void toggleSeeThrough(bool seethrough);
- void toggleOilHighlight(bool highlight);
- void toggleShadows(bool shadows);
-
-private:
- void handleElementSelected(QAbstract3DGraph::ElementType type);
- void resetSelection();
-
-private:
- Q3DSurface *m_graph;
- QLabel *m_textField;
- QPropertyAnimation *m_selectionAnimation;
- QCustom3DItem *m_previouslyAnimatedItem;
- QVector3D m_previousScaling;
-};
-
-#endif
diff --git a/examples/datavisualization/customitems/customitems.pro b/examples/datavisualization/customitems/customitems.pro
deleted file mode 100644
index d366e349..00000000
--- a/examples/datavisualization/customitems/customitems.pro
+++ /dev/null
@@ -1,19 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp \
- customitemgraph.cpp
-
-HEADERS += customitemgraph.h
-
-QT += widgets
-
-RESOURCES += customitems.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/customitems/customitems.qrc b/examples/datavisualization/customitems/customitems.qrc
deleted file mode 100644
index 1337c9fc..00000000
--- a/examples/datavisualization/customitems/customitems.qrc
+++ /dev/null
@@ -1,12 +0,0 @@
-<RCC>
- <qresource prefix="/maps">
- <file>layer_1.png</file>
- <file>layer_2.png</file>
- <file>layer_3.png</file>
- </qresource>
- <qresource prefix="/items">
- <file>refinery.obj</file>
- <file>oilrig.obj</file>
- <file>pipe.obj</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/customitems/doc/images/customitems-example.png b/examples/datavisualization/customitems/doc/images/customitems-example.png
deleted file mode 100644
index 2732638e..00000000
--- a/examples/datavisualization/customitems/doc/images/customitems-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/customitems/doc/src/customitems.qdoc b/examples/datavisualization/customitems/doc/src/customitems.qdoc
deleted file mode 100644
index a8d1dac0..00000000
--- a/examples/datavisualization/customitems/doc/src/customitems.qdoc
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example customitems
- \title Custom Items Example
- \ingroup qtdatavisualization_examples
- \brief Adding custom items to a surface graph.
- \since QtDataVisualization 1.1
-
- The custom items example shows how to add your own custom meshes as items to a graph, and how
- to remove them.
-
- \image customitems-example.png
-
- \include examples-run.qdocinc
-
- \section1 Adding Custom Meshes to the Application
-
- We'll add the meshes in a resource file:
-
- \code
- <RCC>
- ...
- <qresource prefix="/items">
- <file>refinery.obj</file>
- <file>oilrig.obj</file>
- </qresource>
- </RCC>
- \endcode
-
- \section1 Adding Custom Item to a Graph
-
- In this example we do not have specific textures for our meshes, so we'll just create a small
- QImage and fill it with a single color:
-
- \snippet customitems/customitemgraph.cpp 0
-
- Then we'll specify the position for the item in a variable. This way we'll be able to use it
- later for removing the correct item:
-
- \snippet customitems/customitemgraph.cpp 1
-
- Then we'll create a new QCustom3DItem with all the parameters:
-
- \snippet customitems/customitemgraph.cpp 2
-
- And finally we'll just add the item:
-
- \snippet customitems/customitemgraph.cpp 3
-
- \section1 Removing Custom Item from a Graph
-
- We'll just call \c removeCustomItemAt() with the position of the item:
-
- \snippet customitems/customitemgraph.cpp 4
-
- \note Removing a custom item from the graph also deletes it. If you want to preserve the item,
- you need to use \c releaseCustomItem() method instead.
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/customitems/main.cpp b/examples/datavisualization/customitems/main.cpp
deleted file mode 100644
index 114a9fa7..00000000
--- a/examples/datavisualization/customitems/main.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "customitemgraph.h"
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QCheckBox>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QMessageBox>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QApplication app(argc, argv);
- Q3DSurface *graph = new Q3DSurface();
- QWidget *container = QWidget::createWindowContainer(graph);
-
- if (!graph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- container->setMinimumSize(QSize(800, 600));
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- QWidget *widget = new QWidget;
- QHBoxLayout *hLayout = new QHBoxLayout(widget);
- QVBoxLayout *vLayoutLeft = new QVBoxLayout();
- vLayoutLeft->setAlignment(Qt::AlignTop);
- QVBoxLayout *vLayoutRight = new QVBoxLayout();
- vLayoutRight->setAlignment(Qt::AlignTop);
- hLayout->addLayout(vLayoutLeft);
- hLayout->addWidget(container, 1);
- hLayout->addLayout(vLayoutRight);
-
- QFont font = QFont("Century Gothic", 14);
- QLabel *label = new QLabel("Show:");
- font.setBold(true);
- label->setFont(font);
- vLayoutLeft->addWidget(label);
-
- font.setBold(false);
- QCheckBox *checkboxOne = new QCheckBox("Oil Rig 1");
- checkboxOne->setChecked(true);
- checkboxOne->setFont(font);
- vLayoutLeft->addWidget(checkboxOne);
-
- QCheckBox *checkboxTwo = new QCheckBox("Oil Rig 2");
- checkboxTwo->setChecked(true);
- checkboxTwo->setFont(font);
- vLayoutLeft->addWidget(checkboxTwo);
-
- QCheckBox *checkboxThree = new QCheckBox("Refinery");
- checkboxThree->setFont(font);
- vLayoutLeft->addWidget(checkboxThree);
-
- QLabel *label2 = new QLabel("Visuals:");
- font.setBold(true);
- label2->setFont(font);
- vLayoutRight->addWidget(label2);
-
- QCheckBox *checkboxOneRight = new QCheckBox("See-Through");
- font.setBold(false);
- checkboxOneRight->setFont(font);
- vLayoutRight->addWidget(checkboxOneRight);
-
- QCheckBox *checkboxTwoRight = new QCheckBox("Highlight Oil");
- checkboxTwoRight->setFont(font);
- vLayoutRight->addWidget(checkboxTwoRight);
-
- QCheckBox *checkboxThreeRight = new QCheckBox("Shadows");
- checkboxThreeRight->setFont(font);
- checkboxThreeRight->setChecked(true);
- vLayoutRight->addWidget(checkboxThreeRight);
-
- QLabel *label3 = new QLabel("Selection:");
- font.setBold(true);
- label3->setFont(font);
- vLayoutRight->addWidget(label3);
-
- QLabel *label4 = new QLabel("Nothing");
- font.setBold(false);
- font.setPointSize(11);
- label4->setFont(font);
- vLayoutRight->addWidget(label4);
-
- widget->setWindowTitle(QStringLiteral("Custom Items Example"));
-
- widget->show();
-
- CustomItemGraph *modifier = new CustomItemGraph(graph, label4);
-
- QObject::connect(checkboxOne, &QCheckBox::stateChanged,
- modifier, &CustomItemGraph::toggleItemOne);
- QObject::connect(checkboxTwo, &QCheckBox::stateChanged,
- modifier, &CustomItemGraph::toggleItemTwo);
- QObject::connect(checkboxThree, &QCheckBox::stateChanged,
- modifier, &CustomItemGraph::toggleItemThree);
-
- QObject::connect(checkboxOneRight, &QCheckBox::stateChanged,
- modifier, &CustomItemGraph::toggleSeeThrough);
- QObject::connect(checkboxTwoRight, &QCheckBox::stateChanged,
- modifier, &CustomItemGraph::toggleOilHighlight);
- QObject::connect(checkboxThreeRight, &QCheckBox::stateChanged,
- modifier, &CustomItemGraph::toggleShadows);
-
- return app.exec();
-}
diff --git a/examples/datavisualization/customproxy/CMakeLists.txt b/examples/datavisualization/customproxy/CMakeLists.txt
deleted file mode 100644
index b1c3c661..00000000
--- a/examples/datavisualization/customproxy/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(customproxy LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(customproxy
- main.cpp
- rainfallgraph.cpp rainfallgraph.h
- variantbardatamapping.cpp variantbardatamapping.h
- variantbardataproxy.cpp variantbardataproxy.h
- variantdataset.cpp variantdataset.h
-)
-set_target_properties(customproxy PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(customproxy PUBLIC
- Qt::Core
- Qt::Gui
- Qt::DataVisualization
-)
-
-set(customproxy_resource_files
- "data/raindata.txt"
-)
-
-qt6_add_resources(customproxy "customproxy"
- PREFIX
- "/"
- FILES
- ${customproxy_resource_files}
-)
-
-install(TARGETS customproxy
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/customproxy/customproxy.pro b/examples/datavisualization/customproxy/customproxy.pro
deleted file mode 100644
index fd5e0852..00000000
--- a/examples/datavisualization/customproxy/customproxy.pro
+++ /dev/null
@@ -1,25 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp \
- rainfallgraph.cpp \
- variantdataset.cpp \
- variantbardataproxy.cpp \
- variantbardatamapping.cpp \
-
-HEADERS += \
- rainfallgraph.h \
- variantdataset.h \
- variantbardataproxy.h \
- variantbardatamapping.h
-
-RESOURCES += customproxy.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- data/raindata.txt
diff --git a/examples/datavisualization/customproxy/customproxy.qrc b/examples/datavisualization/customproxy/customproxy.qrc
deleted file mode 100644
index 53cd4915..00000000
--- a/examples/datavisualization/customproxy/customproxy.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>data/raindata.txt</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/customproxy/data/raindata.txt b/examples/datavisualization/customproxy/data/raindata.txt
deleted file mode 100644
index 531d66be..00000000
--- a/examples/datavisualization/customproxy/data/raindata.txt
+++ /dev/null
@@ -1,158 +0,0 @@
-# Rainfall per month from 2000 to 2012 in Northern Finland (Sodankylä, Utsjoki, Kuusamo)
-# Format: year, month, rainfall
-2000,1, 72,
-2000,2, 47,
-2000,3, 37,
-2000,4, 79,
-2000,5, 42,
-2000,6, 73,
-2000,7, 94,
-2000,8, 37,
-2000,9, 17,
-2000,10,69,
-2000,11,42,
-2000,12,42,
-2001,1, 25,
-2001,2, 47,
-2001,3, 20,
-2001,4, 70,
-2001,5, 27,
-2001,6, 40,
-2001,7, 123,
-2001,8, 39,
-2001,9, 66,
-2001,10,55,
-2001,11,29,
-2001,12,12,
-2002,1, 24,
-2002,2, 45,
-2002,3, 27,
-2002,4, 30,
-2002,5, 16,
-2002,6, 98,
-2002,7, 122,
-2002,8, 20,
-2002,9, 50,
-2002,10,24,
-2002,11,22,
-2002,12,12,
-2003,1, 43,
-2003,2, 17,
-2003,3, 26,
-2003,4, 22,
-2003,5, 60,
-2003,6, 14,
-2003,7, 86,
-2003,8, 77,
-2003,9, 69,
-2003,10,49,
-2003,11,23,
-2003,12,44,
-2004,1, 15,
-2004,2, 19,
-2004,3, 10,
-2004,4, 11,
-2004,5, 41,
-2004,6, 29,
-2004,7, 49,
-2004,8, 72,
-2004,9, 50,
-2004,10,18,
-2004,11,19,
-2004,12,40,
-2005,1, 60,
-2005,2, 24,
-2005,3, 12,
-2005,4, 50,
-2005,5, 88,
-2005,6, 32,
-2005,7, 76,
-2005,8, 55,
-2005,9, 92,
-2005,10,35,
-2005,11,105,
-2005,12,59,
-2006,1, 27,
-2006,2, 18,
-2006,3, 17,
-2006,4, 26,
-2006,5, 24,
-2006,6, 18,
-2006,7, 35,
-2006,8, 28,
-2006,9, 80,
-2006,10,52,
-2006,11,43,
-2006,12,44,
-2007,1, 41,
-2007,2, 21,
-2007,3, 30,
-2007,4, 20,
-2007,5, 53,
-2007,6, 29,
-2007,7, 139,
-2007,8, 52,
-2007,9, 51,
-2007,10,24,
-2007,11,47,
-2007,12,33,
-2008,1, 67,
-2008,2, 19,
-2008,3, 30,
-2008,4, 31,
-2008,5, 29,
-2008,6, 79,
-2008,7, 75,
-2008,8, 99,
-2008,9, 34,
-2008,10,52,
-2008,11,60,
-2008,12,20,
-2009,1, 9,
-2009,2, 22,
-2009,3, 11,
-2009,4, 10,
-2009,5, 69,
-2009,6, 30,
-2009,7, 78,
-2009,8, 93,
-2009,9, 70,
-2009,10,32,
-2009,11,56,
-2009,12,23,
-2010,1, 12,
-2010,2, 28,
-2010,3, 55,
-2010,4, 20,
-2010,5, 65,
-2010,6, 26,
-2010,7, 134,
-2010,8, 57,
-2010,9, 51,
-2010,10,53,
-2010,11,8,
-2010,12,9,
-2011,1, 34,
-2011,2, 20,
-2011,3, 30,
-2011,4, 31,
-2011,5, 42,
-2011,6, 78,
-2011,7, 85,
-2011,8, 33,
-2011,9, 42,
-2011,10,87,
-2011,11,41,
-2011,12,72,
-2012,1, 32,
-2012,2, 42,
-2012,3, 30,
-2012,4, 50,
-2012,5, 30,
-2012,6, 70,
-2012,7, 52,
-2012,8, 20,
-2012,9, 99,
-2012,10,70,
-2012,11,69,
-2012,12,49
diff --git a/examples/datavisualization/customproxy/doc/images/customproxy-example.png b/examples/datavisualization/customproxy/doc/images/customproxy-example.png
deleted file mode 100644
index 4f82943a..00000000
--- a/examples/datavisualization/customproxy/doc/images/customproxy-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/customproxy/doc/src/customproxy.qdoc b/examples/datavisualization/customproxy/doc/src/customproxy.qdoc
deleted file mode 100644
index 0952128e..00000000
--- a/examples/datavisualization/customproxy/doc/src/customproxy.qdoc
+++ /dev/null
@@ -1,122 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example customproxy
- \title Custom Proxy Example
- \ingroup qtdatavisualization_examples
- \brief Using Q3DBars with a custom proxy.
-
- The custom proxy example shows how to create a custom proxy to use with Q3DBars.
-
- \image customproxy-example.png
-
- The interesting thing about custom proxy example is the custom dataset and the corresponding
- proxy usage, so we concentrate on that and skip explaining the basic Q3DBars functionality
- - for that see \l{Bars Example}.
-
- This example defines a simple flexible data set \c VariantDataSet where each data item is a
- a variant list. Each item can have multiple different values, identified by their index in
- the list. In this example, the data set is storing monthly rainfall data, where the value in
- index zero is the year, the value in index one is the month, and the value in index two is
- the amount of rainfall in that month.
-
- The custom proxy we provide here is similar to item model based proxies provided by Qt
- Data Visualization in that it requires a mapping to interpret the data.
-
- \include examples-run.qdocinc
-
- \section1 VariantDataSet
-
- \c VariantDataSet class provides a simple API:
-
- \snippet customproxy/variantdataset.h 1
- \dots 0
- \codeline
- \snippet customproxy/variantdataset.h 0
-
- As you can see, the data items are simply QVariantList objects, and the data can be added either
- singly or in lists. The only additional functionality provided is clearing the data set and querying
- for a reference to the data contained in the set. Signals are emitted when data is added or the set
- is cleared.
-
- \section1 VariantBarDataProxy
-
- \c VariantBarDataProxy is a subclass of QBarDataProxy and provides a simple API of just getters
- and setters for the data set and the mapping:
-
- \snippet customproxy/variantbardataproxy.h 0
- \dots 0
- \codeline
- \snippet customproxy/variantbardataproxy.h 1
-
- On the implementation side, the proxy listens for the changes in the data set and the mapping,
- and resolves the data set if any changes are detected. It is not particularly efficient
- implementation in that any change will cause re-resolving of the entire data set, but that is not
- an issue for this example. The interesting part is the \c resolveDataSet() method:
-
- \snippet customproxy/variantbardataproxy.cpp 0
-
- In \c resolveDataSet() method we sort the variant data values into rows and columns based on the
- mapping. This is very similar to how QItemModelBarDataProxy handles mapping, except we use
- list indexes instead of item model roles here. Once the values are sorted, we generate \c QBarDataArray
- out of them, and call \c resetArray() method on the parent class.
-
- \section1 VariantBarDataMapping
-
- \c VariantBarDataMapping stores the mapping information between \c VariantDataSet data item indexes
- and rows, columns, and values of \c QBarDataArray. It also contains the lists of rows and columns to
- be included in the resolved data:
-
- \snippet customproxy/variantbardatamapping.h 0
- \dots 0
- \codeline
- \snippet customproxy/variantbardatamapping.h 1
- \dots 0
- \codeline
- \snippet customproxy/variantbardatamapping.h 2
- \dots 0
- \codeline
- \snippet customproxy/variantbardatamapping.h 3
-
- The primary way to use a \c VariantBarDataMapping object is to give the mappings already at the
- constructor, though they can be set later individually or all together with the \c remap() method.
- A signal is emitted if mapping changes. It is basically a simplified version of the mapping
- functionality of QItemModelBarDataProxy adapted to work with variant lists instead of item models.
-
- \section1 RainfallGraph
-
- \c RainfallGraph class handles the setup of the graph. The interesting part is the \c addDataSet()
- method:
-
- \snippet customproxy/rainfallgraph.cpp 0
-
- The bulk of that method is used for populating the variant data set. Once the set is populated,
- visualizing the data is trivial with the help of our custom proxy:
-
- \snippet customproxy/rainfallgraph.cpp 1
-*/
diff --git a/examples/datavisualization/customproxy/main.cpp b/examples/datavisualization/customproxy/main.cpp
deleted file mode 100644
index 00a5f550..00000000
--- a/examples/datavisualization/customproxy/main.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "rainfallgraph.h"
-#include <QtGui/QGuiApplication>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- Q3DBars *rainfall = new Q3DBars;
-
- if (!rainfall->hasContext()) {
- qWarning() << QStringLiteral("Couldn't initialize the OpenGL context.") ;
- return -1;
- }
-
- rainfall->setFlags(rainfall->flags() ^ Qt::FramelessWindowHint);
- rainfall->resize(1000, 800);
- rainfall->setPosition(QPoint(10, 30));
- rainfall->show();
-
- RainfallGraph rainfallgraph(rainfall);
- rainfallgraph.start();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/customproxy/rainfallgraph.cpp b/examples/datavisualization/customproxy/rainfallgraph.cpp
deleted file mode 100644
index 91733c0c..00000000
--- a/examples/datavisualization/customproxy/rainfallgraph.cpp
+++ /dev/null
@@ -1,167 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "rainfallgraph.h"
-#include <QtDataVisualization/qcategory3daxis.h>
-#include <QtDataVisualization/qvalue3daxis.h>
-#include <QtDataVisualization/q3dscene.h>
-#include <QtDataVisualization/q3dcamera.h>
-#include <QtDataVisualization/qbar3dseries.h>
-#include <QtDataVisualization/q3dtheme.h>
-#include <QtGui/QGuiApplication>
-#include <QtGui/QFont>
-#include <QtCore/QDebug>
-#include <QtCore/QTextStream>
-#include <QtCore/QFile>
-
-RainfallGraph::RainfallGraph(Q3DBars *rainfall)
- : m_graph(rainfall)
-{
- // In data file the months are in numeric format, so create custom list
- for (int i = 1; i <= 12; i++)
- m_numericMonths << QString::number(i);
-
- m_columnCount = m_numericMonths.size();
-
- m_proxy = new VariantBarDataProxy;
- QBar3DSeries *series = new QBar3DSeries(m_proxy);
- m_graph->addSeries(series);
-
- updateYearsList(2000, 2012);
-
- // Set up bar specifications; make the bars as wide as they are deep,
- // and add a small space between the bars
- m_graph->setBarThickness(1.0f);
- m_graph->setBarSpacing(QSizeF(1.1, 1.1));
-
- // Set axis labels and titles
- QStringList months;
- months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December";
- m_graph->rowAxis()->setTitle("Year");
- m_graph->columnAxis()->setTitle("Month");
- m_graph->valueAxis()->setTitle("rainfall");
- m_graph->valueAxis()->setLabelFormat("%d mm");
- m_graph->valueAxis()->setSegmentCount(5);
- m_graph->rowAxis()->setLabels(m_years);
- m_graph->columnAxis()->setLabels(months);
-
- // Set bar type to cylinder
- series->setMesh(QAbstract3DSeries::MeshCylinder);
-
- // Set shadows to medium
- m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityMedium);
-
- // Set selection mode to bar and column
- m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndColumn | QAbstract3DGraph::SelectionSlice);
-
- // Set theme
- m_graph->activeTheme()->setType(Q3DTheme::ThemeArmyBlue);
-
- // Override font in theme
- m_graph->activeTheme()->setFont(QFont("Century Gothic", 30));
-
- // Override label background for theme
- m_graph->activeTheme()->setLabelBackgroundEnabled(false);
-
- // Set camera position and zoom
- m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetIsometricRightHigh);
-
- // Set window title
- m_graph->setTitle(QStringLiteral("Monthly rainfall in Northern Finland"));
-
- // Set reflections on
- m_graph->setReflection(true);
-}
-
-RainfallGraph::~RainfallGraph()
-{
- delete m_mapping;
- delete m_dataSet;
- delete m_graph;
-}
-
-void RainfallGraph::start()
-{
- addDataSet();
-}
-
-void RainfallGraph::updateYearsList(int start, int end)
-{
- m_years.clear();
- for (int i = start; i <= end; i++)
- m_years << QString::number(i);
-
- m_rowCount = m_years.size();
-}
-
-//! [0]
-void RainfallGraph::addDataSet()
-{
- // Create a new variant data set and data item list
- m_dataSet = new VariantDataSet;
- VariantDataItemList *itemList = new VariantDataItemList;
-
- // Read data from a data file into the data item list
- QTextStream stream;
- QFile dataFile(":/data/raindata.txt");
- if (dataFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- stream.setDevice(&dataFile);
- while (!stream.atEnd()) {
- QString line = stream.readLine();
- if (line.startsWith("#")) // Ignore comments
- continue;
- QStringList strList = line.split(",", Qt::SkipEmptyParts);
- // Each line has three data items: Year, month, and rainfall value
- if (strList.size() < 3) {
- qWarning() << "Invalid row read from data:" << line;
- continue;
- }
- // Store year and month as strings, and rainfall value as double
- // into a variant data item and add the item to the item list.
- VariantDataItem *newItem = new VariantDataItem;
- for (int i = 0; i < 2; i++)
- newItem->append(strList.at(i).trimmed());
- newItem->append(strList.at(2).trimmed().toDouble());
- itemList->append(newItem);
- }
- } else {
- qWarning() << "Unable to open data file:" << dataFile.fileName();
- }
-
- //! [1]
- // Add items to the data set and set it to the proxy
- m_dataSet->addItems(itemList);
- m_proxy->setDataSet(m_dataSet);
-
- // Create new mapping for the data and set it to the proxy
- m_mapping = new VariantBarDataMapping(0, 1, 2, m_years, m_numericMonths);
- m_proxy->setMapping(m_mapping);
- //! [1]
-}
-//! [0]
diff --git a/examples/datavisualization/customproxy/rainfallgraph.h b/examples/datavisualization/customproxy/rainfallgraph.h
deleted file mode 100644
index a9a8770c..00000000
--- a/examples/datavisualization/customproxy/rainfallgraph.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef RAINFALLGRAPH_H
-#define RAINFALLGRAPH_H
-
-#include "variantbardataproxy.h"
-#include <QtDataVisualization/q3dbars.h>
-
-class RainfallGraph : public QObject
-{
- Q_OBJECT
-public:
- explicit RainfallGraph(Q3DBars *rainfall);
- ~RainfallGraph();
-
- void addDataSet();
- void start();
-
-private:
-
- void updateYearsList(int start, int end);
- Q3DBars *m_graph;
- int m_columnCount;
- int m_rowCount;
- QStringList m_years;
- QStringList m_numericMonths;
- VariantBarDataProxy *m_proxy;
- VariantBarDataMapping *m_mapping;
- VariantDataSet *m_dataSet;
-};
-
-
-#endif
diff --git a/examples/datavisualization/customproxy/variantbardatamapping.cpp b/examples/datavisualization/customproxy/variantbardatamapping.cpp
deleted file mode 100644
index fda2f67e..00000000
--- a/examples/datavisualization/customproxy/variantbardatamapping.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "variantbardatamapping.h"
-
-VariantBarDataMapping::VariantBarDataMapping()
- : QObject(0),
- m_rowIndex(0),
- m_columnIndex(1),
- m_valueIndex(2)
-{
-}
-
-VariantBarDataMapping::VariantBarDataMapping(const VariantBarDataMapping &other)
- : QObject(0),
- m_rowIndex(0),
- m_columnIndex(1),
- m_valueIndex(2)
-{
- operator=(other);
-}
-
-VariantBarDataMapping::VariantBarDataMapping(int rowIndex, int columnIndex, int valueIndex,
- const QStringList &rowCategories,
- const QStringList &columnCategories)
- : QObject(0),
- m_rowIndex(0),
- m_columnIndex(1),
- m_valueIndex(2)
-{
- m_rowIndex = rowIndex;
- m_columnIndex = columnIndex;
- m_valueIndex = valueIndex;
- m_rowCategories = rowCategories;
- m_columnCategories = columnCategories;
-}
-
-VariantBarDataMapping::~VariantBarDataMapping()
-{
-}
-
-VariantBarDataMapping &VariantBarDataMapping::operator=(const VariantBarDataMapping &other)
-{
- m_rowIndex = other.m_rowIndex;
- m_columnIndex = other.m_columnIndex;
- m_valueIndex = other.m_valueIndex;
- m_rowCategories = other.m_rowCategories;
- m_columnCategories = other.m_columnCategories;
-
- return *this;
-}
-
-void VariantBarDataMapping::setRowIndex(int index)
-{
- m_rowIndex = index;
- emit mappingChanged();
-}
-
-int VariantBarDataMapping::rowIndex() const
-{
- return m_rowIndex;
-}
-
-void VariantBarDataMapping::setColumnIndex(int index)
-{
- m_columnIndex = index;
- emit mappingChanged();
-}
-
-int VariantBarDataMapping::columnIndex() const
-{
- return m_columnIndex;
-}
-
-void VariantBarDataMapping::setValueIndex(int index)
-{
- m_valueIndex = index;
- emit mappingChanged();
-}
-
-int VariantBarDataMapping::valueIndex() const
-{
- return m_valueIndex;
-}
-
-void VariantBarDataMapping::setRowCategories(const QStringList &categories)
-{
- m_rowCategories = categories;
- emit mappingChanged();
-}
-
-const QStringList &VariantBarDataMapping::rowCategories() const
-{
- return m_rowCategories;
-}
-
-void VariantBarDataMapping::setColumnCategories(const QStringList &categories)
-{
- m_columnCategories = categories;
- emit mappingChanged();
-}
-
-const QStringList &VariantBarDataMapping::columnCategories() const
-{
- return m_columnCategories;
-}
-
-void VariantBarDataMapping::remap(int rowIndex, int columnIndex, int valueIndex,
- const QStringList &rowCategories,
- const QStringList &columnCategories)
-{
- m_rowIndex = rowIndex;
- m_columnIndex = columnIndex;
- m_valueIndex = valueIndex;
- m_rowCategories = rowCategories;
- m_columnCategories = columnCategories;
- emit mappingChanged();
-}
diff --git a/examples/datavisualization/customproxy/variantbardatamapping.h b/examples/datavisualization/customproxy/variantbardatamapping.h
deleted file mode 100644
index 2f1d5a3d..00000000
--- a/examples/datavisualization/customproxy/variantbardatamapping.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef VARIANTBARDATAMAPPING_H
-#define VARIANTBARDATAMAPPING_H
-
-#include <QtCore/QObject>
-#include <QtCore/QStringList>
-
-class VariantBarDataMapping : public QObject
-{
- Q_OBJECT
- //! [0]
- Q_PROPERTY(int rowIndex READ rowIndex WRITE setRowIndex)
- Q_PROPERTY(int columnIndex READ columnIndex WRITE setColumnIndex)
- Q_PROPERTY(int valueIndex READ valueIndex WRITE setValueIndex)
- Q_PROPERTY(QStringList rowCategories READ rowCategories WRITE setRowCategories)
- Q_PROPERTY(QStringList columnCategories READ columnCategories WRITE setColumnCategories)
- //! [0]
-public:
- explicit VariantBarDataMapping();
- VariantBarDataMapping(const VariantBarDataMapping &other);
- //! [1]
- VariantBarDataMapping(int rowIndex, int columnIndex, int valueIndex,
- const QStringList &rowCategories,
- const QStringList &columnCategories);
- //! [1]
- virtual ~VariantBarDataMapping();
-
- VariantBarDataMapping &operator=(const VariantBarDataMapping &other);
-
- void setRowIndex(int index);
- int rowIndex() const;
- void setColumnIndex(int index);
- int columnIndex() const;
- void setValueIndex(int index);
- int valueIndex() const;
-
- void setRowCategories(const QStringList &categories);
- const QStringList &rowCategories() const;
- void setColumnCategories(const QStringList &categories);
- const QStringList &columnCategories() const;
-
- //! [2]
- void remap(int rowIndex, int columnIndex, int valueIndex,
- const QStringList &rowCategories,
- const QStringList &columnCategories);
- //! [2]
-Q_SIGNALS:
- //! [3]
- void mappingChanged();
- //! [3]
-
-private:
- // Indexes of the mapped items in the VariantDataItem
- int m_rowIndex;
- int m_columnIndex;
- int m_valueIndex;
-
- // For row/column items, sort items into these categories. Other categories are ignored.
- QStringList m_rowCategories;
- QStringList m_columnCategories;
-};
-
-#endif
diff --git a/examples/datavisualization/customproxy/variantbardataproxy.h b/examples/datavisualization/customproxy/variantbardataproxy.h
deleted file mode 100644
index 1638eab5..00000000
--- a/examples/datavisualization/customproxy/variantbardataproxy.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef VARIANTBARDATAPROXY_H
-#define VARIANTBARDATAPROXY_H
-
-#include <QtDataVisualization/qbardataproxy.h>
-#include "variantdataset.h"
-#include "variantbardatamapping.h"
-#include <QtCore/QStringList>
-#include <QtCore/QMap>
-#include <QtCore/QPointer>
-
-//! [0]
-class VariantBarDataProxy : public QBarDataProxy
-//! [0]
-{
- Q_OBJECT
-
-public:
- explicit VariantBarDataProxy();
- explicit VariantBarDataProxy(VariantDataSet *newSet, VariantBarDataMapping *mapping);
- virtual ~VariantBarDataProxy();
-
- //! [1]
- // Doesn't gain ownership of the dataset, but does connect to it to listen for data changes.
- void setDataSet(VariantDataSet *newSet);
- VariantDataSet *dataSet();
-
- // Map key (row, column, value) to value index in data item (VariantItem).
- // Doesn't gain ownership of mapping, but does connect to it to listen for mapping changes.
- // Modifying mapping that is set to proxy will trigger dataset re-resolving.
- void setMapping(VariantBarDataMapping *mapping);
- VariantBarDataMapping *mapping();
- //! [1]
-
-public Q_SLOTS:
- void handleItemsAdded(int index, int count);
- void handleDataCleared();
- void handleMappingChanged();
-
-private:
- void resolveDataSet();
-
- QPointer<VariantDataSet> m_dataSet;
- QPointer<VariantBarDataMapping> m_mapping;
-
- Q_DISABLE_COPY(VariantBarDataProxy)
-};
-
-#endif
diff --git a/examples/datavisualization/customproxy/variantdataset.cpp b/examples/datavisualization/customproxy/variantdataset.cpp
deleted file mode 100644
index b748f82b..00000000
--- a/examples/datavisualization/customproxy/variantdataset.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "variantdataset.h"
-
-VariantDataSet::VariantDataSet()
- : QObject(0)
-{
-}
-
-VariantDataSet::~VariantDataSet()
-{
- clear();
-}
-
-void VariantDataSet::clear()
-{
- foreach (VariantDataItem *item, m_variantData) {
- item->clear();
- delete item;
- }
- m_variantData.clear();
- emit dataCleared();
-}
-
-int VariantDataSet::addItem(VariantDataItem *item)
-{
- m_variantData.append(item);
- int addIndex = m_variantData.size();
-
- emit itemsAdded(addIndex, 1);
- return addIndex;
-}
-
-int VariantDataSet::addItems(VariantDataItemList *itemList)
-{
- int newCount = itemList->size();
- int addIndex = m_variantData.size();
- m_variantData.append(*itemList);
- delete itemList;
- emit itemsAdded(addIndex, newCount);
- return addIndex;
-}
-
-const VariantDataItemList &VariantDataSet::itemList() const
-{
- return m_variantData;
-}
diff --git a/examples/datavisualization/customproxy/variantdataset.h b/examples/datavisualization/customproxy/variantdataset.h
deleted file mode 100644
index 3e608c39..00000000
--- a/examples/datavisualization/customproxy/variantdataset.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef VARIANTDATASET_H
-#define VARIANTDATASET_H
-
-#include <QtCore/QScopedPointer>
-#include <QtCore/QVariantList>
-
-//! [1]
-typedef QVariantList VariantDataItem;
-typedef QList<VariantDataItem *> VariantDataItemList;
-//! [1]
-
-class VariantDataSet : public QObject
-{
- Q_OBJECT
-
-public:
- explicit VariantDataSet();
- ~VariantDataSet();
-
- //! [0]
- void clear();
-
- int addItem(VariantDataItem *item);
- int addItems(VariantDataItemList *itemList);
-
- const VariantDataItemList &itemList() const;
-
-Q_SIGNALS:
- void itemsAdded(int index, int count);
- void dataCleared();
- //! [0]
-
-private:
- VariantDataItemList m_variantData;
-
- Q_DISABLE_COPY(VariantDataSet)
-};
-
-#endif
diff --git a/examples/datavisualization/datavisualization.pro b/examples/datavisualization/datavisualization.pro
index 558d4ace..ff9af2c5 100644
--- a/examples/datavisualization/datavisualization.pro
+++ b/examples/datavisualization/datavisualization.pro
@@ -2,28 +2,12 @@ TEMPLATE = subdirs
qtHaveModule(quick) {
SUBDIRS += qmlbars \
qmlscatter \
- qmlsurface \
- qmlcustominput \
- qmllegend \
- qmlmultigraph \
- qml3doscilloscope \
- qmlsurfacelayers \
- qmlaxisformatter \
- qmlaxisdrag \
- qmlspectrogram
+ qmlaxishandling \
+ qmlsurfacegallery
}
!android:!ios:!winrt {
- SUBDIRS += bars \
- custominput \
- customproxy \
- itemmodel \
- scatter \
- surface \
- rotations \
- draggableaxes \
- customitems \
- texturesurface \
+ SUBDIRS += graphgallery \
volumetric
}
diff --git a/examples/datavisualization/draggableaxes/CMakeLists.txt b/examples/datavisualization/draggableaxes/CMakeLists.txt
deleted file mode 100644
index 5728b70f..00000000
--- a/examples/datavisualization/draggableaxes/CMakeLists.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(draggableaxes LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(draggableaxes
- axesinputhandler.cpp axesinputhandler.h
- data.cpp data.h
- main.cpp
-)
-set_target_properties(draggableaxes PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(draggableaxes PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-install(TARGETS draggableaxes
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/draggableaxes/axesinputhandler.h b/examples/datavisualization/draggableaxes/axesinputhandler.h
deleted file mode 100644
index 1802b0a5..00000000
--- a/examples/datavisualization/draggableaxes/axesinputhandler.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef AXESINPUTHANDLER_H
-#define AXESINPUTHANDLER_H
-
-#include <QtDataVisualization/Q3DInputHandler>
-#include <QtDataVisualization/QAbstract3DGraph>
-#include <QtDataVisualization/QValue3DAxis>
-
-//! [0]
-class AxesInputHandler : public Q3DInputHandler
-//! [0]
-{
- Q_OBJECT
-
- enum InputState {
- StateNormal = 0,
- StateDraggingX,
- StateDraggingZ,
- StateDraggingY
- };
-
-public:
- explicit AxesInputHandler(QAbstract3DGraph *graph, QObject *parent = 0);
-
- inline void setAxes(QValue3DAxis *axisX, QValue3DAxis *axisZ, QValue3DAxis *axisY) {
- m_axisX = axisX;
- m_axisZ = axisZ;
- m_axisY = axisY;
- }
-
- //! [1]
- inline void setDragSpeedModifier(float modifier) { m_speedModifier = modifier; }
- //! [1]
-
- virtual void mousePressEvent(QMouseEvent *event, const QPoint &mousePos);
- virtual void mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos);
- virtual void mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos);
-
-private:
- void handleElementSelected(QAbstract3DGraph::ElementType type);
- void handleAxisDragging();
-
-private:
- bool m_mousePressed;
- InputState m_state;
- QValue3DAxis *m_axisX;
- QValue3DAxis *m_axisZ;
- QValue3DAxis *m_axisY;
- float m_speedModifier;
-};
-
-#endif
diff --git a/examples/datavisualization/draggableaxes/data.cpp b/examples/datavisualization/draggableaxes/data.cpp
deleted file mode 100644
index e145a87c..00000000
--- a/examples/datavisualization/draggableaxes/data.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "data.h"
-
-#include <QtCore/QRandomGenerator>
-#include <QtDataVisualization/QScatterDataProxy>
-#include <QtDataVisualization/Q3DScene>
-#include <QtDataVisualization/Q3DCamera>
-#include <QtDataVisualization/QScatter3DSeries>
-#include <QtDataVisualization/Q3DTheme>
-
-const int itemCount = 500;
-
-Data::Data(Q3DScatter *scatter)
- : m_graph(scatter),
- //! [1]
- m_inputHandler(new AxesInputHandler(scatter)),
- //! [1]
- m_autoAdjust(false)
-{
- m_graph->activeTheme()->setType(Q3DTheme::ThemeEbony);
- m_graph->activeTheme()->setLabelBorderEnabled(true);
- m_graph->activeTheme()->setLabelBackgroundColor(QColor(QRgb(0x151550)));
- m_graph->activeTheme()->setLabelTextColor(Qt::lightGray);
- m_graph->activeTheme()->setFont(QFont("Arial Black", 30));
- m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityMedium);
- m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetIsometricRight);
-
- m_graph->axisX()->setRange(-20.0f, 20.0f);
- m_graph->axisY()->setRange(-10.0f, 10.0f);
- m_graph->axisZ()->setRange(-20.0f, 20.0f);
-
- //! [0]
- // Give ownership of the handler to the graph and make it the active handler
- m_graph->setActiveInputHandler(m_inputHandler);
- //! [0]
-
- //! [2]
- // Give our axes to the input handler
- m_inputHandler->setAxes(m_graph->axisX(), m_graph->axisZ(), m_graph->axisY());
- //! [2]
-
- addData();
-}
-
-Data::~Data()
-{
- delete m_graph;
-}
-
-void Data::toggleRanges()
-{
- if (!m_autoAdjust) {
- m_graph->axisX()->setAutoAdjustRange(true);
- m_graph->axisZ()->setAutoAdjustRange(true);
- m_graph->axisY()->setAutoAdjustRange(true);
- m_inputHandler->setDragSpeedModifier(1.5f);
- m_autoAdjust = true;
- } else {
- m_graph->axisX()->setRange(-20.0f, 20.0f);
- m_graph->axisY()->setRange(-10.0f, 10.0f);
- m_graph->axisZ()->setRange(-20.0f, 20.0f);
- m_inputHandler->setDragSpeedModifier(15.0f);
- m_autoAdjust = false;
- }
-}
-
-void Data::addData()
-{
- QScatter3DSeries *series = new QScatter3DSeries;
- series->setMesh(QAbstract3DSeries::MeshCube);
- series->setMeshSmooth(true);
- m_graph->addSeries(series);
-
- QScatter3DSeries *series2 = new QScatter3DSeries;
- series2->setMesh(QAbstract3DSeries::MeshMinimal);
- series2->setMeshSmooth(true);
- m_graph->addSeries(series2);
-
- QScatter3DSeries *series3 = new QScatter3DSeries;
- series3->setMesh(QAbstract3DSeries::MeshSphere);
- series3->setMeshSmooth(true);
- m_graph->addSeries(series3);
-
- QScatter3DSeries *series4 = new QScatter3DSeries;
- series4->setMesh(QAbstract3DSeries::MeshBevelCube);
- series4->setMeshSmooth(true);
- m_graph->addSeries(series4);
-
- QScatter3DSeries *series5 = new QScatter3DSeries;
- series5->setMesh(QAbstract3DSeries::MeshSphere);
- m_graph->addSeries(series5);
-
- QScatterDataArray *dataArray = new QScatterDataArray;
- dataArray->resize(itemCount);
- QScatterDataItem *ptrToDataArray = &dataArray->first();
- for (int i = 0; i < itemCount; i++) {
- ptrToDataArray->setPosition(randVector());
- ptrToDataArray++;
- }
- QScatterDataArray *dataArray2 = new QScatterDataArray;
- dataArray2->resize(itemCount);
- ptrToDataArray = &dataArray2->first();
- for (int i = 0; i < itemCount; i++) {
- ptrToDataArray->setPosition(randVector());
- ptrToDataArray++;
- }
- QScatterDataArray *dataArray3 = new QScatterDataArray;
- dataArray3->resize(itemCount);
- ptrToDataArray = &dataArray3->first();
- for (int i = 0; i < itemCount; i++) {
- ptrToDataArray->setPosition(randVector());
- ptrToDataArray++;
- }
- QScatterDataArray *dataArray4 = new QScatterDataArray;
- dataArray4->resize(itemCount);
- ptrToDataArray = &dataArray4->first();
- for (int i = 0; i < itemCount; i++) {
- ptrToDataArray->setPosition(randVector());
- ptrToDataArray++;
- }
- QScatterDataArray *dataArray5 = new QScatterDataArray;
- dataArray5->resize(itemCount);
- ptrToDataArray = &dataArray5->first();
- for (int i = 0; i < itemCount; i++) {
- ptrToDataArray->setPosition(randVector());
- ptrToDataArray++;
- }
-
- m_graph->seriesList().at(0)->dataProxy()->resetArray(dataArray);
- m_graph->seriesList().at(1)->dataProxy()->resetArray(dataArray2);
- m_graph->seriesList().at(2)->dataProxy()->resetArray(dataArray3);
- m_graph->seriesList().at(3)->dataProxy()->resetArray(dataArray4);
- m_graph->seriesList().at(4)->dataProxy()->resetArray(dataArray5);
-}
-
-QVector3D Data::randVector()
-{
- return QVector3D(
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f,
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f,
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f);
-}
diff --git a/examples/datavisualization/draggableaxes/data.h b/examples/datavisualization/draggableaxes/data.h
deleted file mode 100644
index 92118514..00000000
--- a/examples/datavisualization/draggableaxes/data.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef DATA_H
-#define DATA_H
-
-#include "axesinputhandler.h"
-
-#include <QtDataVisualization/q3dscatter.h>
-#include <QtGui/QVector3D>
-
-class Data : public QObject
-{
- Q_OBJECT
-public:
- explicit Data(Q3DScatter *scatter);
- ~Data();
-
- void toggleRanges();
-
-private:
- void addData();
- QVector3D randVector();
-
-private:
- Q3DScatter *m_graph;
- AxesInputHandler *m_inputHandler;
- bool m_autoAdjust;
-};
-
-#endif
diff --git a/examples/datavisualization/draggableaxes/doc/images/draggableaxes-example.png b/examples/datavisualization/draggableaxes/doc/images/draggableaxes-example.png
deleted file mode 100644
index 018694b5..00000000
--- a/examples/datavisualization/draggableaxes/doc/images/draggableaxes-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/draggableaxes/doc/src/draggableaxes.qdoc b/examples/datavisualization/draggableaxes/doc/src/draggableaxes.qdoc
deleted file mode 100644
index d5b74ae7..00000000
--- a/examples/datavisualization/draggableaxes/doc/src/draggableaxes.qdoc
+++ /dev/null
@@ -1,133 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example draggableaxes
- \title Axis Range Dragging With Labels Example
- \ingroup qtdatavisualization_examples
- \brief Implementing a custom input handler to support axis dragging.
- \since QtDataVisualization 1.1
-
- The Axis Range Dragging example shows how to customize the 3D graph controls in a widget
- application to allow changing axis ranges by clicking on an axis label and dragging. This is
- done by implementing a custom input handler to react to selection signals emitted from the
- graph.
-
- \image draggableaxes-example.png
-
- \include examples-run.qdocinc
-
- \section1 Replacing Default Input Handling
-
- The default input handling mechanism is replaced by setting the active input handler of
- Q3DScatter to \c AxesInputHandler that implements the custom behavior:
-
- \snippet draggableaxes/data.cpp 0
-
- \c m_inputHandler was initialized in the constructor:
-
- \snippet draggableaxes/data.cpp 1
-
- We will also need the pointers to the axes, so we will pass them to our input handler too:
-
- \snippet draggableaxes/data.cpp 2
-
- \section1 Extending Mouse Event Handling
-
- First of all, we inherited our input handler from Q3DInputHandler instead of
- QAbstract3DInputHandler. The reason for doing this is to keep all the functionality of the
- default input handling, and to add our own functionality on top of it:
-
- \snippet draggableaxes/axesinputhandler.h 0
-
- We start extending the default functionality by re-implementing some of the mouse events.
- Let's start with \c {mousePressEvent}. We'll just add button pressed flag for left mouse button
- into it, and keep the rest of the default functionality:
-
- \snippet draggableaxes/axesinputhandler.cpp 0
-
- We'll need to modify \c mouseReleaseEvent too to clear the flag and reset the internal state:
-
- \snippet draggableaxes/axesinputhandler.cpp 1
-
- Then we'll modify \c {mouseMoveEvent}. Here we check if the \c m_mousePressed is \c true and
- our internal state is something other than \c StateNormal. If so, we'll set the input positions
- for mouse move distance calculations and call the axis dragging function (see
- \l {Implementing axis dragging} for details):
-
- \snippet draggableaxes/axesinputhandler.cpp 2
-
- We don't need to change the functionality of mouse wheel, so we will not re-implement that.
-
- \section1 Implementing Axis Dragging
-
- First we need to start listening to the selection signal from the graph. We do that in the
- constructor, and connect it to \c handleElementSelected method:
-
- \snippet draggableaxes/axesinputhandler.cpp 3
-
- In \c handleElementSelected we check the type of the selection and set our internal state based on
- it:
-
- \snippet draggableaxes/axesinputhandler.cpp 4
-
- The actual dragging logic is implemented in \c handleAxisDragging method, which we call from
- \c mouseMoveEvent in case the required conditions are met:
-
- \snippet draggableaxes/axesinputhandler.cpp 5
-
- In \c handleAxisDragging we first get the scene orientation from our active camera:
-
- \snippet draggableaxes/axesinputhandler.cpp 6
-
- Then we calculate the modifiers to mouse move direction based on the orientation:
-
- \snippet draggableaxes/axesinputhandler.cpp 7
-
- After that, we calculate the mouse movement, and modify it based on the y rotation of the
- camera:
-
- \snippet draggableaxes/axesinputhandler.cpp 8
-
- And finally apply the moved distance to the correct axis:
-
- \snippet draggableaxes/axesinputhandler.cpp 9
-
- We also have a function for setting the dragging speed:
-
- \snippet draggableaxes/axesinputhandler.h 1
-
- This is needed, as the mouse movement distance is absolute (in screen coordinates) and we
- need to adjust it to the axis range. The larger the value, the slower the dragging will be.
- Note that on this example we do not take scene zoom level into account when determining the
- drag speed, so you'll notice changes in the range adjustment as you change the zoom level.
-
- The modifier could be adjusted automatically based on the axis range and camera zoom level, but
- we'll leave implementing that as an excercise for the reader.
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/draggableaxes/draggableaxes.pro b/examples/datavisualization/draggableaxes/draggableaxes.pro
deleted file mode 100644
index 2f21aee6..00000000
--- a/examples/datavisualization/draggableaxes/draggableaxes.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp \
- data.cpp \
- axesinputhandler.cpp
-HEADERS += data.h \
- axesinputhandler.h
-
-QT += widgets
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/draggableaxes/main.cpp b/examples/datavisualization/draggableaxes/main.cpp
deleted file mode 100644
index 5c7621b0..00000000
--- a/examples/datavisualization/draggableaxes/main.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "data.h"
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QCommandLinkButton>
-#include <QtWidgets/QMessageBox>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QApplication app(argc, argv);
- Q3DScatter *graph = new Q3DScatter();
- QWidget *container = QWidget::createWindowContainer(graph);
-
- if (!graph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- container->setMinimumSize(800, 600);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- QWidget *widget = new QWidget;
- QHBoxLayout *hLayout = new QHBoxLayout(widget);
- QVBoxLayout *vLayout = new QVBoxLayout();
- hLayout->addWidget(container, 1);
- hLayout->addLayout(vLayout);
-
- QCommandLinkButton *rangeButton = new QCommandLinkButton(widget);
- rangeButton->setText(QStringLiteral("Toggle axis ranges"));
- rangeButton->setDescription(QStringLiteral("Switch between automatic axis ranges and preset ranges"));
- rangeButton->setIconSize(QSize(0, 0));
-
- vLayout->addWidget(rangeButton, 1, Qt::AlignTop);
-
- widget->setWindowTitle(QStringLiteral("Input Handling for Axes"));
-
- Data *graphData = new Data(graph);
-
- QObject::connect(rangeButton, &QCommandLinkButton::clicked, graphData, &Data::toggleRanges);
-
- widget->show();
- return app.exec();
-}
diff --git a/examples/datavisualization/graphgallery/CMakeLists.txt b/examples/datavisualization/graphgallery/CMakeLists.txt
new file mode 100644
index 00000000..c66fee25
--- /dev/null
+++ b/examples/datavisualization/graphgallery/CMakeLists.txt
@@ -0,0 +1,75 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+cmake_minimum_required(VERSION 3.16)
+project(graphgallery LANGUAGES CXX)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+set(CMAKE_AUTOUIC ON)
+
+if(NOT DEFINED INSTALL_EXAMPLESDIR)
+ set(INSTALL_EXAMPLESDIR "examples")
+endif()
+
+set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
+
+find_package(Qt6 COMPONENTS Core)
+find_package(Qt6 COMPONENTS Gui)
+find_package(Qt6 COMPONENTS Widgets)
+find_package(Qt6 COMPONENTS DataVisualization)
+
+qt_add_executable(graphgallery
+ main.cpp
+ bargraph.cpp bargraph.h
+ graphmodifier.cpp graphmodifier.h
+ rainfalldata.cpp rainfalldata.h
+ variantbardatamapping.cpp variantbardatamapping.h
+ variantbardataproxy.cpp variantbardataproxy.h
+ variantdataset.cpp variantdataset.h
+ scattergraph.cpp scattergraph.h
+ scatterdatamodifier.cpp scatterdatamodifier.h
+ axesinputhandler.cpp axesinputhandler.h
+ surfacegraph.cpp surfacegraph.h
+ surfacegraphmodifier.cpp surfacegraphmodifier.h
+ custominputhandler.cpp custominputhandler.h
+ highlightseries.cpp highlightseries.h
+ topographicseries.cpp topographicseries.h
+)
+set_target_properties(graphgallery PROPERTIES
+ WIN32_EXECUTABLE TRUE
+ MACOSX_BUNDLE TRUE
+)
+target_link_libraries(graphgallery PUBLIC
+ Qt::Core
+ Qt::Gui
+ Qt::Widgets
+ Qt::DataVisualization
+)
+
+set(graphgallery_resource_files
+ "data/raindata.txt"
+ "data/layer_1.png"
+ "data/layer_2.png"
+ "data/layer_3.png"
+ "data/oilrig.obj"
+ "data/pipe.obj"
+ "data/refinery.obj"
+ "data/maptexture.jpg"
+ "data/topography.png"
+)
+
+qt6_add_resources(graphgallery "graphgallery"
+ PREFIX
+ "/"
+ FILES
+ ${graphgallery_resource_files}
+)
+
+install(TARGETS graphgallery
+ RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
+ BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
+ LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
+)
diff --git a/examples/datavisualization/draggableaxes/axesinputhandler.cpp b/examples/datavisualization/graphgallery/axesinputhandler.cpp
index 5a839503..3292650e 100644
--- a/examples/datavisualization/draggableaxes/axesinputhandler.cpp
+++ b/examples/datavisualization/graphgallery/axesinputhandler.cpp
@@ -1,43 +1,11 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "axesinputhandler.h"
#include <QtCore/qmath.h>
AxesInputHandler::AxesInputHandler(QAbstract3DGraph *graph, QObject *parent) :
- Q3DInputHandler(parent),
- m_mousePressed(false),
- m_state(StateNormal),
- m_axisX(0),
- m_axisZ(0),
- m_axisY(0),
- m_speedModifier(15.0f)
+ Q3DInputHandler(parent)
{
//! [3]
// Connect to the item selection signal from graph
diff --git a/examples/datavisualization/graphgallery/axesinputhandler.h b/examples/datavisualization/graphgallery/axesinputhandler.h
new file mode 100644
index 00000000..bb8432ac
--- /dev/null
+++ b/examples/datavisualization/graphgallery/axesinputhandler.h
@@ -0,0 +1,54 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef AXESINPUTHANDLER_H
+#define AXESINPUTHANDLER_H
+
+#include <QtDataVisualization/q3dinputhandler.h>
+#include <QtDataVisualization/qabstract3dgraph.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+
+//! [0]
+class AxesInputHandler : public Q3DInputHandler
+//! [0]
+{
+ Q_OBJECT
+
+ enum InputState {
+ StateNormal = 0,
+ StateDraggingX,
+ StateDraggingZ,
+ StateDraggingY
+ };
+
+public:
+ explicit AxesInputHandler(QAbstract3DGraph *graph, QObject *parent = 0);
+
+ inline void setAxes(QValue3DAxis *axisX, QValue3DAxis *axisZ, QValue3DAxis *axisY) {
+ m_axisX = axisX;
+ m_axisZ = axisZ;
+ m_axisY = axisY;
+ }
+
+ //! [1]
+ inline void setDragSpeedModifier(float modifier) { m_speedModifier = modifier; }
+ //! [1]
+
+ virtual void mousePressEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos);
+
+private:
+ void handleElementSelected(QAbstract3DGraph::ElementType type);
+ void handleAxisDragging();
+
+private:
+ bool m_mousePressed = false;
+ InputState m_state = StateNormal;
+ QValue3DAxis *m_axisX = nullptr;
+ QValue3DAxis *m_axisZ = nullptr;
+ QValue3DAxis *m_axisY = nullptr;
+ float m_speedModifier = 15.f;
+};
+
+#endif
diff --git a/examples/datavisualization/graphgallery/bargraph.cpp b/examples/datavisualization/graphgallery/bargraph.cpp
new file mode 100644
index 00000000..5873c757
--- /dev/null
+++ b/examples/datavisualization/graphgallery/bargraph.cpp
@@ -0,0 +1,329 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "bargraph.h"
+#include "graphmodifier.h"
+
+#include <QtWidgets/qboxlayout.h>
+#include <QtWidgets/qpushbutton.h>
+#include <QtWidgets/qcheckbox.h>
+#include <QtWidgets/qslider.h>
+#include <QtWidgets/qfontcombobox.h>
+#include <QtWidgets/qlabel.h>
+#include <QtWidgets/qradiobutton.h>
+#include <QtWidgets/qbuttongroup.h>
+#include <QtGui/qfontdatabase.h>
+
+using namespace Qt::StringLiterals;
+
+BarGraph::BarGraph()
+{
+ //! [0]
+ m_barsGraph = new Q3DBars();
+ //! [0]
+}
+
+BarGraph::~BarGraph() = default;
+
+bool BarGraph::initialize(const QSize &minimumGraphSize, const QSize &maximumGraphSize)
+{
+ if (!m_barsGraph->hasContext())
+ return false;
+
+ //! [1]
+ m_barsWidget = new QWidget;
+ auto *hLayout = new QHBoxLayout(m_barsWidget);
+ m_container = QWidget::createWindowContainer(m_barsGraph, m_barsWidget);
+ m_barsGraph->resize(minimumGraphSize);
+ m_container->setMinimumSize(minimumGraphSize);
+ m_container->setMaximumSize(maximumGraphSize);
+ m_container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ m_container->setFocusPolicy(Qt::StrongFocus);
+ hLayout->addWidget(m_container, 1);
+
+ auto *vLayout = new QVBoxLayout();
+ hLayout->addLayout(vLayout);
+ //! [1]
+
+ auto *themeList = new QComboBox(m_barsWidget);
+ themeList->addItem(u"Qt"_s);
+ themeList->addItem(u"Primary Colors"_s);
+ themeList->addItem(u"Digia"_s);
+ themeList->addItem(u"Stone Moss"_s);
+ themeList->addItem(u"Army Blue"_s);
+ themeList->addItem(u"Retro"_s);
+ themeList->addItem(u"Ebony"_s);
+ themeList->addItem(u"Isabelle"_s);
+ themeList->setCurrentIndex(0);
+
+ auto *labelButton = new QPushButton(m_barsWidget);
+ labelButton->setText(u"Change label style"_s);
+
+ auto *smoothCheckBox = new QCheckBox(m_barsWidget);
+ smoothCheckBox->setText(u"Smooth bars"_s);
+ smoothCheckBox->setChecked(false);
+
+ auto *barStyleList = new QComboBox(m_barsWidget);
+ barStyleList->addItem(u"Bar"_s, QAbstract3DSeries::MeshBar);
+ barStyleList->addItem(u"Pyramid"_s, QAbstract3DSeries::MeshPyramid);
+ barStyleList->addItem(u"Cone"_s, QAbstract3DSeries::MeshCone);
+ barStyleList->addItem(u"Cylinder"_s, QAbstract3DSeries::MeshCylinder);
+ barStyleList->addItem(u"Bevel bar"_s, QAbstract3DSeries::MeshBevelBar);
+ barStyleList->addItem(u"Sphere"_s, QAbstract3DSeries::MeshSphere);
+ barStyleList->setCurrentIndex(4);
+
+ auto *cameraButton = new QPushButton(m_barsWidget);
+ cameraButton->setText(u"Change camera preset"_s);
+
+ auto *zoomToSelectedButton = new QPushButton(m_barsWidget);
+ zoomToSelectedButton->setText(u"Zoom to selected bar"_s);
+
+ auto *selectionModeList = new QComboBox(m_barsWidget);
+ selectionModeList->addItem(u"None"_s,
+ int(QAbstract3DGraph::SelectionNone));
+ selectionModeList->addItem(u"Bar"_s,
+ int(QAbstract3DGraph::SelectionItem));
+ selectionModeList->addItem(u"Row"_s,
+ int(QAbstract3DGraph::SelectionRow));
+ selectionModeList->addItem(u"Bar and Row"_s,
+ int(QAbstract3DGraph::SelectionItemAndRow));
+ selectionModeList->addItem(u"Column"_s,
+ int(QAbstract3DGraph::SelectionColumn));
+ selectionModeList->addItem(u"Bar and Column"_s,
+ int(QAbstract3DGraph::SelectionItemAndColumn));
+ selectionModeList->addItem(u"Row and Column"_s,
+ int(QAbstract3DGraph::SelectionRowAndColumn));
+ selectionModeList->addItem(u"Bar, Row and Column"_s,
+ int(QAbstract3DGraph::SelectionItemRowAndColumn));
+ selectionModeList->addItem(u"Slice into Row"_s,
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionRow));
+ selectionModeList->addItem(u"Slice into Row and Item"_s,
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndRow));
+ selectionModeList->addItem(u"Slice into Column"_s,
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionColumn));
+ selectionModeList->addItem(u"Slice into Column and Item"_s,
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndColumn));
+ selectionModeList->addItem(u"Multi: Bar, Row, Col"_s,
+ int(QAbstract3DGraph::SelectionItemRowAndColumn
+ | QAbstract3DGraph::SelectionMultiSeries));
+ selectionModeList->addItem(u"Multi, Slice: Row, Item"_s,
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndRow
+ | QAbstract3DGraph::SelectionMultiSeries));
+ selectionModeList->addItem(u"Multi, Slice: Col, Item"_s,
+ int(QAbstract3DGraph::SelectionSlice | QAbstract3DGraph::SelectionItemAndColumn
+ | QAbstract3DGraph::SelectionMultiSeries));
+ selectionModeList->setCurrentIndex(1);
+
+ auto *backgroundCheckBox = new QCheckBox(m_barsWidget);
+ backgroundCheckBox->setText(u"Show background"_s);
+ backgroundCheckBox->setChecked(false);
+
+ auto *gridCheckBox = new QCheckBox(m_barsWidget);
+ gridCheckBox->setText(u"Show grid"_s);
+ gridCheckBox->setChecked(true);
+
+ auto *seriesCheckBox = new QCheckBox(m_barsWidget);
+ seriesCheckBox->setText(u"Show second series"_s);
+ seriesCheckBox->setChecked(false);
+
+ auto *reverseValueAxisCheckBox = new QCheckBox(m_barsWidget);
+ reverseValueAxisCheckBox->setText(u"Reverse value axis"_s);
+ reverseValueAxisCheckBox->setChecked(false);
+
+ auto *reflectionCheckBox = new QCheckBox(m_barsWidget);
+ reflectionCheckBox->setText(u"Show reflections"_s);
+ reflectionCheckBox->setChecked(false);
+
+ //! [3]
+ auto *rotationSliderX = new QSlider(Qt::Horizontal, m_barsWidget);
+ rotationSliderX->setTickInterval(30);
+ rotationSliderX->setTickPosition(QSlider::TicksBelow);
+ rotationSliderX->setMinimum(-180);
+ rotationSliderX->setValue(0);
+ rotationSliderX->setMaximum(180);
+ //! [3]
+ auto *rotationSliderY = new QSlider(Qt::Horizontal, m_barsWidget);
+ rotationSliderY->setTickInterval(15);
+ rotationSliderY->setTickPosition(QSlider::TicksAbove);
+ rotationSliderY->setMinimum(-90);
+ rotationSliderY->setValue(0);
+ rotationSliderY->setMaximum(90);
+
+ auto *fontSizeSlider = new QSlider(Qt::Horizontal, m_barsWidget);
+ fontSizeSlider->setTickInterval(10);
+ fontSizeSlider->setTickPosition(QSlider::TicksBelow);
+ fontSizeSlider->setMinimum(1);
+ fontSizeSlider->setValue(30);
+ fontSizeSlider->setMaximum(100);
+
+ auto *fontList = new QFontComboBox(m_barsWidget);
+ fontList->setCurrentFont(QFont("Times New Roman"));
+
+ auto *shadowQuality = new QComboBox(m_barsWidget);
+ shadowQuality->addItem(u"None"_s);
+ shadowQuality->addItem(u"Low"_s);
+ shadowQuality->addItem(u"Medium"_s);
+ shadowQuality->addItem(u"High"_s);
+ shadowQuality->addItem(u"Low Soft"_s);
+ shadowQuality->addItem(u"Medium Soft"_s);
+ shadowQuality->addItem(u"High Soft"_s);
+ shadowQuality->setCurrentIndex(5);
+
+ auto *rangeList = new QComboBox(m_barsWidget);
+ rangeList->addItem(u"2015"_s);
+ rangeList->addItem(u"2016"_s);
+ rangeList->addItem(u"2017"_s);
+ rangeList->addItem(u"2018"_s);
+ rangeList->addItem(u"2019"_s);
+ rangeList->addItem(u"2020"_s);
+ rangeList->addItem(u"2021"_s);
+ rangeList->addItem(u"2022"_s);
+ rangeList->addItem(u"All"_s);
+ rangeList->setCurrentIndex(8);
+
+ auto *axisTitlesVisibleCB = new QCheckBox(m_barsWidget);
+ axisTitlesVisibleCB->setText(u"Axis titles visible"_s);
+ axisTitlesVisibleCB->setChecked(true);
+
+ auto *axisTitlesFixedCB = new QCheckBox(m_barsWidget);
+ axisTitlesFixedCB->setText(u"Axis titles fixed"_s);
+ axisTitlesFixedCB->setChecked(true);
+
+ auto *axisLabelRotationSlider = new QSlider(Qt::Horizontal, m_barsWidget);
+ axisLabelRotationSlider->setTickInterval(10);
+ axisLabelRotationSlider->setTickPosition(QSlider::TicksBelow);
+ axisLabelRotationSlider->setMinimum(0);
+ axisLabelRotationSlider->setValue(30);
+ axisLabelRotationSlider->setMaximum(90);
+
+ auto *modeGroup = new QButtonGroup(m_barsWidget);
+ auto *modeWeather = new QRadioButton(u"Temperature Data"_s, m_barsWidget);
+ modeWeather->setChecked(true);
+ auto *modeCustomProxy = new QRadioButton(u"Custom Proxy Data"_s, m_barsWidget);
+ modeGroup->addButton(modeWeather);
+ modeGroup->addButton(modeCustomProxy);
+
+ //! [4]
+ vLayout->addWidget(new QLabel(u"Rotate horizontally"_s));
+ vLayout->addWidget(rotationSliderX, 0, Qt::AlignTop);
+ //! [4]
+ vLayout->addWidget(new QLabel(u"Rotate vertically"_s));
+ vLayout->addWidget(rotationSliderY, 0, Qt::AlignTop);
+ vLayout->addWidget(labelButton, 0, Qt::AlignTop);
+ vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
+ vLayout->addWidget(zoomToSelectedButton, 0, Qt::AlignTop);
+ vLayout->addWidget(backgroundCheckBox);
+ vLayout->addWidget(gridCheckBox);
+ vLayout->addWidget(smoothCheckBox);
+ vLayout->addWidget(reflectionCheckBox);
+ vLayout->addWidget(seriesCheckBox);
+ vLayout->addWidget(reverseValueAxisCheckBox);
+ vLayout->addWidget(axisTitlesVisibleCB);
+ vLayout->addWidget(axisTitlesFixedCB);
+ vLayout->addWidget(new QLabel(u"Show year"_s));
+ vLayout->addWidget(rangeList);
+ vLayout->addWidget(new QLabel(u"Change bar style"_s));
+ vLayout->addWidget(barStyleList);
+ vLayout->addWidget(new QLabel(u"Change selection mode"_s));
+ vLayout->addWidget(selectionModeList);
+ vLayout->addWidget(new QLabel(u"Change theme"_s));
+ vLayout->addWidget(themeList);
+ vLayout->addWidget(new QLabel(u"Adjust shadow quality"_s));
+ vLayout->addWidget(shadowQuality);
+ vLayout->addWidget(new QLabel(u"Change font"_s));
+ vLayout->addWidget(fontList);
+ vLayout->addWidget(new QLabel(u"Adjust font size"_s));
+ vLayout->addWidget(fontSizeSlider);
+ vLayout->addWidget(new QLabel(u"Axis label rotation"_s));
+ vLayout->addWidget(axisLabelRotationSlider, 0, Qt::AlignTop);
+ vLayout->addWidget(modeWeather, 0, Qt::AlignTop);
+ vLayout->addWidget(modeCustomProxy, 1, Qt::AlignTop);
+
+ //! [2]
+ auto *modifier = new GraphModifier(m_barsGraph, this);
+ //! [2]
+
+ //! [5]
+ QObject::connect(rotationSliderX, &QSlider::valueChanged, modifier, &GraphModifier::rotateX);
+ //! [5]
+ QObject::connect(rotationSliderY, &QSlider::valueChanged, modifier, &GraphModifier::rotateY);
+
+ QObject::connect(labelButton, &QPushButton::clicked, modifier,
+ &GraphModifier::changeLabelBackground);
+ QObject::connect(cameraButton, &QPushButton::clicked, modifier,
+ &GraphModifier::changePresetCamera);
+ QObject::connect(zoomToSelectedButton, &QPushButton::clicked, modifier,
+ &GraphModifier::zoomToSelectedBar);
+
+ QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setBackgroundEnabled);
+ QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setGridEnabled);
+ QObject::connect(smoothCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setSmoothBars);
+ QObject::connect(seriesCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setSeriesVisibility);
+ QObject::connect(reverseValueAxisCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setReverseValueAxis);
+ QObject::connect(reflectionCheckBox, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setReflection);
+
+ QObject::connect(modifier, &GraphModifier::backgroundEnabledChanged,
+ backgroundCheckBox, &QCheckBox::setChecked);
+ QObject::connect(modifier, &GraphModifier::gridEnabledChanged,
+ gridCheckBox, &QCheckBox::setChecked);
+
+ QObject::connect(rangeList, &QComboBox::currentIndexChanged, modifier,
+ &GraphModifier::changeRange);
+
+ QObject::connect(barStyleList, &QComboBox::currentIndexChanged, modifier,
+ &GraphModifier::changeStyle);
+
+ QObject::connect(selectionModeList, &QComboBox::currentIndexChanged, modifier,
+ &GraphModifier::changeSelectionMode);
+
+ QObject::connect(themeList, &QComboBox::currentIndexChanged, modifier,
+ &GraphModifier::changeTheme);
+
+ QObject::connect(shadowQuality, &QComboBox::currentIndexChanged, modifier,
+ &GraphModifier::changeShadowQuality);
+
+ QObject::connect(modifier, &GraphModifier::shadowQualityChanged, shadowQuality,
+ &QComboBox::setCurrentIndex);
+ QObject::connect(m_barsGraph, &Q3DBars::shadowQualityChanged, modifier,
+ &GraphModifier::shadowQualityUpdatedByVisual);
+
+ QObject::connect(fontSizeSlider, &QSlider::valueChanged, modifier,
+ &GraphModifier::changeFontSize);
+ QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier,
+ &GraphModifier::changeFont);
+
+ QObject::connect(modifier, &GraphModifier::fontSizeChanged, fontSizeSlider,
+ &QSlider::setValue);
+ QObject::connect(modifier, &GraphModifier::fontChanged, fontList,
+ &QFontComboBox::setCurrentFont);
+
+ QObject::connect(axisTitlesVisibleCB, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setAxisTitleVisibility);
+ QObject::connect(axisTitlesFixedCB, &QCheckBox::stateChanged, modifier,
+ &GraphModifier::setAxisTitleFixed);
+ QObject::connect(axisLabelRotationSlider, &QSlider::valueChanged, modifier,
+ &GraphModifier::changeLabelRotation);
+
+ QObject::connect(modeWeather, &QRadioButton::toggled, modifier,
+ &GraphModifier::setDataModeToWeather);
+ QObject::connect(modeCustomProxy, &QRadioButton::toggled, modifier,
+ &GraphModifier::setDataModeToCustom);
+ QObject::connect(modeWeather, &QRadioButton::toggled, seriesCheckBox,
+ &QCheckBox::setEnabled);
+ QObject::connect(modeWeather, &QRadioButton::toggled, rangeList,
+ &QComboBox::setEnabled);
+ QObject::connect(modeWeather, &QRadioButton::toggled, axisTitlesVisibleCB,
+ &QCheckBox::setEnabled);
+ QObject::connect(modeWeather, &QRadioButton::toggled, axisTitlesFixedCB,
+ &QCheckBox::setEnabled);
+ QObject::connect(modeWeather, &QRadioButton::toggled, axisLabelRotationSlider,
+ &QSlider::setEnabled);
+
+ return true;
+}
diff --git a/examples/datavisualization/graphgallery/bargraph.h b/examples/datavisualization/graphgallery/bargraph.h
new file mode 100644
index 00000000..004c14eb
--- /dev/null
+++ b/examples/datavisualization/graphgallery/bargraph.h
@@ -0,0 +1,26 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef BARGRAPH_H
+#define BARGRAPH_H
+
+#include <QtDataVisualization/q3dbars.h>
+#include <QtCore/qobject.h>
+
+class BarGraph : public QObject
+{
+ Q_OBJECT
+public:
+ BarGraph();
+ ~BarGraph();
+
+ bool initialize(const QSize &minimumGraphSize, const QSize &maximumGraphSize);
+ QWidget *barsWidget() { return m_barsWidget; }
+
+private:
+ Q3DBars *m_barsGraph = nullptr;
+ QWidget *m_container = nullptr;
+ QWidget *m_barsWidget = nullptr;
+};
+
+#endif
diff --git a/examples/datavisualization/texturesurface/custominputhandler.cpp b/examples/datavisualization/graphgallery/custominputhandler.cpp
index e8e693a0..f9f06871 100644
--- a/examples/datavisualization/texturesurface/custominputhandler.cpp
+++ b/examples/datavisualization/graphgallery/custominputhandler.cpp
@@ -1,45 +1,13 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "custominputhandler.h"
-#include <QtDataVisualization/Q3DCamera>
+#include <QtDataVisualization/q3dcamera.h>
#include <QtCore/qmath.h>
CustomInputHandler::CustomInputHandler(QAbstract3DGraph *graph, QObject *parent) :
- Q3DInputHandler(parent),
- m_highlight(0),
- m_mousePressed(false),
- m_state(StateNormal),
- m_axisX(0),
- m_axisZ(0),
- m_speedModifier(20.0f)
+ Q3DInputHandler(parent)
{
// Connect to the item selection signal from graph
connect(graph, &QAbstract3DGraph::selectedElementChanged, this,
@@ -69,7 +37,7 @@ void CustomInputHandler::wheelEvent(QWheelEvent *event)
float y = (m_axisXMaxValue - m_axisXMinValue) * m_aspectRatio;
m_axisX->setRange(m_axisXMinValue, m_axisXMaxValue);
- m_axisY->setRange(100.0f, y);
+ m_axisY->setRange(100.f, y);
m_axisZ->setRange(m_axisZMinValue, m_axisZMaxValue);
}
//! [1]
@@ -110,7 +78,7 @@ void CustomInputHandler::handleElementSelected(QAbstract3DGraph::ElementType typ
void CustomInputHandler::handleAxisDragging()
{
- float distance = 0.0f;
+ float distance = 0.f;
// Get scene orientation from active camera
float xRotation = scene()->activeCamera()->xRotation();
@@ -126,7 +94,7 @@ void CustomInputHandler::handleAxisDragging()
// Adjust axes
switch (m_state) {
-//! [0]
+ //! [0]
case StateDraggingX:
distance = (move.x() * xMulX - move.y() * xMulY) * m_speedModifier;
m_axisXMinValue -= distance;
@@ -143,7 +111,7 @@ void CustomInputHandler::handleAxisDragging()
}
m_axisX->setRange(m_axisXMinValue, m_axisXMaxValue);
break;
-//! [0]
+ //! [0]
case StateDraggingZ:
distance = (move.x() * zMulX + move.y() * zMulY) * m_speedModifier;
m_axisZMinValue += distance;
@@ -167,18 +135,18 @@ void CustomInputHandler::handleAxisDragging()
void CustomInputHandler::checkConstraints()
{
-//! [2]
+ //! [2]
if (m_axisXMinValue < m_areaMinValue)
m_axisXMinValue = m_areaMinValue;
if (m_axisXMaxValue > m_areaMaxValue)
m_axisXMaxValue = m_areaMaxValue;
// Don't allow too much zoom in
if ((m_axisXMaxValue - m_axisXMinValue) < m_axisXMinRange) {
- float adjust = (m_axisXMinRange - (m_axisXMaxValue - m_axisXMinValue)) / 2.0f;
+ float adjust = (m_axisXMinRange - (m_axisXMaxValue - m_axisXMinValue)) / 2.f;
m_axisXMinValue -= adjust;
m_axisXMaxValue += adjust;
}
-//! [2]
+ //! [2]
if (m_axisZMinValue < m_areaMinValue)
m_axisZMinValue = m_areaMinValue;
@@ -186,7 +154,7 @@ void CustomInputHandler::checkConstraints()
m_axisZMaxValue = m_areaMaxValue;
// Don't allow too much zoom in
if ((m_axisZMaxValue - m_axisZMinValue) < m_axisZMinRange) {
- float adjust = (m_axisZMinRange - (m_axisZMaxValue - m_axisZMinValue)) / 2.0f;
+ float adjust = (m_axisZMinRange - (m_axisZMaxValue - m_axisZMinValue)) / 2.f;
m_axisZMinValue -= adjust;
m_axisZMaxValue += adjust;
}
diff --git a/examples/datavisualization/graphgallery/custominputhandler.h b/examples/datavisualization/graphgallery/custominputhandler.h
new file mode 100644
index 00000000..a28b5851
--- /dev/null
+++ b/examples/datavisualization/graphgallery/custominputhandler.h
@@ -0,0 +1,76 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef CUSTOMINPUTHANDLER_H
+#define CUSTOMINPUTHANDLER_H
+
+#include "highlightseries.h"
+
+#include <QtDataVisualization/q3dinputhandler.h>
+#include <QtDataVisualization/qabstract3dgraph.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+
+class CustomInputHandler : public Q3DInputHandler
+{
+ Q_OBJECT
+
+ enum InputState {
+ StateNormal = 0,
+ StateDraggingX,
+ StateDraggingZ,
+ StateDraggingY
+ };
+
+public:
+ explicit CustomInputHandler(QAbstract3DGraph *graph, QObject *parent = 0);
+
+ inline void setLimits(float min, float max, float minRange) {
+ m_areaMinValue = min;
+ m_areaMaxValue = max;
+ m_axisXMinValue = m_areaMinValue;
+ m_axisXMaxValue = m_areaMaxValue;
+ m_axisZMinValue = m_areaMinValue;
+ m_axisZMaxValue = m_areaMaxValue;
+ m_axisXMinRange = minRange;
+ m_axisZMinRange = minRange;
+ }
+ inline void setAxes(QValue3DAxis *axisX, QValue3DAxis *axisY, QValue3DAxis *axisZ) {
+ m_axisX = axisX;
+ m_axisY = axisY;
+ m_axisZ = axisZ;
+ }
+ inline void setAspectRatio(float ratio) { m_aspectRatio = ratio; }
+ inline void setHighlightSeries(HighlightSeries *series) { m_highlight = series; }
+ inline void setDragSpeedModifier(float modifier) { m_speedModifier = modifier; }
+
+protected:
+ virtual void mousePressEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void wheelEvent(QWheelEvent *event);
+
+private:
+ void handleElementSelected(QAbstract3DGraph::ElementType type);
+ void handleAxisDragging();
+ void checkConstraints();
+
+private:
+ HighlightSeries *m_highlight = nullptr;
+ bool m_mousePressed = false;
+ InputState m_state = StateNormal;
+ QValue3DAxis *m_axisX = nullptr;
+ QValue3DAxis *m_axisY = nullptr;
+ QValue3DAxis *m_axisZ = nullptr;
+ float m_speedModifier = 20.f;
+ float m_aspectRatio = 0.f;
+ float m_axisXMinValue = 0.f;
+ float m_axisXMaxValue = 0.f;
+ float m_axisXMinRange = 0.f;
+ float m_axisZMinValue = 0.f;
+ float m_axisZMaxValue = 0.f;
+ float m_axisZMinRange = 0.f;
+ float m_areaMinValue = 0.f;
+ float m_areaMaxValue = 0.f;
+};
+
+#endif
diff --git a/examples/datavisualization/customitems/layer_1.png b/examples/datavisualization/graphgallery/data/layer_1.png
index 9138c710..9138c710 100644
--- a/examples/datavisualization/customitems/layer_1.png
+++ b/examples/datavisualization/graphgallery/data/layer_1.png
Binary files differ
diff --git a/examples/datavisualization/customitems/layer_2.png b/examples/datavisualization/graphgallery/data/layer_2.png
index 61631ae8..61631ae8 100644
--- a/examples/datavisualization/customitems/layer_2.png
+++ b/examples/datavisualization/graphgallery/data/layer_2.png
Binary files differ
diff --git a/examples/datavisualization/customitems/layer_3.png b/examples/datavisualization/graphgallery/data/layer_3.png
index 066ffbe7..066ffbe7 100644
--- a/examples/datavisualization/customitems/layer_3.png
+++ b/examples/datavisualization/graphgallery/data/layer_3.png
Binary files differ
diff --git a/examples/datavisualization/texturesurface/license.txt b/examples/datavisualization/graphgallery/data/license.txt
index 749daf31..749daf31 100644
--- a/examples/datavisualization/texturesurface/license.txt
+++ b/examples/datavisualization/graphgallery/data/license.txt
diff --git a/examples/datavisualization/texturesurface/maptexture.jpg b/examples/datavisualization/graphgallery/data/maptexture.jpg
index ae5d66eb..ae5d66eb 100644
--- a/examples/datavisualization/texturesurface/maptexture.jpg
+++ b/examples/datavisualization/graphgallery/data/maptexture.jpg
Binary files differ
diff --git a/examples/datavisualization/customitems/oilrig.obj b/examples/datavisualization/graphgallery/data/oilrig.obj
index c3b6ea57..c3b6ea57 100644
--- a/examples/datavisualization/customitems/oilrig.obj
+++ b/examples/datavisualization/graphgallery/data/oilrig.obj
diff --git a/examples/datavisualization/customitems/pipe.obj b/examples/datavisualization/graphgallery/data/pipe.obj
index 6ccbb286..6ccbb286 100644
--- a/examples/datavisualization/customitems/pipe.obj
+++ b/examples/datavisualization/graphgallery/data/pipe.obj
diff --git a/examples/datavisualization/graphgallery/data/raindata.txt b/examples/datavisualization/graphgallery/data/raindata.txt
new file mode 100644
index 00000000..d9558921
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/raindata.txt
@@ -0,0 +1,158 @@
+# Rainfall per month from 2010 to 2022 in Northern Finland (Oulu)
+# Format: year, month, rainfall
+2010,1, 0,
+2010,2, 3.4,
+2010,3, 52,
+2010,4, 33.8,
+2010,5, 45.6,
+2010,6, 43.8,
+2010,7, 104.6,
+2010,8, 105.4,
+2010,9, 107.2,
+2010,10,38.6,
+2010,11,17.8,
+2010,12,0,
+2011,1, 8.2,
+2011,2, 1.6,
+2011,3, 27.4,
+2011,4, 15.8,
+2011,5, 57.6,
+2011,6, 85.2,
+2011,7, 127,
+2011,8, 72.2,
+2011,9, 82.2,
+2011,10,62.4,
+2011,11,31.6,
+2011,12,53.8,
+2012,1, 0,
+2012,2, 5,
+2012,3, 32.4,
+2012,4, 57.6,
+2012,5, 71.4,
+2012,6, 60.8,
+2012,7, 109,
+2012,8, 43.6,
+2012,9, 79.4,
+2012,10,117.2,
+2012,11,59,
+2012,12,0.2,
+2013,1, 28,
+2013,2, 19,
+2013,3, 0,
+2013,4, 37.6,
+2013,5, 44.2,
+2013,6, 104.8,
+2013,7, 84.2,
+2013,8, 57.2,
+2013,9, 37.2,
+2013,10,64.6,
+2013,11,77.8,
+2013,12,92.8,
+2014,1, 23.8,
+2014,2, 23.6,
+2014,3, 15.4,
+2014,4, 13.2,
+2014,5, 36.4,
+2014,6, 26.4,
+2014,7, 95.8,
+2014,8, 81.8,
+2014,9, 13.8,
+2014,10,94.6,
+2014,11,44.6,
+2014,12,31,
+2015,1, 37.4,
+2015,2, 21,
+2015,3, 42,
+2015,4, 8.8,
+2015,5, 82.4,
+2015,6, 150,
+2015,7, 56.8,
+2015,8, 67.2,
+2015,9, 131.2,
+2015,10,38.4,
+2015,11,83.4,
+2015,12,47.8,
+2016,1, 12.4,
+2016,2, 34.8,
+2016,3, 29,
+2016,4, 40.4,
+2016,5, 32.4,
+2016,6, 80.2,
+2016,7, 102.6,
+2016,8, 95.6,
+2016,9, 40.2,
+2016,10,7.8,
+2016,11,39.6,
+2016,12,8.8,
+2017,1, 9.4,
+2017,2, 6.6,
+2017,3, 29,
+2017,4, 46.2,
+2017,5, 43.2,
+2017,6, 25.2,
+2017,7, 72.4,
+2017,8, 58.8,
+2017,9, 68.8,
+2017,10,45.8,
+2017,11,36.8,
+2017,12,29.6,
+2018,1, 19.8,
+2018,2, 0.8,
+2018,3, 4,
+2018,4, 23.2,
+2018,5, 13.2,
+2018,6, 62.8,
+2018,7, 33,
+2018,8, 96.6,
+2018,9, 72.6,
+2018,10,48.8,
+2018,11,31.8,
+2018,12,12.8,
+2019,1, 0.2,
+2019,2, 24.8,
+2019,3, 32,
+2019,4, 8.8,
+2019,5, 71.4,
+2019,6, 65.8,
+2019,7, 17.6,
+2019,8, 90,
+2019,9, 50,
+2019,10,77,
+2019,11,27,
+2019,12,43.2,
+2020,1, 28.8,
+2020,2, 45,
+2020,3, 18.6,
+2020,4, 13,
+2020,5, 30.8,
+2020,6, 21.4,
+2020,7, 163.6,
+2020,8, 12,
+2020,9, 102.4,
+2020,10,133.2,
+2020,11,69.8,
+2020,12,40.6,
+2021,1, 0.4,
+2021,2, 21.6,
+2021,3, 24,
+2021,4, 51.4,
+2021,5, 76.4,
+2021,6, 29.2,
+2021,7, 36.4,
+2021,8, 116,
+2021,9, 72.4,
+2021,10,93.4,
+2021,11,21,
+2021,12,10.2,
+2022,1, 8.6,
+2022,2, 6.6,
+2022,3, 5.2,
+2022,4, 15.2,
+2022,5, 37.6,
+2022,6, 45,
+2022,7, 67.4,
+2022,8, 161.6,
+2022,9, 22.8,
+2022,10,75.2,
+2022,11,21.8,
+2022,12,0.2
diff --git a/examples/datavisualization/customitems/refinery.obj b/examples/datavisualization/graphgallery/data/refinery.obj
index ed90c361..ed90c361 100644
--- a/examples/datavisualization/customitems/refinery.obj
+++ b/examples/datavisualization/graphgallery/data/refinery.obj
diff --git a/examples/datavisualization/texturesurface/topography.png b/examples/datavisualization/graphgallery/data/topography.png
index 9349cdb3..9349cdb3 100644
--- a/examples/datavisualization/texturesurface/topography.png
+++ b/examples/datavisualization/graphgallery/data/topography.png
Binary files differ
diff --git a/examples/datavisualization/graphgallery/doc/images/graphgallery-example.png b/examples/datavisualization/graphgallery/doc/images/graphgallery-example.png
new file mode 100644
index 00000000..f3320c8e
--- /dev/null
+++ b/examples/datavisualization/graphgallery/doc/images/graphgallery-example.png
Binary files differ
diff --git a/examples/datavisualization/graphgallery/doc/src/graphgallery.qdoc b/examples/datavisualization/graphgallery/doc/src/graphgallery.qdoc
new file mode 100644
index 00000000..ff7761d2
--- /dev/null
+++ b/examples/datavisualization/graphgallery/doc/src/graphgallery.qdoc
@@ -0,0 +1,705 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
+
+/*!
+ \example graphgallery
+ \meta tags {DataVisualization, Q3DBars, Bar Graph, Custom Proxy, Q3DScatter, Scatter Graph, Custom Input Handler, Q3DSurface, Surface Graph, QCustom3DItem, Textured Surface}
+ \title Graph Gallery
+ \ingroup qtdatavisualization_examples
+ \brief Gallery of Bar, Scatter, and Surface graphs.
+
+ \e {Graph Gallery} demonstrates all three graph types and some of their special features.
+ The graphs have their own tabs in the application.
+
+ \image graphgallery-example.png
+
+ \include examples-run.qdocinc
+
+ \section1 Bar Graph
+
+ In the \uicontrol {Bar Graph} tab, create a 3D bar graph using Q3DBars and combine the use of
+ widgets to adjust various bar graph qualities. The example shows how to:
+
+ \list
+ \li Create an application with Q3DBars and some widgets
+ \li Use QBar3DSeries and QBarDataProxy to set data to the graph
+ \li Adjust some graph and series properties using widget controls
+ \li Select a row or a column by clicking an axis label
+ \li Create a custom proxy to use with Q3DBars
+ \endlist
+
+ For information about interacting with the graph, see
+ \l{Qt Data Visualization Interacting with Data}{this page}.
+
+ \section2 Creating the Application
+
+ First, in \c{bargraph.cpp}, instantiate Q3DBars:
+
+ \snippet graphgallery/bargraph.cpp 0
+
+ Then, create the widget, and horizontal and vertical layouts.
+
+ The graph is embedded in a window container using
+ QWidget::createWindowContainer(). This is required because all data
+ visualization graph classes (Q3DBars, Q3DScatter, Q3DSurface) inherit
+ QWindow. This is the only way to use a class inheriting QWindow as a widget.
+
+ Add the graph and the vertical layout to the
+ horizontal one:
+
+ \snippet graphgallery/bargraph.cpp 1
+
+ Next, create another class to handle the data addition and other interaction with the
+ graph:
+
+ \snippet graphgallery/bargraph.cpp 2
+
+ \section2 Setting up the Bar Graph
+
+ Set up the graph in the constructor of the \c GraphModifier class:
+
+ \snippet graphgallery/graphmodifier.cpp 0
+
+ First, create the axes and the series into member variables to support changing them easily:
+
+ \snippet graphgallery/graphmodifier.cpp 1
+
+ Then, set some visual qualities for the graph:
+
+ \snippet graphgallery/graphmodifier.cpp 2
+
+ Set up the axes and make them the active axes of the graph:
+
+ \snippet graphgallery/graphmodifier.cpp 3
+
+ Give axis labels a small autorotation angle with setLabelAutoRotation() to make them orient
+ slightly toward the camera. This improves axis label readability at extreme camera angles.
+
+ Next, initialize the visual properties of the series. Note that the second series is initially
+ not visible:
+
+ \snippet graphgallery/graphmodifier.cpp 4
+
+ Add the series to the graph:
+
+ \snippet graphgallery/graphmodifier.cpp 5
+
+ Finally, set the camera angle by calling the same method the camera angle change button
+ in the UI uses to cycle through various camera angles:
+
+ \snippet graphgallery/graphmodifier.cpp 6
+
+ The camera is controlled via the scene object of the graph:
+
+ \snippet graphgallery/graphmodifier.cpp 7
+
+ For more information about using scene and cameras, see Q3DScene and Q3DCamera.
+
+ \section2 Adding Data to the Graph
+
+ At the end of the constructor, call a method that sets up the data:
+
+ \snippet graphgallery/graphmodifier.cpp 8
+
+ This method adds data to the proxies of the two series:
+
+ \snippet graphgallery/graphmodifier.cpp 9a
+ \dots 0
+ \snippet graphgallery/graphmodifier.cpp 9b
+
+ \section2 Using Widgets to Control the Graph
+
+ Continue by adding some widgets in \c{bargraph.cpp}. Add a slider:
+
+ \snippet graphgallery/bargraph.cpp 3
+
+ Use the slider to rotate the graph instead of just using a mouse or touch. Add it to the
+ vertical layout:
+
+ \snippet graphgallery/bargraph.cpp 4
+
+ Then, connect it to a method in \c GraphModifier:
+
+ \snippet graphgallery/bargraph.cpp 5
+
+ Create a slot in \c GraphModifier for the signal connection. The camera is controlled via the
+ scene object. This time, specify the actual camera position along the orbit around the center
+ point, instead of specifying a preset camera angle:
+
+ \snippet graphgallery/graphmodifier.cpp 10
+
+ You can now use the slider to rotate the graph.
+
+ Add more widgets to the vertical layout to control:
+
+ \list
+ \li Graph rotation
+ \li Label style
+ \li Camera preset
+ \li Background visibility
+ \li Grid visibility
+ \li Bar shading smoothness
+ \li Visibility of the second bar series
+ \li Value axis direction
+ \li Axis title visibility and rotation
+ \li Data range to be shown
+ \li Bar style
+ \li Selection mode
+ \li Theme
+ \li Shadow quality
+ \li Font
+ \li Font size
+ \li Axis label rotation
+ \li Data mode
+ \endlist
+
+ Some widget controls are intentionally disabled when in the \uicontrol {Custom Proxy Data}
+ data mode.
+
+ \section2 Selecting a Row or Column by Clicking an Axis Label
+
+ Selection by axis label is default functionality for bar graphs. As an example, you can select
+ rows by clicking an axis label in the following way:
+
+ \list 1
+ \li Change selection mode to \c SelectionRow
+ \li Click a year label
+ \li The row with the clicked year is selected
+ \endlist
+
+ The same method works with \c SelectionSlice and \c SelectionItem flags, as long as
+ either \c SelectionRow or \c SelectionColumn is set as well.
+
+ \section2 Zooming to Selection
+
+ As an example of adjusting the camera target, implement an animation of zooming to
+ selection via a button press. Animation initializations are done in the constructor:
+
+ \snippet graphgallery/graphmodifier.cpp 11
+
+ Function \c{GraphModifier::zoomToSelectedBar()} contains the zooming functionality.
+ QPropertyAnimation \c m_animationCameraTarget targets Q3DCamera::target property,
+ which takes a value normalized to the range (-1, 1).
+
+ Figure out where the selected bar is relative to axes, and use that as the end value for
+ \c{m_animationCameraTarget}:
+
+ \snippet graphgallery/graphmodifier.cpp 12
+ \dots 0
+ \snippet graphgallery/graphmodifier.cpp 13
+
+ Then, rotate the camera so that it always points approximately to the center of
+ the graph at the end of the animation:
+
+ \snippet graphgallery/graphmodifier.cpp 14
+
+ \section2 Custom Proxy for Data
+
+ By toggling \uicontrol {Custom Proxy Data} data mode on, a custom dataset and the corresponding
+ proxy are taken into use.
+
+ Define a simple flexible data set, \c{VariantDataSet}, where each data item is
+ a variant list. Each item can have multiple values, identified by their index in
+ the list. In this case, the data set is storing monthly rainfall data, where the value in
+ index zero is the year, the value in index one is the month, and the value in index two is
+ the amount of rainfall in that month.
+
+ The custom proxy is similar to itemmodel-based proxies provided by Qt Data Visualization, and
+ it requires mapping to interpret the data.
+
+ \section3 VariantDataSet
+
+ Define the data items as QVariantList objects. Add functionality for clearing the data set and
+ querying for a reference to the data contained in the set. Also, add signals to be emitted when
+ data is added or the set is cleared:
+
+ \snippet graphgallery/variantdataset.h 0
+ \dots 0
+ \codeline
+ \snippet graphgallery/variantdataset.h 1
+
+ \section3 VariantBarDataProxy
+
+ Subclass \c VariantBarDataProxy from QBarDataProxy and provide a simple API of getters and
+ setters for the data set and the mapping:
+
+ \snippet graphgallery/variantbardataproxy.h 0
+ \dots 0
+ \codeline
+ \snippet graphgallery/variantbardataproxy.h 1
+
+ The proxy listens for the changes in the data set and the mapping, and resolves the data set
+ if any changes are detected. This is not a particularly efficient implementation, as any change
+ will cause re-resolving of the entire data set, but that is not an issue for this example.
+
+ In \c resolveDataSet() method, sort the variant data values into rows and columns based on the
+ mapping. This is very similar to how QItemModelBarDataProxy handles mapping, except you use
+ list indexes instead of item model roles here. Once the values are sorted, generate
+ \c QBarDataArray out of them, and call the \c resetArray() method in the parent class:
+
+ \snippet graphgallery/variantbardataproxy.cpp 0
+
+ \section3 VariantBarDataMapping
+
+ Store the mapping information between \c VariantDataSet data item indexes and rows, columns,
+ and values of \c QBarDataArray in \c VariantBarDataMapping. It contains the lists of rows and
+ columns to be included in the resolved data:
+
+ \snippet graphgallery/variantbardatamapping.h 0
+ \dots 0
+ \codeline
+ \snippet graphgallery/variantbardatamapping.h 1
+ \dots 0
+ \codeline
+ \snippet graphgallery/variantbardatamapping.h 2
+ \dots 0
+ \codeline
+ \snippet graphgallery/variantbardatamapping.h 3
+
+ The primary way to use a \c VariantBarDataMapping object is to give the mappings in the
+ constructor, though you can use the \c remap() method to set them later, either individually or
+ all together. Emit a signal if mapping changes. The outcome is a simplified version of the
+ mapping functionality of QItemModelBarDataProxy, adapted to work with variant lists instead of
+ item models.
+
+ \section3 RainfallData
+
+ Handle the setup of QBar3DSeries with the custom proxy in the \c RainfallData class:
+
+ \snippet graphgallery/rainfalldata.cpp 0
+
+ Populate the variant data set in the \c addDataSet() method:
+
+ \snippet graphgallery/rainfalldata.cpp 1
+ \dots
+
+ Add the data set to the custom proxy and set the mapping:
+
+ \snippet graphgallery/rainfalldata.cpp 2
+
+ Finally, add a function for getting the created series for displaying:
+
+ \snippet graphgallery/rainfalldata.h 0
+
+ \section1 Scatter Graph
+
+ In the \uicontrol {Scatter Graph} tab, create a 3D scatter graph using Q3DScatter.
+ The example shows how to:
+
+ \list
+ \li Set up Q3DScatter graph
+ \li Use QScatterDataProxy to set data to the graph
+ \li Create a custom input handler by extending Q3DInputHandler
+ \endlist
+
+ For basic application creation, see \l {Bar Graph}.
+
+ \section2 Setting up the Scatter Graph
+
+ First, set up some visual qualities for the graph in the constructor of the
+ \c ScatterDataModifier:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 0
+
+ None of these are mandatory, but are used to override graph defaults. You can try how it looks
+ with the preset defaults by commenting out the block above.
+
+ Next, create a QScatterDataProxy and the associated QScatter3DSeries. Set a custom label format
+ and mesh smoothing for the series and add it to the graph:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 1
+
+ \section2 Adding Scatter Data
+
+ The last thing to do in the \c ScatterDataModifier constructor is to add data to the graph:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 2
+
+ The actual data addition is done in \c addData() method. First, configure the axes:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 3
+
+ You could do this also in the constructor of \c {ScatterDataModifier}. Doing it here
+ keeps the constructor simpler and the axes' configuration near the data.
+
+ Next, create a data array and populate it:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 4
+ \dots
+ \snippet graphgallery/scatterdatamodifier.cpp 5
+
+ Finally, tell the proxy to start using the data we gave it:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 6
+
+ Now, the graph has the data and is ready for use. For information about adding widgets
+ to control the graph, see \l {Using Widgets to Control the Graph}.
+
+ \section2 Replacing Default Input Handling
+
+ Initialize \c m_inputHandler in the constructor with a pointer to the scatter graph instance:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 7
+
+ Replace the default input handling mechanism by setting the active input handler of
+ Q3DScatter to \c {AxesInputHandler}, which implements the custom behavior:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 8
+
+ The input handler needs access to the axes of the graph, so pass them to it:
+
+ \snippet graphgallery/scatterdatamodifier.cpp 9
+
+ \section2 Extending Mouse Event Handling
+
+ First, inherit the custom input handler from Q3DInputHandler instead of QAbstract3DInputHandler
+ to keep all the functionality of the default input handling, and to add the custom
+ functionality on top of it:
+
+ \snippet graphgallery/axesinputhandler.h 0
+
+ Start extending the default functionality by re-implementing some of the mouse events.
+ First, extend \c {mousePressEvent}. Add a \c{m_mousePressed} flag for the left mouse button
+ to it, and keep the rest of the default functionality:
+
+ \snippet graphgallery/axesinputhandler.cpp 0
+
+ Next, modify \c mouseReleaseEvent to clear the flag, and reset the internal state:
+
+ \snippet graphgallery/axesinputhandler.cpp 1
+
+ Then, modify \c {mouseMoveEvent}. Check if \c m_mousePressed flag is \c {true} and
+ the internal state is something other than \c StateNormal. If so, set the input positions
+ for mouse movement distance calculations, and call the axis dragging function (see
+ \l {Implementing Axis Dragging} for details):
+
+ \snippet graphgallery/axesinputhandler.cpp 2
+
+ \section2 Implementing Axis Dragging
+
+ First, start listening to the selection signal from the graph. Do that in the
+ constructor, and connect it to the \c handleElementSelected method:
+
+ \snippet graphgallery/axesinputhandler.cpp 3
+
+ In \c {handleElementSelected}, check the type of the selection, and set the internal state
+ based on it:
+
+ \snippet graphgallery/axesinputhandler.cpp 4
+
+ The actual dragging logic is implemented in the \c handleAxisDragging method, which is called
+ from \c {mouseMoveEvent}, if the required conditions are met:
+
+ \snippet graphgallery/axesinputhandler.cpp 5
+
+ In \c {handleAxisDragging}, first get the scene orientation from the active camera:
+
+ \snippet graphgallery/axesinputhandler.cpp 6
+
+ Then, calculate the modifiers for mouse movement direction based on the orientation:
+
+ \snippet graphgallery/axesinputhandler.cpp 7
+
+ After that, calculate the mouse movement, and modify it based on the y rotation of the
+ camera:
+
+ \snippet graphgallery/axesinputhandler.cpp 8
+
+ Then, apply the moved distance to the correct axis:
+
+ \snippet graphgallery/axesinputhandler.cpp 9
+
+ Finally, add a function for setting the dragging speed:
+
+ \snippet graphgallery/axesinputhandler.h 1
+
+ This is needed, as the mouse movement distance is absolute in screen coordinates, and you
+ need to adjust it to the axis range. The larger the value, the slower the dragging will be.
+ Note that in this example, the scene zoom level is not taken into account when determining the
+ drag speed, so you'll notice changes in the range adjustment as you change the zoom level.
+
+ You could also adjust the modifier automatically based on the axis range and camera zoom level.
+
+ \section1 Surface Graph
+
+ In the \uicontrol {Surface Graph} tab, create a 3D surface graph using Q3DSurface.
+ The example shows how to:
+
+ \list
+ \li Set up a basic QSurfaceDataProxy and set data for it.
+ \li Use QHeightMapSurfaceDataProxy for showing 3D height maps.
+ \li Use topographic data to create 3D height maps.
+ \li Use three different selection modes for studying the graph.
+ \li Use axis ranges to display selected portions of the graph.
+ \li Set a custom surface gradient.
+ \li Add custom items and labels with QCustom3DItem and QCustom3DLabel.
+ \li Use custom input handler to enable zooming and panning.
+ \li Highlight an area of the surface.
+ \endlist
+
+ For basic application creation, see \l {Bar Graph}.
+
+ \section2 Simple Surface with Generated Data
+
+ First, instantiate a new QSurfaceDataProxy and attach it to a new QSurface3DSeries:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 0
+
+ Then, fill the proxy with a simple square root and sine wave data. Create a new
+ \c QSurfaceDataArray instance, and add \c QSurfaceDataRow elements to it.
+ Set the created \c QSurfaceDataArray as the data array for the QSurfaceDataProxy by calling
+ \c{resetArray()}.
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 1
+
+ \section2 Multiseries Height Map Data
+
+ Create the height map by instantiating a QHeightMapSurfaceDataProxy with a QImage containing
+ the height data. Use QHeightMapSurfaceDataProxy::setValueRanges() to define the
+ value range of the map. In the example, the map is from an imaginary position of
+ 34.0\unicode 0x00B0 N - 40.0\unicode 0x00B0 N and 18.0\unicode 0x00B0 E - 24.0\unicode 0x00B0 E.
+ These values are used to position the map on the axes.
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 2
+
+ Add the other surface layers the same way, by creating a proxy and a series for them using
+ height map images.
+
+ \section2 Topographic Map Data
+
+ The topographic data is obtained from the National Land Survey of Finland. It provides a product
+ called \c{Elevation Model 2 m}, which is suitable for this example.
+ The topography data is from Levi fell. The accuracy of the data is well beyond the need, and
+ therefore it is compressed and encoded into a PNG file. The height value of the original
+ ASCII data is encoded into RGB format using a multiplier, which you will see later in
+ a code extract. The multiplier is calculated by dividing the largest 24-bit value with the
+ highest point in Finland.
+
+ QHeightMapSurfaceDataProxy converts only one-byte values. To utilize the higher accuracy of
+ the data from the National Land Survey of Finland, read the data from the PNG file and decode
+ it into QSurface3DSeries.
+
+ First, define the encoding multiplier:
+
+ \snippet graphgallery/topographicseries.cpp 0
+
+ Then, perform the actual decoding:
+
+ \snippet graphgallery/topographicseries.cpp 1
+
+ Now, the data is usable by the proxy.
+
+ \section2 Selecting the Data Set
+
+ To demonstrate different proxies, \uicontrol {Surface Graph} has three radio buttons to
+ switch between the series.
+
+ With \uicontrol {Sqrt & Sin}, the simple generated series is activated. First, set
+ the decorative features, such as enabling the grid for the surface, and selecting the flat
+ shading mode. Next, define the axis label format and value ranges. Set automatic label rotation
+ to improve label readability at low camera angles. Finally, make sure the correct series is
+ added to the graph and the others are not:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 3
+
+ With \uicontrol {Multiseries Height Map}, the height map series are activated and others
+ disabled. Auto-adjusting Y-axis range works well for the height map surface, so ensure it is
+ set.
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 4
+
+ With \uicontrol {Textured Topography}, the topographic series is activated and others disabled.
+ Activate a custom input handler for this series, to be able to highlight areas on it:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 5
+
+ See \l {Use Custom Input Handler to Enable Zooming and Panning} for information about the
+ custom input handler for this data set.
+
+ \section2 Selection Modes
+
+ The three selection modes supported by Q3DSurface can be used with radio buttons.
+ To activate the selected mode or to clear it, add the following inline methods:
+
+ \snippet graphgallery/surfacegraphmodifier.h 0
+
+ Add \c{QAbstract3DGraph::SelectionSlice} and \c{QAbstract3DGraph::SelectionMultiSeries} flags
+ for the row and column selection modes to support doing a slice selection to all visible series
+ in the graph simultaneously.
+
+ \section2 Axis Ranges for Studying the Graph
+
+ The example has four slider controls for adjusting the min and max values for X and Z
+ axes. When selecting the proxy, these sliders are adjusted to match the axis ranges of the
+ current data set:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 6
+
+ Add support for setting the X range from the widget controls to the graph:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 7
+
+ Add the support for Z range the same way.
+
+ \section2 Custom Surface Gradients
+
+ With the \uicontrol {Sqrt & Sin} data set, custom surface gradients can be taken into use
+ with two push buttons. Define the gradient with QLinearGradient, where the desired colors are
+ set. Also, change the color style to Q3DTheme::ColorStyleRangeGradient to use the gradient.
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 8
+
+ \section2 Adding Custom Meshes to the Application
+
+ Add the mesh files to \c{CMakeLists.txt} for cmake build:
+
+ \badcode
+ set(graphgallery_resource_files
+ ...
+ "data/oilrig.obj"
+ "data/pipe.obj"
+ "data/refinery.obj"
+ ...
+ )
+
+ qt6_add_resources(graphgallery "graphgallery"
+ PREFIX
+ "/"
+ FILES
+ ${graphgallery_resource_files}
+ )
+ \endcode
+
+ Also, add them in the qrc resource file for use with qmake:
+
+ \badcode
+ <RCC>
+ <qresource prefix="/">
+ ...
+ <file>data/refinery.obj</file>
+ <file>data/oilrig.obj</file>
+ <file>data/pipe.obj</file>
+ ...
+ </qresource>
+ </RCC>
+ \endcode
+
+ \section2 Adding Custom Item to a Graph
+
+ With the \uicontrol {Multiseries Height Map} data set, custom items are inserted into the
+ graph and can be toggled on or off using checkboxes. Other visual qualities can also be
+ controlled with another set of checkboxes, including see-through for the two top layers, and
+ a highlight for the bottom layer.
+
+ Begin by creating a small QImage. Fill it with a single color to use as the color for the
+ custom object:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 9
+
+ Then, specify the position of the item in a variable. The position can then be used for
+ removing the correct item from the graph:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 10
+
+ Then, create a new QCustom3DItem with all the parameters:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 11
+
+ Finally, add the item to the graph:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 12
+
+ \section2 Adding Custom Label to a Graph
+
+ Adding a custom label is very similar to adding a custom item. For the label, a custom mesh is
+ not needed, but just a QCustom3DLabel instance:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 13
+
+ \section2 Removing Custom Item from a Graph
+
+ To remove a specific item from the graph, call \c removeCustomItemAt() with the position of
+ the item:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 14
+
+ \note Removing a custom item from the graph also deletes the object. If you want to preserve
+ the item, use the \c releaseCustomItem() method instead.
+
+ \section2 Texture to a Surface Series
+
+ With the \uicontrol {Textured Topography} data set, create a map texture to be used with the
+ topographic height map.
+
+ Set an image to be used as the texture on a surface with QSurface3DSeries::setTextureFile().
+ Add a check box to control if the texture is set or not, and a handler to react to the checkbox
+ state:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 15
+
+ The image in this example is read from a JPG file. Setting an empty file with the method clears
+ the texture, and the surface uses the gradients or colors from the theme.
+
+ \section2 Use Custom Input Handler to Enable Zooming and Panning
+
+ With the \uicontrol {Textured Topography} data set, create a custom input handler to
+ highlight the selection on the graph and allow panning the graph.
+
+ The panning implementation is similar to the one shown in \l{Implementing Axis Dragging}.
+ The difference is that, in this example, you follow only the X and Z axes and don't allow
+ dragging the surface outside the graph. To limit the dragging, follow the limits of the axes
+ and do nothing if going outside the graph:
+
+ \snippet graphgallery/custominputhandler.cpp 0
+
+ For zooming, catch the \c wheelEvent and adjust the X and Y axis ranges according to the delta
+ value on QWheelEvent. Adjust the Y axis so that the aspect ratio between the Y axis and the XZ
+ plane stays the same. This prevents getting a graph in which the height is exaggerated:
+
+ \snippet graphgallery/custominputhandler.cpp 1
+
+ Next, add some limits to the zoom level, so that it won't get too near to or far from the
+ surface. For instance, if the value for the X axis gets below the allowed limit, i.e. zooming
+ gets too far, the value is set to the minimum allowed value. If the range is going to below
+ the range minimum, both ends of the axis are adjusted so that the range stays at the limit:
+
+ \snippet graphgallery/custominputhandler.cpp 2
+
+ \section2 Highlight an Area of the Surface
+
+ To implement a highlight to be displayed on the surface, create a copy of the series and add
+ some offset to the y value. In this example, the class \c HighlightSeries implements the
+ creation of the copy in its \c handlePositionChange method.
+
+ First, give \c HighlightSeries the pointer to the original series, and then start listening to
+ the QSurface3DSeries::selectedPointChanged signal:
+
+ \snippet graphgallery/highlightseries.cpp 0
+
+ When the signal triggers, check that the position is valid. Then, calculate the ranges
+ for the copied area, and check that they stay within the bounds. Finally, fill the data array
+ of the highlight series with the range from the data array of the topography series:
+
+ \snippet graphgallery/highlightseries.cpp 1
+
+ \section2 A Gradient to the Highlight Series
+
+ Since the \c HighlightSeries is QSurface3DSeries, all the decoration methods a series can
+ have are available. In this example, add a gradient to emphasize the elevation. Because the
+ suitable gradient style depends on the range of the Y axis and we change the range when
+ zooming, the gradient color positions need to be adjusted as the range changes. Do this by
+ defining proportional values for the gradient color positions:
+
+ \snippet graphgallery/highlightseries.cpp 2
+
+ The gradient modification is done in the \c handleGradientChange method, so connect it to
+ react to changes on the Y axis:
+
+ \snippet graphgallery/surfacegraphmodifier.cpp 16
+
+ When a change in the Y axis max value happens, calculate the new gradient color positions:
+
+ \snippet graphgallery/highlightseries.cpp 3
+
+ \section1 Example Contents
+*/
diff --git a/examples/datavisualization/graphgallery/graphgallery.pro b/examples/datavisualization/graphgallery/graphgallery.pro
new file mode 100644
index 00000000..c9bd96f6
--- /dev/null
+++ b/examples/datavisualization/graphgallery/graphgallery.pro
@@ -0,0 +1,49 @@
+android|ios|winrt {
+ error( "This example is not supported for android, ios, or winrt." )
+}
+
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+QT += widgets
+requires(qtConfig(fontcombobox))
+requires(qtConfig(combobox))
+
+SOURCES += main.cpp \
+ bargraph.cpp \
+ graphmodifier.cpp \
+ rainfalldata.cpp \
+ variantdataset.cpp \
+ variantbardataproxy.cpp \
+ variantbardatamapping.cpp \
+ scattergraph.cpp \
+ scatterdatamodifier.cpp \
+ axesinputhandler.cpp \
+ surfacegraph.cpp \
+ surfacegraphmodifier.cpp \
+ custominputhandler.cpp \
+ highlightseries.cpp \
+ topographicseries.cpp
+
+HEADERS += \
+ bargraph.h \
+ graphmodifier.h \
+ rainfalldata.h \
+ variantdataset.h \
+ variantbardataproxy.h \
+ variantbardatamapping.h \
+ scattergraph.h \
+ scatterdatamodifier.h \
+ axesinputhandler.h \
+ surfacegraph.h \
+ surfacegraphmodifier.h \
+ custominputhandler.h \
+ highlightseries.h \
+ topographicseries.h
+
+RESOURCES += graphgallery.qrc
+
+OTHER_FILES += doc/src/* \
+ doc/images/* \
+ data/*
diff --git a/examples/datavisualization/graphgallery/graphgallery.qrc b/examples/datavisualization/graphgallery/graphgallery.qrc
new file mode 100644
index 00000000..6df5703d
--- /dev/null
+++ b/examples/datavisualization/graphgallery/graphgallery.qrc
@@ -0,0 +1,13 @@
+<RCC>
+ <qresource prefix="/">
+ <file>data/raindata.txt</file>
+ <file>data/layer_1.png</file>
+ <file>data/layer_2.png</file>
+ <file>data/layer_3.png</file>
+ <file>data/refinery.obj</file>
+ <file>data/oilrig.obj</file>
+ <file>data/pipe.obj</file>
+ <file>data/maptexture.jpg</file>
+ <file>data/topography.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/bars/graphmodifier.cpp b/examples/datavisualization/graphgallery/graphmodifier.cpp
index 9a187620..b0cb6f48 100644
--- a/examples/datavisualization/bars/graphmodifier.cpp
+++ b/examples/datavisualization/graphgallery/graphmodifier.cpp
@@ -1,33 +1,9 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "graphmodifier.h"
+#include "rainfalldata.h"
+
#include <QtDataVisualization/qcategory3daxis.h>
#include <QtDataVisualization/qvalue3daxis.h>
#include <QtDataVisualization/qbardataproxy.h>
@@ -35,31 +11,26 @@
#include <QtDataVisualization/q3dcamera.h>
#include <QtDataVisualization/qbar3dseries.h>
#include <QtDataVisualization/q3dtheme.h>
-#include <QtCore/QTime>
-#include <QtWidgets/QComboBox>
#include <QtCore/qmath.h>
+#include <QtWidgets/qcombobox.h>
+
+using namespace Qt::StringLiterals;
-const QString celsiusString = QString(QChar(0xB0)) + "C";
+// TODO: Many of the values do not affect custom proxy series now - should be fixed
//! [0]
-GraphModifier::GraphModifier(Q3DBars *bargraph)
- : m_graph(bargraph),
- m_xRotation(0.0f),
- m_yRotation(0.0f),
- m_fontSize(30),
- m_segments(4),
- m_subSegments(3),
- m_minval(-20.0f),
- m_maxval(20.0f),
+GraphModifier::GraphModifier(Q3DBars *bargraph, QObject *parent) :
+ QObject(parent),
+ m_graph(bargraph),
+ //! [0]
//! [1]
m_temperatureAxis(new QValue3DAxis),
m_yearAxis(new QCategory3DAxis),
m_monthAxis(new QCategory3DAxis),
m_primarySeries(new QBar3DSeries),
m_secondarySeries(new QBar3DSeries),
- //! [1]
- m_barMesh(QAbstract3DSeries::MeshBevelBar),
- m_smooth(false)
+ m_celsiusString(u"°C"_s)
+ //! [1]
{
//! [2]
m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftMedium);
@@ -69,15 +40,16 @@ GraphModifier::GraphModifier(Q3DBars *bargraph)
m_graph->setMultiSeriesUniform(true);
//! [2]
- m_months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December";
- m_years << "2006" << "2007" << "2008" << "2009" << "2010" << "2011" << "2012" << "2013";
+ m_months = {"January", "February", "March", "April", "May", "June" , "July",
+ "August", "September", "October" , "November", "December"};
+ m_years = {"2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022"};
//! [3]
m_temperatureAxis->setTitle("Average temperature");
m_temperatureAxis->setSegmentCount(m_segments);
m_temperatureAxis->setSubSegmentCount(m_subSegments);
m_temperatureAxis->setRange(m_minval, m_maxval);
- m_temperatureAxis->setLabelFormat(QString(QStringLiteral("%.1f ") + celsiusString));
+ m_temperatureAxis->setLabelFormat(u"%.1f "_s + m_celsiusString);
m_temperatureAxis->setLabelAutoRotation(30.0f);
m_temperatureAxis->setTitleVisible(true);
@@ -93,32 +65,32 @@ GraphModifier::GraphModifier(Q3DBars *bargraph)
m_graph->setColumnAxis(m_monthAxis);
//! [3]
- //! [8]
- m_primarySeries->setItemLabelFormat(QStringLiteral("Oulu - @colLabel @rowLabel: @valueLabel"));
+ //! [4]
+ m_primarySeries->setItemLabelFormat(u"Oulu - @colLabel @rowLabel: @valueLabel"_s);
m_primarySeries->setMesh(QAbstract3DSeries::MeshBevelBar);
m_primarySeries->setMeshSmooth(false);
- m_secondarySeries->setItemLabelFormat(QStringLiteral("Helsinki - @colLabel @rowLabel: @valueLabel"));
+ m_secondarySeries->setItemLabelFormat(u"Helsinki - @colLabel @rowLabel: @valueLabel"_s);
m_secondarySeries->setMesh(QAbstract3DSeries::MeshBevelBar);
m_secondarySeries->setMeshSmooth(false);
m_secondarySeries->setVisible(false);
- //! [8]
-
//! [4]
+
+ //! [5]
m_graph->addSeries(m_primarySeries);
m_graph->addSeries(m_secondarySeries);
- //! [4]
+ //! [5]
//! [6]
changePresetCamera();
//! [6]
- //! [9]
+ //! [8]
resetTemperatureData();
- //! [9]
+ //! [8]
// Set up property animations for zooming to the selected bar
- //! [12]
+ //! [11]
Q3DCamera *camera = m_graph->scene()->activeCamera();
m_defaultAngleX = camera->xRotation();
m_defaultAngleY = camera->yRotation();
@@ -148,53 +120,54 @@ GraphModifier::GraphModifier(Q3DBars *bargraph)
m_animationCameraZoom.setKeyValueAt(zoomOutFraction, QVariant::fromValue(50.0f));
m_animationCameraTarget.setKeyValueAt(zoomOutFraction,
QVariant::fromValue(QVector3D(0.0f, 0.0f, 0.0f)));
- //! [12]
+ //! [11]
+
+ m_customData = new RainfallData();
}
-//! [0]
GraphModifier::~GraphModifier()
{
- delete m_graph;
+ delete m_customData;
}
void GraphModifier::resetTemperatureData()
{
- //! [5]
+ //! [9a]
// Set up data
static const float tempOulu[8][12] = {
- {-6.7f, -11.7f, -9.7f, 3.3f, 9.2f, 14.0f, 16.3f, 17.8f, 10.2f, 2.1f, -2.6f, -0.3f}, // 2006
- {-6.8f, -13.3f, 0.2f, 1.5f, 7.9f, 13.4f, 16.1f, 15.5f, 8.2f, 5.4f, -2.6f, -0.8f}, // 2007
- {-4.2f, -4.0f, -4.6f, 1.9f, 7.3f, 12.5f, 15.0f, 12.8f, 7.6f, 5.1f, -0.9f, -1.3f}, // 2008
- {-7.8f, -8.8f, -4.2f, 0.7f, 9.3f, 13.2f, 15.8f, 15.5f, 11.2f, 0.6f, 0.7f, -8.4f}, // 2009
- {-14.4f, -12.1f, -7.0f, 2.3f, 11.0f, 12.6f, 18.8f, 13.8f, 9.4f, 3.9f, -5.6f, -13.0f}, // 2010
- {-9.0f, -15.2f, -3.8f, 2.6f, 8.3f, 15.9f, 18.6f, 14.9f, 11.1f, 5.3f, 1.8f, -0.2f}, // 2011
- {-8.7f, -11.3f, -2.3f, 0.4f, 7.5f, 12.2f, 16.4f, 14.1f, 9.2f, 3.1f, 0.3f, -12.1f}, // 2012
- {-7.9f, -5.3f, -9.1f, 0.8f, 11.6f, 16.6f, 15.9f, 15.5f, 11.2f, 4.0f, 0.1f, -1.9f} // 2013
+ {-7.4f, -2.4f, 0.0f, 3.0f, 8.2f, 11.6f, 14.7f, 15.4f, 11.4f, 4.2f, 2.1f, -2.3f}, // 2015
+ {-13.4f, -3.9f, -1.8f, 3.1f, 10.6f, 13.7f, 17.8f, 13.6f, 10.7f, 3.5f, -3.1f, -4.2f}, // 2016
+ //! [9a]
+ {-5.7f, -6.7f, -3.0f, -0.1f, 4.7f, 12.4f, 16.1f, 14.1f, 9.4f, 3.0f, -0.3f, -3.2f}, // 2017
+ {-6.4f, -11.9f, -7.4f, 1.9f, 11.4f, 12.4f, 21.5f, 16.1f, 11.0f, 4.4f, 2.1f, -4.1f}, // 2018
+ {-11.7f, -6.1f, -2.4f, 3.9f, 7.2f, 14.5f, 15.6f, 14.4f, 8.5f, 2.0f, -3.0f, -1.5f}, // 2019
+ {-2.1f, -3.4f, -1.8f, 0.6f, 7.0f, 17.1f, 15.6f, 15.4f, 11.1f, 5.6f, 1.9f, -1.7f}, // 2020
+ {-9.6f, -11.6f, -3.2f, 2.4f, 7.8f, 17.3f, 19.4f, 14.2f, 8.0f, 5.2f, -2.2f, -8.6f}, // 2021
+ {-7.3f, -6.4f, -1.8f, 1.3f, 8.1f, 15.5f, 17.6f, 17.6f, 9.1f, 5.4f, -1.5f, -4.4f} // 2022
};
static const float tempHelsinki[8][12] = {
- {-3.7f, -7.8f, -5.4f, 3.4f, 10.7f, 15.4f, 18.6f, 18.7f, 14.3f, 8.5f, 2.9f, 4.1f}, // 2006
- {-1.2f, -7.5f, 3.1f, 5.5f, 10.3f, 15.9f, 17.4f, 17.9f, 11.2f, 7.3f, 1.1f, 0.5f}, // 2007
- {-0.6f, 1.2f, 0.2f, 6.3f, 10.2f, 13.8f, 18.1f, 15.1f, 10.1f, 9.4f, 2.5f, 0.4f}, // 2008
- {-2.9f, -3.5f, -0.9f, 4.7f, 10.9f, 14.0f, 17.4f, 16.8f, 13.2f, 4.1f, 2.6f, -2.3f}, // 2009
- {-10.2f, -8.0f, -1.9f, 6.6f, 11.3f, 14.5f, 21.0f, 18.8f, 12.6f, 6.1f, -0.5f, -7.3f}, // 2010
- {-4.4f, -9.1f, -2.0f, 5.5f, 9.9f, 15.6f, 20.8f, 17.8f, 13.4f, 8.9f, 3.6f, 1.5f}, // 2011
- {-3.5f, -3.2f, -0.7f, 4.0f, 11.1f, 13.4f, 17.3f, 15.8f, 13.1f, 6.4f, 4.1f, -5.1f}, // 2012
- {-4.8f, -1.8f, -5.0f, 2.9f, 12.8f, 17.2f, 18.0f, 17.1f, 12.5f, 7.5f, 4.5f, 2.3f} // 2013
+ {-2.0f, -0.1f, 1.8f, 5.1f, 9.7f, 13.7f, 16.3f, 17.3f, 12.7f, 5.4f, 4.6f, 2.1f}, // 2015
+ {-10.3f, -0.6f, 0.0f, 4.9f, 14.3f, 15.7f, 17.7f, 16.0f, 12.7f, 4.6f, -1.0f, -0.9f}, // 2016
+ {-2.9f, -3.3f, 0.7f, 2.3f, 9.9f, 13.8f, 16.1f, 15.9f, 11.4f, 5.0f, 2.7f, 0.7f}, // 2017
+ {-2.2f, -8.4f, -4.7f, 5.0f, 15.3f, 15.8f, 21.2f, 18.2f, 13.3f, 6.7f, 2.8f, -2.0f}, // 2018
+ {-6.2f, -0.5f, -0.3f, 6.8f, 10.6f, 17.9f, 17.5f, 16.8f, 11.3f, 5.2f, 1.8f, 1.4f}, // 2019
+ {1.9f, 0.5f, 1.7f, 4.5f, 9.5f, 18.4f, 16.5f, 16.8f, 13.0f, 8.2f, 4.4f, 0.9f}, // 2020
+ {-4.7f, -8.1f, -0.9f, 4.5f, 10.4f, 19.2f, 20.9f, 15.4f, 9.5f, 8.0f, 1.5f, -6.7f}, // 2021
+ {-3.3f, -2.2f, -0.2f, 3.3f, 9.6f, 16.9f, 18.1f, 18.9f, 9.2f, 7.6f, 2.3f, -3.4f} // 2022
};
// Create data arrays
- QBarDataArray *dataSet = new QBarDataArray;
- QBarDataArray *dataSet2 = new QBarDataArray;
- QBarDataRow *dataRow;
- QBarDataRow *dataRow2;
+ //! [9b]
+ auto *dataSet = new QBarDataArray;
+ auto *dataSet2 = new QBarDataArray;
dataSet->reserve(m_years.size());
- for (int year = 0; year < m_years.size(); year++) {
+ for (qsizetype year = 0; year < m_years.size(); ++year) {
// Create a data row
- dataRow = new QBarDataRow(m_months.size());
- dataRow2 = new QBarDataRow(m_months.size());
- for (int month = 0; month < m_months.size(); month++) {
+ auto *dataRow = new QBarDataRow(m_months.size());
+ auto *dataRow2 = new QBarDataRow(m_months.size());
+ for (qsizetype month = 0; month < m_months.size(); ++month) {
// Add data to the row
(*dataRow)[month].setValue(tempOulu[year][month]);
(*dataRow2)[month].setValue(tempHelsinki[year][month]);
@@ -207,7 +180,7 @@ void GraphModifier::resetTemperatureData()
// Add data to the data proxy (the data proxy assumes ownership of it)
m_primarySeries->dataProxy()->resetArray(dataSet, m_years, m_months);
m_secondarySeries->dataProxy()->resetArray(dataSet2, m_years, m_months);
- //! [5]
+ //! [9b]
}
void GraphModifier::changeRange(int range)
@@ -220,11 +193,12 @@ void GraphModifier::changeRange(int range)
void GraphModifier::changeStyle(int style)
{
- QComboBox *comboBox = qobject_cast<QComboBox *>(sender());
+ auto *comboBox = qobject_cast<QComboBox *>(sender());
if (comboBox) {
- m_barMesh = QAbstract3DSeries::Mesh(comboBox->itemData(style).toInt());
+ m_barMesh = comboBox->itemData(style).value<QAbstract3DSeries::Mesh>();
m_primarySeries->setMesh(m_barMesh);
m_secondarySeries->setMesh(m_barMesh);
+ m_customData->customSeries()->setMesh(m_barMesh);
}
}
@@ -238,14 +212,14 @@ void GraphModifier::changePresetCamera()
// Restore camera target in case animation has changed it
m_graph->scene()->activeCamera()->setTarget(QVector3D(0.0f, 0.0f, 0.0f));
- //! [10]
+ //! [7]
static int preset = Q3DCamera::CameraPresetFront;
m_graph->scene()->activeCamera()->setCameraPreset((Q3DCamera::CameraPreset)preset);
if (++preset > Q3DCamera::CameraPresetDirectlyBelow)
preset = Q3DCamera::CameraPresetFrontLow;
- //! [10]
+ //! [7]
}
void GraphModifier::changeTheme(int theme)
@@ -265,7 +239,7 @@ void GraphModifier::changeLabelBackground()
void GraphModifier::changeSelectionMode(int selectionMode)
{
- QComboBox *comboBox = qobject_cast<QComboBox *>(sender());
+ auto *comboBox = qobject_cast<QComboBox *>(sender());
if (comboBox) {
int flags = comboBox->itemData(selectionMode).toInt();
m_graph->setSelectionMode(QAbstract3DGraph::SelectionFlags(flags));
@@ -314,7 +288,6 @@ void GraphModifier::setAxisTitleFixed(bool enabled)
m_yearAxis->setTitleFixed(enabled);
}
-//! [11]
void GraphModifier::zoomToSelectedBar()
{
m_animationCameraX.stop();
@@ -339,7 +312,7 @@ void GraphModifier::zoomToSelectedBar()
if (selectedBar != QBar3DSeries::invalidSelectionPosition()) {
// Normalize selected bar position within axis range to determine target coordinates
- //! [13]
+ //! [12]
QVector3D endTarget;
float xMin = m_graph->columnAxis()->min();
float xRange = m_graph->columnAxis()->max() - xMin;
@@ -347,10 +320,10 @@ void GraphModifier::zoomToSelectedBar()
float zRange = m_graph->rowAxis()->max() - zMin;
endTarget.setX((selectedBar.y() - xMin) / xRange * 2.0f - 1.0f);
endTarget.setZ((selectedBar.x() - zMin) / zRange * 2.0f - 1.0f);
- //! [13]
+ //! [12]
// Rotate the camera so that it always points approximately to the graph center
- //! [15]
+ //! [14]
qreal endAngleX = 90.0 - qRadiansToDegrees(qAtan(qreal(endTarget.z() / endTarget.x())));
if (endTarget.x() > 0.0f)
endAngleX -= 180.0f;
@@ -359,14 +332,14 @@ void GraphModifier::zoomToSelectedBar()
float endAngleY = barValue >= 0.0f ? 30.0f : -30.0f;
if (m_graph->valueAxis()->reversed())
endAngleY *= -1.0f;
- //! [15]
+ //! [14]
m_animationCameraX.setEndValue(QVariant::fromValue(float(endAngleX)));
m_animationCameraY.setEndValue(QVariant::fromValue(endAngleY));
m_animationCameraZoom.setEndValue(QVariant::fromValue(250));
- //! [14]
+ //! [13]
m_animationCameraTarget.setEndValue(QVariant::fromValue(endTarget));
- //! [14]
+ //! [13]
} else {
// No selected bar, so return to the default view
m_animationCameraX.setEndValue(QVariant::fromValue(m_defaultAngleX));
@@ -380,7 +353,18 @@ void GraphModifier::zoomToSelectedBar()
m_animationCameraZoom.start();
m_animationCameraTarget.start();
}
-//! [11]
+
+void GraphModifier::setDataModeToWeather(bool enabled)
+{
+ if (enabled)
+ changeDataMode(false);
+}
+
+void GraphModifier::setDataModeToCustom(bool enabled)
+{
+ if (enabled)
+ changeDataMode(true);
+}
void GraphModifier::changeShadowQuality(int quality)
{
@@ -389,19 +373,19 @@ void GraphModifier::changeShadowQuality(int quality)
emit shadowQualityChanged(quality);
}
-//! [7]
+//! [10]
void GraphModifier::rotateX(int rotation)
{
m_xRotation = rotation;
m_graph->scene()->activeCamera()->setCameraPosition(m_xRotation, m_yRotation);
}
+//! [10]
void GraphModifier::rotateY(int rotation)
{
m_yRotation = rotation;
m_graph->scene()->activeCamera()->setCameraPosition(m_xRotation, m_yRotation);
}
-//! [7]
void GraphModifier::setBackgroundEnabled(int enabled)
{
@@ -418,6 +402,7 @@ void GraphModifier::setSmoothBars(int smooth)
m_smooth = bool(smooth);
m_primarySeries->setMeshSmooth(m_smooth);
m_secondarySeries->setMeshSmooth(m_smooth);
+ m_customData->customSeries()->setMeshSmooth(m_smooth);
}
void GraphModifier::setSeriesVisibility(int enabled)
@@ -434,3 +419,23 @@ void GraphModifier::setReflection(bool enabled)
{
m_graph->setReflection(enabled);
}
+
+void GraphModifier::changeDataMode(bool customData)
+{
+ // Change between weather data and data from custom proxy
+ if (customData) {
+ m_graph->removeSeries(m_primarySeries);
+ m_graph->removeSeries(m_secondarySeries);
+ m_graph->addSeries(m_customData->customSeries());
+ m_graph->setValueAxis(m_customData->valueAxis());
+ m_graph->setRowAxis(m_customData->rowAxis());
+ m_graph->setColumnAxis(m_customData->colAxis());
+ } else {
+ m_graph->removeSeries(m_customData->customSeries());
+ m_graph->addSeries(m_primarySeries);
+ m_graph->addSeries(m_secondarySeries);
+ m_graph->setValueAxis(m_temperatureAxis);
+ m_graph->setRowAxis(m_yearAxis);
+ m_graph->setColumnAxis(m_monthAxis);
+ }
+}
diff --git a/examples/datavisualization/graphgallery/graphmodifier.h b/examples/datavisualization/graphgallery/graphmodifier.h
new file mode 100644
index 00000000..0d112c0d
--- /dev/null
+++ b/examples/datavisualization/graphgallery/graphmodifier.h
@@ -0,0 +1,87 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef GRAPHMODIFIER_H
+#define GRAPHMODIFIER_H
+
+#include <QtDataVisualization/q3dbars.h>
+#include <QtDataVisualization/qbardataproxy.h>
+#include <QtDataVisualization/qabstract3dseries.h>
+#include <QtCore/qpropertyanimation.h>
+
+class RainfallData;
+
+class GraphModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit GraphModifier(Q3DBars *bargraph, QObject *parent);
+ ~GraphModifier();
+
+ void resetTemperatureData();
+ void changePresetCamera();
+ void changeLabelBackground();
+ void changeFont(const QFont &font);
+ void changeFontSize(int fontsize);
+ void rotateX(int rotation);
+ void rotateY(int rotation);
+ void setBackgroundEnabled(int enabled);
+ void setGridEnabled(int enabled);
+ void setSmoothBars(int smooth);
+ void setSeriesVisibility(int enabled);
+ void setReverseValueAxis(int enabled);
+ void setReflection(bool enabled);
+ void changeDataMode(bool customData);
+
+public Q_SLOTS:
+ void changeRange(int range);
+ void changeStyle(int style);
+ void changeSelectionMode(int selectionMode);
+ void changeTheme(int theme);
+ void changeShadowQuality(int quality);
+ void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
+ void changeLabelRotation(int rotation);
+ void setAxisTitleVisibility(bool enabled);
+ void setAxisTitleFixed(bool enabled);
+ void zoomToSelectedBar();
+ void setDataModeToWeather(bool enabled);
+ void setDataModeToCustom(bool enabled);
+
+Q_SIGNALS:
+ void shadowQualityChanged(int quality);
+ void backgroundEnabledChanged(bool enabled);
+ void gridEnabledChanged(bool enabled);
+ void fontChanged(const QFont &font);
+ void fontSizeChanged(int size);
+
+private:
+ Q3DBars *m_graph = nullptr;
+ float m_xRotation = 0.f;
+ float m_yRotation = 0.f;
+ int m_fontSize = 30;
+ int m_segments = 4;
+ int m_subSegments = 3;
+ float m_minval = -20.f;
+ float m_maxval = 20.f;
+ QStringList m_months = {};
+ QStringList m_years = {};
+ QValue3DAxis *m_temperatureAxis = nullptr;
+ QCategory3DAxis *m_yearAxis = nullptr;
+ QCategory3DAxis *m_monthAxis = nullptr;
+ QBar3DSeries *m_primarySeries = nullptr;
+ QBar3DSeries *m_secondarySeries = nullptr;
+ QAbstract3DSeries::Mesh m_barMesh = QAbstract3DSeries::MeshBevelBar;
+ bool m_smooth = false;
+ QPropertyAnimation m_animationCameraX = {};
+ QPropertyAnimation m_animationCameraY = {};
+ QPropertyAnimation m_animationCameraZoom = {};
+ QPropertyAnimation m_animationCameraTarget = {};
+ float m_defaultAngleX = 0.f;
+ float m_defaultAngleY = 0.f;
+ float m_defaultZoom = 0.f;
+ QVector3D m_defaultTarget = {};
+ const QString m_celsiusString;
+ RainfallData *m_customData = nullptr;
+};
+
+#endif
diff --git a/examples/datavisualization/texturesurface/highlightseries.cpp b/examples/datavisualization/graphgallery/highlightseries.cpp
index ef6da1b4..3f10b421 100644
--- a/examples/datavisualization/texturesurface/highlightseries.cpp
+++ b/examples/datavisualization/graphgallery/highlightseries.cpp
@@ -1,36 +1,10 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "highlightseries.h"
//! [2]
-const float darkRedPos = 1.0f;
+const float darkRedPos = 1.f;
const float redPos = 0.8f;
const float yellowPos = 0.6f;
const float greenPos = 0.4f;
@@ -38,8 +12,6 @@ const float darkGreenPos = 0.2f;
//! [2]
HighlightSeries::HighlightSeries()
- : m_width(100),
- m_height(100)
{
setDrawMode(QSurface3DSeries::DrawSurface);
setFlatShadingEnabled(true);
@@ -69,7 +41,6 @@ void HighlightSeries::handlePositionChange(const QPoint &position)
if (position == invalidSelectionPosition()) {
setVisible(false);
-
return;
}
@@ -92,16 +63,18 @@ void HighlightSeries::handlePositionChange(const QPoint &position)
QSurfaceDataProxy *srcProxy = m_topographicSeries->dataProxy();
const QSurfaceDataArray &srcArray = *srcProxy->array();
- QSurfaceDataArray *dataArray = new QSurfaceDataArray;
+ auto *dataArray = new QSurfaceDataArray;
dataArray->reserve(endZ - startZ);
- for (int i = startZ; i < endZ; i++) {
- QSurfaceDataRow *newRow = new QSurfaceDataRow(endX - startX);
+ for (int i = startZ; i < endZ; ++i) {
+ auto *newRow = new QSurfaceDataRow;
+ newRow->reserve(endX - startX);
QSurfaceDataRow *srcRow = srcArray.at(i);
- for (int j = startX, p = 0; j < endX; j++, p++) {
+ for (int j = startX; j < endX; ++j) {
QVector3D pos = srcRow->at(j).position();
- (*newRow)[p].setPosition(QVector3D(pos.x(), pos.y() + 0.1f, pos.z()));
+ pos.setY(pos.y() + 0.1f);
+ newRow->append(QSurfaceDataItem(pos));
}
- *dataArray << newRow;
+ dataArray->append(newRow);
}
dataProxy()->resetArray(dataArray);
@@ -115,7 +88,7 @@ void HighlightSeries::handleGradientChange(float value)
float ratio = m_minHeight / value;
QLinearGradient gr;
- gr.setColorAt(0.0f, Qt::black);
+ gr.setColorAt(0.f, Qt::black);
gr.setColorAt(darkGreenPos * ratio, Qt::darkGreen);
gr.setColorAt(greenPos * ratio, Qt::green);
gr.setColorAt(yellowPos * ratio, Qt::yellow);
diff --git a/examples/datavisualization/graphgallery/highlightseries.h b/examples/datavisualization/graphgallery/highlightseries.h
new file mode 100644
index 00000000..c74a6b84
--- /dev/null
+++ b/examples/datavisualization/graphgallery/highlightseries.h
@@ -0,0 +1,35 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef HIGHLIGHTSERIES_H
+#define HIGHLIGHTSERIES_H
+
+#include <QtDataVisualization/qsurface3dseries.h>
+
+#include "topographicseries.h"
+
+class HighlightSeries : public QSurface3DSeries
+{
+ Q_OBJECT
+public:
+ explicit HighlightSeries();
+ ~HighlightSeries();
+
+ void setTopographicSeries(TopographicSeries *series);
+ inline void setMinHeight(float height) { m_minHeight = height; }
+
+public Q_SLOTS:
+ void handlePositionChange(const QPoint &position);
+ void handleGradientChange(float value);
+
+private:
+ int m_width = 100;
+ int m_height = 100;
+ int m_srcWidth = 0;
+ int m_srcHeight = 0;
+ QPoint m_position = {};
+ TopographicSeries *m_topographicSeries = nullptr;
+ float m_minHeight = 0.f;
+};
+
+#endif // HIGHLIGHTSERIES_H
diff --git a/examples/datavisualization/graphgallery/main.cpp b/examples/datavisualization/graphgallery/main.cpp
new file mode 100644
index 00000000..4bffa1c1
--- /dev/null
+++ b/examples/datavisualization/graphgallery/main.cpp
@@ -0,0 +1,52 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "bargraph.h"
+#include "scattergraph.h"
+#include "surfacegraph.h"
+
+#include <QtWidgets/qapplication.h>
+#include <QtWidgets/qmessagebox.h>
+#include <QtWidgets/qwidget.h>
+#include <QtWidgets/qtabwidget.h>
+#include <QtGui/qscreen.h>
+
+using namespace Qt::StringLiterals;
+
+int main(int argc, char **argv)
+{
+ qputenv("QSG_RHI_BACKEND", "opengl");
+
+ QApplication app(argc, argv);
+
+ // Create a tab widget for creating own tabs for Q3DBars, Q3DScatter, and Q3DSurface
+ QTabWidget tabWidget;
+ tabWidget.setWindowTitle(u"Graph Gallery"_s);
+
+ const QSize screenSize = tabWidget.screen()->size();
+ const QSize minimumGraphSize{screenSize.width() / 2, qRound(screenSize.height() / 1.75)};
+
+ // Create bar graph
+ BarGraph bars;
+ // Create scatter graph
+ ScatterGraph scatter;
+ // Create surface graph
+ SurfaceGraph surface;
+
+ if (!bars.initialize(minimumGraphSize, screenSize)
+ || !scatter.initialize(minimumGraphSize, screenSize)
+ || !surface.initialize(minimumGraphSize, screenSize)) {
+ QMessageBox::warning(nullptr, u"Graph Gallery"_s, u"Couldn't initialize the OpenGL context."_s);
+ return -1;
+ }
+
+ // Add bars widget
+ tabWidget.addTab(bars.barsWidget(), u"Bar Graph"_s);
+ // Add scatter widget
+ tabWidget.addTab(scatter.scatterWidget(), u"Scatter Graph"_s);
+ // Add surface widget
+ tabWidget.addTab(surface.surfaceWidget(), u"Surface Graph"_s);
+
+ tabWidget.show();
+ return app.exec();
+}
diff --git a/examples/datavisualization/graphgallery/rainfalldata.cpp b/examples/datavisualization/graphgallery/rainfalldata.cpp
new file mode 100644
index 00000000..66a2553a
--- /dev/null
+++ b/examples/datavisualization/graphgallery/rainfalldata.cpp
@@ -0,0 +1,117 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "rainfalldata.h"
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qbar3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+#include <QtCore/qtextstream.h>
+#include <QtCore/qfile.h>
+
+using namespace Qt::StringLiterals;
+
+RainfallData::RainfallData()
+{
+ // In data file the months are in numeric format, so create custom list
+ for (int i = 1; i <= 12; ++i)
+ m_numericMonths << QString::number(i);
+
+ m_columnCount = m_numericMonths.size();
+
+ updateYearsList(2010, 2022);
+
+ // Create proxy and series
+ //! [0]
+ m_proxy = new VariantBarDataProxy;
+ m_series = new QBar3DSeries(m_proxy);
+ //! [0]
+
+ m_series->setItemLabelFormat(u"%.1f mm"_s);
+
+ // Create the axes
+ m_rowAxis = new QCategory3DAxis(this);
+ m_colAxis = new QCategory3DAxis(this);
+ m_valueAxis = new QValue3DAxis(this);
+ m_rowAxis->setAutoAdjustRange(true);
+ m_colAxis->setAutoAdjustRange(true);
+ m_valueAxis->setAutoAdjustRange(true);
+
+ // Set axis labels and titles
+ QStringList months{"January", "February", "March", "April",
+ "May", "June", "July", "August", "September", "October",
+ "November","December"};
+ m_rowAxis->setTitle("Year");
+ m_colAxis->setTitle("Month");
+ m_valueAxis->setTitle("rainfall (mm)");
+ m_valueAxis->setSegmentCount(5);
+ m_rowAxis->setLabels(m_years);
+ m_colAxis->setLabels(months);
+ m_rowAxis->setTitleVisible(true);
+ m_colAxis->setTitleVisible(true);
+ m_valueAxis->setTitleVisible(true);
+
+ addDataSet();
+}
+
+RainfallData::~RainfallData()
+{
+ delete m_mapping;
+ delete m_dataSet;
+ delete m_proxy;
+}
+
+void RainfallData::updateYearsList(int start, int end)
+{
+ m_years.clear();
+
+ for (int i = start; i <= end; ++i)
+ m_years << QString::number(i);
+
+ m_rowCount = m_years.size();
+}
+
+//! [1]
+void RainfallData::addDataSet()
+{
+ // Create a new variant data set and data item list
+ m_dataSet = new VariantDataSet;
+ auto *itemList = new VariantDataItemList;
+
+ // Read data from a data file into the data item list
+ QFile dataFile(":/data/raindata.txt");
+ if (dataFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ QTextStream stream(&dataFile);
+ while (!stream.atEnd()) {
+ QString line = stream.readLine();
+ if (line.startsWith('#')) // Ignore comments
+ continue;
+ const auto strList = QStringView{line}.split(',', Qt::SkipEmptyParts);
+ // Each line has three data items: Year, month, and rainfall value
+ if (strList.size() < 3) {
+ qWarning() << "Invalid row read from data:" << line;
+ continue;
+ }
+ // Store year and month as strings, and rainfall value as double
+ // into a variant data item and add the item to the item list.
+ auto *newItem = new VariantDataItem;
+ for (int i = 0; i < 2; ++i)
+ newItem->append(strList.at(i).trimmed().toString());
+ newItem->append(strList.at(2).trimmed().toDouble());
+ itemList->append(newItem);
+ }
+ } else {
+ qWarning() << "Unable to open data file:" << dataFile.fileName();
+ }
+ //! [1]
+
+ //! [2]
+ // Add items to the data set and set it to the proxy
+ m_dataSet->addItems(itemList);
+ m_proxy->setDataSet(m_dataSet);
+
+ // Create new mapping for the data and set it to the proxy
+ m_mapping = new VariantBarDataMapping(0, 1, 2, m_years, m_numericMonths);
+ m_proxy->setMapping(m_mapping);
+ //! [2]
+}
diff --git a/examples/datavisualization/graphgallery/rainfalldata.h b/examples/datavisualization/graphgallery/rainfalldata.h
new file mode 100644
index 00000000..c71f072b
--- /dev/null
+++ b/examples/datavisualization/graphgallery/rainfalldata.h
@@ -0,0 +1,43 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef RAINFALLDATA_H
+#define RAINFALLDATA_H
+
+#include "variantbardataproxy.h"
+#include <QtDataVisualization/qcategory3daxis.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+
+class RainfallData : public QObject
+{
+ Q_OBJECT
+public:
+ explicit RainfallData();
+ ~RainfallData();
+
+ void addDataSet();
+
+ //! [0]
+ QBar3DSeries *customSeries() { return m_series; }
+ //! [0]
+
+ QValue3DAxis *valueAxis() { return m_valueAxis; }
+ QCategory3DAxis *rowAxis() { return m_rowAxis; }
+ QCategory3DAxis *colAxis() { return m_colAxis; }
+
+private:
+ void updateYearsList(int start, int end);
+ int m_columnCount;
+ int m_rowCount;
+ QStringList m_years;
+ QStringList m_numericMonths;
+ VariantBarDataProxy *m_proxy;
+ VariantBarDataMapping *m_mapping;
+ VariantDataSet *m_dataSet;
+ QBar3DSeries *m_series;
+ QValue3DAxis *m_valueAxis;
+ QCategory3DAxis *m_rowAxis;
+ QCategory3DAxis *m_colAxis;
+};
+
+#endif
diff --git a/examples/datavisualization/graphgallery/scatterdatamodifier.cpp b/examples/datavisualization/graphgallery/scatterdatamodifier.cpp
new file mode 100644
index 00000000..1f3ec7ed
--- /dev/null
+++ b/examples/datavisualization/graphgallery/scatterdatamodifier.cpp
@@ -0,0 +1,191 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "scatterdatamodifier.h"
+#include <QtDataVisualization/qscatterdataproxy.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qscatter3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+#include <QtCore/qmath.h>
+#include <QtCore/qrandom.h>
+#include <QtWidgets/qcombobox.h>
+
+using namespace Qt::StringLiterals;
+
+//#define RANDOM_SCATTER // Uncomment this to switch to random scatter
+
+const int numberOfItems = 10000;
+const float curveDivider = 7.5f;
+const int lowerNumberOfItems = 900;
+const float lowerCurveDivider = 0.75f;
+
+ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter, QObject *parent) :
+ QObject(parent),
+ m_graph(scatter),
+ m_itemCount(lowerNumberOfItems),
+ m_curveDivider(lowerCurveDivider),
+ //! [7]
+ m_inputHandler(new AxesInputHandler(scatter))
+ //! [7]
+{
+ //! [0]
+ m_graph->activeTheme()->setType(Q3DTheme::ThemeStoneMoss);
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftHigh);
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
+ m_graph->scene()->activeCamera()->setZoomLevel(80.f);
+ //! [0]
+
+ //! [1]
+ auto *proxy = new QScatterDataProxy;
+ auto *series = new QScatter3DSeries(proxy);
+ series->setItemLabelFormat(u"@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel"_s);
+ series->setMeshSmooth(m_smooth);
+ m_graph->addSeries(series);
+ //! [1]
+
+ //! [8]
+ // Give ownership of the handler to the graph and make it the active handler
+ m_graph->setActiveInputHandler(m_inputHandler);
+ //! [8]
+
+ //! [9]
+ // Give our axes to the input handler
+ m_inputHandler->setAxes(m_graph->axisX(), m_graph->axisZ(), m_graph->axisY());
+ //! [9]
+
+ //! [2]
+ addData();
+ //! [2]
+}
+
+void ScatterDataModifier::addData()
+{
+ // Configure the axes according to the data
+ //! [3]
+ m_graph->axisX()->setTitle("X");
+ m_graph->axisY()->setTitle("Y");
+ m_graph->axisZ()->setTitle("Z");
+ //! [3]
+
+ //! [4]
+ auto *dataArray = new QScatterDataArray;
+ dataArray->reserve(m_itemCount);
+ //! [4]
+
+#ifdef RANDOM_SCATTER
+ for (int i = 0; i < m_itemCount; ++i)
+ dataArray->append(QScatterDataItem(randVector()));
+#else
+ //! [5]
+ const float limit = qSqrt(m_itemCount) / 2.0f;
+ for (int i = -limit; i < limit; ++i) {
+ for (int j = -limit; j < limit; ++j) {
+ const float x = float(i) + 0.5f;
+ const float y = qCos(qDegreesToRadians(float(i * j) / m_curveDivider));
+ const float z = float(j) + 0.5f;
+ dataArray->append(QScatterDataItem({x, y, z}));
+ }
+ }
+ //! [5]
+#endif
+
+ //! [6]
+ m_graph->seriesList().at(0)->dataProxy()->resetArray(dataArray);
+ //! [6]
+}
+
+void ScatterDataModifier::changeStyle(int style)
+{
+ QComboBox *comboBox = qobject_cast<QComboBox *>(sender());
+ if (comboBox) {
+ m_style = comboBox->itemData(style).value<QAbstract3DSeries::Mesh>();
+ if (!m_graph->seriesList().isEmpty())
+ m_graph->seriesList().at(0)->setMesh(m_style);
+ }
+}
+
+void ScatterDataModifier::setSmoothDots(int smooth)
+{
+ m_smooth = bool(smooth);
+ QScatter3DSeries *series = m_graph->seriesList().at(0);
+ series->setMeshSmooth(m_smooth);
+}
+
+void ScatterDataModifier::changeTheme(int theme)
+{
+ Q3DTheme *currentTheme = m_graph->activeTheme();
+ currentTheme->setType(Q3DTheme::Theme(theme));
+ emit backgroundEnabledChanged(currentTheme->isBackgroundEnabled());
+ emit gridEnabledChanged(currentTheme->isGridEnabled());
+}
+
+void ScatterDataModifier::changePresetCamera()
+{
+ static int preset = Q3DCamera::CameraPresetFrontLow;
+
+ m_graph->scene()->activeCamera()->setCameraPreset((Q3DCamera::CameraPreset)preset);
+
+ if (++preset > Q3DCamera::CameraPresetDirectlyBelow)
+ preset = Q3DCamera::CameraPresetFrontLow;
+}
+
+void ScatterDataModifier::shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality sq)
+{
+ int quality = int(sq);
+ emit shadowQualityChanged(quality); // connected to a checkbox in scattergraph.cpp
+}
+
+void ScatterDataModifier::changeShadowQuality(int quality)
+{
+ QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality);
+ m_graph->setShadowQuality(sq);
+}
+
+void ScatterDataModifier::setBackgroundEnabled(int enabled)
+{
+ m_graph->activeTheme()->setBackgroundEnabled(enabled == Qt::Checked);
+}
+
+void ScatterDataModifier::setGridEnabled(int enabled)
+{
+ m_graph->activeTheme()->setGridEnabled(enabled == Qt::Checked);
+}
+
+void ScatterDataModifier::toggleItemCount()
+{
+ if (m_itemCount == numberOfItems) {
+ m_itemCount = lowerNumberOfItems;
+ m_curveDivider = lowerCurveDivider;
+ } else {
+ m_itemCount = numberOfItems;
+ m_curveDivider = curveDivider;
+ }
+ m_graph->seriesList().at(0)->dataProxy()->resetArray(0);
+ addData();
+}
+
+void ScatterDataModifier::toggleRanges()
+{
+ if (!m_autoAdjust) {
+ m_graph->axisX()->setAutoAdjustRange(true);
+ m_graph->axisZ()->setAutoAdjustRange(true);
+ m_inputHandler->setDragSpeedModifier(1.5f);
+ m_autoAdjust = true;
+ } else {
+ m_graph->axisX()->setRange(-10.0f, 10.0f);
+ m_graph->axisZ()->setRange(-10.0f, 10.0f);
+ m_inputHandler->setDragSpeedModifier(15.0f);
+ m_autoAdjust = false;
+ }
+}
+
+QVector3D ScatterDataModifier::randVector()
+{
+ auto *generator = QRandomGenerator::global();
+ const auto x = float(generator->bounded(100)) / 2.0f - float(generator->bounded(100)) / 2.0f;
+ const auto y = float(generator->bounded(100)) / 100.0f - float(generator->bounded(100)) / 100.0f;
+ const auto z = float(generator->bounded(100)) / 2.0f - float(generator->bounded(100)) / 2.0f;
+ return {x, y, z};
+}
diff --git a/examples/datavisualization/graphgallery/scatterdatamodifier.h b/examples/datavisualization/graphgallery/scatterdatamodifier.h
new file mode 100644
index 00000000..53f557e6
--- /dev/null
+++ b/examples/datavisualization/graphgallery/scatterdatamodifier.h
@@ -0,0 +1,49 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef SCATTERDATAMODIFIER_H
+#define SCATTERDATAMODIFIER_H
+
+#include "axesinputhandler.h"
+
+#include <QtDataVisualization/q3dscatter.h>
+#include <QtDataVisualization/qabstract3dseries.h>
+
+class ScatterDataModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ScatterDataModifier(Q3DScatter *scatter, QObject *parent);
+
+ void addData();
+
+public Q_SLOTS:
+ void setBackgroundEnabled(int enabled);
+ void setGridEnabled(int enabled);
+ void setSmoothDots(int smooth);
+ void changePresetCamera();
+ void toggleItemCount();
+ void toggleRanges();
+ void changeStyle(int style);
+ void changeTheme(int theme);
+ void changeShadowQuality(int quality);
+ void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
+
+Q_SIGNALS:
+ void backgroundEnabledChanged(bool enabled);
+ void gridEnabledChanged(bool enabled);
+ void shadowQualityChanged(int quality);
+
+private:
+ QVector3D randVector();
+ Q3DScatter *m_graph = nullptr;
+ QAbstract3DSeries::Mesh m_style = QAbstract3DSeries::MeshSphere;
+ bool m_smooth = true;
+ int m_itemCount;
+ float m_curveDivider;
+
+ AxesInputHandler *m_inputHandler;
+ bool m_autoAdjust = true;
+};
+
+#endif
diff --git a/examples/datavisualization/graphgallery/scattergraph.cpp b/examples/datavisualization/graphgallery/scattergraph.cpp
new file mode 100644
index 00000000..a426c10a
--- /dev/null
+++ b/examples/datavisualization/graphgallery/scattergraph.cpp
@@ -0,0 +1,142 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "scattergraph.h"
+#include "scatterdatamodifier.h"
+
+#include <QtWidgets/qboxlayout.h>
+#include <QtWidgets/qcheckbox.h>
+#include <QtWidgets/qcombobox.h>
+#include <QtWidgets/qlabel.h>
+#include <QtWidgets/qcommandlinkbutton.h>
+
+using namespace Qt::StringLiterals;
+
+ScatterGraph::ScatterGraph()
+{
+ m_scatterGraph = new Q3DScatter();
+}
+
+ScatterGraph::~ScatterGraph() = default;
+
+bool ScatterGraph::initialize(const QSize &minimumGraphSize, const QSize &maximumGraphSize)
+{
+ if (!m_scatterGraph->hasContext())
+ return false;
+
+ m_scatterWidget = new QWidget;
+ auto *hLayout = new QHBoxLayout(m_scatterWidget);
+ m_container = QWidget::createWindowContainer(m_scatterGraph, m_scatterWidget);
+ m_container->setMinimumSize(minimumGraphSize);
+ m_container->setMaximumSize(maximumGraphSize);
+ m_container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ m_container->setFocusPolicy(Qt::StrongFocus);
+ hLayout->addWidget(m_container, 1);
+
+ auto *vLayout = new QVBoxLayout();
+ hLayout->addLayout(vLayout);
+
+ auto *cameraButton = new QCommandLinkButton(m_scatterWidget);
+ cameraButton->setText(u"Change camera preset"_s);
+ cameraButton->setDescription(u"Switch between a number of preset camera positions"_s);
+ cameraButton->setIconSize(QSize(0, 0));
+
+ auto *itemCountButton = new QCommandLinkButton(m_scatterWidget);
+ itemCountButton->setText(u"Toggle item count"_s);
+ itemCountButton->setDescription(u"Switch between 900 and 10000 data points"_s);
+ itemCountButton->setIconSize(QSize(0, 0));
+
+ auto *rangeButton = new QCommandLinkButton(m_scatterWidget);
+ rangeButton->setText(u"Toggle axis ranges"_s);
+ rangeButton->setDescription(u"Switch between automatic axis ranges and preset ranges"_s);
+ rangeButton->setIconSize(QSize(0, 0));
+
+ auto *backgroundCheckBox = new QCheckBox(m_scatterWidget);
+ backgroundCheckBox->setText(u"Show background"_s);
+ backgroundCheckBox->setChecked(true);
+
+ auto *gridCheckBox = new QCheckBox(m_scatterWidget);
+ gridCheckBox->setText(u"Show grid"_s);
+ gridCheckBox->setChecked(true);
+
+ auto *smoothCheckBox = new QCheckBox(m_scatterWidget);
+ smoothCheckBox->setText(u"Smooth dots"_s);
+ smoothCheckBox->setChecked(true);
+
+ auto *itemStyleList = new QComboBox(m_scatterWidget);
+ itemStyleList->addItem(u"Sphere"_s, QAbstract3DSeries::MeshSphere);
+ itemStyleList->addItem(u"Cube"_s, QAbstract3DSeries::MeshCube);
+ itemStyleList->addItem(u"Minimal"_s, QAbstract3DSeries::MeshMinimal);
+ itemStyleList->addItem(u"Point"_s, QAbstract3DSeries::MeshPoint);
+ itemStyleList->setCurrentIndex(0);
+
+ auto *themeList = new QComboBox(m_scatterWidget);
+ themeList->addItem(u"Qt"_s);
+ themeList->addItem(u"Primary Colors"_s);
+ themeList->addItem(u"Digia"_s);
+ themeList->addItem(u"Stone Moss"_s);
+ themeList->addItem(u"Army Blue"_s);
+ themeList->addItem(u"Retro"_s);
+ themeList->addItem(u"Ebony"_s);
+ themeList->addItem(u"Isabelle"_s);
+ themeList->setCurrentIndex(3);
+
+ auto *shadowQuality = new QComboBox(m_scatterWidget);
+ shadowQuality->addItem(u"None"_s);
+ shadowQuality->addItem(u"Low"_s);
+ shadowQuality->addItem(u"Medium"_s);
+ shadowQuality->addItem(u"High"_s);
+ shadowQuality->addItem(u"Low Soft"_s);
+ shadowQuality->addItem(u"Medium Soft"_s);
+ shadowQuality->addItem(u"High Soft"_s);
+ shadowQuality->setCurrentIndex(6);
+
+ vLayout->addWidget(cameraButton);
+ vLayout->addWidget(itemCountButton);
+ vLayout->addWidget(rangeButton);
+ vLayout->addWidget(backgroundCheckBox);
+ vLayout->addWidget(gridCheckBox);
+ vLayout->addWidget(smoothCheckBox);
+ vLayout->addWidget(new QLabel(u"Change dot style"_s));
+ vLayout->addWidget(itemStyleList);
+ vLayout->addWidget(new QLabel(u"Change theme"_s));
+ vLayout->addWidget(themeList);
+ vLayout->addWidget(new QLabel(u"Adjust shadow quality"_s));
+ vLayout->addWidget(shadowQuality, 1, Qt::AlignTop);
+
+ auto *modifier = new ScatterDataModifier(m_scatterGraph, this);
+
+ QObject::connect(cameraButton, &QCommandLinkButton::clicked, modifier,
+ &ScatterDataModifier::changePresetCamera);
+ QObject::connect(itemCountButton, &QCommandLinkButton::clicked, modifier,
+ &ScatterDataModifier::toggleItemCount);
+ QObject::connect(rangeButton, &QCommandLinkButton::clicked, modifier,
+ &ScatterDataModifier::toggleRanges);
+
+ QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier,
+ &ScatterDataModifier::setBackgroundEnabled);
+ QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier,
+ &ScatterDataModifier::setGridEnabled);
+ QObject::connect(smoothCheckBox, &QCheckBox::stateChanged, modifier,
+ &ScatterDataModifier::setSmoothDots);
+
+ QObject::connect(modifier, &ScatterDataModifier::backgroundEnabledChanged,
+ backgroundCheckBox, &QCheckBox::setChecked);
+ QObject::connect(modifier, &ScatterDataModifier::gridEnabledChanged,
+ gridCheckBox, &QCheckBox::setChecked);
+ QObject::connect(itemStyleList, &QComboBox::currentIndexChanged, modifier,
+ &ScatterDataModifier::changeStyle);
+
+ QObject::connect(themeList, &QComboBox::currentIndexChanged, modifier,
+ &ScatterDataModifier::changeTheme);
+
+ QObject::connect(shadowQuality, &QComboBox::currentIndexChanged, modifier,
+ &ScatterDataModifier::changeShadowQuality);
+
+ QObject::connect(modifier, &ScatterDataModifier::shadowQualityChanged, shadowQuality,
+ &QComboBox::setCurrentIndex);
+ QObject::connect(m_scatterGraph, &Q3DScatter::shadowQualityChanged, modifier,
+ &ScatterDataModifier::shadowQualityUpdatedByVisual);
+
+ return true;
+}
diff --git a/examples/datavisualization/graphgallery/scattergraph.h b/examples/datavisualization/graphgallery/scattergraph.h
new file mode 100644
index 00000000..eb8c7c52
--- /dev/null
+++ b/examples/datavisualization/graphgallery/scattergraph.h
@@ -0,0 +1,26 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef SCATTERGRAPH_H
+#define SCATTERGRAPH_H
+
+#include <QtCore/qobject.h>
+#include <QtDataVisualization/q3dscatter.h>
+
+class ScatterGraph : public QObject
+{
+ Q_OBJECT
+public:
+ ScatterGraph();
+ ~ScatterGraph();
+
+ bool initialize(const QSize &minimumGraphSize, const QSize &maximumGraphSize);
+ QWidget *scatterWidget() { return m_scatterWidget; }
+
+private:
+ Q3DScatter *m_scatterGraph = nullptr;
+ QWidget *m_container = nullptr;
+ QWidget *m_scatterWidget = nullptr;
+};
+
+#endif
diff --git a/examples/datavisualization/graphgallery/surfacegraph.cpp b/examples/datavisualization/graphgallery/surfacegraph.cpp
new file mode 100644
index 00000000..88cbc72f
--- /dev/null
+++ b/examples/datavisualization/graphgallery/surfacegraph.cpp
@@ -0,0 +1,346 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "surfacegraph.h"
+#include "surfacegraphmodifier.h"
+
+#include <QtWidgets/qboxlayout.h>
+#include <QtWidgets/qcheckbox.h>
+#include <QtWidgets/qcombobox.h>
+#include <QtWidgets/qradiobutton.h>
+#include <QtWidgets/qgroupbox.h>
+#include <QtWidgets/qlabel.h>
+#include <QtWidgets/qcommandlinkbutton.h>
+#include <QtGui/qpainter.h>
+
+using namespace Qt::StringLiterals;
+
+static QPixmap gradientBtoYPB_Pixmap()
+{
+ QLinearGradient grBtoY(0, 0, 1, 100);
+ grBtoY.setColorAt(1.f, Qt::black);
+ grBtoY.setColorAt(0.67f, Qt::blue);
+ grBtoY.setColorAt(0.33f, Qt::red);
+ grBtoY.setColorAt(0.f, Qt::yellow);
+ QPixmap pm(24, 100);
+ QPainter pmp(&pm);
+ pmp.setBrush(QBrush(grBtoY));
+ pmp.setPen(Qt::NoPen);
+ pmp.drawRect(0, 0, 24, 100);
+ return pm;
+}
+
+static QPixmap gradientGtoRPB_Pixmap()
+{
+ QLinearGradient grGtoR(0, 0, 1, 100);
+ grGtoR.setColorAt(1.f, Qt::darkGreen);
+ grGtoR.setColorAt(0.5f, Qt::yellow);
+ grGtoR.setColorAt(0.2f, Qt::red);
+ grGtoR.setColorAt(0.f, Qt::darkRed);
+ QPixmap pm(24, 100);
+ QPainter pmp(&pm);
+ pmp.setBrush(QBrush(grGtoR));
+ pmp.drawRect(0, 0, 24, 100);
+ return pm;
+}
+
+static QPixmap highlightPixmap()
+{
+ constexpr int height = 400;
+ constexpr int width = 110;
+ constexpr int border = 10;
+ QLinearGradient gr(0, 0, 1, height - 2 * border);
+ gr.setColorAt(1.f, Qt::black);
+ gr.setColorAt(0.8f, Qt::darkGreen);
+ gr.setColorAt(0.6f, Qt::green);
+ gr.setColorAt(0.4f, Qt::yellow);
+ gr.setColorAt(0.2f, Qt::red);
+ gr.setColorAt(0.f, Qt::darkRed);
+
+ QPixmap pmHighlight(width, height);
+ pmHighlight.fill(Qt::transparent);
+ QPainter pmpHighlight(&pmHighlight);
+ pmpHighlight.setBrush(QBrush(gr));
+ pmpHighlight.setPen(Qt::NoPen);
+ pmpHighlight.drawRect(border, border, 35, height - 2 * border);
+ pmpHighlight.setPen(Qt::black);
+ int step = (height - 2 * border) / 5;
+ for (int i = 0; i < 6; ++i) {
+ int yPos = i * step + border;
+ pmpHighlight.drawLine(border, yPos, 55, yPos);
+ const int height = 550 - (i * 110);
+ pmpHighlight.drawText(60, yPos + 2, QString::number(height) + u" m"_s);
+ }
+ return pmHighlight;
+}
+
+SurfaceGraph::SurfaceGraph()
+{
+ m_surfaceGraph = new Q3DSurface();
+}
+
+SurfaceGraph::~SurfaceGraph() = default;
+
+bool SurfaceGraph::initialize(const QSize &minimumGraphSize, const QSize &maximumGraphSize)
+{
+ if (!m_surfaceGraph->hasContext())
+ return false;
+
+ m_surfaceWidget = new QWidget;
+ auto *hLayout = new QHBoxLayout(m_surfaceWidget);
+ m_container = QWidget::createWindowContainer(m_surfaceGraph, m_surfaceWidget);
+ m_container->setMinimumSize(minimumGraphSize);
+ m_container->setMaximumSize(maximumGraphSize);
+ m_container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ m_container->setFocusPolicy(Qt::StrongFocus);
+ hLayout->addWidget(m_container, 1);
+
+ auto *vLayout = new QVBoxLayout();
+ hLayout->addLayout(vLayout);
+ vLayout->setAlignment(Qt::AlignTop);
+
+ // Create control widgets
+ auto *modelGroupBox = new QGroupBox(u"Model"_s);
+
+ auto *sqrtSinModelRB = new QRadioButton(m_surfaceWidget);
+ sqrtSinModelRB->setText(u"Sqrt && Sin"_s);
+ sqrtSinModelRB->setChecked(false);
+
+ auto *heightMapModelRB = new QRadioButton(m_surfaceWidget);
+ heightMapModelRB->setText(u"Multiseries\nHeight Map"_s);
+ heightMapModelRB->setChecked(false);
+
+ auto *texturedModelRB = new QRadioButton(m_surfaceWidget);
+ texturedModelRB->setText(u"Textured\nTopography"_s);
+ texturedModelRB->setChecked(false);
+
+ auto *modelVBox = new QVBoxLayout;
+ modelVBox->addWidget(sqrtSinModelRB);
+ modelVBox->addWidget(heightMapModelRB);
+ modelVBox->addWidget(texturedModelRB);
+ modelGroupBox->setLayout(modelVBox);
+
+ auto *selectionGroupBox = new QGroupBox(u"Graph Selection Mode"_s);
+
+ auto *modeNoneRB = new QRadioButton(m_surfaceWidget);
+ modeNoneRB->setText(u"No selection"_s);
+ modeNoneRB->setChecked(false);
+
+ auto *modeItemRB = new QRadioButton(m_surfaceWidget);
+ modeItemRB->setText(u"Item"_s);
+ modeItemRB->setChecked(false);
+
+ auto *modeSliceRowRB = new QRadioButton(m_surfaceWidget);
+ modeSliceRowRB->setText(u"Row Slice"_s);
+ modeSliceRowRB->setChecked(false);
+
+ auto *modeSliceColumnRB = new QRadioButton(m_surfaceWidget);
+ modeSliceColumnRB->setText(u"Column Slice"_s);
+ modeSliceColumnRB->setChecked(false);
+
+ auto *selectionVBox = new QVBoxLayout;
+ selectionVBox->addWidget(modeNoneRB);
+ selectionVBox->addWidget(modeItemRB);
+ selectionVBox->addWidget(modeSliceRowRB);
+ selectionVBox->addWidget(modeSliceColumnRB);
+ selectionGroupBox->setLayout(selectionVBox);
+
+ auto *axisGroupBox = new QGroupBox(u"Axis ranges"_s);
+
+ auto *axisMinSliderX = new QSlider(Qt::Horizontal);
+ axisMinSliderX->setMinimum(0);
+ axisMinSliderX->setTickInterval(1);
+ axisMinSliderX->setEnabled(true);
+ auto *axisMaxSliderX = new QSlider(Qt::Horizontal);
+ axisMaxSliderX->setMinimum(1);
+ axisMaxSliderX->setTickInterval(1);
+ axisMaxSliderX->setEnabled(true);
+ auto *axisMinSliderZ = new QSlider(Qt::Horizontal);
+ axisMinSliderZ->setMinimum(0);
+ axisMinSliderZ->setTickInterval(1);
+ axisMinSliderZ->setEnabled(true);
+ auto *axisMaxSliderZ = new QSlider(Qt::Horizontal);
+ axisMaxSliderZ->setMinimum(1);
+ axisMaxSliderZ->setTickInterval(1);
+ axisMaxSliderZ->setEnabled(true);
+
+ auto *axisVBox = new QVBoxLayout;
+ axisVBox->addWidget(new QLabel(u"Column range"_s));
+ axisVBox->addWidget(axisMinSliderX);
+ axisVBox->addWidget(axisMaxSliderX);
+ axisVBox->addWidget(new QLabel(u"Row range"_s));
+ axisVBox->addWidget(axisMinSliderZ);
+ axisVBox->addWidget(axisMaxSliderZ);
+ axisGroupBox->setLayout(axisVBox);
+
+ // Mode-dependent controls
+ // sqrt-sin
+ auto *colorGroupBox = new QGroupBox(u"Custom gradient"_s);
+
+ QPixmap pixmap = gradientBtoYPB_Pixmap();
+ auto *gradientBtoYPB = new QPushButton(m_surfaceWidget);
+ gradientBtoYPB->setIcon(QIcon(pixmap));
+ gradientBtoYPB->setIconSize(pixmap.size());
+
+ pixmap = gradientGtoRPB_Pixmap();
+ auto *gradientGtoRPB = new QPushButton(m_surfaceWidget);
+ gradientGtoRPB->setIcon(QIcon(pixmap));
+ gradientGtoRPB->setIconSize(pixmap.size());
+ auto *colorHBox = new QHBoxLayout;
+ colorHBox->addWidget(gradientBtoYPB);
+ colorHBox->addWidget(gradientGtoRPB);
+ colorGroupBox->setLayout(colorHBox);
+
+ // Multiseries heightmap
+ auto *showGroupBox = new QGroupBox(u"_show Object"_s);
+ showGroupBox->setVisible(false);
+
+ auto *checkboxShowOilRigOne = new QCheckBox(u"Oil Rig 1"_s);
+ checkboxShowOilRigOne->setChecked(true);
+
+ auto *checkboxShowOilRigTwo = new QCheckBox(u"Oil Rig 2"_s);
+ checkboxShowOilRigTwo->setChecked(true);
+
+ auto *checkboxShowRefinery = new QCheckBox(u"Refinery"_s);
+
+ auto *showVBox = new QVBoxLayout;
+ showVBox->addWidget(checkboxShowOilRigOne);
+ showVBox->addWidget(checkboxShowOilRigTwo);
+ showVBox->addWidget(checkboxShowRefinery);
+ showGroupBox->setLayout(showVBox);
+
+ auto *visualsGroupBox = new QGroupBox(u"Visuals"_s);
+ visualsGroupBox->setVisible(false);
+
+ auto *checkboxVisualsSeeThrough = new QCheckBox(u"See-Through"_s);
+
+ auto *checkboxHighlightOil = new QCheckBox(u"Highlight Oil"_s);
+
+ auto *checkboxShowShadows = new QCheckBox(u"Shadows"_s);
+ checkboxShowShadows->setChecked(true);
+
+ auto *visualVBox = new QVBoxLayout;
+ visualVBox->addWidget(checkboxVisualsSeeThrough);
+ visualVBox->addWidget(checkboxHighlightOil);
+ visualVBox->addWidget(checkboxShowShadows);
+ visualsGroupBox->setLayout(visualVBox);
+
+ auto *labelSelection = new QLabel(u"Selection:"_s);
+ labelSelection->setVisible(false);
+
+ auto *labelSelectedItem = new QLabel(u"Nothing"_s);
+ labelSelectedItem->setVisible(false);
+
+ // Textured topography heightmap
+ auto *enableTexture = new QCheckBox(u"Surface texture"_s);
+ enableTexture->setVisible(false);
+
+ auto *label = new QLabel(m_surfaceWidget);
+ label->setPixmap(highlightPixmap());
+
+ auto *heightMapGroupBox = new QGroupBox(u"Highlight color map"_s);
+ auto *colorMapVBox = new QVBoxLayout;
+ colorMapVBox->addWidget(label);
+ heightMapGroupBox->setLayout(colorMapVBox);
+ heightMapGroupBox->setVisible(false);
+
+ // Populate vertical layout
+ // Common
+ vLayout->addWidget(modelGroupBox);
+ vLayout->addWidget(selectionGroupBox);
+ vLayout->addWidget(axisGroupBox);
+
+ // Sqrt Sin
+ vLayout->addWidget(colorGroupBox);
+
+ // Multiseries heightmap
+ vLayout->addWidget(showGroupBox);
+ vLayout->addWidget(visualsGroupBox);
+ vLayout->addWidget(labelSelection);
+ vLayout->addWidget(labelSelectedItem);
+
+ // Textured topography
+ vLayout->addWidget(heightMapGroupBox);
+ vLayout->addWidget(enableTexture);
+
+ // Create the controller
+ auto *modifier = new SurfaceGraphModifier(m_surfaceGraph, labelSelectedItem, this);
+
+ // Connect widget controls to controller
+ QObject::connect(heightMapModelRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraphModifier::enableHeightMapModel);
+ QObject::connect(sqrtSinModelRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraphModifier::enableSqrtSinModel);
+ QObject::connect(texturedModelRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraphModifier::enableTopographyModel);
+
+ QObject::connect(modeNoneRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraphModifier::toggleModeNone);
+ QObject::connect(modeItemRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraphModifier::toggleModeItem);
+ QObject::connect(modeSliceRowRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraphModifier::toggleModeSliceRow);
+ QObject::connect(modeSliceColumnRB, &QRadioButton::toggled,
+ modifier, &SurfaceGraphModifier::toggleModeSliceColumn);
+
+ QObject::connect(axisMinSliderX, &QSlider::valueChanged,
+ modifier, &SurfaceGraphModifier::adjustXMin);
+ QObject::connect(axisMaxSliderX, &QSlider::valueChanged,
+ modifier, &SurfaceGraphModifier::adjustXMax);
+ QObject::connect(axisMinSliderZ, &QSlider::valueChanged,
+ modifier, &SurfaceGraphModifier::adjustZMin);
+ QObject::connect(axisMaxSliderZ, &QSlider::valueChanged,
+ modifier, &SurfaceGraphModifier::adjustZMax);
+
+ // Mode dependent connections
+ QObject::connect(gradientBtoYPB, &QPushButton::pressed,
+ modifier, &SurfaceGraphModifier::setBlackToYellowGradient);
+ QObject::connect(gradientGtoRPB, &QPushButton::pressed,
+ modifier, &SurfaceGraphModifier::setGreenToRedGradient);
+
+ QObject::connect(checkboxShowOilRigOne, &QCheckBox::stateChanged,
+ modifier, &SurfaceGraphModifier::toggleItemOne);
+ QObject::connect(checkboxShowOilRigTwo, &QCheckBox::stateChanged,
+ modifier, &SurfaceGraphModifier::toggleItemTwo);
+ QObject::connect(checkboxShowRefinery, &QCheckBox::stateChanged,
+ modifier, &SurfaceGraphModifier::toggleItemThree);
+
+ QObject::connect(checkboxVisualsSeeThrough, &QCheckBox::stateChanged,
+ modifier, &SurfaceGraphModifier::toggleSeeThrough);
+ QObject::connect(checkboxHighlightOil, &QCheckBox::stateChanged,
+ modifier, &SurfaceGraphModifier::toggleOilHighlight);
+ QObject::connect(checkboxShowShadows, &QCheckBox::stateChanged,
+ modifier, &SurfaceGraphModifier::toggleShadows);
+
+ QObject::connect(enableTexture, &QCheckBox::stateChanged,
+ modifier, &SurfaceGraphModifier::toggleSurfaceTexture);
+
+ // Connections to disable features depending on mode
+ QObject::connect(sqrtSinModelRB, &QRadioButton::toggled,
+ colorGroupBox, &QGroupBox::setVisible);
+
+ QObject::connect(heightMapModelRB, &QRadioButton::toggled,
+ showGroupBox, &QGroupBox::setVisible);
+ QObject::connect(heightMapModelRB, &QRadioButton::toggled,
+ visualsGroupBox, &QGroupBox::setVisible);
+ QObject::connect(heightMapModelRB, &QRadioButton::toggled,
+ labelSelection, &QLabel::setVisible);
+ QObject::connect(heightMapModelRB, &QRadioButton::toggled,
+ labelSelectedItem, &QLabel::setVisible);
+
+ QObject::connect(texturedModelRB, &QRadioButton::toggled,
+ enableTexture, &QLabel::setVisible);
+ QObject::connect(texturedModelRB, &QRadioButton::toggled,
+ heightMapGroupBox, &QGroupBox::setVisible);
+
+ modifier->setAxisMinSliderX(axisMinSliderX);
+ modifier->setAxisMaxSliderX(axisMaxSliderX);
+ modifier->setAxisMinSliderZ(axisMinSliderZ);
+ modifier->setAxisMaxSliderZ(axisMaxSliderZ);
+
+ sqrtSinModelRB->setChecked(true);
+ modeItemRB->setChecked(true);
+ enableTexture->setChecked(true);
+
+ return true;
+}
diff --git a/examples/datavisualization/graphgallery/surfacegraph.h b/examples/datavisualization/graphgallery/surfacegraph.h
new file mode 100644
index 00000000..5ec29930
--- /dev/null
+++ b/examples/datavisualization/graphgallery/surfacegraph.h
@@ -0,0 +1,26 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef SURFACEGRAPH_H
+#define SURFACEGRAPH_H
+
+#include <QtCore/qobject.h>
+#include <QtDataVisualization/q3dsurface.h>
+
+class SurfaceGraph : public QObject
+{
+ Q_OBJECT
+public:
+ SurfaceGraph();
+ ~SurfaceGraph();
+
+ bool initialize(const QSize &minimumGraphSize, const QSize &maximumGraphSize);
+ QWidget *surfaceWidget() { return m_surfaceWidget; }
+
+private:
+ Q3DSurface *m_surfaceGraph = nullptr;
+ QWidget *m_container = nullptr;
+ QWidget *m_surfaceWidget = nullptr;
+};
+
+#endif
diff --git a/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp b/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp
new file mode 100644
index 00000000..190a96b9
--- /dev/null
+++ b/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp
@@ -0,0 +1,647 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "surfacegraphmodifier.h"
+#include "highlightseries.h"
+#include "topographicseries.h"
+#include "custominputhandler.h"
+
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/q3dtheme.h>
+#include <QtGui/qimage.h>
+#include <QtCore/qmath.h>
+
+using namespace Qt::StringLiterals;
+
+const int sampleCountX = 150;
+const int sampleCountZ = 150;
+const int heightMapGridStepX = 6;
+const int heightMapGridStepZ = 6;
+const float sampleMin = -8.f;
+const float sampleMax = 8.f;
+
+const float areaWidth = 8000.f;
+const float areaHeight = 8000.f;
+const float aspectRatio = 0.1389f;
+const float minRange = areaWidth * 0.49f;
+
+SurfaceGraphModifier::SurfaceGraphModifier(Q3DSurface *surface, QLabel *label, QObject *parent) :
+ QObject(parent),
+ m_graph(surface),
+ m_textField(label)
+{
+ m_graph->scene()->activeCamera()->setZoomLevel(85.f);
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetIsometricRight);
+ m_graph->activeTheme()->setType(Q3DTheme::ThemeRetro);
+
+ m_graph->setAxisX(new QValue3DAxis);
+ m_graph->setAxisY(new QValue3DAxis);
+ m_graph->setAxisZ(new QValue3DAxis);
+
+ //
+ // Sqrt Sin
+ //
+ //! [0]
+ m_sqrtSinProxy = new QSurfaceDataProxy();
+ m_sqrtSinSeries = new QSurface3DSeries(m_sqrtSinProxy);
+ //! [0]
+ fillSqrtSinProxy();
+
+ //
+ // Multisurface heightmap
+ //
+ //! [2]
+ // Create the first surface layer
+ QImage heightMapImageOne(":/data/layer_1.png");
+ m_heightMapProxyOne = new QHeightMapSurfaceDataProxy(heightMapImageOne);
+ m_heightMapSeriesOne = new QSurface3DSeries(m_heightMapProxyOne);
+ m_heightMapSeriesOne->setItemLabelFormat(u"(@xLabel, @zLabel): @yLabel"_s);
+ m_heightMapProxyOne->setValueRanges(34.f, 40.f, 18.f, 24.f);
+ //! [2]
+
+ // Create the other 2 surface layers
+ QImage heightMapImageTwo(":/data/layer_2.png");
+ m_heightMapProxyTwo = new QHeightMapSurfaceDataProxy(heightMapImageTwo);
+ m_heightMapSeriesTwo = new QSurface3DSeries(m_heightMapProxyTwo);
+ m_heightMapSeriesTwo->setItemLabelFormat(u"(@xLabel, @zLabel): @yLabel"_s);
+ m_heightMapProxyTwo->setValueRanges(34.f, 40.f, 18.f, 24.f);
+
+ QImage heightMapImageThree(":/data/layer_3.png");
+ m_heightMapProxyThree = new QHeightMapSurfaceDataProxy(heightMapImageThree);
+ m_heightMapSeriesThree = new QSurface3DSeries(m_heightMapProxyThree);
+ m_heightMapSeriesThree->setItemLabelFormat(u"(@xLabel, @zLabel): @yLabel"_s);
+ m_heightMapProxyThree->setValueRanges(34.f, 40.f, 18.f, 24.f);
+
+ // The images are the same size, so it's enough to get the dimensions from one
+ m_heightMapWidth = heightMapImageOne.width();
+ m_heightMapHeight = heightMapImageOne.height();
+
+ // Set the gradients for multi-surface layers
+ QLinearGradient grOne;
+ grOne.setColorAt(0.f, Qt::black);
+ grOne.setColorAt(0.38f, Qt::darkYellow);
+ grOne.setColorAt(0.39f, Qt::darkGreen);
+ grOne.setColorAt(0.5f, Qt::darkGray);
+ grOne.setColorAt(1.f, Qt::gray);
+ m_heightMapSeriesOne->setBaseGradient(grOne);
+ m_heightMapSeriesOne->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+
+ QLinearGradient grTwo;
+ grTwo.setColorAt(0.39f, Qt::blue);
+ grTwo.setColorAt(0.4f, Qt::white);
+ m_heightMapSeriesTwo->setBaseGradient(grTwo);
+ m_heightMapSeriesTwo->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+
+ QLinearGradient grThree;
+ grThree.setColorAt(0.f, Qt::white);
+ grThree.setColorAt(0.05f, Qt::black);
+ m_heightMapSeriesThree->setBaseGradient(grThree);
+ m_heightMapSeriesThree->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+
+ // Custom items and label
+ connect(m_graph, &QAbstract3DGraph::selectedElementChanged,
+ this, &SurfaceGraphModifier::handleElementSelected);
+
+ m_selectionAnimation = new QPropertyAnimation(this);
+ m_selectionAnimation->setPropertyName("scaling");
+ m_selectionAnimation->setDuration(500);
+ m_selectionAnimation->setLoopCount(-1);
+
+ QFont titleFont = QFont("Century Gothic", 30);
+ titleFont.setBold(true);
+ m_titleLabel = new QCustom3DLabel("Oil Rigs on Imaginary Sea", titleFont,
+ QVector3D(0.f, 1.2f, 0.f),
+ QVector3D(1.f, 1.f, 0.f),
+ QQuaternion());
+ m_titleLabel->setPositionAbsolute(true);
+ m_titleLabel->setFacingCamera(true);
+ m_titleLabel->setBackgroundColor(QColor(0x66cdaa));
+ m_graph->addCustomItem(m_titleLabel);
+ m_titleLabel->setVisible(false);
+
+ // Make two of the custom object visible
+ toggleItemOne(true);
+ toggleItemTwo(true);
+
+ //
+ // Topographic map
+ //
+ m_topography = new TopographicSeries();
+ m_topography->setTopographyFile(":/data/topography.png", areaWidth, areaHeight);
+ m_topography->setItemLabelFormat(u"@yLabel m"_s);
+
+ m_highlight = new HighlightSeries();
+ m_highlight->setTopographicSeries(m_topography);
+ m_highlight->setMinHeight(minRange * aspectRatio);
+ m_highlight->handleGradientChange(areaWidth * aspectRatio);
+ //! [16]
+ QObject::connect(m_graph->axisY(), &QValue3DAxis::maxChanged,
+ m_highlight, &HighlightSeries::handleGradientChange);
+ //! [16]
+
+ m_customInputHandler = new CustomInputHandler(m_graph);
+ m_customInputHandler->setHighlightSeries(m_highlight);
+ m_customInputHandler->setAxes(m_graph->axisX(), m_graph->axisY(), m_graph->axisZ());
+ m_customInputHandler->setLimits(0.f, areaWidth, minRange);
+ m_customInputHandler->setAspectRatio(aspectRatio);
+}
+
+void SurfaceGraphModifier::fillSqrtSinProxy()
+{
+ float stepX = (sampleMax - sampleMin) / float(sampleCountX - 1);
+ float stepZ = (sampleMax - sampleMin) / float(sampleCountZ - 1);
+
+ //! [1]
+ auto *dataArray = new QSurfaceDataArray;
+ dataArray->reserve(sampleCountZ);
+ for (int i = 0 ; i < sampleCountZ ; ++i) {
+ auto *newRow = new QSurfaceDataRow;
+ newRow->reserve(sampleCountX);
+ // Keep values within range bounds, since just adding step can cause minor drift due
+ // to the rounding errors.
+ float z = qMin(sampleMax, (i * stepZ + sampleMin));
+ for (int j = 0; j < sampleCountX; ++j) {
+ float x = qMin(sampleMax, (j * stepX + sampleMin));
+ float R = qSqrt(z * z + x * x) + 0.01f;
+ float y = (qSin(R) / R + 0.24f) * 1.61f;
+ newRow->append(QSurfaceDataItem({x, y, z}));
+ }
+ dataArray->append(newRow);
+ }
+
+ m_sqrtSinProxy->resetArray(dataArray);
+ //! [1]
+}
+
+void SurfaceGraphModifier::enableSqrtSinModel(bool enable)
+{
+ if (enable) {
+ //! [3]
+ m_sqrtSinSeries->setDrawMode(QSurface3DSeries::DrawSurfaceAndWireframe);
+ m_sqrtSinSeries->setFlatShadingEnabled(true);
+
+ m_graph->axisX()->setLabelFormat("%.2f");
+ m_graph->axisZ()->setLabelFormat("%.2f");
+ m_graph->axisX()->setRange(sampleMin, sampleMax);
+ m_graph->axisY()->setRange(0.f, 2.f);
+ m_graph->axisZ()->setRange(sampleMin, sampleMax);
+ m_graph->axisX()->setLabelAutoRotation(30.f);
+ m_graph->axisY()->setLabelAutoRotation(90.f);
+ m_graph->axisZ()->setLabelAutoRotation(30.f);
+
+ m_graph->removeSeries(m_heightMapSeriesOne);
+ m_graph->removeSeries(m_heightMapSeriesTwo);
+ m_graph->removeSeries(m_heightMapSeriesThree);
+ m_graph->removeSeries(m_topography);
+ m_graph->removeSeries(m_highlight);
+
+ m_graph->addSeries(m_sqrtSinSeries);
+ //! [3]
+
+ m_titleLabel->setVisible(false);
+ m_graph->axisX()->setTitleVisible(false);
+ m_graph->axisY()->setTitleVisible(false);
+ m_graph->axisZ()->setTitleVisible(false);
+
+ m_graph->axisX()->setTitle({});
+ m_graph->axisY()->setTitle({});
+ m_graph->axisZ()->setTitle({});
+
+ m_graph->setActiveInputHandler(m_defaultInputHandler);
+
+ //! [6]
+ // Reset range sliders for Sqrt & Sin
+ m_rangeMinX = sampleMin;
+ m_rangeMinZ = sampleMin;
+ m_stepX = (sampleMax - sampleMin) / float(sampleCountX - 1);
+ m_stepZ = (sampleMax - sampleMin) / float(sampleCountZ - 1);
+ m_axisMinSliderX->setMinimum(0);
+ m_axisMinSliderX->setMaximum(sampleCountX - 2);
+ m_axisMinSliderX->setValue(0);
+ m_axisMaxSliderX->setMinimum(1);
+ m_axisMaxSliderX->setMaximum(sampleCountX - 1);
+ m_axisMaxSliderX->setValue(sampleCountX - 1);
+ m_axisMinSliderZ->setMinimum(0);
+ m_axisMinSliderZ->setMaximum(sampleCountZ - 2);
+ m_axisMinSliderZ->setValue(0);
+ m_axisMaxSliderZ->setMinimum(1);
+ m_axisMaxSliderZ->setMaximum(sampleCountZ - 1);
+ m_axisMaxSliderZ->setValue(sampleCountZ - 1);
+ //! [6]
+ }
+}
+
+void SurfaceGraphModifier::enableHeightMapModel(bool enable)
+{
+ if (enable) {
+ m_heightMapSeriesOne->setDrawMode(QSurface3DSeries::DrawSurface);
+ m_heightMapSeriesOne->setFlatShadingEnabled(false);
+ m_heightMapSeriesTwo->setDrawMode(QSurface3DSeries::DrawSurface);
+ m_heightMapSeriesTwo->setFlatShadingEnabled(false);
+ m_heightMapSeriesThree->setDrawMode(QSurface3DSeries::DrawSurface);
+ m_heightMapSeriesThree->setFlatShadingEnabled(false);
+
+ m_graph->axisX()->setLabelFormat("%.1f N");
+ m_graph->axisZ()->setLabelFormat("%.1f E");
+ m_graph->axisX()->setRange(34.f, 40.f);
+ //! [4]
+ m_graph->axisY()->setAutoAdjustRange(true);
+ //! [4]
+ m_graph->axisZ()->setRange(18.f, 24.f);
+
+ m_graph->axisX()->setTitle(u"Latitude"_s);
+ m_graph->axisY()->setTitle(u"Height"_s);
+ m_graph->axisZ()->setTitle(u"Longitude"_s);
+
+ m_graph->removeSeries(m_sqrtSinSeries);
+ m_graph->removeSeries(m_topography);
+ m_graph->removeSeries(m_highlight);
+ m_graph->addSeries(m_heightMapSeriesOne);
+ m_graph->addSeries(m_heightMapSeriesTwo);
+ m_graph->addSeries(m_heightMapSeriesThree);
+
+ m_graph->setActiveInputHandler(m_defaultInputHandler);
+
+ m_titleLabel->setVisible(true);
+ m_graph->axisX()->setTitleVisible(true);
+ m_graph->axisY()->setTitleVisible(true);
+ m_graph->axisZ()->setTitleVisible(true);
+
+ // Reset range sliders for height map
+ int mapGridCountX = m_heightMapWidth / heightMapGridStepX;
+ int mapGridCountZ = m_heightMapHeight / heightMapGridStepZ;
+ m_rangeMinX = 34.f;
+ m_rangeMinZ = 18.f;
+ m_stepX = 6.f / float(mapGridCountX - 1);
+ m_stepZ = 6.f / float(mapGridCountZ - 1);
+ m_axisMinSliderX->setMinimum(0);
+ m_axisMinSliderX->setMaximum(mapGridCountX - 2);
+ m_axisMinSliderX->setValue(0);
+ m_axisMaxSliderX->setMinimum(1);
+ m_axisMaxSliderX->setMaximum(mapGridCountX - 1);
+ m_axisMaxSliderX->setValue(mapGridCountX - 1);
+ m_axisMinSliderZ->setMinimum(0);
+ m_axisMinSliderZ->setMaximum(mapGridCountZ - 2);
+ m_axisMinSliderZ->setValue(0);
+ m_axisMaxSliderZ->setMinimum(1);
+ m_axisMaxSliderZ->setMaximum(mapGridCountZ - 1);
+ m_axisMaxSliderZ->setValue(mapGridCountZ - 1);
+ }
+}
+
+void SurfaceGraphModifier::enableTopographyModel(bool enable)
+{
+ if (enable) {
+ m_graph->axisX()->setLabelFormat("%i");
+ m_graph->axisZ()->setLabelFormat("%i");
+ m_graph->axisX()->setRange(0.f, areaWidth);
+ m_graph->axisY()->setRange(100.f, areaWidth * aspectRatio);
+ m_graph->axisZ()->setRange(0.f, areaHeight);
+ m_graph->axisX()->setLabelAutoRotation(30.f);
+ m_graph->axisY()->setLabelAutoRotation(90.f);
+ m_graph->axisZ()->setLabelAutoRotation(30.f);
+
+ m_graph->removeSeries(m_heightMapSeriesOne);
+ m_graph->removeSeries(m_heightMapSeriesTwo);
+ m_graph->removeSeries(m_heightMapSeriesThree);
+ m_graph->addSeries(m_topography);
+ m_graph->addSeries(m_highlight);
+
+ m_titleLabel->setVisible(false);
+ m_graph->axisX()->setTitleVisible(false);
+ m_graph->axisY()->setTitleVisible(false);
+ m_graph->axisZ()->setTitleVisible(false);
+
+ m_graph->axisX()->setTitle({});
+ m_graph->axisY()->setTitle({});
+ m_graph->axisZ()->setTitle({});
+
+ //! [5]
+ m_graph->setActiveInputHandler(m_customInputHandler);
+ //! [5]
+
+ // Reset range sliders for topography map
+ m_rangeMinX = 0.f;
+ m_rangeMinZ = 0.f;
+ m_stepX = 1.f;
+ m_stepZ = 1.f;
+ m_axisMinSliderX->setMinimum(0);
+ m_axisMinSliderX->setMaximum(areaWidth - 200);
+ m_axisMinSliderX->setValue(0);
+ m_axisMaxSliderX->setMinimum(200);
+ m_axisMaxSliderX->setMaximum(areaWidth);
+ m_axisMaxSliderX->setValue(areaWidth);
+ m_axisMinSliderZ->setMinimum(0);
+ m_axisMinSliderZ->setMaximum(areaHeight - 200);
+ m_axisMinSliderZ->setValue(0);
+ m_axisMaxSliderZ->setMinimum(200);
+ m_axisMaxSliderZ->setMaximum(areaHeight);
+ m_axisMaxSliderZ->setValue(areaHeight);
+ }
+}
+
+void SurfaceGraphModifier::adjustXMin(int min)
+{
+ float minX = m_stepX * float(min) + m_rangeMinX;
+
+ int max = m_axisMaxSliderX->value();
+ if (min >= max) {
+ max = min + 1;
+ m_axisMaxSliderX->setValue(max);
+ }
+ float maxX = m_stepX * max + m_rangeMinX;
+
+ setAxisXRange(minX, maxX);
+}
+
+void SurfaceGraphModifier::adjustXMax(int max)
+{
+ float maxX = m_stepX * float(max) + m_rangeMinX;
+
+ int min = m_axisMinSliderX->value();
+ if (max <= min) {
+ min = max - 1;
+ m_axisMinSliderX->setValue(min);
+ }
+ float minX = m_stepX * min + m_rangeMinX;
+
+ setAxisXRange(minX, maxX);
+}
+
+void SurfaceGraphModifier::adjustZMin(int min)
+{
+ float minZ = m_stepZ * float(min) + m_rangeMinZ;
+
+ int max = m_axisMaxSliderZ->value();
+ if (min >= max) {
+ max = min + 1;
+ m_axisMaxSliderZ->setValue(max);
+ }
+ float maxZ = m_stepZ * max + m_rangeMinZ;
+
+ setAxisZRange(minZ, maxZ);
+}
+
+void SurfaceGraphModifier::adjustZMax(int max)
+{
+ float maxX = m_stepZ * float(max) + m_rangeMinZ;
+
+ int min = m_axisMinSliderZ->value();
+ if (max <= min) {
+ min = max - 1;
+ m_axisMinSliderZ->setValue(min);
+ }
+ float minX = m_stepZ * min + m_rangeMinZ;
+
+ setAxisZRange(minX, maxX);
+}
+
+//! [7]
+void SurfaceGraphModifier::setAxisXRange(float min, float max)
+{
+ m_graph->axisX()->setRange(min, max);
+}
+//! [7]
+
+void SurfaceGraphModifier::setAxisZRange(float min, float max)
+{
+ m_graph->axisZ()->setRange(min, max);
+}
+
+void SurfaceGraphModifier::setBlackToYellowGradient()
+{
+ //! [8]
+ QLinearGradient gr;
+ gr.setColorAt(0.f, Qt::black);
+ gr.setColorAt(0.33f, Qt::blue);
+ gr.setColorAt(0.67f, Qt::red);
+ gr.setColorAt(1.f, Qt::yellow);
+
+ m_sqrtSinSeries->setBaseGradient(gr);
+ m_sqrtSinSeries->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+ //! [8]
+}
+
+void SurfaceGraphModifier::setGreenToRedGradient()
+{
+ QLinearGradient gr;
+ gr.setColorAt(0.f, Qt::darkGreen);
+ gr.setColorAt(0.5f, Qt::yellow);
+ gr.setColorAt(0.8f, Qt::red);
+ gr.setColorAt(1.f, Qt::darkRed);
+
+ m_sqrtSinSeries->setBaseGradient(gr);
+ m_sqrtSinSeries->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+}
+
+void SurfaceGraphModifier::toggleItemOne(bool show)
+{
+ //! [10]
+ QVector3D positionOne = QVector3D(39.f, 77.f, 19.2f);
+ //! [10]
+ QVector3D positionOnePipe = QVector3D(39.f, 45.f, 19.2f);
+ QVector3D positionOneLabel = QVector3D(39.f, 107.f, 19.2f);
+ if (show) {
+ //! [9]
+ QImage color = QImage(2, 2, QImage::Format_RGB32);
+ color.fill(Qt::red);
+ //! [9]
+ //! [11]
+ auto *item = new QCustom3DItem(":/data/oilrig.obj", positionOne,
+ QVector3D(0.025f, 0.025f, 0.025f),
+ QQuaternion::fromAxisAndAngle(0.f, 1.f, 0.f, 45.f),
+ color);
+ //! [11]
+ //! [12]
+ m_graph->addCustomItem(item);
+ //! [12]
+ item = new QCustom3DItem(":/data/pipe.obj", positionOnePipe,
+ QVector3D(0.005f, 0.5f, 0.005f),
+ QQuaternion(),
+ color);
+ item->setShadowCasting(false);
+ m_graph->addCustomItem(item);
+
+ //! [13]
+ auto *label = new QCustom3DLabel();
+ label->setText("Oil Rig One");
+ label->setPosition(positionOneLabel);
+ label->setScaling(QVector3D(1.f, 1.f, 1.f));
+ m_graph->addCustomItem(label);
+ //! [13]
+ } else {
+ resetSelection();
+ //! [14]
+ m_graph->removeCustomItemAt(positionOne);
+ //! [14]
+ m_graph->removeCustomItemAt(positionOnePipe);
+ m_graph->removeCustomItemAt(positionOneLabel);
+ }
+}
+
+void SurfaceGraphModifier::toggleItemTwo(bool show)
+{
+ QVector3D positionTwo = QVector3D(34.5f, 77.f, 23.4f);
+ QVector3D positionTwoPipe = QVector3D(34.5f, 45.f, 23.4f);
+ QVector3D positionTwoLabel = QVector3D(34.5f, 107.f, 23.4f);
+ if (show) {
+ QImage color = QImage(2, 2, QImage::Format_RGB32);
+ color.fill(Qt::red);
+ auto *item = new QCustom3DItem();
+ item->setMeshFile(":/data/oilrig.obj");
+ item->setPosition(positionTwo);
+ item->setScaling(QVector3D(0.025f, 0.025f, 0.025f));
+ item->setRotation(QQuaternion::fromAxisAndAngle(0.f, 1.f, 0.f, 25.f));
+ item->setTextureImage(color);
+ m_graph->addCustomItem(item);
+ item = new QCustom3DItem(":/data/pipe.obj", positionTwoPipe,
+ QVector3D(0.005f, 0.5f, 0.005f),
+ QQuaternion(),
+ color);
+ item->setShadowCasting(false);
+ m_graph->addCustomItem(item);
+
+ auto *label = new QCustom3DLabel();
+ label->setText("Oil Rig Two");
+ label->setPosition(positionTwoLabel);
+ label->setScaling(QVector3D(1.f, 1.f, 1.f));
+ m_graph->addCustomItem(label);
+ } else {
+ resetSelection();
+ m_graph->removeCustomItemAt(positionTwo);
+ m_graph->removeCustomItemAt(positionTwoPipe);
+ m_graph->removeCustomItemAt(positionTwoLabel);
+ }
+}
+
+void SurfaceGraphModifier::toggleItemThree(bool show)
+{
+ QVector3D positionThree = QVector3D(34.5f, 86.f, 19.1f);
+ QVector3D positionThreeLabel = QVector3D(34.5f, 116.f, 19.1f);
+ if (show) {
+ QImage color = QImage(2, 2, QImage::Format_RGB32);
+ color.fill(Qt::darkMagenta);
+ auto *item = new QCustom3DItem();
+ item->setMeshFile(":/data/refinery.obj");
+ item->setPosition(positionThree);
+ item->setScaling(QVector3D(0.04f, 0.04f, 0.04f));
+ item->setRotation(QQuaternion::fromAxisAndAngle(0.f, 1.f, 0.f, 75.f));
+ item->setTextureImage(color);
+ m_graph->addCustomItem(item);
+
+ auto *label = new QCustom3DLabel();
+ label->setText("Refinery");
+ label->setPosition(positionThreeLabel);
+ label->setScaling(QVector3D(1.f, 1.f, 1.f));
+ m_graph->addCustomItem(label);
+ } else {
+ resetSelection();
+ m_graph->removeCustomItemAt(positionThree);
+ m_graph->removeCustomItemAt(positionThreeLabel);
+ }
+}
+
+void SurfaceGraphModifier::toggleSeeThrough(bool seethrough)
+{
+ if (seethrough) {
+ m_graph->seriesList().at(0)->setDrawMode(QSurface3DSeries::DrawWireframe);
+ m_graph->seriesList().at(1)->setDrawMode(QSurface3DSeries::DrawWireframe);
+ } else {
+ m_graph->seriesList().at(0)->setDrawMode(QSurface3DSeries::DrawSurface);
+ m_graph->seriesList().at(1)->setDrawMode(QSurface3DSeries::DrawSurface);
+ }
+}
+
+void SurfaceGraphModifier::toggleOilHighlight(bool highlight)
+{
+ if (highlight) {
+ QLinearGradient grThree;
+ grThree.setColorAt(0.0, Qt::black);
+ grThree.setColorAt(0.05, Qt::red);
+ m_graph->seriesList().at(2)->setBaseGradient(grThree);
+ } else {
+ QLinearGradient grThree;
+ grThree.setColorAt(0.0, Qt::white);
+ grThree.setColorAt(0.05, Qt::black);
+ m_graph->seriesList().at(2)->setBaseGradient(grThree);
+ }
+}
+
+void SurfaceGraphModifier::toggleShadows(bool shadows)
+{
+ if (shadows)
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityMedium);
+ else
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
+}
+
+//! [15]
+void SurfaceGraphModifier::toggleSurfaceTexture(bool enable)
+{
+ if (enable)
+ m_topography->setTextureFile(":/data/maptexture.jpg");
+ else
+ m_topography->setTextureFile("");
+}
+//! [15]
+
+void SurfaceGraphModifier::handleElementSelected(QAbstract3DGraph::ElementType type)
+{
+ resetSelection();
+ if (type == QAbstract3DGraph::ElementCustomItem) {
+ QCustom3DItem *item = m_graph->selectedCustomItem();
+ QString text;
+ if (qobject_cast<QCustom3DLabel *>(item) != 0) {
+ text.append("Custom label: ");
+ } else {
+ QStringList split = item->meshFile().split("/");
+ text.append(split.last());
+ text.append(": ");
+ }
+ int index = m_graph->selectedCustomItemIndex();
+ text.append(QString::number(index));
+ m_textField->setText(text);
+ m_previouslyAnimatedItem = item;
+ m_previousScaling = item->scaling();
+ m_selectionAnimation->setTargetObject(item);
+ m_selectionAnimation->setStartValue(item->scaling());
+ m_selectionAnimation->setEndValue(item->scaling() * 1.5f);
+ m_selectionAnimation->start();
+ } else if (type == QAbstract3DGraph::ElementSeries) {
+ QString text = "Surface (";
+ QSurface3DSeries *series = m_graph->selectedSeries();
+ if (series) {
+ QPoint point = series->selectedPoint();
+ QString posStr;
+ posStr.setNum(point.x());
+ text.append(posStr);
+ text.append(", ");
+ posStr.setNum(point.y());
+ text.append(posStr);
+ }
+ text.append(")");
+ m_textField->setText(text);
+ } else if (type > QAbstract3DGraph::ElementSeries
+ && type < QAbstract3DGraph::ElementCustomItem) {
+ int index = m_graph->selectedLabelIndex();
+ QString text;
+ if (type == QAbstract3DGraph::ElementAxisXLabel)
+ text.append("Axis X label: ");
+ else if (type == QAbstract3DGraph::ElementAxisYLabel)
+ text.append("Axis Y label: ");
+ else
+ text.append("Axis Z label: ");
+ text.append(QString::number(index));
+ m_textField->setText(text);
+ } else {
+ m_textField->setText("Nothing");
+ }
+}
+
+void SurfaceGraphModifier::resetSelection()
+{
+ m_selectionAnimation->stop();
+ if (m_previouslyAnimatedItem)
+ m_previouslyAnimatedItem->setScaling(m_previousScaling);
+ m_previouslyAnimatedItem = nullptr;
+}
diff --git a/examples/datavisualization/graphgallery/surfacegraphmodifier.h b/examples/datavisualization/graphgallery/surfacegraphmodifier.h
new file mode 100644
index 00000000..1a54958e
--- /dev/null
+++ b/examples/datavisualization/graphgallery/surfacegraphmodifier.h
@@ -0,0 +1,109 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef SURFACEGRAPHMODIFIER_H
+#define SURFACEGRAPHMODIFIER_H
+
+#include <QtDataVisualization/q3dsurface.h>
+#include <QtDataVisualization/qsurfacedataproxy.h>
+#include <QtDataVisualization/qheightmapsurfacedataproxy.h>
+#include <QtDataVisualization/qsurface3dseries.h>
+#include <QtDataVisualization/qcustom3ditem.h>
+#include <QtDataVisualization/qcustom3dlabel.h>
+#include <QtDataVisualization/q3dinputhandler.h>
+#include <QtWidgets/qslider.h>
+#include <QtWidgets/qlabel.h>
+#include <QtCore/qpropertyanimation.h>
+
+class TopographicSeries;
+class HighlightSeries;
+class CustomInputHandler;
+
+class SurfaceGraphModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit SurfaceGraphModifier(Q3DSurface *surface, QLabel *label, QObject *parent);
+
+ //! [0]
+ void toggleModeNone() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionNone); }
+ void toggleModeItem() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItem); }
+ void toggleModeSliceRow() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndRow
+ | QAbstract3DGraph::SelectionSlice
+ | QAbstract3DGraph::SelectionMultiSeries); }
+ void toggleModeSliceColumn() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndColumn
+ | QAbstract3DGraph::SelectionSlice
+ | QAbstract3DGraph::SelectionMultiSeries); }
+ //! [0]
+
+ void setBlackToYellowGradient();
+ void setGreenToRedGradient();
+
+ void setAxisMinSliderX(QSlider *slider) { m_axisMinSliderX = slider; }
+ void setAxisMaxSliderX(QSlider *slider) { m_axisMaxSliderX = slider; }
+ void setAxisMinSliderZ(QSlider *slider) { m_axisMinSliderZ = slider; }
+ void setAxisMaxSliderZ(QSlider *slider) { m_axisMaxSliderZ = slider; }
+
+ void adjustXMin(int min);
+ void adjustXMax(int max);
+ void adjustZMin(int min);
+ void adjustZMax(int max);
+
+public Q_SLOTS:
+ void enableSqrtSinModel(bool enable);
+ void enableHeightMapModel(bool enable);
+ void enableTopographyModel(bool enable);
+
+ void toggleItemOne(bool show);
+ void toggleItemTwo(bool show);
+ void toggleItemThree(bool show);
+ void toggleSeeThrough(bool seethrough);
+ void toggleOilHighlight(bool highlight);
+ void toggleShadows(bool shadows);
+ void toggleSurfaceTexture(bool enable);
+
+private:
+ void setAxisXRange(float min, float max);
+ void setAxisZRange(float min, float max);
+ void fillSqrtSinProxy();
+ void handleElementSelected(QAbstract3DGraph::ElementType type);
+ void resetSelection();
+
+private:
+ Q3DSurface *m_graph = nullptr;
+ QSurfaceDataProxy *m_sqrtSinProxy = nullptr;
+ QSurface3DSeries *m_sqrtSinSeries = nullptr;
+ QHeightMapSurfaceDataProxy *m_heightMapProxyOne = nullptr;
+ QHeightMapSurfaceDataProxy *m_heightMapProxyTwo = nullptr;
+ QHeightMapSurfaceDataProxy *m_heightMapProxyThree = nullptr;
+ QSurface3DSeries *m_heightMapSeriesOne = nullptr;
+ QSurface3DSeries *m_heightMapSeriesTwo = nullptr;
+ QSurface3DSeries *m_heightMapSeriesThree = nullptr;
+
+ QSlider *m_axisMinSliderX = nullptr;
+ QSlider *m_axisMaxSliderX = nullptr;
+ QSlider *m_axisMinSliderZ = nullptr;
+ QSlider *m_axisMaxSliderZ = nullptr;
+ float m_rangeMinX = 0.f;
+ float m_rangeMinZ = 0.f;
+ float m_stepX = 0.f;
+ float m_stepZ = 0.f;
+ int m_heightMapWidth = 0;
+ int m_heightMapHeight = 0;
+
+ QLabel *m_textField = nullptr;
+ QPropertyAnimation *m_selectionAnimation = nullptr;
+ QCustom3DLabel *m_titleLabel = nullptr;
+ QCustom3DItem *m_previouslyAnimatedItem = nullptr;
+ QVector3D m_previousScaling = {};
+
+ TopographicSeries *m_topography = nullptr;
+ HighlightSeries *m_highlight = nullptr;
+ int m_highlightWidth = 0;
+ int m_highlightHeight = 0;
+
+ CustomInputHandler *m_customInputHandler = nullptr;
+ Q3DInputHandler *m_defaultInputHandler = new Q3DInputHandler();
+};
+
+#endif // SURFACEGRAPHMODIFIER_H
diff --git a/examples/datavisualization/graphgallery/topographicseries.cpp b/examples/datavisualization/graphgallery/topographicseries.cpp
new file mode 100644
index 00000000..201a275e
--- /dev/null
+++ b/examples/datavisualization/graphgallery/topographicseries.cpp
@@ -0,0 +1,55 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "topographicseries.h"
+
+//! [0]
+// Value used to encode height data as RGB value on PNG file
+const float packingFactor = 11983.f;
+//! [0]
+
+TopographicSeries::TopographicSeries()
+{
+ setDrawMode(QSurface3DSeries::DrawSurface);
+ setFlatShadingEnabled(true);
+ setBaseColor(Qt::white);
+}
+
+TopographicSeries::~TopographicSeries() = default;
+
+void TopographicSeries::setTopographyFile(const QString file, float width, float height)
+{
+ //! [1]
+ QImage heightMapImage(file);
+ uchar *bits = heightMapImage.bits();
+ int imageHeight = heightMapImage.height();
+ int imageWidth = heightMapImage.width();
+ int widthBits = imageWidth * 4;
+ float stepX = width / float(imageWidth);
+ float stepZ = height / float(imageHeight);
+
+ auto *dataArray = new QSurfaceDataArray;
+ dataArray->reserve(imageHeight);
+ for (int i = 0; i < imageHeight; ++i) {
+ int p = i * widthBits;
+ float z = height - float(i) * stepZ;
+ auto *newRow = new QSurfaceDataRow;
+ newRow->reserve(imageWidth);
+ for (int j = 0; j < imageWidth; ++j) {
+ uchar aa = bits[p + 0];
+ uchar rr = bits[p + 1];
+ uchar gg = bits[p + 2];
+ uint color = uint((gg << 16) + (rr << 8) + aa);
+ float y = float(color) / packingFactor;
+ newRow->append(QSurfaceDataItem({float(j) * stepX, y, z}));
+ p += 4;
+ }
+ dataArray->append(newRow);
+ }
+
+ dataProxy()->resetArray(dataArray);
+ //! [1]
+
+ m_sampleCountX = float(imageWidth);
+ m_sampleCountZ = float(imageHeight);
+}
diff --git a/examples/datavisualization/graphgallery/topographicseries.h b/examples/datavisualization/graphgallery/topographicseries.h
new file mode 100644
index 00000000..41e03b1e
--- /dev/null
+++ b/examples/datavisualization/graphgallery/topographicseries.h
@@ -0,0 +1,26 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef TOPOGRAPHICSERIES_H
+#define TOPOGRAPHICSERIES_H
+
+#include <QtDataVisualization/qsurface3dseries.h>
+
+class TopographicSeries : public QSurface3DSeries
+{
+ Q_OBJECT
+public:
+ TopographicSeries();
+ ~TopographicSeries();
+
+ void setTopographyFile(const QString file, float width, float height);
+
+ float sampleCountX() { return m_sampleCountX; }
+ float sampleCountZ() { return m_sampleCountZ; }
+
+private:
+ float m_sampleCountX = 0.f;
+ float m_sampleCountZ = 0.f;
+};
+
+#endif // TOPOGRAPHICSERIES_H
diff --git a/examples/datavisualization/graphgallery/variantbardatamapping.cpp b/examples/datavisualization/graphgallery/variantbardatamapping.cpp
new file mode 100644
index 00000000..7a2a6cc7
--- /dev/null
+++ b/examples/datavisualization/graphgallery/variantbardatamapping.cpp
@@ -0,0 +1,85 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "variantbardatamapping.h"
+
+VariantBarDataMapping::VariantBarDataMapping(int rowIndex, int columnIndex, int valueIndex,
+ const QStringList &rowCategories,
+ const QStringList &columnCategories)
+ : QObject(nullptr)
+{
+ m_rowIndex = rowIndex;
+ m_columnIndex = columnIndex;
+ m_valueIndex = valueIndex;
+ m_rowCategories = rowCategories;
+ m_columnCategories = columnCategories;
+}
+
+VariantBarDataMapping::~VariantBarDataMapping() = default;
+
+void VariantBarDataMapping::setRowIndex(int index)
+{
+ m_rowIndex = index;
+ emit mappingChanged();
+}
+
+int VariantBarDataMapping::rowIndex() const
+{
+ return m_rowIndex;
+}
+
+void VariantBarDataMapping::setColumnIndex(int index)
+{
+ m_columnIndex = index;
+ emit mappingChanged();
+}
+
+int VariantBarDataMapping::columnIndex() const
+{
+ return m_columnIndex;
+}
+
+void VariantBarDataMapping::setValueIndex(int index)
+{
+ m_valueIndex = index;
+ emit mappingChanged();
+}
+
+int VariantBarDataMapping::valueIndex() const
+{
+ return m_valueIndex;
+}
+
+void VariantBarDataMapping::setRowCategories(const QStringList &categories)
+{
+ m_rowCategories = categories;
+ emit mappingChanged();
+}
+
+const QStringList &VariantBarDataMapping::rowCategories() const
+{
+ return m_rowCategories;
+}
+
+void VariantBarDataMapping::setColumnCategories(const QStringList &categories)
+{
+ m_columnCategories = categories;
+ emit mappingChanged();
+}
+
+const QStringList &VariantBarDataMapping::columnCategories() const
+{
+ return m_columnCategories;
+}
+
+void VariantBarDataMapping::remap(int rowIndex, int columnIndex, int valueIndex,
+ const QStringList &rowCategories,
+ const QStringList &columnCategories)
+{
+ m_rowIndex = rowIndex;
+ m_columnIndex = columnIndex;
+ m_valueIndex = valueIndex;
+ m_rowCategories = rowCategories;
+ m_columnCategories = columnCategories;
+ emit mappingChanged();
+}
diff --git a/examples/datavisualization/graphgallery/variantbardatamapping.h b/examples/datavisualization/graphgallery/variantbardatamapping.h
new file mode 100644
index 00000000..25bacebd
--- /dev/null
+++ b/examples/datavisualization/graphgallery/variantbardatamapping.h
@@ -0,0 +1,66 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef VARIANTBARDATAMAPPING_H
+#define VARIANTBARDATAMAPPING_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qstringlist.h>
+
+class VariantBarDataMapping : public QObject
+{
+ Q_OBJECT
+ //! [0]
+ Q_PROPERTY(int rowIndex READ rowIndex WRITE setRowIndex NOTIFY rowIndexChanged)
+ Q_PROPERTY(int columnIndex READ columnIndex WRITE setColumnIndex NOTIFY columnIndexChanged)
+ Q_PROPERTY(int valueIndex READ valueIndex WRITE setValueIndex NOTIFY valueIndexChanged)
+ Q_PROPERTY(QStringList rowCategories READ rowCategories WRITE setRowCategories NOTIFY rowCategoriesChanged)
+ Q_PROPERTY(QStringList columnCategories READ columnCategories WRITE setColumnCategories NOTIFY columnCategoriesChanged)
+ //! [0]
+public:
+ //! [1]
+ explicit VariantBarDataMapping(int rowIndex, int columnIndex, int valueIndex,
+ const QStringList &rowCategories,
+ const QStringList &columnCategories);
+ //! [1]
+ virtual ~VariantBarDataMapping();
+
+ void setRowIndex(int index);
+ int rowIndex() const;
+ void setColumnIndex(int index);
+ int columnIndex() const;
+ void setValueIndex(int index);
+ int valueIndex() const;
+
+ void setRowCategories(const QStringList &categories);
+ const QStringList &rowCategories() const;
+ void setColumnCategories(const QStringList &categories);
+ const QStringList &columnCategories() const;
+
+ //! [2]
+ void remap(int rowIndex, int columnIndex, int valueIndex,
+ const QStringList &rowCategories,
+ const QStringList &columnCategories);
+ //! [2]
+Q_SIGNALS:
+ void rowIndexChanged();
+ void columnIndexChanged();
+ void valueIndexChanged();
+ void rowCategoriesChanged();
+ void columnCategoriesChanged();
+ //! [3]
+ void mappingChanged();
+ //! [3]
+
+private:
+ // Indexes of the mapped items in the VariantDataItem
+ int m_rowIndex = 0;
+ int m_columnIndex = 1;
+ int m_valueIndex = 2;
+
+ // For row/column items, sort items into these categories. Other categories are ignored.
+ QStringList m_rowCategories = {};
+ QStringList m_columnCategories = {};
+};
+
+#endif
diff --git a/examples/datavisualization/customproxy/variantbardataproxy.cpp b/examples/datavisualization/graphgallery/variantbardataproxy.cpp
index beb337d1..8fe73abc 100644
--- a/examples/datavisualization/customproxy/variantbardataproxy.cpp
+++ b/examples/datavisualization/graphgallery/variantbardataproxy.cpp
@@ -1,46 +1,9 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "variantbardataproxy.h"
-VariantBarDataProxy::VariantBarDataProxy() :
- QBarDataProxy()
-{
-}
-
-VariantBarDataProxy::VariantBarDataProxy(VariantDataSet *newSet,
- VariantBarDataMapping *mapping) :
- QBarDataProxy()
-{
- setDataSet(newSet);
- setMapping(mapping);
-}
+VariantBarDataProxy::VariantBarDataProxy() = default;
VariantBarDataProxy::~VariantBarDataProxy()
{
@@ -50,7 +13,7 @@ VariantBarDataProxy::~VariantBarDataProxy()
void VariantBarDataProxy::setDataSet(VariantDataSet *newSet)
{
if (!m_dataSet.isNull())
- QObject::disconnect(m_dataSet.data(), 0, this, 0);
+ QObject::disconnect(m_dataSet.data(), nullptr, this, nullptr);
m_dataSet = newSet;
@@ -70,15 +33,17 @@ VariantDataSet *VariantBarDataProxy::dataSet()
void VariantBarDataProxy::setMapping(VariantBarDataMapping *mapping)
{
- if (!m_mapping.isNull())
+ if (!m_mapping.isNull()) {
QObject::disconnect(m_mapping.data(), &VariantBarDataMapping::mappingChanged, this,
&VariantBarDataProxy::handleMappingChanged);
+ }
m_mapping = mapping;
- if (!m_mapping.isNull())
+ if (!m_mapping.isNull()) {
QObject::connect(m_mapping.data(), &VariantBarDataMapping::mappingChanged, this,
&VariantBarDataProxy::handleMappingChanged);
+ }
resolveDataSet();
}
@@ -100,7 +65,7 @@ void VariantBarDataProxy::handleItemsAdded(int index, int count)
void VariantBarDataProxy::handleDataCleared()
{
// Data cleared, reset array
- resetArray(0);
+ resetArray(nullptr);
}
void VariantBarDataProxy::handleMappingChanged()
@@ -115,7 +80,7 @@ void VariantBarDataProxy::resolveDataSet()
// If we have no data or mapping, or the categories are not defined, simply clear the array
if (m_dataSet.isNull() || m_mapping.isNull() || !m_mapping->rowCategories().size()
|| !m_mapping->columnCategories().size()) {
- resetArray(0);
+ resetArray(nullptr);
return;
}
const VariantDataItemList &itemList = m_dataSet->itemList();
@@ -127,18 +92,18 @@ void VariantBarDataProxy::resolveDataSet()
const QStringList &columnList = m_mapping->columnCategories();
// Sort values into rows and columns
- typedef QHash<QString, float> ColumnValueMap;
+ using ColumnValueMap = QHash<QString, float>;
QHash <QString, ColumnValueMap> itemValueMap;
- foreach (const VariantDataItem *item, itemList) {
+ for (const VariantDataItem *item : itemList) {
itemValueMap[item->at(rowIndex).toString()][item->at(columnIndex).toString()]
= item->at(valueIndex).toReal();
}
// Create a new data array in format the parent class understands
- QBarDataArray *newProxyArray = new QBarDataArray;
- foreach (QString rowKey, rowList) {
- QBarDataRow *newProxyRow = new QBarDataRow(columnList.size());
- for (int i = 0; i < columnList.size(); i++)
+ auto *newProxyArray = new QBarDataArray;
+ for (const QString &rowKey : rowList) {
+ auto *newProxyRow = new QBarDataRow(columnList.size());
+ for (qsizetype i = 0; i < columnList.size(); ++i)
(*newProxyRow)[i].setValue(itemValueMap[rowKey][columnList.at(i)]);
newProxyArray->append(newProxyRow);
}
diff --git a/examples/datavisualization/graphgallery/variantbardataproxy.h b/examples/datavisualization/graphgallery/variantbardataproxy.h
new file mode 100644
index 00000000..6a4d2f31
--- /dev/null
+++ b/examples/datavisualization/graphgallery/variantbardataproxy.h
@@ -0,0 +1,48 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef VARIANTBARDATAPROXY_H
+#define VARIANTBARDATAPROXY_H
+
+#include "variantdataset.h"
+#include "variantbardatamapping.h"
+#include <QtDataVisualization/qbardataproxy.h>
+#include <QtCore/qpointer.h>
+
+//! [0]
+class VariantBarDataProxy : public QBarDataProxy
+//! [0]
+{
+ Q_OBJECT
+
+public:
+ VariantBarDataProxy();
+ virtual ~VariantBarDataProxy();
+
+ //! [1]
+ // Doesn't gain ownership of the dataset, but does connect to it to listen for data changes.
+ void setDataSet(VariantDataSet *newSet);
+ VariantDataSet *dataSet();
+
+ // Map key (row, column, value) to value index in data item (VariantItem).
+ // Doesn't gain ownership of mapping, but does connect to it to listen for mapping changes.
+ // Modifying mapping that is set to proxy will trigger dataset re-resolving.
+ void setMapping(VariantBarDataMapping *mapping);
+ VariantBarDataMapping *mapping();
+ //! [1]
+
+public Q_SLOTS:
+ void handleItemsAdded(int index, int count);
+ void handleDataCleared();
+ void handleMappingChanged();
+
+private:
+ void resolveDataSet();
+
+ QPointer<VariantDataSet> m_dataSet;
+ QPointer<VariantBarDataMapping> m_mapping;
+
+ Q_DISABLE_COPY(VariantBarDataProxy)
+};
+
+#endif
diff --git a/examples/datavisualization/graphgallery/variantdataset.cpp b/examples/datavisualization/graphgallery/variantdataset.cpp
new file mode 100644
index 00000000..3892f02b
--- /dev/null
+++ b/examples/datavisualization/graphgallery/variantdataset.cpp
@@ -0,0 +1,45 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include "variantdataset.h"
+
+VariantDataSet::VariantDataSet() = default;
+
+VariantDataSet::~VariantDataSet()
+{
+ clear();
+}
+
+void VariantDataSet::clear()
+{
+ for (VariantDataItem *item : m_variantData) {
+ item->clear();
+ delete item;
+ }
+ m_variantData.clear();
+ emit dataCleared();
+}
+
+int VariantDataSet::addItem(VariantDataItem *item)
+{
+ m_variantData.append(item);
+ int addIndex = m_variantData.size();
+
+ emit itemsAdded(addIndex, 1);
+ return addIndex;
+}
+
+int VariantDataSet::addItems(VariantDataItemList *itemList)
+{
+ int newCount = itemList->size();
+ int addIndex = m_variantData.size();
+ m_variantData.append(*itemList);
+ delete itemList;
+ emit itemsAdded(addIndex, newCount);
+ return addIndex;
+}
+
+const VariantDataItemList &VariantDataSet::itemList() const
+{
+ return m_variantData;
+}
diff --git a/examples/datavisualization/graphgallery/variantdataset.h b/examples/datavisualization/graphgallery/variantdataset.h
new file mode 100644
index 00000000..ca0d7ffd
--- /dev/null
+++ b/examples/datavisualization/graphgallery/variantdataset.h
@@ -0,0 +1,41 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef VARIANTDATASET_H
+#define VARIANTDATASET_H
+
+#include <QtCore/qvariantlist.h>
+
+//! [0]
+using VariantDataItem = QVariantList;
+using VariantDataItemList = QList<VariantDataItem *>;
+//! [0]
+
+class VariantDataSet : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit VariantDataSet();
+ ~VariantDataSet();
+
+ //! [1]
+ void clear();
+
+ int addItem(VariantDataItem *item);
+ int addItems(VariantDataItemList *itemList);
+
+ const VariantDataItemList &itemList() const;
+
+Q_SIGNALS:
+ void itemsAdded(int index, int count);
+ void dataCleared();
+ //! [1]
+
+private:
+ VariantDataItemList m_variantData;
+
+ Q_DISABLE_COPY(VariantDataSet)
+};
+
+#endif
diff --git a/examples/datavisualization/itemmodel/CMakeLists.txt b/examples/datavisualization/itemmodel/CMakeLists.txt
deleted file mode 100644
index 4848fffb..00000000
--- a/examples/datavisualization/itemmodel/CMakeLists.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(itemmodel LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(itemmodel
- main.cpp
-)
-set_target_properties(itemmodel PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(itemmodel PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-install(TARGETS itemmodel
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/itemmodel/doc/images/itemmodel-example-2.png b/examples/datavisualization/itemmodel/doc/images/itemmodel-example-2.png
deleted file mode 100644
index 677b7eec..00000000
--- a/examples/datavisualization/itemmodel/doc/images/itemmodel-example-2.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/itemmodel/doc/images/itemmodel-example.png b/examples/datavisualization/itemmodel/doc/images/itemmodel-example.png
deleted file mode 100644
index c042f84d..00000000
--- a/examples/datavisualization/itemmodel/doc/images/itemmodel-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/itemmodel/doc/src/itemmodel.qdoc b/examples/datavisualization/itemmodel/doc/src/itemmodel.qdoc
deleted file mode 100644
index 9a66c26a..00000000
--- a/examples/datavisualization/itemmodel/doc/src/itemmodel.qdoc
+++ /dev/null
@@ -1,196 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example itemmodel
- \title Item Model Example
- \ingroup qtdatavisualization_examples
- \brief Using an item model as data source for Q3DBars.
-
- The item model example shows how to make a simple 3D bar graph using Q3DBars and how to modify
- the data being drawn at run-time. The example shows how to:
-
- \list
- \li Create an application with Q3DBars and widgets
- \li Use QItemModelBarDataProxy to set data to the graph
- \li Use a table widget to modify the data in the graph
- \endlist
-
- For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
-
- \image itemmodel-example-2.png
-
- \include examples-run.qdocinc
-
- \section1 Creating the Application
-
- First, in main.cpp, we create a QApplication, instantiate Q3DBars and a window container for it:
-
- \snippet itemmodel/main.cpp 0
-
- The call to QWidget::createWindowContainer is required, as all data visualization graph classes
- (Q3DBars, Q3DScatter, and Q3DSurface) inherit QWindow. Any class inheriting QWindow cannot be used
- as a widget any other way.
-
- Then we'll create a layout and add the graph and the table widget into it:
-
- \snippet itemmodel/main.cpp 1
-
- The table widget is going to be used to display the numerical data being inserted into the
- graph, and to modify it (See \l {Adding data to the graph} and \l {Interacting with the data}).
-
- We need to instantiate QItemModelBarDataProxy and a QBar3DSeries for it, and give the series
- to the graph:
-
- \snippet itemmodel/main.cpp 2
-
- Here we tell the proxy to directly map the model's rows and columns into the proxy's rows and
- columns instead of defining row and column roles to map for them. Then we give the model from
- the table widget to the proxy. We also create a series instance and set the proxy to it.
- We customize the series visuals a bit by changing the object mesh to pyramids, and finally
- add the series to the graph.
-
- Next, let's create another class to handle the data addition and other interaction with the
- graph. Let's call it \c GraphDataGenerator (See \l {Setting up the graph} and
- \l {Adding data to the graph} for details) and connect some signals between QBar3DSeries,
- \c GraphDataGenerator, and QTableWidget (See \l {Interacting with the data} for a closer look):
-
- \snippet itemmodel/main.cpp 3
-
- The application main is done and we can show the graph and start the event loop:
-
- \snippet itemmodel/main.cpp 4
-
- \section1 Setting up the Graph
-
- Let's set up the visual attributes for the graph in the constructor of \c GraphDataGenerator:
-
- \snippet itemmodel/main.cpp 5
- \snippet itemmodel/main.cpp 6
- \snippet itemmodel/main.cpp 7
-
- First we set bar thickness ratio to 1.0, which means bars will be as wide as they are deep. 1.0
- is also the default value, so the line is basically unnecessary. It's left there so you could
- easily try how changing it affects the graph. The second line sets bar spacings to 0.2, which
- means there will be a gap of 20% of the bar's thickness between the bars in both directions.
-
- We want to be able to select rows of data for a closer inspection, so we set the selection mode
- to slice item and row. This means that whenever we select a bar in the graph, the whole row will be
- displayed separately and the selected bar will be highlighted.
-
- We don't want to use the default colors, so we set one of the predefined themes as the active theme.
-
- Next line sets the font to \c Impact. If your system doesn't have it, it will be replaced by
- the system default.
-
- And finally, we set the camera position to one of the predefined camera positions.
- Now the initial graph settings are done.
-
- \note You do not need to set any of these in case you're happy with the defaults. You can
- easily try them by commenting out the contents of the constructor.
-
- \section1 Adding Data to the Graph
-
- We created the data generator in the application main and gave it the graph and the table
- widget as parameters:
-
- \code
- GraphDataGenerator generator(graph, tableWidget);
- \endcode
-
- We added a separate start method to the generator, so that it wouldn't start doing anything
- until everything else is set up. We then called the method when starting the application:
-
- \code
- generator.start();
- \endcode
-
- Let's have a look at the contents of the \c start() method:
-
- \snippet itemmodel/main.cpp 8
-
- The main thing \c start() does is set up the data model. It also activates a timer for getting
- the accurate dimensions of the table widget after it's been filled with data. The reason we
- do this is that the widget doesn't know its final visual domensions until all the data has been
- inserted to it and it has been shown. The data timer usage is not vital for the
- application, so we won't take a closer look at it. It's just there to make QTableWidget look better.
-
- In \c setupModel() we first introduce the row and column labels, and the actual data:
-
- \snippet itemmodel/main.cpp 9
-
- Then we set up the axes:
-
- \snippet itemmodel/main.cpp 10
-
- Next we will set up the table widget:
-
- \snippet itemmodel/main.cpp 11
-
- After that all that's left is adding the data to the table widget:
-
- \snippet itemmodel/main.cpp 12
-
- Now we have a bar graph and a table widget, both displaying the same data.
-
- You're probably wondering how the data can be displayed in the graph, as the only thing we did
- was add it to the table widget? That's because of what we did earlier, in the application main:
-
- \snippet itemmodel/main.cpp 2
-
- We created QItemModelBarDataProxy instance, and gave the proxy the model of the table widget
- we just created. The proxy maps the rows and the columns in the model of the table widget into
- rows and columns for itself directly, as we set the QItemModelBarDataProxy::useModelCategories
- property to true, and the graph gets the data to be displayed via the series that owns the proxy.
-
- \section1 Interacting with the Data
-
- We made a couple of signal connections in the application main earlier:
-
- \snippet itemmodel/main.cpp 3
-
- Now we'll find out what these were for.
-
- The first one connects a signal from Q3DBars to the \c GraphDataGenerator. Signal
- QBar3DSeries::selectedBarChanged() is emitted when a bar is selected from the series. We connect
- that to a method in the data generator that selects the same data item in the table widget:
-
- \snippet itemmodel/main.cpp 13
-
- The second connection does the opposite; it connects a signal from the table widget to a
- method in the data generator. The method then selects the corresponding bar in the series:
-
- \snippet itemmodel/main.cpp 14
-
- You can even select an item in the widget and change the value of it, and the new value is
- updated to the graph. This is handled again by the proxy with mapping between the data
- in the table widget and itself.
-
- \image itemmodel-example.png
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/itemmodel/itemmodel.pro b/examples/datavisualization/itemmodel/itemmodel.pro
deleted file mode 100644
index 60b36b98..00000000
--- a/examples/datavisualization/itemmodel/itemmodel.pro
+++ /dev/null
@@ -1,15 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp
-
-QT += widgets
-requires(qtConfig(tablewidget))
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/itemmodel/main.cpp b/examples/datavisualization/itemmodel/main.cpp
deleted file mode 100644
index 4e3c1184..00000000
--- a/examples/datavisualization/itemmodel/main.cpp
+++ /dev/null
@@ -1,305 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtDataVisualization/q3dbars.h>
-#include <QtDataVisualization/qcategory3daxis.h>
-#include <QtDataVisualization/qitemmodelbardataproxy.h>
-#include <QtDataVisualization/qvalue3daxis.h>
-#include <QtDataVisualization/q3dscene.h>
-#include <QtDataVisualization/q3dcamera.h>
-#include <QtDataVisualization/qbar3dseries.h>
-#include <QtDataVisualization/q3dtheme.h>
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QTableWidget>
-#include <QtGui/QScreen>
-#include <QtCore/QRandomGenerator>
-#include <QtCore/QTimer>
-#include <QtGui/QFont>
-#include <QtCore/QDebug>
-#include <QtWidgets/QHeaderView>
-#include <QtWidgets/QMessageBox>
-
-#define USE_STATIC_DATA
-
-class GraphDataGenerator : public QObject
-{
-public:
- explicit GraphDataGenerator(Q3DBars *bargraph, QTableWidget *tableWidget);
- ~GraphDataGenerator();
-
- void setupModel();
- void addRow();
- void changeStyle();
- void changePresetCamera();
- void changeTheme();
- void start();
- void selectFromTable(const QPoint &selection);
- void selectedFromTable(int currentRow, int currentColumn, int previousRow, int previousColumn);
- void fixTableSize();
-
-private:
- Q3DBars *m_graph;
- QTimer *m_dataTimer;
- int m_columnCount;
- int m_rowCount;
- QTableWidget *m_tableWidget; // not owned
-};
-
-GraphDataGenerator::GraphDataGenerator(Q3DBars *bargraph, QTableWidget *tableWidget)
- : m_graph(bargraph),
- m_dataTimer(0),
- m_columnCount(100),
- m_rowCount(50),
- m_tableWidget(tableWidget)
-{
- //! [5]
- // Set up bar specifications; make the bars as wide as they are deep,
- // and add a small space between them
- m_graph->setBarThickness(1.0f);
- m_graph->setBarSpacing(QSizeF(0.2, 0.2));
-
- //! [5]
-#ifndef USE_STATIC_DATA
- // Set up sample space; make it as deep as it's wide
- m_graph->rowAxis()->setRange(0, m_rowCount);
- m_graph->columnAxis()->setRange(0, m_columnCount);
- m_tableWidget->setColumnCount(m_columnCount);
-
- // Set selection mode to full
- m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemRowAndColumn);
-
- // Hide axis labels by explicitly setting one empty string as label list
- m_graph->rowAxis()->setLabels(QStringList(QString()));
- m_graph->columnAxis()->setLabels(QStringList(QString()));
-
- m_graph->seriesList().at(0)->setItemLabelFormat(QStringLiteral("@valueLabel"));
-#else
- //! [6]
- // Set selection mode to slice row
- m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndRow | QAbstract3DGraph::SelectionSlice);
-
- //! [6]
-#endif
-
- //! [7]
- // Set theme
- m_graph->activeTheme()->setType(Q3DTheme::ThemeDigia);
-
- // Set font
- QFont font = QFont("Impact", 20);
- font.setStyleHint(QFont::SansSerif);
- m_graph->activeTheme()->setFont(font);
-
- // Set preset camera position
- m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
- //! [7]
-}
-
-GraphDataGenerator::~GraphDataGenerator()
-{
- if (m_dataTimer) {
- m_dataTimer->stop();
- delete m_dataTimer;
- }
- delete m_graph;
-}
-
-void GraphDataGenerator::start()
-{
-#ifndef USE_STATIC_DATA
- m_dataTimer = new QTimer();
- m_dataTimer->setTimerType(Qt::CoarseTimer);
- QObject::connect(m_dataTimer, &QTimer::timeout, this, &GraphDataGenerator::addRow);
- m_dataTimer->start(0);
- m_tableWidget->setFixedWidth(m_graph->width());
-#else
- //! [8]
- setupModel();
-
- // Table needs to be shown before the size of its headers can be accurately obtained,
- // so we postpone it a bit
- m_dataTimer = new QTimer();
- m_dataTimer->setSingleShot(true);
- QObject::connect(m_dataTimer, &QTimer::timeout, this, &GraphDataGenerator::fixTableSize);
- m_dataTimer->start(0);
- //! [8]
-#endif
-}
-
-void GraphDataGenerator::setupModel()
-{
- //! [9]
- // Set up row and column names
- QStringList days;
- days << "Monday" << "Tuesday" << "Wednesday" << "Thursday" << "Friday" << "Saturday" << "Sunday";
- QStringList weeks;
- weeks << "week 1" << "week 2" << "week 3" << "week 4" << "week 5";
-
- // Set up data Mon Tue Wed Thu Fri Sat Sun
- float hours[5][7] = {{2.0f, 1.0f, 3.0f, 0.2f, 1.0f, 5.0f, 10.0f}, // week 1
- {0.5f, 1.0f, 3.0f, 1.0f, 2.0f, 2.0f, 3.0f}, // week 2
- {1.0f, 1.0f, 2.0f, 1.0f, 4.0f, 4.0f, 4.0f}, // week 3
- {0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 2.0f, 0.3f}, // week 4
- {3.0f, 3.0f, 6.0f, 2.0f, 2.0f, 1.0f, 1.0f}}; // week 5
- //! [9]
-
- // Add labels
- //! [10]
- m_graph->rowAxis()->setTitle("Week of year");
- m_graph->rowAxis()->setTitleVisible(true);
- m_graph->columnAxis()->setTitle("Day of week");
- m_graph->columnAxis()->setTitleVisible(true);
- m_graph->valueAxis()->setTitle("Hours spent on the Internet");
- m_graph->valueAxis()->setTitleVisible(true);
- m_graph->valueAxis()->setLabelFormat("%.1f h");
- //! [10]
-
- //! [11]
- m_tableWidget->setRowCount(5);
- m_tableWidget->setColumnCount(7);
- m_tableWidget->setHorizontalHeaderLabels(days);
- m_tableWidget->setVerticalHeaderLabels(weeks);
- m_tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- m_tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- m_tableWidget->setCurrentCell(-1, -1);
- m_tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
- //! [11]
-
- //! [12]
- for (int week = 0; week < weeks.size(); week++) {
- for (int day = 0; day < days.size(); day++) {
- QModelIndex index = m_tableWidget->model()->index(week, day);
- m_tableWidget->model()->setData(index, hours[week][day]);
- }
- }
- //! [12]
-}
-
-void GraphDataGenerator::addRow()
-{
- m_tableWidget->model()->insertRow(0);
- if (m_tableWidget->model()->rowCount() > m_rowCount)
- m_tableWidget->model()->removeRow(m_rowCount);
- for (int i = 0; i < m_columnCount; i++) {
- QModelIndex index = m_tableWidget->model()->index(0, i);
- m_tableWidget->model()->setData(index,
- ((float)i / (float)m_columnCount) / 2.0f +
- (float)(QRandomGenerator::global()->bounded(30)) / 100.0f);
- }
- m_tableWidget->resizeColumnsToContents();
-}
-
-//! [13]
-void GraphDataGenerator::selectFromTable(const QPoint &selection)
-{
- m_tableWidget->setFocus();
- m_tableWidget->setCurrentCell(selection.x(), selection.y());
-}
-//! [13]
-
-//! [14]
-void GraphDataGenerator::selectedFromTable(int currentRow, int currentColumn,
- int previousRow, int previousColumn)
-{
- Q_UNUSED(previousRow);
- Q_UNUSED(previousColumn);
- m_graph->seriesList().at(0)->setSelectedBar(QPoint(currentRow, currentColumn));
-}
-//! [14]
-
-void GraphDataGenerator::fixTableSize()
-{
- int width = m_tableWidget->horizontalHeader()->length();
- width += m_tableWidget->verticalHeader()->width();
- m_tableWidget->setFixedWidth(width + 2);
- int height = m_tableWidget->verticalHeader()->length();
- height += m_tableWidget->horizontalHeader()->height();
- m_tableWidget->setFixedHeight(height + 2);
-}
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- //! [0]
- QApplication app(argc, argv);
- Q3DBars *graph = new Q3DBars();
- QWidget *container = QWidget::createWindowContainer(graph);
- //! [0]
-
- if (!graph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- QSize screenSize = graph->screen()->size();
- container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2));
- container->setMaximumSize(screenSize);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- //! [1]
- QWidget widget;
- QVBoxLayout *layout = new QVBoxLayout(&widget);
- QTableWidget *tableWidget = new QTableWidget(&widget);
- layout->addWidget(container, 1);
- layout->addWidget(tableWidget, 1, Qt::AlignHCenter);
- //! [1]
-
- tableWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
- tableWidget->setAlternatingRowColors(true);
- widget.setWindowTitle(QStringLiteral("Hours spent on the Internet"));
-
- //! [2]
- // Since we are dealing with QTableWidget, the model will already have data sorted properly
- // into rows and columns, so we simply set useModelCategories property to true to utilize this.
- QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy(tableWidget->model());
- proxy->setUseModelCategories(true);
- QBar3DSeries *series = new QBar3DSeries(proxy);
- series->setMesh(QAbstract3DSeries::MeshPyramid);
- graph->addSeries(series);
- //! [2]
-
- //! [3]
- GraphDataGenerator generator(graph, tableWidget);
- QObject::connect(series, &QBar3DSeries::selectedBarChanged, &generator,
- &GraphDataGenerator::selectFromTable);
- QObject::connect(tableWidget, &QTableWidget::currentCellChanged, &generator,
- &GraphDataGenerator::selectedFromTable);
- //! [3]
-
- //! [4]
- widget.show();
- generator.start();
- return app.exec();
- //! [4]
-}
diff --git a/examples/datavisualization/qml3doscilloscope/datasource.h b/examples/datavisualization/qml3doscilloscope/datasource.h
deleted file mode 100644
index dc3ea568..00000000
--- a/examples/datavisualization/qml3doscilloscope/datasource.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef DATASOURCE_H
-#define DATASOURCE_H
-
-#include <QtDataVisualization/QSurface3DSeries>
-
-class DataSource : public QObject
-{
- Q_OBJECT
-public:
- explicit DataSource(QObject *parent = 0);
- virtual ~DataSource();
-
- //! [0]
-public Q_SLOTS:
- void generateData(int cacheCount, int rowCount, int columnCount,
- float xMin, float xMax, float yMin, float yMax, float zMin, float zMax);
-
- void update(QSurface3DSeries *series);
- //! [0]
-private:
- void clearData();
-
- QList<QSurfaceDataArray> m_data;
- int m_index;
- QSurfaceDataArray *m_resetArray;
-};
-
-#endif
diff --git a/examples/datavisualization/qml3doscilloscope/doc/images/qml3doscilloscope-example.png b/examples/datavisualization/qml3doscilloscope/doc/images/qml3doscilloscope-example.png
deleted file mode 100644
index d8a79a36..00000000
--- a/examples/datavisualization/qml3doscilloscope/doc/images/qml3doscilloscope-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qml3doscilloscope/doc/src/qml3doscilloscope.qdoc b/examples/datavisualization/qml3doscilloscope/doc/src/qml3doscilloscope.qdoc
deleted file mode 100644
index a3b2f3f3..00000000
--- a/examples/datavisualization/qml3doscilloscope/doc/src/qml3doscilloscope.qdoc
+++ /dev/null
@@ -1,125 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qml3doscilloscope
- \title Qt Quick 2 Oscilloscope Example
- \ingroup qtdatavisualization_examples
- \brief Example of a hybrid C++ and QML application.
-
- The Qt Quick 2 oscilloscope example shows how to combine C++ and QML in an application,
- as well as showing data that changes realtime.
-
- \image qml3doscilloscope-example.png
-
- The interesting thing about this example is combining C++ and QML, so we'll concentrate on
- that and skip explaining the basic functionality - for
- more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
-
- \include examples-run.qdocinc
-
- \section1 Data Source in C++
-
- The item model based proxies are good for simple and/or static graphs, but to achieve
- best performance when displaying data changing in realtime, the basic proxies should be used.
- Those are not supported in QML, as the data items they store are not \l{QObject}s and
- cannot therefore be directly manipulated from QML code.
- To overcome this limitation, we implement a simple \c DataSource class in C++ to populate the
- data proxy of the series.
-
- The \c DataSource class provides three methods that can be called from QML:
-
- \snippet qml3doscilloscope/datasource.h 0
-
- The first method, \c generateData(), creates a cache of simulated oscilloscope data for us
- to display. The data is cached in a format accepted by QSurfaceDataProxy:
-
- \snippet qml3doscilloscope/datasource.cpp 0
-
- The second method, \c update(), copies one set of the cached data into another array, which we
- set to the data proxy of the series by calling QSurfaceDataProxy::resetArray().
- We reuse the same array if the array dimensions have not changed to minimize overhead:
-
- \snippet qml3doscilloscope/datasource.cpp 1
-
- \note Even though we are operating on the array pointer we have previously set to the proxy
- we still need to call QSurfaceDataProxy::resetArray() after changing the data in it to prompt
- the graph to render the data.
-
- To be able to access the \c DataSource methods from QML, we need to expose it. We do this by
- defining a context property in application main:
-
- \snippet qml3doscilloscope/main.cpp 0
-
- To make it possible to use QSurface3DSeries pointers as parameters on the
- \c DataSource class methods on all environments and builds, we need to make sure the meta
- type is registered:
-
- \snippet qml3doscilloscope/datasource.cpp 3
- \dots 0
- \snippet qml3doscilloscope/datasource.cpp 4
-
- \section1 QML
-
- In the QML codes, we define a Surface3D graph normally and give it a Surface3DSeries:
-
- \snippet qml3doscilloscope/qml/qml3doscilloscope/main.qml 0
-
- One interesting detail is that we don't specify a proxy for the Surface3DSeries we attach
- to the graph. This makes the series to utilize the default QSurfaceDataProxy.
-
- We also hide the item label with \l{Abstract3DSeries::itemLabelVisible}{itemLabelVisible}, since
- we want to display the selected item information in a \c Text element instead of a floating
- label above the selection pointer.
- This is done because the selection pointer moves around a lot as the data changes, which makes
- the regular selection label difficult to read.
-
- We initialize the \c DataSource cache when the graph is complete by calling a helper function
- \c generateData(), which calls the method with the same name on the \c DataSource:
-
- \snippet qml3doscilloscope/qml/qml3doscilloscope/main.qml 2
- \dots 4
- \snippet qml3doscilloscope/qml/qml3doscilloscope/main.qml 4
-
- To trigger the updates in data, we define a \c Timer item which calls the \c update() method on the \c
- DataSource at requested intervals. The label update is also triggered on each cycle:
-
- \snippet qml3doscilloscope/qml/qml3doscilloscope/main.qml 3
-
- \section1 Enabling Direct Rendering
-
- Since this application potentially deals with a lot of rapidly changing data, we use direct
- rendering mode for performance. To enable antialiasing in this mode the surface format of the application
- window needs to be changed, as the default format used by QQuickView doesn't support antialiasing.
- We use the utility function provided by Qt Data Visualization to change the surface format
- in \c main.cpp:
-
- \snippet qml3doscilloscope/main.cpp 1
- \dots 0
- \snippet qml3doscilloscope/main.cpp 2
-
-*/
diff --git a/examples/datavisualization/qml3doscilloscope/main.cpp b/examples/datavisualization/qml3doscilloscope/main.cpp
deleted file mode 100644
index fef0f30e..00000000
--- a/examples/datavisualization/qml3doscilloscope/main.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "datasource.h"
-
-//! [2]
-#include <QtDataVisualization/qutils.h>
-//! [2]
-
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQml/QQmlContext>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlEngine>
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- QQuickView viewer;
-
- // Enable antialiasing in direct rendering mode
- //! [1]
- viewer.setFormat(qDefaultSurfaceFormat(true));
- //! [1]
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
- QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
-
- viewer.setTitle(QStringLiteral("Oscilloscope example"));
-
- //! [0]
- DataSource dataSource;
- viewer.rootContext()->setContextProperty("dataSource", &dataSource);
- //! [0]
-
- viewer.setSource(QUrl("qrc:/qml/qml3doscilloscope/main.qml"));
- viewer.setResizeMode(QQuickView::SizeRootObjectToView);
- viewer.show();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qml3doscilloscope/qml/qml3doscilloscope/main.qml b/examples/datavisualization/qml3doscilloscope/qml/qml3doscilloscope/main.qml
deleted file mode 100644
index 51eba416..00000000
--- a/examples/datavisualization/qml3doscilloscope/qml/qml3doscilloscope/main.qml
+++ /dev/null
@@ -1,332 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import QtDataVisualization 1.2
-import "."
-
-Item {
- id: mainView
- width: 1280
- height: 1024
-
- property int sampleColumns: sampleSlider.value
- property int sampleRows: sampleColumns / 2
- property int sampleCache: 24
-
- onSampleRowsChanged: {
- surfaceSeries.selectedPoint = surfaceSeries.invalidSelectionPosition
- generateData()
- }
-
- Item {
- id: dataView
- anchors.bottom: parent.bottom
- width: parent.width
- height: parent.height - buttonLayout.height
-
- Surface3D {
- id: surfaceGraph
-
- width: dataView.width
- height: dataView.height
- shadowQuality: AbstractGraph3D.ShadowQualityNone
- selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndRow
-
- axisX.labelFormat: "%d ms"
- axisY.labelFormat: "%d W"
- axisZ.labelFormat: "%d mV"
- axisX.min: 0
- axisY.min: 0
- axisZ.min: 0
- axisX.max: 1000
- axisY.max: 100
- axisZ.max: 800
- axisX.segmentCount: 4
- axisY.segmentCount: 4
- axisZ.segmentCount: 4
- measureFps: true
- renderingMode: AbstractGraph3D.RenderDirectToBackground
-
- onCurrentFpsChanged: (fps)=> {
- if (fps > 10)
- fpsText.text = "FPS: " + Math.round(surfaceGraph.currentFps)
- else
- fpsText.text = "FPS: " + Math.round(surfaceGraph.currentFps * 10.0) / 10.0
- }
-
- //! [0]
- Surface3DSeries {
- id: surfaceSeries
- drawMode: Surface3DSeries.DrawSurface;
- flatShadingEnabled: false;
- meshSmooth: true
- itemLabelFormat: "@xLabel, @zLabel: @yLabel"
- itemLabelVisible: false
-
- onItemLabelChanged: {
- if (surfaceSeries.selectedPoint === surfaceSeries.invalidSelectionPosition)
- selectionText.text = "No selection"
- else
- selectionText.text = surfaceSeries.itemLabel
- }
- }
- //! [0]
-
- //! [2]
- Component.onCompleted: mainView.generateData()
- //! [2]
- }
- }
-
- //! [3]
- Timer {
- id: refreshTimer
- interval: 1000 / frequencySlider.value
- running: true
- repeat: true
- onTriggered: dataSource.update(surfaceSeries)
- }
- //! [3]
-
- Rectangle {
- width: parent.width
- height: flatShadingToggle.implicitHeight * 2
- anchors.left: parent.left
- anchors.top: parent.top
- color: surfaceGraph.theme.backgroundColor
-
- ColumnLayout {
- anchors.fill: parent
- RowLayout {
- id: sliderLayout
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.minimumHeight: flatShadingToggle.implicitHeight
- spacing: 0
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.minimumWidth: samplesText.implicitWidth + 120
- Layout.maximumWidth: samplesText.implicitWidth + 120
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
- border.color: "gray"
- border.width: 1
- radius: 4
-
- RowLayout {
- anchors.fill: parent
- anchors.margins: parent.border.width + 1
-
- Slider {
- id: sampleSlider
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
- Layout.minimumWidth: 80
- from: mainView.sampleCache * 2
- to: from * 10
- stepSize: mainView.sampleCache
- Component.onCompleted: value = from * 2
- }
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.minimumWidth: samplesText.implicitWidth + 10
- Layout.maximumWidth: samplesText.implicitWidth + 10
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
- Text {
- id: samplesText
- text: "Samples: " + (mainView.sampleRows * mainView.sampleColumns)
- anchors.fill: parent
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignHCenter
- }
- }
- }
- }
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.minimumWidth: frequencyText.implicitWidth + 120
- Layout.maximumWidth: frequencyText.implicitWidth + 120
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
- border.color: "gray"
- border.width: 1
- radius: 4
-
- RowLayout {
- anchors.fill: parent
- anchors.margins: parent.border.width + 1
-
- Slider {
- id: frequencySlider
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
- Layout.minimumWidth: 80
- from: 2
- to: 60
- stepSize: 2
- value: 30
- }
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.minimumWidth: frequencyText.implicitWidth + 10
- Layout.maximumWidth: frequencyText.implicitWidth + 10
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
- Text {
- id: frequencyText
- text: "Freq: " + frequencySlider.value + " Hz"
- anchors.fill: parent
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignHCenter
- }
- }
- }
- }
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.minimumWidth: fpsText.implicitWidth + 10
- Layout.maximumWidth: fpsText.implicitWidth + 10
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
- border.color: "gray"
- border.width: 1
- radius: 4
-
- Text {
- id: fpsText
- anchors.fill: parent
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignHCenter
- }
- }
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.minimumWidth: selectionText.implicitWidth + 10
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
- border.color: "gray"
- border.width: 1
- radius: 4
-
- Text {
- id: selectionText
- anchors.fill: parent
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignHCenter
- text: "No selection"
- }
- }
- }
-
- RowLayout {
- id: buttonLayout
- Layout.fillHeight: true
- Layout.fillWidth: true
- Layout.minimumHeight: flatShadingToggle.implicitHeight
- spacing: 0
-
- Button {
- id: flatShadingToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
-
- text: surfaceSeries.flatShadingSupported ? "Show Flat" : "Flat not supported"
- enabled: surfaceSeries.flatShadingSupported
-
- onClicked: {
- if (surfaceSeries.flatShadingEnabled === true) {
- surfaceSeries.flatShadingEnabled = false;
- text = "Show Flat"
- } else {
- surfaceSeries.flatShadingEnabled = true;
- text = "Show Smooth"
- }
- }
- }
-
- Button {
- id: surfaceGridToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
-
- text: "Show Surface Grid"
-
- onClicked: {
- if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe) {
- surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
- text = "Show Surface Grid"
- } else {
- surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
- text = "Hide Surface Grid"
- }
- }
- }
-
- Button {
- id: exitButton
- Layout.fillHeight: true
- Layout.fillWidth: true
-
- text: "Quit"
-
- onClicked: Qt.quit();
- }
- }
- }
-
- }
-
- //! [4]
- function generateData() {
- dataSource.generateData(mainView.sampleCache, mainView.sampleRows,
- mainView.sampleColumns, surfaceGraph.axisX.min,
- surfaceGraph.axisX.max, surfaceGraph.axisY.min,
- surfaceGraph.axisY.max, surfaceGraph.axisZ.min,
- surfaceGraph.axisZ.max)
- }
- //! [4]
-}
diff --git a/examples/datavisualization/qml3doscilloscope/qml3doscilloscope.qrc b/examples/datavisualization/qml3doscilloscope/qml3doscilloscope.qrc
deleted file mode 100644
index 64650c35..00000000
--- a/examples/datavisualization/qml3doscilloscope/qml3doscilloscope.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>qml/qml3doscilloscope/main.qml</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/qmlaxisdrag/CMakeLists.txt b/examples/datavisualization/qmlaxisdrag/CMakeLists.txt
deleted file mode 100644
index 774c1210..00000000
--- a/examples/datavisualization/qmlaxisdrag/CMakeLists.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(qmlaxisdrag LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Qml)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(qmlaxisdrag
- main.cpp
-)
-set_target_properties(qmlaxisdrag PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(qmlaxisdrag PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Qml
- Qt::Quick
- Qt::DataVisualization
-)
-
-set(qmlaxisdrag_resource_files
- "qml/qmlaxisdrag/main.qml"
-)
-
-qt6_add_resources(qmlaxisdrag "qmlaxisdrag"
- PREFIX
- "/"
- FILES
- ${qmlaxisdrag_resource_files}
-)
-set_source_files_properties("qml/qmlaxisdrag/cube.obj"
- PROPERTIES QT_RESOURCE_ALIAS "cube"
-)
-set(qmlaxisdrag1_resource_files
- "qml/qmlaxisdrag/cube.obj"
-)
-
-qt6_add_resources(qmlaxisdrag "qmlaxisdrag1"
- PREFIX
- "/mesh"
- FILES
- ${qmlaxisdrag1_resource_files}
-)
-set_source_files_properties("qml/qmlaxisdrag/cubetexture.png"
- PROPERTIES QT_RESOURCE_ALIAS "texture"
-)
-set(qmlaxisdrag2_resource_files
- "qml/qmlaxisdrag/cubetexture.png"
-)
-
-qt6_add_resources(qmlaxisdrag "qmlaxisdrag2"
- PREFIX
- "/texture"
- FILES
- ${qmlaxisdrag2_resource_files}
-)
-
-install(TARGETS qmlaxisdrag
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/qmlaxisdrag/doc/images/qmlaxisdrag-example.png b/examples/datavisualization/qmlaxisdrag/doc/images/qmlaxisdrag-example.png
deleted file mode 100644
index de33ba66..00000000
--- a/examples/datavisualization/qmlaxisdrag/doc/images/qmlaxisdrag-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlaxisdrag/doc/src/qmlaxisdrag.qdoc b/examples/datavisualization/qmlaxisdrag/doc/src/qmlaxisdrag.qdoc
deleted file mode 100644
index f0dea871..00000000
--- a/examples/datavisualization/qmlaxisdrag/doc/src/qmlaxisdrag.qdoc
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qmlaxisdrag
- \title Qt Quick 2 Axis Dragging Example
- \ingroup qtdatavisualization_examples
- \brief Implementing axis dragging in QML.
- \since QtDataVisualization 1.1
-
- The Qt Quick 2 axis dragging example concentrates on showing how to implement axis range
- changing by dragging axis labels in QML. It also gives a quick peek to two other new features
- in Qt Data Visualization 1.1: orthographic projection and dynamic custom item handling.
-
- \image qmlaxisdrag-example.png
-
- \include examples-run.qdocinc
-
- \section1 Overriding Default Input Handling
-
- First we deactivate the default input handling mechanism by setting the active input handler
- of Scatter3D graph to \c{null}:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 0
- \dots
-
- Then we add a MouseArea and set it to fill the parent, which is the same \c Item our
- \c scatterGraph is contained in. We also set it to accept only left mouse button presses,
- as in this example we are not interested in other buttons:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 1
- \dots
-
- Then we need to listen to mouse presses, and when caught, send a selection query to the graph:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 2
-
- Current mouse position, that will be needed for move distance calculation, is caught in
- \c{onPositionChanged}:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 3
- \dots
-
- At the end of \c{onPositionChanged}, we'll save the previous mouse position for move distance
- calculation that will be introduced later:
-
- \dots 0
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 4
-
- \section1 Translating Mouse Movement to Axis Range Change
-
- in \c scatterGraph we will need to listen to \c onSelectedElementChanged signal. The signal
- is emitted after the selection query has been made in the \c{onPressed} of \c{inputArea}. We
- set the element type into a property we defined (\c{property int selectedAxisLabel: -1}) in our
- main component, since it is of a type we are interested in:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 5
-
- Then, back in the \c onPositionChanged of \c{inputArea}, we check if a mouse button is pressed
- and if we have a current axis label selection. If the conditions are met, we'll call the
- function that does the conversion from mouse movement to axis range update:
-
- \dots 0
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 6
- \dots 0
-
- The conversion is easy in this case, as we have a fixed camera rotation. We can use some
- precalculated values, calculate mouse move distance, and apply the values to the
- selected axis range:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 7
-
- For a more sophisticated conversion from mouse movement to axis range update, see
- \l{Axis Range Dragging With Labels Example}{this example}.
-
- \section1 Other Features
-
- The example also demonstrates how to use orthographic projection and how to update properties
- of a custom item on the fly.
-
- Orthographic projection is very simple. You'll just need to change \c orthoProjection property
- of \c{scatterGraph}. In this example we have a button for toggling it on and off:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 8
-
- For custom items, first we'll add one in the \c customItemList of \c{scatterGraph}:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 9
-
- We have implemented a timer to add, remove, and rotate all the items in the graph,
- and we'll use the same timer for rotating the custom item:
-
- \snippet qmlaxisdrag/qml/qmlaxisdrag/main.qml 10
- \dots
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/qmlaxisdrag/main.cpp b/examples/datavisualization/qmlaxisdrag/main.cpp
deleted file mode 100644
index 098c25ef..00000000
--- a/examples/datavisualization/qmlaxisdrag/main.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlEngine>
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- QQuickView viewer;
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
- QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
-
- viewer.setTitle(QStringLiteral("QML Draggable Axes"));
-
- viewer.setSource(QUrl("qrc:/qml/qmlaxisdrag/main.qml"));
- viewer.setResizeMode(QQuickView::SizeRootObjectToView);
- viewer.show();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/cubetexture.png b/examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/cubetexture.png
deleted file mode 100644
index 3cea6863..00000000
--- a/examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/cubetexture.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/main.qml b/examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/main.qml
deleted file mode 100644
index ac4cbd85..00000000
--- a/examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/main.qml
+++ /dev/null
@@ -1,329 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtDataVisualization 1.1
-import QtQuick.Controls
-import "."
-
-Item {
- id: mainView
- width: 800
- height: 600
- visible: true
-
- property int selectedAxisLabel: -1
- property real dragSpeedModifier: 100.0
- property int currentMouseX: -1
- property int currentMouseY: -1
- property int previousMouseX: -1
- property int previousMouseY: -1
-
- ListModel {
- id: graphModel
- ListElement{ xPos: 0.0; yPos: 0.0; zPos: 0.0; rotation: "@0,0,0,0" }
- ListElement{ xPos: 1.0; yPos: 1.0; zPos: 1.0; rotation: "@45,1,1,1" }
- }
-
- Timer {
- id: dataTimer
- interval: 1
- running: true
- repeat: true
- property bool isIncreasing: true
- property real rotationAngle: 0
-
- function generateQuaternion() {
- return "@" + Math.random() * 360 + "," + Math.random() + ","
- + Math.random() + "," + Math.random()
- }
-
- function appendRow() {
- graphModel.append({"xPos": Math.random(),
- "yPos": Math.random(),
- "zPos": Math.random(),
- "rotation": generateQuaternion()
- });
- }
-
- //! [10]
- onTriggered: {
- rotationAngle = rotationAngle + 1
- qtCube.setRotationAxisAndAngle(Qt.vector3d(1,0,1), rotationAngle)
- //! [10]
- scatterSeries.setMeshAxisAndAngle(Qt.vector3d(1,1,1), rotationAngle)
- if (isIncreasing) {
- for (var i = 0; i < 10; i++)
- appendRow()
- if (graphModel.count > 2002) {
- scatterGraph.theme = isabelleTheme
- isIncreasing = false
- }
- } else {
- graphModel.remove(2, 10);
- if (graphModel.count == 2) {
- scatterGraph.theme = dynamicColorTheme
- isIncreasing = true
- }
- }
- }
- }
-
- ThemeColor {
- id: dynamicColor
- ColorAnimation on color {
- from: "red"
- to: "yellow"
- duration: 2000
- loops: Animation.Infinite
- }
- }
-
- Theme3D {
- id: dynamicColorTheme
- type: Theme3D.ThemeEbony
- baseColors: [dynamicColor]
- font.pointSize: 50
- labelBorderEnabled: true
- labelBackgroundColor: "gold"
- labelTextColor: "black"
- }
-
- Theme3D {
- id: isabelleTheme
- type: Theme3D.ThemeIsabelle
- font.pointSize: 50
- labelBorderEnabled: true
- labelBackgroundColor: "gold"
- labelTextColor: "black"
- }
-
- Item {
- id: dataView
- anchors.bottom: parent.bottom
- width: parent.width
- height: parent.height
-
- //! [0]
- Scatter3D {
- id: scatterGraph
- inputHandler: null
- //! [0]
- width: dataView.width
- height: dataView.height
- theme: dynamicColorTheme
- shadowQuality: AbstractGraph3D.ShadowQualityLow
- scene.activeCamera.yRotation: 45.0
- scene.activeCamera.xRotation: 45.0
- scene.activeCamera.zoomLevel: 75.0
-
- Scatter3DSeries {
- id: scatterSeries
- itemLabelFormat: "X:@xLabel Y:@yLabel Z:@zLabel"
- mesh: Abstract3DSeries.MeshCube
-
- ItemModelScatterDataProxy {
- itemModel: graphModel
- xPosRole: "xPos"
- yPosRole: "yPos"
- zPosRole: "zPos"
- rotationRole: "rotation"
- }
- }
- //! [9]
- customItemList: [
- Custom3DItem {
- id: qtCube
- meshFile: ":/mesh/cube"
- textureFile: ":/texture/texture"
- position: Qt.vector3d(0.65,0.35,0.65)
- scaling: Qt.vector3d(0.3,0.3,0.3)
- }
- ]
- //! [9]
- //! [5]
- onSelectedElementChanged: {
- if (selectedElement >= AbstractGraph3D.ElementAxisXLabel
- && selectedElement <= AbstractGraph3D.ElementAxisZLabel)
- selectedAxisLabel = selectedElement
- else
- selectedAxisLabel = -1
- }
- //! [5]
- }
-
- //! [1]
- MouseArea {
- anchors.fill: parent
- hoverEnabled: true
- acceptedButtons: Qt.LeftButton
- //! [1]
-
- //! [3]
- onPositionChanged: (mouse)=> {
- currentMouseX = mouse.x;
- currentMouseY = mouse.y;
- //! [3]
- //! [6]
- if (pressed && selectedAxisLabel != -1)
- dragAxis();
- //! [6]
- //! [4]
- previousMouseX = currentMouseX;
- previousMouseY = currentMouseY;
- }
- //! [4]
-
- //! [2]
- onPressed: (mouse)=> {
- scatterGraph.scene.selectionQueryPosition = Qt.point(mouse.x, mouse.y);
- }
- //! [2]
-
- onReleased: {
- // We need to clear mouse positions and selected axis, because touch devices cannot
- // track position all the time
- selectedAxisLabel = -1
- currentMouseX = -1
- currentMouseY = -1
- previousMouseX = -1
- previousMouseY = -1
- }
- }
- }
-
- //! [7]
- function dragAxis() {
- // Do nothing if previous mouse position is uninitialized
- if (previousMouseX === -1)
- return
-
- // Directional drag multipliers based on rotation. Camera is locked to 45 degrees, so we
- // can use one precalculated value instead of calculating xx, xy, zx and zy individually
- var cameraMultiplier = 0.70710678
-
- // Calculate the mouse move amount
- var moveX = currentMouseX - previousMouseX
- var moveY = currentMouseY - previousMouseY
-
- // Adjust axes
- switch (selectedAxisLabel) {
- case AbstractGraph3D.ElementAxisXLabel:
- var distance = ((moveX - moveY) * cameraMultiplier) / dragSpeedModifier
- // Check if we need to change min or max first to avoid invalid ranges
- if (distance > 0) {
- scatterGraph.axisX.min -= distance
- scatterGraph.axisX.max -= distance
- } else {
- scatterGraph.axisX.max -= distance
- scatterGraph.axisX.min -= distance
- }
- break
- case AbstractGraph3D.ElementAxisYLabel:
- distance = moveY / dragSpeedModifier
- // Check if we need to change min or max first to avoid invalid ranges
- if (distance > 0) {
- scatterGraph.axisY.max += distance
- scatterGraph.axisY.min += distance
- } else {
- scatterGraph.axisY.min += distance
- scatterGraph.axisY.max += distance
- }
- break
- case AbstractGraph3D.ElementAxisZLabel:
- distance = ((moveX + moveY) * cameraMultiplier) / dragSpeedModifier
- // Check if we need to change min or max first to avoid invalid ranges
- if (distance > 0) {
- scatterGraph.axisZ.max += distance
- scatterGraph.axisZ.min += distance
- } else {
- scatterGraph.axisZ.min += distance
- scatterGraph.axisZ.max += distance
- }
- break
- }
- }
- //! [7]
-
- Button {
- id: rangeToggle
- width: parent.width / 3 // We're adding 3 buttons and want to divide them equally
- text: "Use Preset Range"
- anchors.left: parent.left
- property bool autoRange: true
- onClicked: {
- if (autoRange) {
- text = "Use Automatic Range"
- scatterGraph.axisX.min = 0.3
- scatterGraph.axisX.max = 0.7
- scatterGraph.axisY.min = 0.3
- scatterGraph.axisY.max = 0.7
- scatterGraph.axisZ.min = 0.3
- scatterGraph.axisZ.max = 0.7
- autoRange = false
- dragSpeedModifier = 200.0
- } else {
- text = "Use Preset Range"
- autoRange = true
- dragSpeedModifier = 100.0
- }
- scatterGraph.axisX.autoAdjustRange = autoRange
- scatterGraph.axisY.autoAdjustRange = autoRange
- scatterGraph.axisZ.autoAdjustRange = autoRange
- }
- }
-
- //! [8]
- Button {
- id: orthoToggle
- width: parent.width / 3
- text: "Display Orthographic"
- anchors.left: rangeToggle.right
- onClicked: {
- if (scatterGraph.orthoProjection) {
- text = "Display Orthographic";
- scatterGraph.orthoProjection = false
- // Orthographic projection disables shadows, so we need to switch them back on
- scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityLow
- } else {
- text = "Display Perspective";
- scatterGraph.orthoProjection = true
- }
- }
- }
- //! [8]
-
- Button {
- id: exitButton
- width: parent.width / 3
- text: "Quit"
- anchors.left: orthoToggle.right
- onClicked: Qt.quit();
- }
-}
diff --git a/examples/datavisualization/qmlaxisdrag/qmlaxisdrag.pro b/examples/datavisualization/qmlaxisdrag/qmlaxisdrag.pro
deleted file mode 100644
index d45525ad..00000000
--- a/examples/datavisualization/qmlaxisdrag/qmlaxisdrag.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp
-
-RESOURCES += qmlaxisdrag.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- qml/qmlaxisdrag/*
diff --git a/examples/datavisualization/qmlaxisdrag/qmlaxisdrag.qrc b/examples/datavisualization/qmlaxisdrag/qmlaxisdrag.qrc
deleted file mode 100644
index 9e6b90c8..00000000
--- a/examples/datavisualization/qmlaxisdrag/qmlaxisdrag.qrc
+++ /dev/null
@@ -1,11 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>qml/qmlaxisdrag/main.qml</file>
- </qresource>
- <qresource prefix="/mesh">
- <file alias="cube">qml/qmlaxisdrag/cube.obj</file>
- </qresource>
- <qresource prefix="/texture">
- <file alias="texture">qml/qmlaxisdrag/cubetexture.png</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/qmlaxisformatter/CMakeLists.txt b/examples/datavisualization/qmlaxisformatter/CMakeLists.txt
deleted file mode 100644
index 3c4335b5..00000000
--- a/examples/datavisualization/qmlaxisformatter/CMakeLists.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(qmlaxisformatter LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Qml)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(qmlaxisformatter
- customformatter.cpp customformatter.h
- main.cpp
-)
-set_target_properties(qmlaxisformatter PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(qmlaxisformatter PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Qml
- Qt::Quick
- Qt::DataVisualization
-)
-
-set(qmlaxisformatter_resource_files
- "qml/qmlaxisformatter/Data.qml"
- "qml/qmlaxisformatter/main.qml"
-)
-
-qt6_add_resources(qmlaxisformatter "qmlaxisformatter"
- PREFIX
- "/"
- FILES
- ${qmlaxisformatter_resource_files}
-)
-
-install(TARGETS qmlaxisformatter
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/qmlaxisformatter/customformatter.h b/examples/datavisualization/qmlaxisformatter/customformatter.h
deleted file mode 100644
index 855ddb31..00000000
--- a/examples/datavisualization/qmlaxisformatter/customformatter.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CUSTOMFORMATTER_H
-#define CUSTOMFORMATTER_H
-
-#include <QtDataVisualization/QValue3DAxisFormatter>
-#include <QtCore/QDateTime>
-
-//! [2]
-class CustomFormatter : public QValue3DAxisFormatter
-{
- //! [2]
- Q_OBJECT
-
- //! [1]
- Q_PROPERTY(QDate originDate READ originDate WRITE setOriginDate NOTIFY originDateChanged)
- //! [1]
- //! [3]
- Q_PROPERTY(QString selectionFormat READ selectionFormat WRITE setSelectionFormat NOTIFY selectionFormatChanged)
- //! [3]
-public:
- explicit CustomFormatter(QObject *parent = 0);
- virtual ~CustomFormatter();
-
- //! [0]
- virtual QValue3DAxisFormatter *createNewInstance() const;
- virtual void populateCopy(QValue3DAxisFormatter &copy) const;
- virtual void recalculate();
- virtual QString stringForValue(qreal value, const QString &format) const;
- //! [0]
-
- QDate originDate() const;
- QString selectionFormat() const;
-
-public Q_SLOTS:
- void setOriginDate(const QDate &date);
- void setSelectionFormat(const QString &format);
-
-Q_SIGNALS:
- void originDateChanged(const QDate &date);
- void selectionFormatChanged(const QString &format);
-
-private:
- Q_DISABLE_COPY(CustomFormatter)
-
- QDateTime valueToDateTime(qreal value) const;
-
- QDate m_originDate;
- QString m_selectionFormat;
-};
-
-#endif
diff --git a/examples/datavisualization/qmlaxisformatter/doc/images/qmlaxisformatter-example.png b/examples/datavisualization/qmlaxisformatter/doc/images/qmlaxisformatter-example.png
deleted file mode 100644
index fbfbd833..00000000
--- a/examples/datavisualization/qmlaxisformatter/doc/images/qmlaxisformatter-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlaxisformatter/doc/src/qmlaxisformatter.qdoc b/examples/datavisualization/qmlaxisformatter/doc/src/qmlaxisformatter.qdoc
deleted file mode 100644
index 3c9574d4..00000000
--- a/examples/datavisualization/qmlaxisformatter/doc/src/qmlaxisformatter.qdoc
+++ /dev/null
@@ -1,126 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qmlaxisformatter
- \title Qt Quick 2 Axis Formatter Example
- \ingroup qtdatavisualization_examples
- \brief Example of a hybrid C++ and QML application demonstrating different axis formatters.
- \since QtDataVisualization 1.1
-
- The Qt Quick axis formatter example shows how to use predefined axis formatters and how to
- create a custom one.
-
- \image qmlaxisformatter-example.png
-
- The interesting thing about this example is axis formatters, so we'll concentrate on
- that and skip explaining the basic functionality - for
- more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
-
- \include examples-run.qdocinc
-
- \section1 Custom Axis Formatter
-
- Customizing axis formatters requires subclassing the QValue3DAxisFormatter, which cannot be
- done in QML code alone. In this example we want an axis that interprets the float values as
- a timestamp and shows the date in the axis labels. To achieve this, we introduce a new class
- called \c CustomFormatter, which subclasses the QValue3DAxisFormatter:
-
- \snippet qmlaxisformatter/customformatter.h 2
- \dots 0
-
- Since float values of a QScatter3DSeries cannot be directly cast into QDateTime values due to
- difference in data width, we need some sort of mapping between the two. We chose to do the
- mapping by specifying an origin date for the formatter and interpreting the float values
- from the QScatter3DSeries as date offsets to that origin value. The origin date is given as
- a property:
-
- \snippet qmlaxisformatter/customformatter.h 1
-
- The mapping from value to QDateTime is done using \c valueToDateTime() method:
-
- \snippet qmlaxisformatter/customformatter.cpp 0
-
- To function as an axis formatter, our \c CustomFormatter needs to reimplement some virtual
- methods:
-
- \snippet qmlaxisformatter/customformatter.h 0
-
- The first two are simple, we just create a new instance of \c CustomFormatter and copy the
- necessary data over to it. These two methods are used to create and update a cache of formatter for
- rendering purposes. It is important to remember to call the superclass implementation
- of \c populateCopy():
-
- \snippet qmlaxisformatter/customformatter.cpp 1
-
- Bulk of the work done by \c CustomFormatter is done in the \c recalculate() method, where
- our formatter calculates the grid, subgrid, and label positions, as well as formats the label
- strings.
- In our custom formatter we ignore the segment count of the axis and draw a grid line always at
- midnight. Subsegment count and label positioning is handled normally:
-
- \snippet qmlaxisformatter/customformatter.cpp 2
-
- The axis labels are formatted to show only the date, but for selection label we want little more
- resolution for the timestamp, so we specify another property for our custom formatter to allow
- user to customize it:
-
- \snippet qmlaxisformatter/customformatter.h 3
-
- This selection format property is used in the reimplemented \c stringToValue method, where we
- ignore the submitted format and substitute the custom selection format for it:
-
- \snippet qmlaxisformatter/customformatter.cpp 3
-
- To expose our new custom formatter to the QML, we must declare and register it:
-
- \snippet qmlaxisformatter/main.cpp 0
- \dots 0
- \snippet qmlaxisformatter/main.cpp 1
-
- \section1 QML
-
- In the QML codes, we define a different axis for each dimension:
-
- \snippet qmlaxisformatter/qml/qmlaxisformatter/main.qml 3
-
- Z-axis is just a regular ValueAxis3D:
-
- \snippet qmlaxisformatter/qml/qmlaxisformatter/main.qml 0
-
- For the Y-axis we define a logarithmic axis. ValueAxis3D can be made to show logarithmic scale
- by specifying LogValueAxis3DFormatter for \c formatter property of the axis:
-
- \snippet qmlaxisformatter/qml/qmlaxisformatter/main.qml 2
-
- And finally, for the X-axis we use our new \c CustomFormatter:
-
- \snippet qmlaxisformatter/qml/qmlaxisformatter/main.qml 1
-
- Rest of the application consists of fairly self-explanatory logic for modifying the axes and
- showing the graph.
-*/
diff --git a/examples/datavisualization/qmlaxisformatter/main.cpp b/examples/datavisualization/qmlaxisformatter/main.cpp
deleted file mode 100644
index ec419f75..00000000
--- a/examples/datavisualization/qmlaxisformatter/main.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "customformatter.h"
-
-#include <QtGui/QGuiApplication>
-#include <QtQuick/QQuickView>
-#include <QtQml>
-
-//! [0]
-Q_DECLARE_METATYPE(CustomFormatter *)
-//! [0]
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- //! [1]
- qmlRegisterType<CustomFormatter>("CustomFormatter", 1, 0, "CustomFormatter");
- //! [1]
-
- QQuickView viewer;
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
- QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
-
- viewer.setTitle(QStringLiteral("Axis formatter example"));
-
- viewer.setSource(QUrl("qrc:/qml/qmlaxisformatter/main.qml"));
- viewer.setResizeMode(QQuickView::SizeRootObjectToView);
- viewer.show();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/main.qml b/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/main.qml
deleted file mode 100644
index d7042535..00000000
--- a/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/main.qml
+++ /dev/null
@@ -1,195 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import QtDataVisualization 1.2
-import CustomFormatter
-import "."
-
-Item {
- id: mainView
- width: 1280
- height: 1024
-
- Data {
- id: seriesData
- }
-
- Theme3D {
- id: themeIsabelle
- type: Theme3D.ThemePrimaryColors
- font.family: "Lucida Handwriting"
- font.pointSize: 40
- }
-
- //! [1]
- ValueAxis3D {
- id: dateAxis
- formatter: CustomFormatter {
- originDate: "2014-01-01"
- selectionFormat: "yyyy-MM-dd HH:mm:ss"
- }
- subSegmentCount: 2
- labelFormat: "yyyy-MM-dd"
- min: 0
- max: 14
- }
- //! [1]
-
- //! [2]
- ValueAxis3D {
- id: logAxis
- formatter: LogValueAxis3DFormatter {
- id: logAxisFormatter
- base: 10
- autoSubGrid: true
- showEdgeLabels: true
- }
- labelFormat: "%.2f"
- }
- //! [2]
-
- ValueAxis3D {
- id: linearAxis
- labelFormat: "%.2f"
- min: 0
- max: 500
- }
-
- //! [0]
- ValueAxis3D {
- id: valueAxis
- segmentCount: 5
- subSegmentCount: 2
- labelFormat: "%.2f"
- min: 0
- max: 10
- }
- //! [0]
-
- Item {
- id: dataView
- anchors.bottom: parent.bottom
- width: parent.width
- height: parent.height - buttonLayout.height
-
- Scatter3D {
- id: scatterGraph
- width: dataView.width
- height: dataView.height
- theme: themeIsabelle
- shadowQuality: AbstractGraph3D.ShadowQualitySoftLow
- scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricRight
- //! [3]
- axisZ: valueAxis
- axisY: logAxis
- axisX: dateAxis
- //! [3]
-
- Scatter3DSeries {
- id: scatterSeries
- itemLabelFormat: "@xLabel - (@yLabel, @zLabel)"
- meshSmooth: true
- ItemModelScatterDataProxy {
- itemModel: seriesData.model
- xPosRole: "xPos"
- yPosRole: "yPos"
- zPosRole: "zPos"
- }
- }
- }
- }
-
- RowLayout {
- id: buttonLayout
- Layout.minimumHeight: exitButton.height
- width: parent.width
- anchors.left: parent.left
- spacing: 0
-
- Button {
- id: yAxisBaseChange
- Layout.fillHeight: true
- Layout.fillWidth: true
- state: "enabled"
- onClicked: {
- if (logAxisFormatter.base === 10)
- logAxisFormatter.base = 0
- else if (logAxisFormatter.base === 2)
- logAxisFormatter.base = 10
- else
- logAxisFormatter.base = 2
- }
- states: [
- State {
- name: "enabled"
- PropertyChanges {
- target: yAxisBaseChange
- text: "Y-axis log base: " + logAxisFormatter.base
- enabled: true
- }
- },
- State {
- name: "disabled"
- PropertyChanges {
- target: yAxisBaseChange
- text: "Y-axis linear"
- enabled: false
- }
- }
- ]
- }
-
- Button {
- id: yAxisToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Toggle Y-axis"
- onClicked: {
- if (scatterGraph.axisY === linearAxis) {
- scatterGraph.axisY = logAxis
- yAxisBaseChange.state = "enabled"
- } else {
- scatterGraph.axisY = linearAxis
- yAxisBaseChange.state = "disabled"
- }
- }
- }
-
- Button {
- id: exitButton
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Quit"
- onClicked: Qt.quit();
- }
- }
-}
diff --git a/examples/datavisualization/qmlaxisformatter/qmlaxisformatter.pro b/examples/datavisualization/qmlaxisformatter/qmlaxisformatter.pro
deleted file mode 100644
index 0f3b2f80..00000000
--- a/examples/datavisualization/qmlaxisformatter/qmlaxisformatter.pro
+++ /dev/null
@@ -1,16 +0,0 @@
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-QT += datavisualization
-
-# The .cpp file which was generated for your project. Feel free to hack it.
-SOURCES += main.cpp \
- customformatter.cpp
-HEADERS += customformatter.h
-
-RESOURCES += qmlaxisformatter.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- qml/qmlaxisformatter/*
diff --git a/examples/datavisualization/qmlaxisformatter/qmlaxisformatter.qrc b/examples/datavisualization/qmlaxisformatter/qmlaxisformatter.qrc
deleted file mode 100644
index 27c30362..00000000
--- a/examples/datavisualization/qmlaxisformatter/qmlaxisformatter.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>qml/qmlaxisformatter/main.qml</file>
- <file>qml/qmlaxisformatter/Data.qml</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/qml3doscilloscope/CMakeLists.txt b/examples/datavisualization/qmlaxishandling/CMakeLists.txt
index 26ed3b19..41ce410c 100644
--- a/examples/datavisualization/qml3doscilloscope/CMakeLists.txt
+++ b/examples/datavisualization/qmlaxishandling/CMakeLists.txt
@@ -1,5 +1,8 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
cmake_minimum_required(VERSION 3.16)
-project(qml3doscilloscope LANGUAGES CXX)
+project(qmlaxishandling LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -19,15 +22,14 @@ find_package(Qt6 COMPONENTS Qml)
find_package(Qt6 COMPONENTS Quick)
find_package(Qt6 COMPONENTS DataVisualization)
-qt_add_executable(qml3doscilloscope
- datasource.cpp datasource.h
+qt_add_executable(qmlaxishandling
main.cpp
)
-set_target_properties(qml3doscilloscope PROPERTIES
+set_target_properties(qmlaxishandling PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
-target_link_libraries(qml3doscilloscope PUBLIC
+target_link_libraries(qmlaxishandling PUBLIC
Qt::Core
Qt::Gui
Qt::Qml
@@ -35,18 +37,23 @@ target_link_libraries(qml3doscilloscope PUBLIC
Qt::DataVisualization
)
-set(qml3doscilloscope_resource_files
- "qml/qml3doscilloscope/main.qml"
-)
-
-qt6_add_resources(qml3doscilloscope "qml3doscilloscope"
- PREFIX
- "/"
- FILES
- ${qml3doscilloscope_resource_files}
+qt6_add_qml_module(qmlaxishandling
+ URI AxisHandling
+ VERSION 1.0
+ NO_RESOURCE_TARGET_PATH
+ SOURCES
+ customformatter.cpp customformatter.h
+ QML_FILES
+ qml/qmlaxishandling/main.qml
+ qml/qmlaxishandling/Data.qml
+ qml/qmlaxishandling/AxisDragging.qml
+ qml/qmlaxishandling/AxisFormatting.qml
+ RESOURCES
+ qml/qmlaxishandling/cube.obj
+ qml/qmlaxishandling/cubetexture.png
)
-install(TARGETS qml3doscilloscope
+install(TARGETS qmlaxishandling
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
diff --git a/examples/datavisualization/qmlaxisformatter/customformatter.cpp b/examples/datavisualization/qmlaxishandling/customformatter.cpp
index 8fbf6eb5..b0473159 100644
--- a/examples/datavisualization/qmlaxisformatter/customformatter.cpp
+++ b/examples/datavisualization/qmlaxishandling/customformatter.cpp
@@ -1,38 +1,9 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "customformatter.h"
-#include <QtDataVisualization/QValue3DAxis>
-#include <QtQml/QQmlExtensionPlugin>
-#include <QtCore/QDebug>
-
-Q_DECLARE_METATYPE(QValue3DAxisFormatter *)
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtQml/qqmlextensionplugin.h>
static const qreal oneDayMs = 60.0 * 60.0 * 24.0 * 1000.0;
@@ -141,7 +112,7 @@ QString CustomFormatter::selectionFormat() const
return m_selectionFormat;
}
-void CustomFormatter::setOriginDate(const QDate &date)
+void CustomFormatter::setOriginDate(QDate date)
{
if (m_originDate != date) {
m_originDate = date;
diff --git a/examples/datavisualization/qmlaxishandling/customformatter.h b/examples/datavisualization/qmlaxishandling/customformatter.h
new file mode 100644
index 00000000..2c821b49
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/customformatter.h
@@ -0,0 +1,55 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef CUSTOMFORMATTER_H
+#define CUSTOMFORMATTER_H
+
+#include <QtDataVisualization/qvalue3daxisformatter.h>
+#include <QtCore/qdatetime.h>
+#include <QtQml/qqmlregistration.h>
+
+//! [2]
+class CustomFormatter : public QValue3DAxisFormatter
+{
+ //! [2]
+ Q_OBJECT
+ QML_ELEMENT
+
+ //! [1]
+ Q_PROPERTY(QDate originDate READ originDate WRITE setOriginDate NOTIFY originDateChanged)
+ //! [1]
+ //! [3]
+ Q_PROPERTY(QString selectionFormat READ selectionFormat WRITE setSelectionFormat NOTIFY selectionFormatChanged)
+ //! [3]
+public:
+ explicit CustomFormatter(QObject *parent = 0);
+ virtual ~CustomFormatter();
+
+ //! [0]
+ virtual QValue3DAxisFormatter *createNewInstance() const;
+ virtual void populateCopy(QValue3DAxisFormatter &copy) const;
+ virtual void recalculate();
+ virtual QString stringForValue(qreal value, const QString &format) const;
+ //! [0]
+
+ QDate originDate() const;
+ QString selectionFormat() const;
+
+public Q_SLOTS:
+ void setOriginDate(QDate date);
+ void setSelectionFormat(const QString &format);
+
+Q_SIGNALS:
+ void originDateChanged(QDate date);
+ void selectionFormatChanged(const QString &format);
+
+private:
+ Q_DISABLE_COPY(CustomFormatter)
+
+ QDateTime valueToDateTime(qreal value) const;
+
+ QDate m_originDate;
+ QString m_selectionFormat;
+};
+
+#endif
diff --git a/examples/datavisualization/qmlaxishandling/doc/images/qmlaxishandling-example.png b/examples/datavisualization/qmlaxishandling/doc/images/qmlaxishandling-example.png
new file mode 100644
index 00000000..21e9551b
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/doc/images/qmlaxishandling-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlaxishandling/doc/src/qmlaxishandling.qdoc b/examples/datavisualization/qmlaxishandling/doc/src/qmlaxishandling.qdoc
new file mode 100644
index 00000000..087630c6
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/doc/src/qmlaxishandling.qdoc
@@ -0,0 +1,188 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
+
+/*!
+ \example qmlaxishandling
+ \meta tags {DataVisualization, Scatter3D, Custom Input Handler, Dynamic Data, Custom Axis Formatter, Scatter Graph}
+ \title Axis Handling
+ \ingroup qtdatavisualization_qmlexamples
+ \brief Implementing axis dragging with a custom input handler in QML, and creating a custom axis formatter.
+ \since QtDataVisualization 6.5
+
+ \e {Axis Handling} demonstrates two different custom features with axes. The features have their
+ own tabs in the application.
+
+ The following sections concentrate on those features only and skip explaining the basic
+ functionality - for more detailed QML example documentation, see \l{Simple Scatter Graph}.
+
+ \image qmlaxishandling-example.png
+
+ \include examples-run.qdocinc
+
+ \section1 Axis Dragging
+
+ In the \uicontrol {Axis Dragging} tab, implement a custom input handler in QML that enables you
+ to drag axis labels to change axis ranges. Further, use orthographic projection and dynamically
+ update the properties of a custom item.
+
+ \section2 Overriding Default Input Handling
+
+ To deactivate the default input handling mechanism, set the active input handler of Scatter3D
+ graph to \c{null}:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 0
+ \dots
+
+ Then, add a MouseArea and set it to fill the parent, which is the same \c Item our
+ \c scatterGraph is contained in. Also, set it to accept only left mouse button presses,
+ as in this example the other buttons are not needed:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 1
+ \dots
+
+ Then, listen to mouse presses, and when caught, send a selection query to the graph:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 2
+
+ The \c{onPositionChanged} signal handler catches the current mouse position that will be
+ needed for move distance calculation:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 3
+ \dots
+
+ At the end of \c{onPositionChanged}, save the previous mouse position for move distance
+ calculation that will be introduced later:
+
+ \dots 0
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 4
+
+ \section2 Translating Mouse Movement to Axis Range Change
+
+ In \c {scatterGraph}, listen to \c {onSelectedElementChanged}. The signal
+ is emitted after the selection query has been made in the \c{onPressed} of the \c{inputArea}.
+ Set the element type into a property you defined (\c{property int selectedAxisLabel: -1}) in the
+ main component, since it is of a type you are interested in:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 5
+
+ Then, back in the \c onPositionChanged of \c{inputArea}, check if a mouse button is pressed
+ and if you have a current axis label selection. If the conditions are met, call the
+ function that does the conversion from mouse movement to axis range update:
+
+ \dots 0
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 6
+ \dots 0
+
+ The conversion is easy in this case, as the camera rotation is fixed. You can use some
+ precalculated values, calculate mouse move distance, and apply the values to the
+ selected axis range:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 7
+
+ For a more sophisticated conversion from mouse movement to axis range update, see
+ \l{Graph Gallery}.
+
+ \section2 Other Features
+
+ The example also demonstrates how to use orthographic projection and how to update properties
+ of a custom item on the fly.
+
+ Orthographic projection is very simple. You'll just need to change the \c orthoProjection
+ property of \c{scatterGraph}. The example has a button for toggling it on and off:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 8
+
+ For custom items, add one to the \c customItemList of \c{scatterGraph}:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 9
+
+ You implement a timer to add, remove, and rotate all the items in the graph, and use the same
+ timer for rotating the custom item:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml 10
+ \dots
+
+ \section1 Axis Formatters
+
+ In the \uicontrol {Axis Formatter} tab, create a custom axis formatter. It also illustrates how
+ to use predefined axis formatters.
+
+ \section2 Custom Axis Formatter
+
+ Customizing axis formatters requires subclassing the QValue3DAxisFormatter, which cannot be
+ done in QML code alone. In this example, the axis interprets the float values as
+ a timestamp and shows the date in the axis labels. To achieve this, introduce a new class
+ called \c CustomFormatter, which subclasses the QValue3DAxisFormatter:
+
+ \snippet qmlaxishandling/customformatter.h 2
+ \dots 0
+
+ Since float values of a QScatter3DSeries cannot be directly cast into QDateTime values due to
+ difference in data width, some sort of mapping between the two is needed. To do the mapping,
+ specify an origin date for the formatter and interpret the float values from the
+ QScatter3DSeries as date offsets to that origin value. The origin date is given as
+ a property:
+
+ \snippet qmlaxishandling/customformatter.h 1
+
+ For the mapping from value to QDateTime, use the \c valueToDateTime() method:
+
+ \snippet qmlaxishandling/customformatter.cpp 0
+
+ To function as an axis formatter, \c CustomFormatter needs to reimplement some virtual
+ methods:
+
+ \snippet qmlaxishandling/customformatter.h 0
+
+ The first two are simple, just create a new instance of \c CustomFormatter and copy the
+ necessary data over to it. Use these two methods to create and update a cache of formatter for
+ rendering purposes. Remember to call the superclass implementation of \c populateCopy():
+
+ \snippet qmlaxishandling/customformatter.cpp 1
+
+ \c CustomFormatter does the bulk of its work in the \c recalculate() method, where
+ our formatter calculates the grid, subgrid, and label positions, as well as formats the label
+ strings.
+ In the custom formatter, ignore the segment count of the axis and draw a grid line always at
+ midnight. Subsegment count and label positioning is handled normally:
+
+ \snippet qmlaxishandling/customformatter.cpp 2
+
+ The axis labels are formatted to show only the date. However, to increase the resolution of the
+ timestamp of the selection label, specify another property for the custom formatter to allow
+ the user to customize it:
+
+ \snippet qmlaxishandling/customformatter.h 3
+
+ This selection format property is used in the reimplemented \c stringToValue method, where
+ the submitted format is ignored and the custom selection format substituted for it:
+
+ \snippet qmlaxishandling/customformatter.cpp 3
+
+ To expose our new custom formatter to the QML, declare it and make it a QML module.
+ For information about how to do this, see \l{Surface Graph Gallery}.
+
+ \section2 QML
+
+ In the QML code, define a different axis for each dimension:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisFormatting.qml 3
+
+ The Z-axis is just a regular ValueAxis3D:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisFormatting.qml 0
+
+ For the Y-axis, define a logarithmic axis. To make ValueAxis3D show a logarithmic scale,
+ specify LogValueAxis3DFormatter for \c formatter property of the axis:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisFormatting.qml 2
+
+ And finally, for the X-axis use the new \c CustomFormatter:
+
+ \snippet qmlaxishandling/qml/qmlaxishandling/AxisFormatting.qml 1
+
+ The rest of the application consists of fairly self-explanatory logic for modifying the axes and
+ showing the graph.
+
+ \section1 Example Contents
+*/
diff --git a/examples/datavisualization/qmlaxishandling/main.cpp b/examples/datavisualization/qmlaxishandling/main.cpp
new file mode 100644
index 00000000..2a145633
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/main.cpp
@@ -0,0 +1,43 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include <QtGui/qguiapplication.h>
+#include <QtQuick/qquickview.h>
+#include <QtQml/qqmlengine.h>
+#include <QtQml>
+
+#ifdef QMAKE_BUILD
+#include "customformatter.h"
+Q_DECLARE_METATYPE(CustomFormatter *)
+#endif
+
+int main(int argc, char *argv[])
+{
+ qputenv("QSG_RHI_BACKEND", "opengl");
+ QGuiApplication app(argc, argv);
+
+#ifdef QMAKE_BUILD
+ qmlRegisterType<CustomFormatter>("AxisHandling", 1, 0, "CustomFormatter");
+#endif
+
+ QQuickView viewer;
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+ QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
+
+ viewer.setTitle(QStringLiteral("Axis Handling"));
+
+ viewer.setSource(QUrl("qrc:/qml/qmlaxishandling/main.qml"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml
new file mode 100644
index 00000000..81d2e0a1
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/AxisDragging.qml
@@ -0,0 +1,298 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtDataVisualization
+
+Item {
+ id: axisDragView
+
+ property int selectedAxisLabel: -1
+ property real dragSpeedModifier: 100.0
+ property int currentMouseX: -1
+ property int currentMouseY: -1
+ property int previousMouseX: -1
+ property int previousMouseY: -1
+
+ required property bool portraitMode
+
+ ListModel {
+ id: graphModel
+ ListElement{ xPos: 0.0; yPos: 0.0; zPos: 0.0; rotation: "@0,0,0,0" }
+ ListElement{ xPos: 1.0; yPos: 1.0; zPos: 1.0; rotation: "@45,1,1,1" }
+ }
+
+ Timer {
+ id: dataTimer
+ interval: 1
+ running: true
+ repeat: true
+ property bool isIncreasing: true
+ property real rotationAngle: 0
+
+ function generateQuaternion() {
+ return "@" + Math.random() * 360 + "," + Math.random() + ","
+ + Math.random() + "," + Math.random();
+ }
+
+ function appendRow() {
+ graphModel.append({"xPos": Math.random(),
+ "yPos": Math.random(),
+ "zPos": Math.random(),
+ "rotation": generateQuaternion()
+ });
+ }
+
+ //! [10]
+ onTriggered: {
+ rotationAngle = rotationAngle + 1;
+ qtCube.setRotationAxisAndAngle(Qt.vector3d(1, 0, 1), rotationAngle);
+ //! [10]
+ scatterSeries.setMeshAxisAndAngle(Qt.vector3d(1, 1, 1), rotationAngle);
+ if (isIncreasing) {
+ for (var i = 0; i < 10; i++)
+ appendRow();
+ if (graphModel.count > 2002) {
+ scatterGraph.theme = isabelleTheme;
+ isIncreasing = false;
+ }
+ } else {
+ graphModel.remove(2, 10);
+ if (graphModel.count === 2) {
+ scatterGraph.theme = dynamicColorTheme;
+ isIncreasing = true;
+ }
+ }
+ }
+ }
+
+ ThemeColor {
+ id: dynamicColor
+ ColorAnimation on color {
+ from: "red"
+ to: "yellow"
+ duration: 2000
+ loops: Animation.Infinite
+ }
+ }
+
+ Theme3D {
+ id: dynamicColorTheme
+ type: Theme3D.ThemeEbony
+ baseColors: [dynamicColor]
+ font.pointSize: 50
+ labelBorderEnabled: true
+ labelBackgroundColor: "gold"
+ labelTextColor: "black"
+ }
+
+ Theme3D {
+ id: isabelleTheme
+ type: Theme3D.ThemeIsabelle
+ font.pointSize: 50
+ labelBorderEnabled: true
+ labelBackgroundColor: "gold"
+ labelTextColor: "black"
+ }
+
+ //! [0]
+ Scatter3D {
+ id: scatterGraph
+ inputHandler: null
+ //! [0]
+ anchors.fill: parent
+ theme: dynamicColorTheme
+ shadowQuality: AbstractGraph3D.ShadowQualityMedium
+ scene.activeCamera.yRotation: 45.0
+ scene.activeCamera.xRotation: 45.0
+ scene.activeCamera.zoomLevel: 75.0
+
+ Scatter3DSeries {
+ id: scatterSeries
+ itemLabelFormat: "X:@xLabel Y:@yLabel Z:@zLabel"
+ mesh: Abstract3DSeries.MeshCube
+
+ ItemModelScatterDataProxy {
+ itemModel: graphModel
+ xPosRole: "xPos"
+ yPosRole: "yPos"
+ zPosRole: "zPos"
+ rotationRole: "rotation"
+ }
+ }
+ //! [9]
+ customItemList: [
+ Custom3DItem {
+ id: qtCube
+ meshFile: ":/qml/qmlaxishandling/cube.obj"
+ textureFile: ":/qml/qmlaxishandling/cubetexture.png"
+ position: Qt.vector3d(0.65, 0.35, 0.65)
+ scaling: Qt.vector3d(0.3, 0.3, 0.3)
+ }
+ ]
+ //! [9]
+ //! [5]
+ onSelectedElementChanged: {
+ if (selectedElement >= AbstractGraph3D.ElementAxisXLabel
+ && selectedElement <= AbstractGraph3D.ElementAxisZLabel) {
+ selectedAxisLabel = selectedElement;
+ } else {
+ selectedAxisLabel = -1;
+ }
+ }
+ //! [5]
+ }
+
+ //! [1]
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ acceptedButtons: Qt.LeftButton
+ //! [1]
+
+ //! [3]
+ onPositionChanged: (mouse)=> {
+ currentMouseX = mouse.x;
+ currentMouseY = mouse.y;
+ //! [3]
+ //! [6]
+ if (pressed && selectedAxisLabel != -1)
+ axisDragView.dragAxis();
+ //! [6]
+ //! [4]
+ previousMouseX = currentMouseX;
+ previousMouseY = currentMouseY;
+ }
+ //! [4]
+
+ //! [2]
+ onPressed: (mouse)=> {
+ scatterGraph.scene.selectionQueryPosition = Qt.point(mouse.x, mouse.y);
+ }
+ //! [2]
+
+ onReleased: {
+ // We need to clear mouse positions and selected axis, because touch devices cannot
+ // track position all the time
+ selectedAxisLabel = -1;
+ currentMouseX = -1;
+ currentMouseY = -1;
+ previousMouseX = -1;
+ previousMouseY = -1;
+ }
+ }
+
+ //! [7]
+ function dragAxis() {
+ // Do nothing if previous mouse position is uninitialized
+ if (previousMouseX === -1)
+ return;
+
+ // Directional drag multipliers based on rotation. Camera is locked to 45 degrees, so we
+ // can use one precalculated value instead of calculating xx, xy, zx and zy individually
+ var cameraMultiplier = 0.70710678;
+
+ // Calculate the mouse move amount
+ var moveX = currentMouseX - previousMouseX;
+ var moveY = currentMouseY - previousMouseY;
+
+ // Adjust axes
+ switch (selectedAxisLabel) {
+ case AbstractGraph3D.ElementAxisXLabel:
+ var distance = ((moveX - moveY) * cameraMultiplier) / dragSpeedModifier;
+ // Check if we need to change min or max first to avoid invalid ranges
+ if (distance > 0) {
+ scatterGraph.axisX.min -= distance;
+ scatterGraph.axisX.max -= distance;
+ } else {
+ scatterGraph.axisX.max -= distance;
+ scatterGraph.axisX.min -= distance;
+ }
+ break;
+ case AbstractGraph3D.ElementAxisYLabel:
+ distance = moveY / dragSpeedModifier;
+ // Check if we need to change min or max first to avoid invalid ranges
+ if (distance > 0) {
+ scatterGraph.axisY.max += distance;
+ scatterGraph.axisY.min += distance;
+ } else {
+ scatterGraph.axisY.min += distance;
+ scatterGraph.axisY.max += distance;
+ }
+ break;
+ case AbstractGraph3D.ElementAxisZLabel:
+ distance = ((moveX + moveY) * cameraMultiplier) / dragSpeedModifier;
+ // Check if we need to change min or max first to avoid invalid ranges
+ if (distance > 0) {
+ scatterGraph.axisZ.max += distance;
+ scatterGraph.axisZ.min += distance;
+ } else {
+ scatterGraph.axisZ.min += distance;
+ scatterGraph.axisZ.max += distance;
+ }
+ break;
+ }
+ }
+ //! [7]
+
+ Button {
+ id: rangeToggle
+ // We're adding 3 buttons and want to divide them equally, if not in portrait mode
+ width: axisDragView.portraitMode ? parent.width : parent.width / 3
+ text: "Use Preset Range"
+ anchors.left: parent.left
+ anchors.top: parent.top
+ property bool autoRange: true
+ onClicked: {
+ if (autoRange) {
+ text = "Use Automatic Range";
+ scatterGraph.axisX.min = 0.3;
+ scatterGraph.axisX.max = 0.7;
+ scatterGraph.axisY.min = 0.3;
+ scatterGraph.axisY.max = 0.7;
+ scatterGraph.axisZ.min = 0.3;
+ scatterGraph.axisZ.max = 0.7;
+ autoRange = false;
+ dragSpeedModifier = 200.0;
+ } else {
+ text = "Use Preset Range";
+ autoRange = true;
+ dragSpeedModifier = 100.0;
+ }
+ scatterGraph.axisX.autoAdjustRange = autoRange;
+ scatterGraph.axisY.autoAdjustRange = autoRange;
+ scatterGraph.axisZ.autoAdjustRange = autoRange;
+ }
+ }
+
+ //! [8]
+ Button {
+ id: orthoToggle
+ width: axisDragView.portraitMode ? parent.width : parent.width / 3
+ text: "Display Orthographic"
+ anchors.left: axisDragView.portraitMode ? parent.left : rangeToggle.right
+ anchors.top: axisDragView.portraitMode ? rangeToggle.bottom : parent.top
+ onClicked: {
+ if (scatterGraph.orthoProjection) {
+ text = "Display Orthographic";
+ scatterGraph.orthoProjection = false;
+ // Orthographic projection disables shadows, so we need to switch them back on
+ scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityMedium
+ } else {
+ text = "Display Perspective";
+ scatterGraph.orthoProjection = true;
+ }
+ }
+ }
+ //! [8]
+
+ Button {
+ id: exitButton
+ width: axisDragView.portraitMode ? parent.width : parent.width / 3
+ text: "Quit"
+ anchors.left: axisDragView.portraitMode ? parent.left : orthoToggle.right
+ anchors.top: axisDragView.portraitMode ? orthoToggle.bottom : parent.top
+ onClicked: Qt.quit();
+ }
+}
diff --git a/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/AxisFormatting.qml b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/AxisFormatting.qml
new file mode 100644
index 00000000..5ceae315
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/AxisFormatting.qml
@@ -0,0 +1,156 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtDataVisualization
+import AxisHandling
+
+Item {
+ id: axisFormattingView
+
+ required property bool portraitMode
+
+ Data {
+ id: seriesData
+ }
+
+ Theme3D {
+ id: themePrimaryColors
+ type: Theme3D.ThemePrimaryColors
+ font.family: "Lucida Handwriting"
+ font.pointSize: 40
+ }
+
+ //! [1]
+ ValueAxis3D {
+ id: dateAxis
+ formatter: CustomFormatter {
+ originDate: "2023-01-01"
+ selectionFormat: "yyyy-MM-dd HH:mm:ss"
+ }
+ subSegmentCount: 2
+ labelFormat: "yyyy-MM-dd"
+ min: 0
+ max: 14
+ }
+ //! [1]
+
+ //! [2]
+ ValueAxis3D {
+ id: logAxis
+ formatter: LogValueAxis3DFormatter {
+ id: logAxisFormatter
+ base: 10
+ autoSubGrid: true
+ showEdgeLabels: true
+ }
+ labelFormat: "%.2f"
+ }
+ //! [2]
+
+ ValueAxis3D {
+ id: linearAxis
+ labelFormat: "%.2f"
+ min: 0
+ max: 500
+ }
+
+ //! [0]
+ ValueAxis3D {
+ id: valueAxis
+ segmentCount: 5
+ subSegmentCount: 2
+ labelFormat: "%.2f"
+ min: 0
+ max: 10
+ }
+ //! [0]
+
+ Scatter3D {
+ id: scatterGraph
+ anchors.top: exitButton.bottom
+ anchors.bottom: parent.bottom
+ width: parent.width
+ theme: themePrimaryColors
+ shadowQuality: AbstractGraph3D.ShadowQualitySoftMedium
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricRight
+ //! [3]
+ axisZ: valueAxis
+ axisY: logAxis
+ axisX: dateAxis
+ //! [3]
+
+ Scatter3DSeries {
+ id: scatterSeries
+ itemLabelFormat: "@xLabel - (@yLabel, @zLabel)"
+ meshSmooth: true
+ ItemModelScatterDataProxy {
+ itemModel: seriesData.model
+ xPosRole: "xPos"
+ yPosRole: "yPos"
+ zPosRole: "zPos"
+ }
+ }
+ }
+
+ Button {
+ id: yAxisBaseChange
+ width: axisFormattingView.portraitMode ? parent.width : parent.width / 3
+ anchors.left: parent.left
+ anchors.top: parent.top
+ state: "enabled"
+ onClicked: {
+ if (logAxisFormatter.base === 10)
+ logAxisFormatter.base = 0;
+ else if (logAxisFormatter.base === 2)
+ logAxisFormatter.base = 10;
+ else
+ logAxisFormatter.base = 2;
+ }
+ states: [
+ State {
+ name: "enabled"
+ PropertyChanges {
+ target: yAxisBaseChange
+ text: "Y-axis log base: " + logAxisFormatter.base
+ enabled: true
+ }
+ },
+ State {
+ name: "disabled"
+ PropertyChanges {
+ target: yAxisBaseChange
+ text: "Y-axis linear"
+ enabled: false
+ }
+ }
+ ]
+ }
+
+ Button {
+ id: yAxisToggle
+ width: axisFormattingView.portraitMode ? parent.width : parent.width / 3
+ anchors.left: axisFormattingView.portraitMode ? parent.left : yAxisBaseChange.right
+ anchors.top: axisFormattingView.portraitMode ? yAxisBaseChange.bottom : parent.top
+ text: "Toggle Y-axis"
+ onClicked: {
+ if (scatterGraph.axisY == linearAxis) {
+ scatterGraph.axisY = logAxis;
+ yAxisBaseChange.state = "enabled";
+ } else {
+ scatterGraph.axisY = linearAxis;
+ yAxisBaseChange.state = "disabled";
+ }
+ }
+ }
+
+ Button {
+ id: exitButton
+ width: axisFormattingView.portraitMode ? parent.width : parent.width / 3
+ anchors.left: axisFormattingView.portraitMode ? parent.left : yAxisToggle.right
+ anchors.top: axisFormattingView.portraitMode ? yAxisToggle.bottom : parent.top
+ text: "Quit"
+ onClicked: Qt.quit();
+ }
+}
diff --git a/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/Data.qml b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/Data.qml
index ce2a8176..b74337fd 100644
--- a/examples/datavisualization/qmlaxisformatter/qml/qmlaxisformatter/Data.qml
+++ b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/Data.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
diff --git a/examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/cube.obj b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/cube.obj
index 0197618f..0197618f 100644
--- a/examples/datavisualization/qmlaxisdrag/qml/qmlaxisdrag/cube.obj
+++ b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/cube.obj
diff --git a/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/cubetexture.png b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/cubetexture.png
new file mode 100644
index 00000000..6369363f
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/cubetexture.png
Binary files differ
diff --git a/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/main.qml b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/main.qml
new file mode 100644
index 00000000..d4d830a4
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/qml/qmlaxishandling/main.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ id: mainView
+ width: 1280
+ height: 1024
+ visible: true
+
+ property bool portraitMode: width < height
+
+ TabBar {
+ id: tabBar
+ width: parent.width
+
+ TabButton {
+ text: "Axis Dragging"
+ }
+
+ TabButton {
+ text: "Axis Formatting"
+ }
+ }
+
+ StackLayout {
+ anchors.top: tabBar.bottom
+ anchors.bottom: parent.bottom
+ width: parent.width
+ currentIndex: tabBar.currentIndex
+
+ AxisDragging {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ portraitMode: mainView.portraitMode
+ }
+
+ AxisFormatting {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ portraitMode: mainView.portraitMode
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlaxishandling/qmlaxishandling.pro b/examples/datavisualization/qmlaxishandling/qmlaxishandling.pro
new file mode 100644
index 00000000..36b0deee
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/qmlaxishandling.pro
@@ -0,0 +1,16 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+DEFINES += QMAKE_BUILD
+
+SOURCES += main.cpp \
+ customformatter.cpp
+
+HEADERS += customformatter.h
+
+RESOURCES += qmlaxishandling.qrc
+
+OTHER_FILES += doc/src/* \
+ doc/images/* \
+ qml/qmlaxishandling/*
diff --git a/examples/datavisualization/qmlaxishandling/qmlaxishandling.qrc b/examples/datavisualization/qmlaxishandling/qmlaxishandling.qrc
new file mode 100644
index 00000000..136734f5
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/qmlaxishandling.qrc
@@ -0,0 +1,12 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmlaxishandling/AxisDragging.qml</file>
+ <file>qml/qmlaxishandling/AxisFormatting.qml</file>
+ <file>qml/qmlaxishandling/cube.obj</file>
+ <file>qml/qmlaxishandling/cubetexture.png</file>
+ <file>qml/qmlaxishandling/Data.qml</file>
+ <file>qml/qmlaxishandling/main.qml</file>
+ </qresource>
+ <qresource prefix="/mesh"/>
+ <qresource prefix="/texture"/>
+</RCC>
diff --git a/examples/datavisualization/qmlaxishandling/qmldir b/examples/datavisualization/qmlaxishandling/qmldir
new file mode 100644
index 00000000..f6da01e7
--- /dev/null
+++ b/examples/datavisualization/qmlaxishandling/qmldir
@@ -0,0 +1,2 @@
+module AxisHandling
+plugin customformatterplugin
diff --git a/examples/datavisualization/qmlbars/CMakeLists.txt b/examples/datavisualization/qmlbars/CMakeLists.txt
index 6792b858..2f627b49 100644
--- a/examples/datavisualization/qmlbars/CMakeLists.txt
+++ b/examples/datavisualization/qmlbars/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
cmake_minimum_required(VERSION 3.16)
project(qmlbars LANGUAGES CXX)
@@ -27,7 +30,7 @@ set_target_properties(qmlbars PROPERTIES
MACOSX_BUNDLE TRUE
)
target_compile_definitions(qmlbars PUBLIC
- QT_DISABLE_DEPRECATED_BEFORE=0x050F00
+ QT_DISABLE_DEPRECATED_UP_TO=0x050F00
)
target_link_libraries(qmlbars PUBLIC
@@ -38,17 +41,14 @@ target_link_libraries(qmlbars PUBLIC
Qt::DataVisualization
)
-set(qmlbars_resource_files
- "qml/qmlbars/Axes.qml"
- "qml/qmlbars/Data.qml"
- "qml/qmlbars/main.qml"
-)
-
-qt6_add_resources(qmlbars "qmlbars"
- PREFIX
- "/"
- FILES
- ${qmlbars_resource_files}
+qt6_add_qml_module(qmlbars
+ URI Bars
+ VERSION 1.0
+ NO_RESOURCE_TARGET_PATH
+ QML_FILES
+ qml/qmlbars/Axes.qml
+ qml/qmlbars/Data.qml
+ qml/qmlbars/main.qml
)
install(TARGETS qmlbars
diff --git a/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png b/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png
index 4230e4d9..803ff62e 100644
--- a/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png
+++ b/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc b/examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc
index 60815d48..2b0a1c4b 100644
--- a/examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc
+++ b/examples/datavisualization/qmlbars/doc/src/qmlbars.qdoc
@@ -1,136 +1,110 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\example qmlbars
- \title Qt Quick 2 Bars Example
- \ingroup qtdatavisualization_examples
+ \meta tags {DataVisualization, Barsr3D, Multiple Series}
+ \title Simple Bar Graph
+ \ingroup qtdatavisualization_qmlexamples
\brief Using Bars3D in a QML application.
- The Qt Quick 2 bars example shows how to make a simple 3D bar graph using Bars3D and Qt
- Quick 2.
+ \e {Simple Bar Graph} shows how to make a simple 3D bar graph using Bars3D and QML.
\image qmlbars-example.png
- The interesting thing about this example is switching series and displaying more than one series
- at once. We'll concentrate on those and skip explaining the basic Bars3D functionality - for
- more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
+ The following sections describe how to switch series and display more than one series
+ at a time. For more information about basic QML application functionality, see
+ \l{Simple Scatter Graph}.
\include examples-run.qdocinc
\section1 Data
- The example data is monthly income and expenses of a fictional company over several years.
+ The example data set is the monthly income and expenses of a fictional company over several years.
The data is defined in a list model in \c Data.qml like this:
\snippet qmlbars/qml/qmlbars/Data.qml 0
\dots
Each data item has three roles: timestamp, income, and expenses. The timestamp value is in
- format: \c{<four digit year>-<two digit month>}. Years and months are natural to map to rows and
- columns of a bar chart, but we can only show either income or expenses as the value.
+ format: \c{<four digit year>-<two digit month>}. Usually, you would map years and months to rows
+ and columns of a bar chart, but you can only show either income or expenses as the value.
- Now we need to add the data to the Bars3D graph. We will create two Bar3DSeries inside it,
- starting with a series for the income:
+ Now, add the data to the Bars3D graph. Create two Bar3DSeries inside it, starting with a series
+ for the income:
\snippet qmlbars/qml/qmlbars/main.qml 3
\dots
The data is attached to the \c itemModel property of the ItemModelBarDataProxy inside the
- series. For \c valueRole we simply specify the \c income field, as it contains the value we
- want, but getting the years and months is a bit more complicated, since they are both found
- in the same field. To extract those values, we specify the \c timestamp field for both
+ series. For \c{valueRole}, specify the \c income field, as it contains the value you
+ want. Getting the years and months is a bit more complicated, since they are both found
+ in the same field. To extract those values, specify the \c timestamp field for both
\c rowRole and \c columnRole, and additionally specify a search pattern and a replace rule
for those roles to extract the correct portion of the field contents for each role.
The search pattern is a normal JavaScript regular expression and the replace rule specifies
what the field content that matches the regular expression is replaced with.
- In this case we want to replace the entire field content with just the year or the month,
+ In this case, replace the entire field content with just the year or the month,
which is the first captured substring for both rows and columns.
- For more information how the replace using regular expressions works, see
+ For more information about the replace functionality with regular expression, see
QString::replace(const QRegExp &rx, const QString &after) function documentation.
The \c multiMatchBehavior property specifies what to do in case multiple item model items match
- the same row/column combination. In this case we want to add their values together.
- This property has no effect when we are showing values for each month, as there are no
- duplicate months in our item model, but it becomes relevant later when we want to show
+ the same row/column combination. In this case, add their values together.
+ This property has no effect when showing values for each month, as there are no
+ duplicate months in our item model, but it becomes relevant later when you want to show
the yearly totals.
- Then we add another series for the expenses:
+ Then, add another series for the expenses:
\snippet qmlbars/qml/qmlbars/main.qml 4
\dots
- The model contains expenses as negative values, but we want to show them as positive bars, so
- that we can easily compare them to income bars. We use \c valueRolePattern to remove the minus
+ The model contains expenses as negative values, but you want to show them as positive bars, so
+ that they can be easily compared to income bars. Use the \c valueRolePattern to remove the minus
sign to achieve this. No replacement string needs to be specified as the default replacement
is an empty string.
- We use the \c visible property of the series to hide the second series for now.
+ Use the \c visible property of the series to hide the second series for now.
\section1 Custom Axis Labels
- One interesting tidbit about axes is that we redefine the category labels for column axis in
- \c Axes.qml. This is done because the data contains numbers for months, which we don't want
- to use for our column labels:
+ \c Axes.qml redefines the category labels for the column axis because the data contains numbers
+ for months, which would clutter the labels:
\snippet qmlbars/qml/qmlbars/Axes.qml 0
- We also set automatic axis label rotation to make axis labels more readable at low camera
- angles.
+ To make axis labels more readable at low camera angles, set automatic axis label rotation.
\section1 Switching Series
- In the \c main.qml, we set up the graph and various UI elements. There are three interesting
- code blocks we want to highlight here. The first one shows how to change the
- visualized data between income, expenses, and both, by simply changing visibility of the two
- series:
+ In \c main.qml, set up the graph and various UI elements. There are three interesting
+ code blocks to highlight here. The first one shows how to change the visualized data between
+ income, expenses, and both, by simply changing the visibility of the two series:
\snippet qmlbars/qml/qmlbars/main.qml 0
The axis label format and item selection label formats are tweaked to get the negative sign
showing properly for expenses, which were actually resolved as positive values.
- The second interesting block is where we change the visualized data by adjusting the proxy
- propertes:
+ The second interesting block is where the visualized data is changed by adjusting the proxy
+ properties:
\snippet qmlbars/qml/qmlbars/main.qml 1
- To show yearly totals, we need to combine the twelve months of each year into a single bar.
- We achieve this by specifying a \c columnRolePattern that matches all model items. That way
- the data proxy will only have a single column. The cumulative \c multiMatchBehavior we
+ To show the yearly totals, combine the twelve months of each year into a single bar.
+ This is achieved by specifying a \c columnRolePattern that matches all model items. That way,
+ the data proxy will only have a single column. The cumulative \c multiMatchBehavior
specified earlier for the proxy becomes relevant now, causing the values of all twelve months
of each year to be added up into a single bar.
- To show just a subset of years, we set \c autoRowCategories to false on the
- ItemModelBarDataProxy item and define the row categories explicitly. This way, only the items
- in specified row categories are visualized.
+ To show just a subset of years, set \c autoRowCategories to false on the ItemModelBarDataProxy
+ item and define the row categories explicitly. This way, only the items in the specified row
+ categories are visualized.
- The third interesting block shows how to get the row and column index of an item if you know the
- row and column values by using ItemModelBarDataProxy methods \c rowCategoryIndex() and \c columnCategoryIndex():
+ The third interesting block shows how to get the row and column index of an item if you know
+ the row and column values by using ItemModelBarDataProxy methods \c rowCategoryIndex()
+ and \c columnCategoryIndex():
\snippet qmlbars/qml/qmlbars/main.qml 2
*/
diff --git a/examples/datavisualization/qmlbars/main.cpp b/examples/datavisualization/qmlbars/main.cpp
index 7013b312..1c479ba2 100644
--- a/examples/datavisualization/qmlbars/main.cpp
+++ b/examples/datavisualization/qmlbars/main.cpp
@@ -1,36 +1,9 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlEngine>
+#include <QtGui/qguiapplication.h>
+#include <QtQuick/qquickview.h>
+#include <QtQml/qqmlengine.h>
int main(int argc, char *argv[])
{
@@ -47,12 +20,13 @@ int main(int argc, char *argv[])
QString extraImportPath(QStringLiteral("%1/../../../%2"));
#endif
viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
+ QString::fromLatin1("qml")));
- viewer.setTitle(QStringLiteral("Monthly income/expenses"));
+ viewer.setTitle(QStringLiteral("Monthly income / expenses"));
viewer.setSource(QUrl("qrc:/qml/qmlbars/main.qml"));
viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.setColor("black");
viewer.show();
return app.exec();
diff --git a/examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml b/examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml
index 9d242510..042294ad 100644
--- a/examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml
+++ b/examples/datavisualization/qmlbars/qml/qmlbars/Axes.qml
@@ -1,34 +1,8 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
-import QtDataVisualization 1.2
+import QtDataVisualization
Item {
property alias column: columnAxis
diff --git a/examples/datavisualization/qmlbars/qml/qmlbars/Data.qml b/examples/datavisualization/qmlbars/qml/qmlbars/Data.qml
index 78d2c002..4121f26b 100644
--- a/examples/datavisualization/qmlbars/qml/qmlbars/Data.qml
+++ b/examples/datavisualization/qmlbars/qml/qmlbars/Data.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQml.Models
@@ -34,111 +8,111 @@ Item {
property alias model: dataModel
property var modelAsJsArray: {
- var arr = []
+ var arr = [];
for (var i = 0; i < dataModel.count; i++) {
- var row = dataModel.get(i)
+ var row = dataModel.get(i);
arr.push({
timestamp: row.timestamp,
expenses: row.expenses,
income: row.income
- })
+ });
}
- return arr
+ return arr;
}
//! [0]
ListModel {
id: dataModel
- ListElement{ timestamp: "2006-01"; expenses: "-4"; income: "5" }
- ListElement{ timestamp: "2006-02"; expenses: "-5"; income: "6" }
- ListElement{ timestamp: "2006-03"; expenses: "-7"; income: "4" }
+ ListElement{ timestamp: "2016-01"; expenses: "-4"; income: "5" }
+ ListElement{ timestamp: "2016-02"; expenses: "-5"; income: "6" }
+ ListElement{ timestamp: "2016-03"; expenses: "-7"; income: "4" }
//! [0]
- ListElement{ timestamp: "2006-04"; expenses: "-3"; income: "2" }
- ListElement{ timestamp: "2006-05"; expenses: "-4"; income: "1" }
- ListElement{ timestamp: "2006-06"; expenses: "-2"; income: "2" }
- ListElement{ timestamp: "2006-07"; expenses: "-1"; income: "3" }
- ListElement{ timestamp: "2006-08"; expenses: "-5"; income: "1" }
- ListElement{ timestamp: "2006-09"; expenses: "-2"; income: "3" }
- ListElement{ timestamp: "2006-10"; expenses: "-5"; income: "2" }
- ListElement{ timestamp: "2006-11"; expenses: "-8"; income: "5" }
- ListElement{ timestamp: "2006-12"; expenses: "-3"; income: "3" }
+ ListElement{ timestamp: "2016-04"; expenses: "-3"; income: "2" }
+ ListElement{ timestamp: "2016-05"; expenses: "-4"; income: "1" }
+ ListElement{ timestamp: "2016-06"; expenses: "-2"; income: "2" }
+ ListElement{ timestamp: "2016-07"; expenses: "-1"; income: "3" }
+ ListElement{ timestamp: "2016-08"; expenses: "-5"; income: "1" }
+ ListElement{ timestamp: "2016-09"; expenses: "-2"; income: "3" }
+ ListElement{ timestamp: "2016-10"; expenses: "-5"; income: "2" }
+ ListElement{ timestamp: "2016-11"; expenses: "-8"; income: "5" }
+ ListElement{ timestamp: "2016-12"; expenses: "-3"; income: "3" }
- ListElement{ timestamp: "2007-01"; expenses: "-3"; income: "1" }
- ListElement{ timestamp: "2007-02"; expenses: "-4"; income: "2" }
- ListElement{ timestamp: "2007-03"; expenses: "-12"; income: "4" }
- ListElement{ timestamp: "2007-04"; expenses: "-13"; income: "6" }
- ListElement{ timestamp: "2007-05"; expenses: "-14"; income: "11" }
- ListElement{ timestamp: "2007-06"; expenses: "-7"; income: "7" }
- ListElement{ timestamp: "2007-07"; expenses: "-6"; income: "4" }
- ListElement{ timestamp: "2007-08"; expenses: "-4"; income: "15" }
- ListElement{ timestamp: "2007-09"; expenses: "-2"; income: "18" }
- ListElement{ timestamp: "2007-10"; expenses: "-29"; income: "25" }
- ListElement{ timestamp: "2007-11"; expenses: "-23"; income: "29" }
- ListElement{ timestamp: "2007-12"; expenses: "-5"; income: "9" }
+ ListElement{ timestamp: "2017-01"; expenses: "-3"; income: "1" }
+ ListElement{ timestamp: "2017-02"; expenses: "-4"; income: "2" }
+ ListElement{ timestamp: "2017-03"; expenses: "-12"; income: "4" }
+ ListElement{ timestamp: "2017-04"; expenses: "-13"; income: "6" }
+ ListElement{ timestamp: "2017-05"; expenses: "-14"; income: "11" }
+ ListElement{ timestamp: "2017-06"; expenses: "-7"; income: "7" }
+ ListElement{ timestamp: "2017-07"; expenses: "-6"; income: "4" }
+ ListElement{ timestamp: "2017-08"; expenses: "-4"; income: "15" }
+ ListElement{ timestamp: "2017-09"; expenses: "-2"; income: "18" }
+ ListElement{ timestamp: "2017-10"; expenses: "-29"; income: "25" }
+ ListElement{ timestamp: "2017-11"; expenses: "-23"; income: "29" }
+ ListElement{ timestamp: "2017-12"; expenses: "-5"; income: "9" }
- ListElement{ timestamp: "2008-01"; expenses: "-3"; income: "8" }
- ListElement{ timestamp: "2008-02"; expenses: "-8"; income: "14" }
- ListElement{ timestamp: "2008-03"; expenses: "-10"; income: "20" }
- ListElement{ timestamp: "2008-04"; expenses: "-12"; income: "24" }
- ListElement{ timestamp: "2008-05"; expenses: "-10"; income: "19" }
- ListElement{ timestamp: "2008-06"; expenses: "-5"; income: "8" }
- ListElement{ timestamp: "2008-07"; expenses: "-1"; income: "4" }
- ListElement{ timestamp: "2008-08"; expenses: "-7"; income: "12" }
- ListElement{ timestamp: "2008-09"; expenses: "-4"; income: "16" }
- ListElement{ timestamp: "2008-10"; expenses: "-22"; income: "33" }
- ListElement{ timestamp: "2008-11"; expenses: "-16"; income: "25" }
- ListElement{ timestamp: "2008-12"; expenses: "-2"; income: "7" }
+ ListElement{ timestamp: "2018-01"; expenses: "-3"; income: "8" }
+ ListElement{ timestamp: "2018-02"; expenses: "-8"; income: "14" }
+ ListElement{ timestamp: "2018-03"; expenses: "-10"; income: "20" }
+ ListElement{ timestamp: "2018-04"; expenses: "-12"; income: "24" }
+ ListElement{ timestamp: "2018-05"; expenses: "-10"; income: "19" }
+ ListElement{ timestamp: "2018-06"; expenses: "-5"; income: "8" }
+ ListElement{ timestamp: "2018-07"; expenses: "-1"; income: "4" }
+ ListElement{ timestamp: "2018-08"; expenses: "-7"; income: "12" }
+ ListElement{ timestamp: "2018-09"; expenses: "-4"; income: "16" }
+ ListElement{ timestamp: "2018-10"; expenses: "-22"; income: "33" }
+ ListElement{ timestamp: "2018-11"; expenses: "-16"; income: "25" }
+ ListElement{ timestamp: "2018-12"; expenses: "-2"; income: "7" }
- ListElement{ timestamp: "2009-01"; expenses: "-4"; income: "5" }
- ListElement{ timestamp: "2009-02"; expenses: "-4"; income: "7" }
- ListElement{ timestamp: "2009-03"; expenses: "-11"; income: "14" }
- ListElement{ timestamp: "2009-04"; expenses: "-16"; income: "22" }
- ListElement{ timestamp: "2009-05"; expenses: "-3"; income: "5" }
- ListElement{ timestamp: "2009-06"; expenses: "-4"; income: "8" }
- ListElement{ timestamp: "2009-07"; expenses: "-7"; income: "9" }
- ListElement{ timestamp: "2009-08"; expenses: "-9"; income: "13" }
- ListElement{ timestamp: "2009-09"; expenses: "-1"; income: "6" }
- ListElement{ timestamp: "2009-10"; expenses: "-14"; income: "25" }
- ListElement{ timestamp: "2009-11"; expenses: "-19"; income: "29" }
- ListElement{ timestamp: "2009-12"; expenses: "-5"; income: "7" }
+ ListElement{ timestamp: "2019-01"; expenses: "-4"; income: "5" }
+ ListElement{ timestamp: "2019-02"; expenses: "-4"; income: "7" }
+ ListElement{ timestamp: "2019-03"; expenses: "-11"; income: "14" }
+ ListElement{ timestamp: "2019-04"; expenses: "-16"; income: "22" }
+ ListElement{ timestamp: "2019-05"; expenses: "-3"; income: "5" }
+ ListElement{ timestamp: "2019-06"; expenses: "-4"; income: "8" }
+ ListElement{ timestamp: "2019-07"; expenses: "-7"; income: "9" }
+ ListElement{ timestamp: "2019-08"; expenses: "-9"; income: "13" }
+ ListElement{ timestamp: "2019-09"; expenses: "-1"; income: "6" }
+ ListElement{ timestamp: "2019-10"; expenses: "-14"; income: "25" }
+ ListElement{ timestamp: "2019-11"; expenses: "-19"; income: "29" }
+ ListElement{ timestamp: "2019-12"; expenses: "-5"; income: "7" }
- ListElement{ timestamp: "2010-01"; expenses: "-14"; income: "22" }
- ListElement{ timestamp: "2010-02"; expenses: "-5"; income: "7" }
- ListElement{ timestamp: "2010-03"; expenses: "-1"; income: "9" }
- ListElement{ timestamp: "2010-04"; expenses: "-1"; income: "12" }
- ListElement{ timestamp: "2010-05"; expenses: "-5"; income: "9" }
- ListElement{ timestamp: "2010-06"; expenses: "-5"; income: "8" }
- ListElement{ timestamp: "2010-07"; expenses: "-3"; income: "7" }
- ListElement{ timestamp: "2010-08"; expenses: "-1"; income: "5" }
- ListElement{ timestamp: "2010-09"; expenses: "-2"; income: "4" }
- ListElement{ timestamp: "2010-10"; expenses: "-10"; income: "13" }
- ListElement{ timestamp: "2010-11"; expenses: "-12"; income: "17" }
- ListElement{ timestamp: "2010-12"; expenses: "-6"; income: "9" }
+ ListElement{ timestamp: "2020-01"; expenses: "-14"; income: "22" }
+ ListElement{ timestamp: "2020-02"; expenses: "-5"; income: "7" }
+ ListElement{ timestamp: "2020-03"; expenses: "-1"; income: "9" }
+ ListElement{ timestamp: "2020-04"; expenses: "-1"; income: "12" }
+ ListElement{ timestamp: "2020-05"; expenses: "-5"; income: "9" }
+ ListElement{ timestamp: "2020-06"; expenses: "-5"; income: "8" }
+ ListElement{ timestamp: "2020-07"; expenses: "-3"; income: "7" }
+ ListElement{ timestamp: "2020-08"; expenses: "-1"; income: "5" }
+ ListElement{ timestamp: "2020-09"; expenses: "-2"; income: "4" }
+ ListElement{ timestamp: "2020-10"; expenses: "-10"; income: "13" }
+ ListElement{ timestamp: "2020-11"; expenses: "-12"; income: "17" }
+ ListElement{ timestamp: "2020-12"; expenses: "-6"; income: "9" }
- ListElement{ timestamp: "2011-01"; expenses: "-2"; income: "6" }
- ListElement{ timestamp: "2011-02"; expenses: "-4"; income: "8" }
- ListElement{ timestamp: "2011-03"; expenses: "-7"; income: "12" }
- ListElement{ timestamp: "2011-04"; expenses: "-9"; income: "15" }
- ListElement{ timestamp: "2011-05"; expenses: "-7"; income: "19" }
- ListElement{ timestamp: "2011-06"; expenses: "-9"; income: "18" }
- ListElement{ timestamp: "2011-07"; expenses: "-13"; income: "17" }
- ListElement{ timestamp: "2011-08"; expenses: "-5"; income: "9" }
- ListElement{ timestamp: "2011-09"; expenses: "-3"; income: "8" }
- ListElement{ timestamp: "2011-10"; expenses: "-13"; income: "15" }
- ListElement{ timestamp: "2011-11"; expenses: "-8"; income: "17" }
- ListElement{ timestamp: "2011-12"; expenses: "-7"; income: "10" }
+ ListElement{ timestamp: "2021-01"; expenses: "-2"; income: "6" }
+ ListElement{ timestamp: "2021-02"; expenses: "-4"; income: "8" }
+ ListElement{ timestamp: "2021-03"; expenses: "-7"; income: "12" }
+ ListElement{ timestamp: "2021-04"; expenses: "-9"; income: "15" }
+ ListElement{ timestamp: "2021-05"; expenses: "-7"; income: "19" }
+ ListElement{ timestamp: "2021-06"; expenses: "-9"; income: "18" }
+ ListElement{ timestamp: "2021-07"; expenses: "-13"; income: "17" }
+ ListElement{ timestamp: "2021-08"; expenses: "-5"; income: "9" }
+ ListElement{ timestamp: "2021-09"; expenses: "-3"; income: "8" }
+ ListElement{ timestamp: "2021-10"; expenses: "-13"; income: "15" }
+ ListElement{ timestamp: "2021-11"; expenses: "-8"; income: "17" }
+ ListElement{ timestamp: "2021-12"; expenses: "-7"; income: "10" }
- ListElement{ timestamp: "2012-01"; expenses: "-12"; income: "16" }
- ListElement{ timestamp: "2012-02"; expenses: "-24"; income: "28" }
- ListElement{ timestamp: "2012-03"; expenses: "-27"; income: "22" }
- ListElement{ timestamp: "2012-04"; expenses: "-29"; income: "25" }
- ListElement{ timestamp: "2012-05"; expenses: "-27"; income: "29" }
- ListElement{ timestamp: "2012-06"; expenses: "-19"; income: "18" }
- ListElement{ timestamp: "2012-07"; expenses: "-13"; income: "17" }
- ListElement{ timestamp: "2012-08"; expenses: "-15"; income: "19" }
- ListElement{ timestamp: "2012-09"; expenses: "-3"; income: "8" }
- ListElement{ timestamp: "2012-10"; expenses: "-3"; income: "6" }
- ListElement{ timestamp: "2012-11"; expenses: "-4"; income: "8" }
- ListElement{ timestamp: "2012-12"; expenses: "-5"; income: "9" }
+ ListElement{ timestamp: "2022-01"; expenses: "-12"; income: "16" }
+ ListElement{ timestamp: "2022-02"; expenses: "-24"; income: "28" }
+ ListElement{ timestamp: "2022-03"; expenses: "-27"; income: "22" }
+ ListElement{ timestamp: "2022-04"; expenses: "-29"; income: "25" }
+ ListElement{ timestamp: "2022-05"; expenses: "-27"; income: "29" }
+ ListElement{ timestamp: "2022-06"; expenses: "-19"; income: "18" }
+ ListElement{ timestamp: "2022-07"; expenses: "-13"; income: "17" }
+ ListElement{ timestamp: "2022-08"; expenses: "-15"; income: "19" }
+ ListElement{ timestamp: "2022-09"; expenses: "-3"; income: "8" }
+ ListElement{ timestamp: "2022-10"; expenses: "-3"; income: "6" }
+ ListElement{ timestamp: "2022-11"; expenses: "-4"; income: "8" }
+ ListElement{ timestamp: "2022-12"; expenses: "-5"; income: "9" }
}
}
diff --git a/examples/datavisualization/qmlbars/qml/qmlbars/main.qml b/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
index 4a81df7e..0b40e957 100644
--- a/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
+++ b/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
@@ -1,46 +1,20 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
-import QtDataVisualization 1.2
-import QtQuick.Window
+import QtDataVisualization
import Qt.labs.qmlmodels
-import "."
+
+pragma ComponentBehavior: Bound
Item {
id: mainview
width: 1280
height: 1024
- property int buttonLayoutHeight: 180;
+ property int buttonLayoutHeight: 180
property int currentRow
state: Screen.width < Screen.height ? "portrait" : "landscape"
@@ -56,26 +30,25 @@ Item {
selectedSeries: barSeries
function handleSelectionChange(series, position) {
- if (position !== series.invalidSelectionPosition) {
- selectedSeries = series
- }
+ if (position !== series.invalidSelectionPosition)
+ selectedSeries = series;
// Set tableView current row to selected bar
var rowRole = series.dataProxy.rowLabels[position.x];
- var colRole
- if (barGraph.columnAxis === graphAxes.total)
+ var colRole;
+ if (barGraph.columnAxis == graphAxes.total)
colRole = "01";
else
colRole = series.dataProxy.columnLabels[position.y];
- var checkTimestamp = rowRole + "-" + colRole
+ var checkTimestamp = rowRole + "-" + colRole;
if (currentRow === -1 || checkTimestamp !== graphData.model.get(currentRow).timestamp) {
var totalRows = tableView.rows;
for (var i = 0; i < totalRows; i++) {
- var modelTimestamp = graphData.model.get(i).timestamp
+ var modelTimestamp = graphData.model.get(i).timestamp;
if (modelTimestamp === checkTimestamp) {
- currentRow = i
- break
+ currentRow = i;
+ break;
}
}
}
@@ -83,17 +56,16 @@ Item {
Item {
id: dataView
- anchors.right: mainview.right;
+ anchors.right: mainview.right
anchors.bottom: mainview.bottom
Bars3D {
id: barGraph
- width: dataView.width
- height: dataView.height
- shadowQuality: AbstractGraph3D.ShadowQualityMedium
+ anchors.fill: parent
+ shadowQuality: AbstractGraph3D.ShadowQualitySoftHigh
selectionMode: AbstractGraph3D.SelectionItem
theme: Theme3D {
- type: Theme3D.ThemeRetro
+ type: Theme3D.ThemeEbony
labelBorderEnabled: true
font.pointSize: 35
labelBackgroundEnabled: true
@@ -142,7 +114,8 @@ Item {
ColorGradientStop { position: 0.0; color: "#600000" }
}
- onSelectedBarChanged: (position)=> handleSelectionChange(secondarySeries, position)
+ onSelectedBarChanged: (position) => mainview.handleSelectionChange(secondarySeries,
+ position);
}
//! [3]
@@ -171,31 +144,33 @@ Item {
ColorGradientStop { position: 0.0; color: "#006000" }
}
- onSelectedBarChanged: (position)=> handleSelectionChange(barSeries, position)
+ onSelectedBarChanged: (position) => mainview.handleSelectionChange(barSeries,
+ position);
}
}
}
-
-
ColumnLayout {
id: tableViewLayout
-
anchors.top: parent.top
anchors.left: parent.left
HorizontalHeaderView {
- id: header
- property var columnNames: ["Month", "Expenses", "Income"]
+ id: headerView
+ readonly property var columnNames: ["Month", "Expenses", "Income"]
syncView: tableView
Layout.fillWidth: true
delegate: Text {
+ required property int index
padding: 3
- text: header.columnNames[index]
+ text: headerView.columnNames[index]
+ color: barGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
}
-
}
TableView {
@@ -215,14 +190,21 @@ Item {
rows: graphData.modelAsJsArray
}
-
delegate: Rectangle {
+ id: delegateRoot
+ required property int row
+ required property int column
+ required property string display
implicitHeight: 30
- implicitWidth: tableView.width / 3
- color: row===currentRow ? "#e0e0e0" : "#ffffff"
+ implicitWidth: column === 0 ? tableView.width / 2 : tableView.width / 4
+ color: row === mainview.currentRow ? barGraph.theme.gridLineColor
+ : barGraph.theme.windowColor
+ border.color: row === mainview.currentRow ? barGraph.theme.labelTextColor
+ : barGraph.theme.gridLineColor
+ border.width: 1
MouseArea {
anchors.fill: parent
- onClicked: currentRow = row
+ onClicked: mainview.currentRow = delegateRoot.row;
}
Text {
@@ -234,18 +216,21 @@ Item {
anchors.right: parent.right
text: formattedText
property string formattedText: {
- if (column === 0) {
- if (display !== "") {
- var pattern = /(\d\d\d\d)-(\d\d)/
- var matches = pattern.exec(display)
- var colIndex = parseInt(matches[2], 10) - 1
- return matches[1] + " - " + graphAxes.column.labels[colIndex]
+ if (delegateRoot.column === 0) {
+ if (delegateRoot.display !== "") {
+ var pattern = /(\d\d\d\d)-(\d\d)/;
+ var matches = pattern.exec(delegateRoot.display);
+ var colIndex = parseInt(matches[2], 10) - 1;
+ return matches[1] + " - " + graphAxes.column.labels[colIndex];
}
} else {
- return display
+ return delegateRoot.display;
}
}
-
+ color: barGraph.theme.labelTextColor
+ horizontalAlignment: delegateRoot.column === 0 ? Text.AlignLeft
+ : Text.AlignHCenter
+ elide: Text.ElideRight
}
}
}
@@ -253,21 +238,21 @@ Item {
//! [2]
onCurrentRowChanged: {
- var timestamp = graphData.model.get(currentRow).timestamp
- var pattern = /(\d\d\d\d)-(\d\d)/
- var matches = pattern.exec(timestamp)
- var rowIndex = modelProxy.rowCategoryIndex(matches[1])
- var colIndex
- if (barGraph.columnAxis === graphAxes.total)
- colIndex = 0 // Just one column when showing yearly totals
+ var timestamp = graphData.model.get(mainview.currentRow).timestamp;
+ var pattern = /(\d\d\d\d)-(\d\d)/;
+ var matches = pattern.exec(timestamp);
+ var rowIndex = modelProxy.rowCategoryIndex(matches[1]);
+ var colIndex;
+ if (barGraph.columnAxis == graphAxes.total)
+ colIndex = 0 ;// Just one column when showing yearly totals
else
- colIndex = modelProxy.columnCategoryIndex(matches[2])
+ colIndex = modelProxy.columnCategoryIndex(matches[2]);
if (selectedSeries.visible)
- mainview.selectedSeries.selectedBar = Qt.point(rowIndex, colIndex)
+ mainview.selectedSeries.selectedBar = Qt.point(rowIndex, colIndex);
else if (barSeries.visible)
- barSeries.selectedBar = Qt.point(rowIndex, colIndex)
+ barSeries.selectedBar = Qt.point(rowIndex, colIndex);
else
- secondarySeries.selectedBar = Qt.point(rowIndex, colIndex)
+ secondarySeries.selectedBar = Qt.point(rowIndex, colIndex);
}
//! [2]
@@ -279,38 +264,55 @@ Item {
id: changeDataButton
Layout.fillWidth: true
Layout.fillHeight: true
- text: "Show 2010 - 2012"
+ text: "Show 2020 - 2022"
clip: true
//! [1]
onClicked: {
if (text === "Show yearly totals") {
- modelProxy.autoRowCategories = true
- secondaryProxy.autoRowCategories = true
- modelProxy.columnRolePattern = /^.*$/
- secondaryProxy.columnRolePattern = /^.*$/
- graphAxes.value.autoAdjustRange = true
- barGraph.columnAxis = graphAxes.total
- text = "Show all years"
+ modelProxy.autoRowCategories = true;
+ secondaryProxy.autoRowCategories = true;
+ modelProxy.columnRolePattern = /^.*$/;
+ secondaryProxy.columnRolePattern = /^.*$/;
+ graphAxes.value.autoAdjustRange = true;
+ barGraph.columnAxis = graphAxes.total;
+ text = "Show all years";
} else if (text === "Show all years") {
- modelProxy.autoRowCategories = true
- secondaryProxy.autoRowCategories = true
- modelProxy.columnRolePattern = /^.*-(\d\d)$/
- secondaryProxy.columnRolePattern = /^.*-(\d\d)$/
- graphAxes.value.min = 0
- graphAxes.value.max = 35
- barGraph.columnAxis = graphAxes.column
- text = "Show 2010 - 2012"
- } else { // text === "Show 2010 - 2012"
+ modelProxy.autoRowCategories = true;
+ secondaryProxy.autoRowCategories = true;
+ modelProxy.columnRolePattern = /^.*-(\d\d)$/;
+ secondaryProxy.columnRolePattern = /^.*-(\d\d)$/;
+ graphAxes.value.min = 0;
+ graphAxes.value.max = 35;
+ barGraph.columnAxis = graphAxes.column;
+ text = "Show 2020 - 2022";
+ } else { // text === "Show 2020 - 2022"
// Explicitly defining row categories, since we do not want to show data for
// all years in the model, just for the selected ones.
- modelProxy.autoRowCategories = false
- secondaryProxy.autoRowCategories = false
- modelProxy.rowCategories = ["2010", "2011", "2012"]
- secondaryProxy.rowCategories = ["2010", "2011", "2012"]
- text = "Show yearly totals"
+ modelProxy.autoRowCategories = false;
+ secondaryProxy.autoRowCategories = false;
+ modelProxy.rowCategories = ["2020", "2021", "2022"];
+ secondaryProxy.rowCategories = ["2020", "2021", "2022"];
+ text = "Show yearly totals";
}
}
//! [1]
+
+ contentItem: Text {
+ text: changeDataButton.text
+ opacity: changeDataButton.enabled ? 1.0 : 0.3
+ color: barGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ opacity: changeDataButton.enabled ? 1 : 0.3
+ color: changeDataButton.down ? barGraph.theme.gridLineColor : barGraph.theme.windowColor
+ border.color: changeDataButton.down ? barGraph.theme.labelTextColor : barGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
}
Button {
@@ -322,13 +324,29 @@ Item {
enabled: barGraph.shadowsSupported
onClicked: {
if (barGraph.shadowQuality == AbstractGraph3D.ShadowQualityNone) {
- barGraph.shadowQuality = AbstractGraph3D.ShadowQualityMedium;
- text = "Hide Shadows"
+ barGraph.shadowQuality = AbstractGraph3D.ShadowQualitySoftHigh;
+ text = "Hide Shadows";
} else {
barGraph.shadowQuality = AbstractGraph3D.ShadowQualityNone;
- text = "Show Shadows"
+ text = "Show Shadows";
}
}
+ contentItem: Text {
+ text: shadowToggle.text
+ opacity: shadowToggle.enabled ? 1.0 : 0.3
+ color: barGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ opacity: shadowToggle.enabled ? 1 : 0.3
+ color: shadowToggle.down ? barGraph.theme.gridLineColor : barGraph.theme.windowColor
+ border.color: shadowToggle.down ? barGraph.theme.labelTextColor : barGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
}
Button {
@@ -340,22 +358,38 @@ Item {
//! [0]
onClicked: {
if (text === "Show Expenses") {
- barSeries.visible = false
- secondarySeries.visible = true
- barGraph.valueAxis.labelFormat = "-%.2f M\u20AC"
- secondarySeries.itemLabelFormat = "Expenses, @colLabel, @rowLabel: @valueLabel"
- text = "Show Both"
+ barSeries.visible = false;
+ secondarySeries.visible = true;
+ barGraph.valueAxis.labelFormat = "-%.2f M\u20AC";
+ secondarySeries.itemLabelFormat = "Expenses, @colLabel, @rowLabel: @valueLabel";
+ text = "Show Both";
} else if (text === "Show Both") {
- barSeries.visible = true
- barGraph.valueAxis.labelFormat = "%.2f M\u20AC"
- secondarySeries.itemLabelFormat = "Expenses, @colLabel, @rowLabel: -@valueLabel"
- text = "Show Income"
+ barSeries.visible = true;
+ barGraph.valueAxis.labelFormat = "%.2f M\u20AC";
+ secondarySeries.itemLabelFormat = "Expenses, @colLabel, @rowLabel: -@valueLabel";
+ text = "Show Income";
} else { // text === "Show Income"
- secondarySeries.visible = false
- text = "Show Expenses"
+ secondarySeries.visible = false;
+ text = "Show Expenses";
}
}
//! [0]
+ contentItem: Text {
+ text: seriesToggle.text
+ opacity: seriesToggle.enabled ? 1.0 : 0.3
+ color: barGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ opacity: seriesToggle.enabled ? 1 : 0.3
+ color: seriesToggle.down ? barGraph.theme.gridLineColor : barGraph.theme.windowColor
+ border.color: seriesToggle.down ? barGraph.theme.labelTextColor : barGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
}
Button {
@@ -367,15 +401,31 @@ Item {
onClicked: {
if (text === "Use Margin") {
- barGraph.barSeriesMargin = Qt.size(0.2, 0.2)
- barGraph.barSpacing = Qt.size(0.0, 0.0)
+ barGraph.barSeriesMargin = Qt.size(0.2, 0.2);
+ barGraph.barSpacing = Qt.size(0.0, 0.0);
text = "Use Spacing"
} else if (text === "Use Spacing") {
- barGraph.barSeriesMargin = Qt.size(0.0, 0.0)
- barGraph.barSpacing = Qt.size(0.5, 0.5)
- text = "Use Margin"
+ barGraph.barSeriesMargin = Qt.size(0.0, 0.0);
+ barGraph.barSpacing = Qt.size(0.5, 0.5);
+ text = "Use Margin";
}
}
+ contentItem: Text {
+ text: marginToggle.text
+ opacity: marginToggle.enabled ? 1.0 : 0.3
+ color: barGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ opacity: marginToggle.enabled ? 1 : 0.3
+ color: marginToggle.down ? barGraph.theme.gridLineColor : barGraph.theme.windowColor
+ border.color: marginToggle.down ? barGraph.theme.labelTextColor : barGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
}
}
@@ -408,7 +458,7 @@ Item {
name: "portrait"
PropertyChanges {
target: dataView
- width: mainview.height / 4 * 3
+ width: mainview.width
height: mainview.width
}
PropertyChanges {
diff --git a/examples/datavisualization/qmlcustominput/CMakeLists.txt b/examples/datavisualization/qmlcustominput/CMakeLists.txt
deleted file mode 100644
index f359d3fc..00000000
--- a/examples/datavisualization/qmlcustominput/CMakeLists.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(qmlcustominput LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Qml)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(qmlcustominput
- main.cpp
-)
-set_target_properties(qmlcustominput PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(qmlcustominput PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Qml
- Qt::Quick
- Qt::DataVisualization
-)
-
-set(qmlcustominput_resource_files
- "qml/qmlcustominput/Data.qml"
- "qml/qmlcustominput/main.qml"
-)
-
-qt6_add_resources(qmlcustominput "qmlcustominput"
- PREFIX
- "/"
- FILES
- ${qmlcustominput_resource_files}
-)
-
-install(TARGETS qmlcustominput
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/qmlcustominput/doc/images/qmlcustominput-example.png b/examples/datavisualization/qmlcustominput/doc/images/qmlcustominput-example.png
deleted file mode 100644
index 33d00708..00000000
--- a/examples/datavisualization/qmlcustominput/doc/images/qmlcustominput-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlcustominput/doc/src/qmlcustominput.qdoc b/examples/datavisualization/qmlcustominput/doc/src/qmlcustominput.qdoc
deleted file mode 100644
index ed405ca2..00000000
--- a/examples/datavisualization/qmlcustominput/doc/src/qmlcustominput.qdoc
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qmlcustominput
- \title Qt Quick 2 Custom Input Example
- \ingroup qtdatavisualization_examples
- \brief Customizing input in a QML application.
-
- The Qt Quick 2 Custom Input example shows how to customize the 3D graph controls from Qt Quick 2 using the MouseArea to capture and process mouse events in QML.
- Custom input handling code in this example shows how the camera is now controlled by using NumberAnimation to animate the camera and item selection
- is done on mouseover rather than clicking any mouse buttons. Also the code shows how to implement similar zoom with mouse wheel functionality as the default
- input handler implements.
-
- \image qmlcustominput-example.png
-
- \include examples-run.qdocinc
-
- \section1 Removing Default Input Handling
-
- The default input handling mechanism is disabled by setting the inputHandler property to null.
-
- \snippet qmlcustominput/qml/qmlcustominput/main.qml 0
- \dots 0
- \snippet qmlcustominput/qml/qmlcustominput/main.qml 1
- \dots 0
-
- \section1 Implementing Custom Selection Handling
-
- The on mouseover selection handling is implemented using standard MouseArea to capture the mouse events.
- The mouse area is configured to capture hover events and has two custom properties for \c mouseX and \c mouseY
- to store the last known mouse coordinates.
-
- \snippet qmlcustominput/qml/qmlcustominput/main.qml 2
-
- Whenever a pointer movement related signal is received the code updates the \c mouseX and \c mouseY properties.
-
- \snippet qmlcustominput/qml/qmlcustominput/main.qml 3
-
- As the selection is one shot, and is cleared each time a 3D frame is rendered, a timer is setup to retrigger selection so that the selection moves to the item
- currently under the mouse cursor as the camera animates around the graph even when the mouse cursor is not moving.
-
- \snippet qmlcustominput/qml/qmlcustominput/main.qml 4
-
- \section1 Implementing Custom Zoom Handling
-
- The camera has a zoom factor that represents amount of zoom in percentages. In this example the zoom range is limited
- between 10% and 500%. This range is then divided to four subranges where angleDelta is scaled to different amount of zoom change
- based on the current subrange.
-
- \dots
- \snippet qmlcustominput/qml/qmlcustominput/main.qml 5
- \dots
-
- \section1 Implementing Custom Camera Handling
-
- The camera is animated to constantly rotate around the graph with two animations. The rotation around the graph is done with
- a simple NumberAnimation that just increments during 20 seconds from 0 degrees to 360 degrees and sets the \l Q3DCamera::xRotation property.
-
- \snippet qmlcustominput/qml/qmlcustominput/main.qml 6
-
- The camera movement up and down is implemented with a SequentialAnimation that varies the \l Q3DCamera::yRotation property of the camera
- from 5 degrees to 45 degrees and back with in and out easing.
-
- \snippet qmlcustominput/qml/qmlcustominput/main.qml 7
-*/
diff --git a/examples/datavisualization/qmlcustominput/main.cpp b/examples/datavisualization/qmlcustominput/main.cpp
deleted file mode 100644
index 84587f59..00000000
--- a/examples/datavisualization/qmlcustominput/main.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlEngine>
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- QQuickView viewer;
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
- QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
-
- viewer.setTitle(QStringLiteral("QML Custom Input"));
-
- viewer.setSource(QUrl("qrc:/qml/qmlcustominput/main.qml"));
- viewer.setResizeMode(QQuickView::SizeRootObjectToView);
- viewer.show();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/Data.qml b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/Data.qml
deleted file mode 100644
index 5c6c7c13..00000000
--- a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/Data.qml
+++ /dev/null
@@ -1,1106 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-
-Item {
- property alias modelOne: dataModelOne
- property alias modelTwo: dataModelTwo
- property alias modelThree: dataModelThree
-
- ListModel {
- id: dataModelOne
- ListElement{ xPos: -10.0000; yPos: 5.00000; zPos: -5.00000 }
- ListElement{ xPos: -9.06229; yPos: 3.07132; zPos: -4.54268 }
- ListElement{ xPos: -8.55132; yPos: 4.19424; zPos: -4.03318 }
- ListElement{ xPos: -8.03806; yPos: 4.75162; zPos: -3.99583 }
- ListElement{ xPos: -9.50337; yPos: 4.90684; zPos: -4.21947 }
- ListElement{ xPos: -9.93819; yPos: 3.42724; zPos: -3.58955 }
- ListElement{ xPos: -7.84971; yPos: 3.15272; zPos: -4.90367 }
- ListElement{ xPos: -7.30477; yPos: 2.91062; zPos: -4.11078 }
- ListElement{ xPos: -7.11201; yPos: 3.68863; zPos: -4.52683 }
- ListElement{ xPos: -8.83267; yPos: 2.96504; zPos: -3.61108 }
- ListElement{ xPos: -6.94874; yPos: 2.49808; zPos: -2.92883 }
- ListElement{ xPos: -9.02606; yPos: 4.7496; zPos: -4.18193 }
- ListElement{ xPos: -9.5434; yPos: 3.15534; zPos: -3.83789 }
- ListElement{ xPos: -6.8679; yPos: 3.66922; zPos: -3.58288 }
- ListElement{ xPos: -8.16487; yPos: 1.82227; zPos: -4.64523 }
- ListElement{ xPos: -7.42165; yPos: 3.18192; zPos: -4.22791 }
- ListElement{ xPos: -7.99257; yPos: 3.06559; zPos: -4.33262 }
- ListElement{ xPos: -8.98851; yPos: 2.64924; zPos: -4.44595 }
- ListElement{ xPos: -6.36774; yPos: 3.96697; zPos: -4.38998 }
- ListElement{ xPos: -7.18413; yPos: 3.32417; zPos: -4.04636 }
- ListElement{ xPos: -7.91649; yPos: 3.46826; zPos: -2.78126 }
- ListElement{ xPos: -7.49495; yPos: 3.12306; zPos: -3.14539 }
- ListElement{ xPos: -7.5445; yPos: 2.85744; zPos: -3.68421 }
- }
-
- ListModel {
- id: dataModelTwo
- ListElement{ xPos: 2.25354; yPos: 1.36828; zPos: -1.32025 }
- ListElement{ xPos: -2.35524; yPos: -0.081203; zPos: 1.23267 }
- ListElement{ xPos: 2.6517; yPos: -1.20549; zPos: 2.73606 }
- ListElement{ xPos: -2.55382; yPos: 3.48814; zPos: -0.454971 }
- ListElement{ xPos: -3.85468; yPos: 0.263955; zPos: 0.578276 }
- ListElement{ xPos: 2.85275; yPos: 1.32315; zPos: 1.0565 }
- ListElement{ xPos: -0.404099; yPos: -2.36811; zPos: -1.60324 }
- ListElement{ xPos: 1.58908; yPos: 0.363782; zPos: -0.554303 }
- ListElement{ xPos: 0.251507; yPos: 0.124637; zPos: -0.752568 }
- ListElement{ xPos: -2.45626; yPos: -0.722719; zPos: -1.11764 }
- ListElement{ xPos: 4.15342; yPos: 1.92247; zPos: -0.954975 }
- ListElement{ xPos: 2.05845; yPos: 0.643191; zPos: -0.121564 }
- ListElement{ xPos: 0.253468; yPos: 0.814651; zPos: 3.05732 }
- ListElement{ xPos: 1.51724; yPos: 0.244303; zPos: 2.25864 }
- ListElement{ xPos: 1.15; yPos: -0.487518; zPos: 0.815931 }
- ListElement{ xPos: -0.0538979; yPos: 0.124927; zPos: 0.251571 }
- ListElement{ xPos: 0.941523; yPos: -0.483498; zPos: -3.2731 }
- ListElement{ xPos: 3.55074; yPos: -1.04714; zPos: -0.954301 }
- ListElement{ xPos: -2.43125; yPos: -0.964099; zPos: -0.658537 }
- ListElement{ xPos: 4.25459; yPos: 0.163296; zPos: 2.05563 }
- ListElement{ xPos: -0.612031; yPos: 1.03234; zPos: -0.227175 }
- ListElement{ xPos: 0.78338; yPos: -0.847922; zPos: -0.959189 }
- ListElement{ xPos: -4.20076; yPos: 1.44907; zPos: 0.853836 }
- ListElement{ xPos: -1.59466; yPos: -1.27511; zPos: -1.5686 }
- ListElement{ xPos: -3.3567; yPos: -1.96864; zPos: 1.83224 }
- ListElement{ xPos: -2.75169; yPos: -0.964221; zPos: -1.26465 }
- ListElement{ xPos: -2.45624; yPos: 0.287046; zPos: -4.55032 }
- ListElement{ xPos: 2.73649; yPos: -1.48789; zPos: -0.653082 }
- ListElement{ xPos: 2.73284; yPos: 2.2912; zPos: -2.4933 }
- ListElement{ xPos: -0.854321; yPos: -2.04288; zPos: 3.7516 }
- ListElement{ xPos: -1.35708; yPos: -1.84915; zPos: 2.35985 }
- ListElement{ xPos: -3.25001; yPos: -1.64456; zPos: -4.45419 }
- ListElement{ xPos: -0.356834; yPos: -0.569139; zPos: -1.75308 }
- ListElement{ xPos: -0.813569; yPos: -0.287899; zPos: -0.0535036 }
- ListElement{ xPos: 4.75975; yPos: -1.48817; zPos: -2.45957 }
- ListElement{ xPos: 4.35294; yPos: 1.46154; zPos: 0.814214 }
- ListElement{ xPos: -3.22467; yPos: 2.76903; zPos: 0.510435 }
- ListElement{ xPos: 2.49494; yPos: 1.9286; zPos: 0.552287 }
- ListElement{ xPos: -0.456521; yPos: 0.688277; zPos: -0.82788 }
- ListElement{ xPos: -2.72568; yPos: 2.80278; zPos: -2.45782 }
- ListElement{ xPos: -1.65023; yPos: 1.32005; zPos: -2.05754 }
- ListElement{ xPos: -1.63551; yPos: 1.88519; zPos: -3.65544 }
- ListElement{ xPos: -1.20008; yPos: -0.723785; zPos: 0.853563 }
- ListElement{ xPos: 1.45448; yPos: 1.08701; zPos: 2.17385 }
- ListElement{ xPos: -3.9042; yPos: -1.16916; zPos: -0.85395 }
- ListElement{ xPos: 3.15645; yPos: 0.123932; zPos: -0.950988 }
- ListElement{ xPos: -1.35924; yPos: -2.64015; zPos: -0.54254 }
- ListElement{ xPos: -4.15753; yPos: 1.28294; zPos: -4.47502 }
- ListElement{ xPos: -2.7885; yPos: 2.48535; zPos: -0.159651 }
- ListElement{ xPos: -3.44364; yPos: 0.627232; zPos: 0.611881 }
- ListElement{ xPos: -1.55639; yPos: -0.967484; zPos: 2.35497 }
- ListElement{ xPos: -0.752853; yPos: 1.16736; zPos: -0.757871 }
- ListElement{ xPos: -0.859974; yPos: 0.640213; zPos: -1.75453 }
- ListElement{ xPos: 0.85744; yPos: 0.480175; zPos: 2.97204 }
- ListElement{ xPos: 4.0571; yPos: 3.24083; zPos: -0.183622 }
- ListElement{ xPos: 0.658087; yPos: 0.841418; zPos: 0.357839 }
- ListElement{ xPos: -2.13027; yPos: 0.920836; zPos: -2.758 }
- ListElement{ xPos: -0.65825; yPos: 0.164257; zPos: 1.69478 }
- ListElement{ xPos: -1.88335; yPos: -1.4811; zPos: -2.15408 }
- ListElement{ xPos: -1.67331; yPos: 2.96982; zPos: 1.85521 }
- ListElement{ xPos: -0.750937; yPos: 0.282914; zPos: -0.758707 }
- ListElement{ xPos: 2.29891; yPos: 1.16949; zPos: 2.65927 }
- ListElement{ xPos: 2.69132; yPos: 2.92632; zPos: -0.206126 }
- ListElement{ xPos: -1.65771; yPos: 3.28846; zPos: 2.50201 }
- ListElement{ xPos: -0.568799; yPos: 2.5289; zPos: -1.15875 }
- ListElement{ xPos: -1.85383; yPos: 0.528953; zPos: -2.32418 }
- ListElement{ xPos: 0.159422; yPos: -2.36165; zPos: -0.569393 }
- ListElement{ xPos: -3.96506; yPos: 0.282374; zPos: -0.254519 }
- ListElement{ xPos: 0.150933; yPos: -3.88058; zPos: -0.759422 }
- ListElement{ xPos: -1.17917; yPos: -1.96176; zPos: 0.95589 }
- ListElement{ xPos: -0.340817; yPos: -3.52333; zPos: -1.45715 }
- ListElement{ xPos: 3.21784; yPos: -2.56593; zPos: 2.55468 }
- ListElement{ xPos: 0.060965; yPos: -2.44153; zPos: 1.35813 }
- ListElement{ xPos: 1.4594; yPos: -1.96511; zPos: 0.170228 }
- ListElement{ xPos: 3.55017; yPos: -2.16882; zPos: 1.75539 }
- ListElement{ xPos: 2.89487; yPos: -0.727481; zPos: -0.39588 }
- ListElement{ xPos: -1.65151; yPos: -0.603877; zPos: 0.250508 }
- ListElement{ xPos: -4.35232; yPos: -1.32155; zPos: -2.31877 }
- ListElement{ xPos: 2.75852; yPos: -1.88931; zPos: 1.77874 }
- ListElement{ xPos: 2.75452; yPos: -0.64123; zPos: 2.45546 }
- ListElement{ xPos: 0.151914; yPos: -0.888395; zPos: -0.260935 }
- ListElement{ xPos: 0.150593; yPos: 0.0461652; zPos: -0.158206 }
- ListElement{ xPos: -1.22087; yPos: -2.92034; zPos: -3.78604 }
- ListElement{ xPos: -0.761622; yPos: 0.161856; zPos: 3.5586 }
- ListElement{ xPos: -1.88456; yPos: -2.48094; zPos: 0.287091 }
- ListElement{ xPos: 1.25293; yPos: 2.64374; zPos: 1.6532 }
- ListElement{ xPos: -0.657609; yPos: 1.32547; zPos: -0.557301 }
- ListElement{ xPos: 3.85995; yPos: 2.32568; zPos: -1.38265 }
- ListElement{ xPos: 1.65572; yPos: -2.28977; zPos: 0.957488 }
- ListElement{ xPos: -2.45312; yPos: -2.96071; zPos: 3.45147 }
- ListElement{ xPos: -1.75259; yPos: 0.365259; zPos: 1.60113 }
- ListElement{ xPos: 1.14045; yPos: -0.844805; zPos: 0.359343 }
- ListElement{ xPos: -1.55951; yPos: 1.65687; zPos: -3.10398 }
- ListElement{ xPos: 0.441652; yPos: -1.36623; zPos: -1.55494 }
- ListElement{ xPos: -3.95762; yPos: 0.288753; zPos: 3.7791 }
- ListElement{ xPos: -1.80101; yPos: -0.241499; zPos: 2.29693 }
- ListElement{ xPos: -0.456931; yPos: 1.64399; zPos: 1.35559 }
- ListElement{ xPos: -0.691421; yPos: -0.723378; zPos: 2.51839 }
- ListElement{ xPos: -1.20658; yPos: -3.04063; zPos: -1.552 }
- ListElement{ xPos: -0.958574; yPos: 1.48688; zPos: 0.950152 }
- ListElement{ xPos: 1.76319; yPos: -1.36072; zPos: 2.15866 }
- ListElement{ xPos: -3.91301; yPos: -0.328932; zPos: -2.45524 }
- ListElement{ xPos: 2.9553; yPos: 3.12703; zPos: -2.43321 }
- ListElement{ xPos: 3.55939; yPos: -1.48028; zPos: 0.152252 }
- ListElement{ xPos: -1.41545; yPos: 3.247; zPos: 0.779314 }
- ListElement{ xPos: -3.34482; yPos: -0.894538; zPos: 0.209302 }
- ListElement{ xPos: 1.15338; yPos: 0.362332; zPos: -2.7924 }
- ListElement{ xPos: 0.468852; yPos: 0.120872; zPos: 1.35593 }
- ListElement{ xPos: 1.98778; yPos: -3.32292; zPos: -0.758591 }
- ListElement{ xPos: 0.420718; yPos: -0.225014; zPos: -2.44806 }
- ListElement{ xPos: 0.550207; yPos: 1.56432; zPos: 2.25317 }
- ListElement{ xPos: 4.35156; yPos: -0.966178; zPos: -0.791032 }
- ListElement{ xPos: 3.35179; yPos: -1.04981; zPos: -0.854089 }
- ListElement{ xPos: 1.70857; yPos: -0.281369; zPos: -0.254686 }
- ListElement{ xPos: -3.05855; yPos: -0.443693; zPos: 1.30251 }
- ListElement{ xPos: -3.9509; yPos: -2.72179; zPos: -3.83489 }
- ListElement{ xPos: 2.19632; yPos: 1.32915; zPos: 1.15345 }
- ListElement{ xPos: 1.42782; yPos: -0.449435; zPos: -2.85005 }
- ListElement{ xPos: -2.19053; yPos: 0.049866; zPos: 2.87493 }
- ListElement{ xPos: 2.45196; yPos: -2.44705; zPos: -2.85302 }
- ListElement{ xPos: 4.35263; yPos: 0.245956; zPos: 1.12886 }
- ListElement{ xPos: 1.8167; yPos: 1.85407; zPos: -0.714159 }
- ListElement{ xPos: 1.88577; yPos: 2.04227; zPos: -0.959396 }
- ListElement{ xPos: 1.6522; yPos: -2.48289; zPos: 0.355373 }
- ListElement{ xPos: -3.39965; yPos: 0.286834; zPos: -1.68171 }
- ListElement{ xPos: 1.85639; yPos: 1.47419; zPos: 2.25749 }
- ListElement{ xPos: -2.5216; yPos: -0.88573; zPos: -2.69594 }
- ListElement{ xPos: -0.143043; yPos: 0.28453; zPos: -1.75898 }
- ListElement{ xPos: -2.52745; yPos: -2.76741; zPos: -0.257011 }
- ListElement{ xPos: 0.381448; yPos: -1.64793; zPos: -0.756889 }
- ListElement{ xPos: 2.30469; yPos: -1.28844; zPos: -2.79271 }
- ListElement{ xPos: -1.72491; yPos: -1.48634; zPos: -2.61686 }
- ListElement{ xPos: 0.503342; yPos: 0.248352; zPos: -2.27162 }
- ListElement{ xPos: 0.457491; yPos: -1.88183; zPos: -0.951124 }
- ListElement{ xPos: -1.23123; yPos: 0.963519; zPos: 2.3569 }
- ListElement{ xPos: -0.55709; yPos: -0.364372; zPos: -1.82528 }
- ListElement{ xPos: 2.73963; yPos: -0.567024; zPos: -0.496936 }
- ListElement{ xPos: 1.17979; yPos: 2.76252; zPos: -2.35641 }
- ListElement{ xPos: -1.20723; yPos: -2.1692; zPos: 3.14368 }
- ListElement{ xPos: -0.0504301; yPos: 1.76714; zPos: 1.64265 }
- ListElement{ xPos: 1.45714; yPos: -0.725448; zPos: 0.739217 }
- ListElement{ xPos: 0.246123; yPos: -3.27811; zPos: -0.251218 }
- ListElement{ xPos: -0.894632; yPos: 1.08758; zPos: -0.17184 }
- ListElement{ xPos: -2.45217; yPos: 0.565077; zPos: -0.557015 }
- ListElement{ xPos: 2.51301; yPos: 1.1271; zPos: 2.25057 }
- ListElement{ xPos: -1.05099; yPos: -2.1688; zPos: -1.88996 }
- ListElement{ xPos: 1.26945; yPos: -2.1225; zPos: -1.55031 }
- ListElement{ xPos: -4.30129; yPos: -0.760298; zPos: 0.259868 }
- ListElement{ xPos: -0.157336; yPos: -0.237532; zPos: -2.69483 }
- ListElement{ xPos: -2.95778; yPos: 1.36212; zPos: -3.65524 }
- ListElement{ xPos: 2.74003; yPos: 1.16234; zPos: 2.05928 }
- ListElement{ xPos: 0.955294; yPos: -1.52182; zPos: -1.05684 }
- ListElement{ xPos: -1.87004; yPos: 2.72729; zPos: -0.550608 }
- ListElement{ xPos: 0.459439; yPos: 2.88101; zPos: -4.4135 }
- ListElement{ xPos: 1.35069; yPos: 1.08445; zPos: -0.808625 }
- ListElement{ xPos: -2.70034; yPos: -1.36291; zPos: -2.65126 }
- ListElement{ xPos: 0.353099; yPos: 2.32354; zPos: -1.61885 }
- ListElement{ xPos: -0.453359; yPos: 1.67524; zPos: 0.122888 }
- ListElement{ xPos: 3.7506; yPos: 1.12855; zPos: -3.86338 }
- ListElement{ xPos: 0.548626; yPos: 2.63101; zPos: 0.552261 }
- ListElement{ xPos: -0.753935; yPos: -3.52241; zPos: -3.21122 }
- ListElement{ xPos: 0.258935; yPos: -1.32453; zPos: 2.25745 }
- ListElement{ xPos: -2.8797; yPos: -1.60832; zPos: -2.45626 }
- ListElement{ xPos: 0.151838; yPos: -0.565264; zPos: 3.98539 }
- ListElement{ xPos: 2.1508; yPos: -1.68734; zPos: -1.75076 }
- ListElement{ xPos: -4.23947; yPos: -1.92531; zPos: 2.35438 }
- ListElement{ xPos: 1.95273; yPos: -1.32736; zPos: 0.313398 }
- ListElement{ xPos: 0.533647; yPos: 0.646686; zPos: 0.75712 }
- ListElement{ xPos: 0.856619; yPos: -0.843249; zPos: -0.577773 }
- ListElement{ xPos: -2.15649; yPos: -1.64285; zPos: -2.31055 }
- ListElement{ xPos: -0.851309; yPos: -2.84717; zPos: -0.324933 }
- ListElement{ xPos: -3.17772; yPos: -0.324817; zPos: -0.858394 }
- ListElement{ xPos: 3.45303; yPos: 0.529449; zPos: 0.818094 }
- ListElement{ xPos: 1.42912; yPos: 0.238088; zPos: 0.385617 }
- ListElement{ xPos: 0.459586; yPos: 1.7661; zPos: -0.153761 }
- ListElement{ xPos: 0.855577; yPos: 3.16845; zPos: -2.19548 }
- ListElement{ xPos: 2.15181; yPos: 0.729021; zPos: -0.955922 }
- ListElement{ xPos: -2.40113; yPos: 0.665756; zPos: -0.521366 }
- ListElement{ xPos: 1.45469; yPos: -0.462177; zPos: -1.95869 }
- ListElement{ xPos: 0.629115; yPos: -1.84769; zPos: 1.86755 }
- ListElement{ xPos: 3.47576; yPos: -0.209875; zPos: -0.555502 }
- ListElement{ xPos: 0.295075; yPos: -0.840772; zPos: 4.68895 }
- ListElement{ xPos: -0.253301; yPos: -2.49078; zPos: 2.11749 }
- ListElement{ xPos: -1.15923; yPos: -3.163; zPos: -3.05671 }
- ListElement{ xPos: 1.45484; yPos: 0.963654; zPos: -0.734942 }
- ListElement{ xPos: 0.354307; yPos: 0.520772; zPos: -1.32278 }
- ListElement{ xPos: 2.65725; yPos: 0.284589; zPos: -0.856856 }
- ListElement{ xPos: -1.2596; yPos: 0.765493; zPos: -1.66469 }
- ListElement{ xPos: -0.656057; yPos: -2.16906; zPos: 3.72144 }
- ListElement{ xPos: -0.251559; yPos: -2.36406; zPos: -1.89709 }
- ListElement{ xPos: 0.35608; yPos: -0.80463; zPos: 1.85674 }
- ListElement{ xPos: 0.0508692; yPos: 0.615674; zPos: 0.856785 }
- ListElement{ xPos: -2.50726; yPos: 2.28743; zPos: -2.05697 }
- ListElement{ xPos: 1.65272; yPos: 1.29604; zPos: 2.11481 }
- ListElement{ xPos: -3.2878; yPos: -0.244516; zPos: 0.799732 }
- ListElement{ xPos: -2.18989; yPos: -0.847222; zPos: -0.264559 }
- ListElement{ xPos: 0.452832; yPos: 0.960993; zPos: 2.53691 }
- ListElement{ xPos: -2.43913; yPos: 1.28957; zPos: 2.75427 }
- ListElement{ xPos: -1.72889; yPos: -3.29414; zPos: -2.31426 }
- ListElement{ xPos: 0.952615; yPos: -0.0844651; zPos: 0.346607 }
- ListElement{ xPos: 1.41175; yPos: 0.889643; zPos: 0.450356 }
- ListElement{ xPos: 2.13145; yPos: 1.08697; zPos: 0.223055 }
- ListElement{ xPos: -2.16002; yPos: -0.225505; zPos: -0.602641 }
- ListElement{ xPos: 0.54028; yPos: 1.24765; zPos: -0.456129 }
- ListElement{ xPos: 2.55086; yPos: -0.56734; zPos: -2.65051 }
- ListElement{ xPos: -4.53921; yPos: -0.483588; zPos: -1.25013 }
- ListElement{ xPos: 3.45413; yPos: -0.44258; zPos: 2.29687 }
- ListElement{ xPos: -0.257456; yPos: 0.64624; zPos: 1.65041 }
- ListElement{ xPos: 1.25559; yPos: -0.65493; zPos: -0.358872 }
- ListElement{ xPos: 1.9599; yPos: -1.56965; zPos: -4.17044 }
- ListElement{ xPos: 2.75996; yPos: -1.98665; zPos: 3.31794 }
- ListElement{ xPos: 3.05837; yPos: 1.04847; zPos: -0.975536 }
- ListElement{ xPos: -2.95407; yPos: 1.40294; zPos: -2.25825 }
- ListElement{ xPos: 1.38718; yPos: 0.360709; zPos: -2.98211 }
- ListElement{ xPos: 0.481728; yPos: -2.48564; zPos: 3.25864 }
- ListElement{ xPos: -1.15089; yPos: 0.363522; zPos: 0.458662 }
- ListElement{ xPos: -2.25551; yPos: 0.0421839; zPos: 0.650008 }
- ListElement{ xPos: -1.85862; yPos: -0.969237; zPos: 4.25313 }
- ListElement{ xPos: 1.55797; yPos: 0.0465051; zPos: -3.85709 }
- ListElement{ xPos: 0.0555338; yPos: 0.682957; zPos: -2.45556 }
- ListElement{ xPos: -0.186868; yPos: -0.482811; zPos: 1.96957 }
- ListElement{ xPos: 2.197; yPos: -1.5248; zPos: -4.20912 }
- ListElement{ xPos: 3.40636; yPos: 0.626269; zPos: -2.05757 }
- ListElement{ xPos: 0.780426; yPos: 2.68048; zPos: -0.852693 }
- ListElement{ xPos: 1.65184; yPos: 1.68951; zPos: -0.892089 }
- ListElement{ xPos: 2.11929; yPos: -2.44406; zPos: 1.21168 }
- ListElement{ xPos: -0.153348; yPos: -1.88112; zPos: -0.357374 }
- ListElement{ xPos: -0.359393; yPos: 1.76654; zPos: 1.63063 }
- ListElement{ xPos: -2.15954; yPos: 0.0819277; zPos: 0.757621 }
- ListElement{ xPos: -0.159898; yPos: -3.36316; zPos: 0.359582 }
- ListElement{ xPos: 2.74125; yPos: -2.84148; zPos: 0.355785 }
- ListElement{ xPos: -1.3558; yPos: 0.0027827; zPos: -0.588162 }
- ListElement{ xPos: -0.354346; yPos: -2.56747; zPos: -0.984403 }
- ListElement{ xPos: -2.75082; yPos: -3.56807; zPos: 1.5599 }
- ListElement{ xPos: -2.54708; yPos: -0.686147; zPos: 2.75649 }
- ListElement{ xPos: 1.35138; yPos: 0.692978; zPos: -2.24969 }
- ListElement{ xPos: -1.39826; yPos: -0.246682; zPos: -1.65876 }
- ListElement{ xPos: -1.46629; yPos: -1.44446; zPos: 4.45293 }
- ListElement{ xPos: -1.89442; yPos: 3.64549; zPos: 2.05732 }
- ListElement{ xPos: -0.658093; yPos: 0.0815129; zPos: 3.95269 }
- ListElement{ xPos: 2.25603; yPos: 2.96329; zPos: -2.35993 }
- ListElement{ xPos: 1.36323; yPos: 1.64488; zPos: -0.0538547 }
- ListElement{ xPos: 1.75659; yPos: 2.24227; zPos: -2.8522 }
- ListElement{ xPos: -0.0566584; yPos: -1.56465; zPos: -0.0503143 }
- ListElement{ xPos: -3.8532; yPos: -0.822258; zPos: -0.345406 }
- ListElement{ xPos: 0.951328; yPos: 0.329296; zPos: -2.52211 }
- ListElement{ xPos: -2.48659; yPos: 0.410856; zPos: -3.55401 }
- ListElement{ xPos: 3.72676; yPos: 2.36324; zPos: 3.65589 }
- ListElement{ xPos: 0.559972; yPos: 0.884984; zPos: 3.15283 }
- ListElement{ xPos: -1.37624; yPos: -1.36007; zPos: -2.16578 }
- ListElement{ xPos: 2.05543; yPos: 0.4472; zPos: -0.82911 }
- ListElement{ xPos: -4.75258; yPos: 1.8779; zPos: -1.75376 }
- ListElement{ xPos: 0.15648; yPos: 2.64039; zPos: -2.21467 }
- ListElement{ xPos: -2.0593; yPos: -2.56775; zPos: 1.15037 }
- ListElement{ xPos: -3.70217; yPos: 2.12375; zPos: 1.3652 }
- ListElement{ xPos: 1.05566; yPos: 0.98299; zPos: 4.02985 }
- ListElement{ xPos: -0.766882; yPos: -0.88359; zPos: 1.35525 }
- ListElement{ xPos: 0.951335; yPos: -1.84689; zPos: 0.178337 }
- ListElement{ xPos: 0.751608; yPos: 1.1691; zPos: 4.25273 }
- ListElement{ xPos: -1.36367; yPos: 0.728904; zPos: 0.655858 }
- ListElement{ xPos: 3.17581; yPos: -0.0844758; zPos: -1.75811 }
- ListElement{ xPos: 2.85546; yPos: -0.683618; zPos: 0.653701 }
- ListElement{ xPos: -0.471118; yPos: 3.04176; zPos: -2.35393 }
- ListElement{ xPos: 3.0574; yPos: -0.601996; zPos: -0.611932 }
- ListElement{ xPos: -0.854024; yPos: -0.44532; zPos: 0.355575 }
- ListElement{ xPos: 0.05047; yPos: -1.92888; zPos: 0.64818 }
- ListElement{ xPos: -1.25515; yPos: -1.44466; zPos: 1.90429 }
- ListElement{ xPos: -1.67201; yPos: 0.0461708; zPos: -0.796655 }
- ListElement{ xPos: 1.45345; yPos: -1.66159; zPos: -3.48143 }
- ListElement{ xPos: -2.84514; yPos: -1.24586; zPos: -3.47945 }
- ListElement{ xPos: 0.287402; yPos: -0.688276; zPos: -3.75664 }
- ListElement{ xPos: 3.35908; yPos: 0.687828; zPos: -1.94406 }
- ListElement{ xPos: -2.39167; yPos: 1.08322; zPos: -1.73508 }
- ListElement{ xPos: 1.52152; yPos: 1.86032; zPos: -1.25351 }
- ListElement{ xPos: 1.55931; yPos: 3.64414; zPos: 1.35944 }
- ListElement{ xPos: 1.15954; yPos: -1.36058; zPos: 0.758814 }
- ListElement{ xPos: -1.95325; yPos: 0.0851092; zPos: -0.854106 }
- ListElement{ xPos: -2.25254; yPos: -0.523024; zPos: 1.05486 }
- ListElement{ xPos: -2.68036; yPos: -1.32901; zPos: 1.05877 }
- ListElement{ xPos: -0.485956; yPos: -1.52164; zPos: 2.45303 }
- ListElement{ xPos: -0.0546215; yPos: 0.640683; zPos: -2.85953 }
- ListElement{ xPos: 4.45295; yPos: -0.246051; zPos: -0.159626 }
- ListElement{ xPos: 3.4523; yPos: 1.7215; zPos: -1.10587 }
- ListElement{ xPos: 3.35142; yPos: -1.72053; zPos: -0.252105 }
- ListElement{ xPos: 1.74251; yPos: 2.76108; zPos: 2.51524 }
- ListElement{ xPos: 2.15054; yPos: -2.88101; zPos: -1.7527 }
- ListElement{ xPos: -3.70517; yPos: -0.0470951; zPos: 0.258921 }
- ListElement{ xPos: -0.45593; yPos: -3.47184; zPos: -2.95345 }
- ListElement{ xPos: 3.15988; yPos: -2.32107; zPos: 0.105299 }
- ListElement{ xPos: 0.751449; yPos: -2.88762; zPos: -3.45245 }
- ListElement{ xPos: 2.9794; yPos: 0.493172; zPos: -0.654683 }
- ListElement{ xPos: -1.87713; yPos: -2.48632; zPos: -3.534 }
- ListElement{ xPos: 1.65266; yPos: 3.16008; zPos: 2.1579 }
- ListElement{ xPos: -1.25239; yPos: -0.763119; zPos: 2.15776 }
- ListElement{ xPos: 3.5572; yPos: 0.282681; zPos: 2.44174 }
- ListElement{ xPos: 0.251145; yPos: 0.520256; zPos: 2.3184 }
- ListElement{ xPos: -1.78596; yPos: -1.36913; zPos: -2.50818 }
- ListElement{ xPos: 3.82122; yPos: 1.04473; zPos: 0.456159 }
- ListElement{ xPos: 2.45979; yPos: -0.722759; zPos: -4.05123 }
- ListElement{ xPos: -0.855594; yPos: 0.163792; zPos: -0.553702 }
- ListElement{ xPos: 0.656895; yPos: 0.529982; zPos: 3.35129 }
- ListElement{ xPos: 0.857952; yPos: -0.0885677; zPos: 0.695128 }
- ListElement{ xPos: -0.143269; yPos: 1.12972; zPos: -3.155 }
- ListElement{ xPos: -2.95923; yPos: 0.241767; zPos: 0.832165 }
- ListElement{ xPos: 0.253329; yPos: -0.622952; zPos: -0.459799 }
- ListElement{ xPos: 0.151499; yPos: 2.5297; zPos: 1.53059 }
- ListElement{ xPos: 0.655464; yPos: -1.49902; zPos: -1.51071 }
- ListElement{ xPos: 4.7585; yPos: 1.76425; zPos: 1.15164 }
- ListElement{ xPos: -1.75063; yPos: -1.44645; zPos: -3.65525 }
- ListElement{ xPos: 0.850392; yPos: 0.0417223; zPos: -0.340588 }
- ListElement{ xPos: -0.557015; yPos: -0.282305; zPos: -1.85291 }
- ListElement{ xPos: -4.05639; yPos: 0.522959; zPos: -2.3507 }
- ListElement{ xPos: -0.358137; yPos: -0.967852; zPos: 0.807832 }
- ListElement{ xPos: -1.82056; yPos: -0.0483894; zPos: 0.0541359 }
- ListElement{ xPos: -2.16623; yPos: 0.129809; zPos: -2.52513 }
- ListElement{ xPos: -1.85591; yPos: -1.04417; zPos: -1.28501 }
- ListElement{ xPos: -1.79647; yPos: -3.44045; zPos: -1.73399 }
- ListElement{ xPos: 2.25342; yPos: 0.161308; zPos: -0.0517495 }
- ListElement{ xPos: -1.37877; yPos: 0.243596; zPos: -1.52931 }
- ListElement{ xPos: -0.059299; yPos: -0.480825; zPos: 1.7137 }
- ListElement{ xPos: -2.54357; yPos: 0.286685; zPos: -2.11495 }
- ListElement{ xPos: 3.92334; yPos: -0.442936; zPos: -0.852895 }
- ListElement{ xPos: -0.390023; yPos: -1.96437; zPos: 1.38718 }
- ListElement{ xPos: 1.35263; yPos: 2.92968; zPos: -1.1545 }
- ListElement{ xPos: -2.25892; yPos: -2.27429; zPos: -0.451533 }
- ListElement{ xPos: -0.2215; yPos: -0.126727; zPos: 0.155541 }
- ListElement{ xPos: 0.715932; yPos: 1.47509; zPos: -3.52895 }
- ListElement{ xPos: -0.382939; yPos: 3.16461; zPos: 2.65165 }
- ListElement{ xPos: -1.14437; yPos: -1.44682; zPos: 0.456601 }
- ListElement{ xPos: 0.251892; yPos: -1.0431; zPos: 4.31548 }
- ListElement{ xPos: -2.23281; yPos: -2.48698; zPos: 0.46995 }
- ListElement{ xPos: 0.954231; yPos: -3.4323; zPos: -1.20233 }
- ListElement{ xPos: 2.75569; yPos: -1.66383; zPos: -1.95486 }
- ListElement{ xPos: 0.750644; yPos: -1.84163; zPos: -0.159206 }
- ListElement{ xPos: -0.757387; yPos: -1.84192; zPos: 0.354209 }
- ListElement{ xPos: -2.85509; yPos: -2.12151; zPos: -0.954754 }
- ListElement{ xPos: -0.888427; yPos: -2.8403; zPos: -0.157387 }
- ListElement{ xPos: -1.95265; yPos: -0.445753; zPos: 2.17956 }
- ListElement{ xPos: -1.05845; yPos: -2.48694; zPos: -1.25315 }
- ListElement{ xPos: -2.66497; yPos: -1.48251; zPos: 0.873192 }
- ListElement{ xPos: 2.50491; yPos: -1.0833; zPos: 1.99667 }
- ListElement{ xPos: 0.453931; yPos: 2.52158; zPos: 0.456875 }
- ListElement{ xPos: 1.55859; yPos: -0.161924; zPos: 0.256619 }
- ListElement{ xPos: -2.92585; yPos: 0.368018; zPos: 0.35908 }
- ListElement{ xPos: 2.95509; yPos: -1.56248; zPos: -2.74469 }
- ListElement{ xPos: 3.46082; yPos: -1.76026; zPos: 3.05835 }
- ListElement{ xPos: 1.75644; yPos: -2.84241; zPos: 0.507631 }
- ListElement{ xPos: -0.959006; yPos: 0.649579; zPos: 1.10824 }
- ListElement{ xPos: 2.63856; yPos: 2.0417; zPos: 0.187281 }
- ListElement{ xPos: -0.150004; yPos: -0.0838836; zPos: -0.949314 }
- ListElement{ xPos: 2.26402; yPos: -1.28916; zPos: 2.85284 }
- ListElement{ xPos: -0.821239; yPos: 2.68795; zPos: -0.317185 }
- ListElement{ xPos: 3.47124; yPos: 0.840813; zPos: -2.65322 }
- ListElement{ xPos: -0.253209; yPos: -0.244177; zPos: 0.457348 }
- ListElement{ xPos: 2.76181; yPos: 1.64033; zPos: -1.95329 }
- ListElement{ xPos: 1.35105; yPos: -2.96027; zPos: 0.659952 }
- ListElement{ xPos: -1.45423; yPos: -0.24358; zPos: 0.832696 }
- ListElement{ xPos: 1.45109; yPos: 1.64958; zPos: -3.45448 }
- ListElement{ xPos: -1.15659; yPos: 3.08225; zPos: 1.11445 }
- ListElement{ xPos: 0.806359; yPos: 1.88298; zPos: -2.13001 }
- ListElement{ xPos: 1.15538; yPos: 3.04545; zPos: -0.759437 }
- ListElement{ xPos: -0.450074; yPos: 1.36121; zPos: -0.155042 }
- ListElement{ xPos: -2.80924; yPos: -1.24207; zPos: 2.55513 }
- ListElement{ xPos: 4.48859; yPos: 2.04394; zPos: 1.25324 }
- ListElement{ xPos: -0.958741; yPos: 1.24575; zPos: 3.65169 }
- ListElement{ xPos: 3.45143; yPos: 1.3276; zPos: 2.5144 }
- ListElement{ xPos: -3.25232; yPos: 1.12514; zPos: -1.21425 }
- ListElement{ xPos: -2.45327; yPos: 0.681109; zPos: 4.35764 }
- ListElement{ xPos: 0.55395; yPos: -0.128353; zPos: -3.95705 }
- ListElement{ xPos: -0.352458; yPos: 3.08882; zPos: -0.340631 }
- ListElement{ xPos: 1.35213; yPos: -2.92251; zPos: -3.31166 }
- ListElement{ xPos: 0.52621; yPos: -0.279201; zPos: 0.959619 }
- ListElement{ xPos: 1.2243; yPos: -0.240093; zPos: -0.75247 }
- ListElement{ xPos: -1.29854; yPos: 2.16477; zPos: 3.3507 }
- ListElement{ xPos: -3.35677; yPos: 2.36713; zPos: 3.4585 }
- ListElement{ xPos: 0.957717; yPos: -0.885793; zPos: 1.25827 }
- ListElement{ xPos: 0.150983; yPos: 1.24269; zPos: 0.539106 }
- ListElement{ xPos: 1.84986; yPos: 1.56932; zPos: -1.05811 }
- ListElement{ xPos: -1.35563; yPos: 3.82103; zPos: -1.45287 }
- ListElement{ xPos: 1.4544; yPos: -2.6453; zPos: 0.58082 }
- ListElement{ xPos: 2.05908; yPos: 1.16496; zPos: 1.44075 }
- ListElement{ xPos: 2.9507; yPos: -2.4957; zPos: 0.153512 }
- ListElement{ xPos: -1.10289; yPos: 0.763085; zPos: -1.65351 }
- ListElement{ xPos: -2.50708; yPos: -2.467; zPos: 1.05892 }
- ListElement{ xPos: 3.55284; yPos: -1.8509; zPos: -2.55732 }
- ListElement{ xPos: -0.848034; yPos: 1.24305; zPos: -3.7516 }
- ListElement{ xPos: -1.35051; yPos: -2.48178; zPos: 2.85326 }
- ListElement{ xPos: -2.18554; yPos: 1.48771; zPos: -0.155205 }
- ListElement{ xPos: -0.459278; yPos: 2.68404; zPos: 2.85727 }
- ListElement{ xPos: 0.854722; yPos: 1.47322; zPos: -3.35951 }
- ListElement{ xPos: -2.23505; yPos: -2.24254; zPos: 0.353203 }
- ListElement{ xPos: 1.42395; yPos: -2.32169; zPos: 0.558188 }
- ListElement{ xPos: 3.65106; yPos: 1.12201; zPos: -4.58409 }
- ListElement{ xPos: 0.11; yPos: -0.68782; zPos: 1.85804 }
- ListElement{ xPos: -1.9551; yPos: -0.560204; zPos: -2.0577 }
- ListElement{ xPos: 1.85964; yPos: 1.32737; zPos: -4.40673 }
- ListElement{ xPos: -0.616311; yPos: 0.649737; zPos: -0.30189 }
- ListElement{ xPos: -1.55375; yPos: 1.52043; zPos: -3.75629 }
- ListElement{ xPos: 1.85417; yPos: 0.486964; zPos: 0.654806 }
- ListElement{ xPos: 3.35638; yPos: 2.52599; zPos: 1.94343 }
- ListElement{ xPos: 0.491389; yPos: 1.40427; zPos: -1.31935 }
- ListElement{ xPos: -2.72939; yPos: 0.844341; zPos: 1.62621 }
- ListElement{ xPos: -0.525985; yPos: 1.31415; zPos: 0.484015 }
- ListElement{ xPos: 2.25998; yPos: -1.719; zPos: 1.25143 }
- ListElement{ xPos: 1.79268; yPos: 2.46378; zPos: -0.951188 }
- ListElement{ xPos: -3.55105; yPos: 1.04122; zPos: 3.9501 }
- ListElement{ xPos: 0.954251; yPos: 1.28296; zPos: 2.05486 }
- ListElement{ xPos: -3.15267; yPos: 1.96498; zPos: -0.361707 }
- ListElement{ xPos: 1.35358; yPos: -0.921098; zPos: -1.71743 }
- ListElement{ xPos: -3.16896; yPos: -3.08548; zPos: 0.903411 }
- ListElement{ xPos: 1.25127; yPos: -2.44903; zPos: 2.25616 }
- ListElement{ xPos: -3.88899; yPos: 0.761334; zPos: -1.05751 }
- ListElement{ xPos: -1.05163; yPos: -3.89783; zPos: -0.883668 }
- ListElement{ xPos: -4.189; yPos: 1.24176; zPos: -2.63816 }
- ListElement{ xPos: 2.45671; yPos: -1.84859; zPos: 0.352808 }
- ListElement{ xPos: -1.59618; yPos: 2.16255; zPos: 4.33699 }
- ListElement{ xPos: 2.10913; yPos: -1.88673; zPos: -0.952497 }
- ListElement{ xPos: -1.85571; yPos: -0.287392; zPos: 0.277176 }
- ListElement{ xPos: 0.751967; yPos: 1.04568; zPos: -1.35427 }
- ListElement{ xPos: 2.85792; yPos: 1.60982; zPos: -2.05454 }
- ListElement{ xPos: -2.13152; yPos: -0.260207; zPos: -2.15124 }
- ListElement{ xPos: 1.75432; yPos: 2.28936; zPos: 0.756254 }
- ListElement{ xPos: 1.95711; yPos: -0.681098; zPos: -2.38037 }
- ListElement{ xPos: -0.826273; yPos: 1.08361; zPos: 1.6515 }
- ListElement{ xPos: -1.85118; yPos: 1.89481; zPos: -0.756754 }
- ListElement{ xPos: -3.0571; yPos: 2.44795; zPos: 0.355341 }
- ListElement{ xPos: -0.455122; yPos: -3.58071; zPos: -2.85209 }
- ListElement{ xPos: -0.95805; yPos: 0.641282; zPos: 2.15189 }
- ListElement{ xPos: -1.35515; yPos: -0.234803; zPos: -0.825819 }
- ListElement{ xPos: 2.12472; yPos: -0.0444431; zPos: 0.651227 }
- ListElement{ xPos: 2.67573; yPos: 0.223987; zPos: 2.75712 }
- ListElement{ xPos: 1.65871; yPos: -0.163059; zPos: 1.6513 }
- ListElement{ xPos: -1.85429; yPos: 0.68862; zPos: 1.9576 }
- ListElement{ xPos: -3.05186; yPos: -2.2804; zPos: 0.100919 }
- ListElement{ xPos: 3.41813; yPos: -1.88775; zPos: 3.67075 }
- ListElement{ xPos: -0.753778; yPos: 0.36467; zPos: 1.55333 }
- ListElement{ xPos: 2.97628; yPos: -1.36503; zPos: -1.85135 }
- ListElement{ xPos: 0.477128; yPos: 1.08862; zPos: 0.858931 }
- ListElement{ xPos: -1.0531; yPos: 1.0488; zPos: 2.15218 }
- ListElement{ xPos: 2.66911; yPos: -2.08876; zPos: -0.182397 }
- ListElement{ xPos: 0.5117; yPos: -2.84097; zPos: -0.953684 }
- ListElement{ xPos: 0.468302; yPos: 1.88616; zPos: 2.05369 }
- ListElement{ xPos: -3.16099; yPos: -2.76085; zPos: -2.75679 }
- ListElement{ xPos: -2.6593; yPos: 3.52373; zPos: -1.24072 }
- ListElement{ xPos: -4.37957; yPos: -0.286903; zPos: 3.63863 }
- ListElement{ xPos: -2.85958; yPos: -2.56921; zPos: -2.85723 }
- ListElement{ xPos: -0.159735; yPos: 2.72758; zPos: -2.80575 }
- ListElement{ xPos: -0.951849; yPos: -0.607465; zPos: 1.05633 }
- ListElement{ xPos: 1.93077; yPos: 2.56422; zPos: 1.25446 }
- ListElement{ xPos: -0.859754; yPos: 0.248106; zPos: 0.0584456 }
- ListElement{ xPos: 2.4023; yPos: 2.56659; zPos: -1.2588 }
- ListElement{ xPos: 2.35295; yPos: -1.08729; zPos: 2.7851 }
- ListElement{ xPos: -2.1537; yPos: -0.765032; zPos: 2.83652 }
- ListElement{ xPos: 1.40185; yPos: 1.29804; zPos: 2.3588 }
- ListElement{ xPos: -0.991566; yPos: 1.72049; zPos: 4.17146 }
- ListElement{ xPos: 3.76736; yPos: -1.48837; zPos: 2.05329 }
- ListElement{ xPos: -0.251896; yPos: 0.765367; zPos: -1.4087 }
- ListElement{ xPos: -1.6228; yPos: 0.328693; zPos: 0.0528287 }
- ListElement{ xPos: 2.56735; yPos: -3.08103; zPos: 0.853144 }
- ListElement{ xPos: 0.0531812; yPos: -1.96216; zPos: 1.55734 }
- ListElement{ xPos: -3.77052; yPos: 0.8421; zPos: -0.258953 }
- ListElement{ xPos: 2.35523; yPos: 0.676643; zPos: -1.55789 }
- ListElement{ xPos: 1.16702; yPos: 2.64474; zPos: -1.45533 }
- ListElement{ xPos: 2.55709; yPos: -1.56013; zPos: 2.05351 }
- ListElement{ xPos: -2.15518; yPos: 3.56253; zPos: 3.257 }
- ListElement{ xPos: -0.553936; yPos: -1.24935; zPos: 2.65224 }
- ListElement{ xPos: -0.355931; yPos: 1.32374; zPos: 0.859863 }
- ListElement{ xPos: -1.92974; yPos: 1.2482; zPos: 1.15936 }
- ListElement{ xPos: 0.350652; yPos: -2.44371; zPos: -1.35611 }
- ListElement{ xPos: 2.98996; yPos: -1.08527; zPos: -4.30641 }
- ListElement{ xPos: 1.82765; yPos: -0.440236; zPos: 1.25528 }
- ListElement{ xPos: -0.689231; yPos: -1.08813; zPos: -0.668663 }
- ListElement{ xPos: -0.326426; yPos: -0.881857; zPos: -1.45371 }
- ListElement{ xPos: -1.0655; yPos: 2.12466; zPos: 2.34146 }
- ListElement{ xPos: 3.1563; yPos: 0.523166; zPos: -2.8572 }
- ListElement{ xPos: 0.455505; yPos: 2.48775; zPos: -1.33482 }
- ListElement{ xPos: 0.53939; yPos: -0.847333; zPos: 0.732877 }
- ListElement{ xPos: -0.683025; yPos: -0.448889; zPos: -1.35747 }
- ListElement{ xPos: -1.7711; yPos: -0.125587; zPos: -2.55083 }
- ListElement{ xPos: -0.512871; yPos: 0.520964; zPos: 1.40731 }
- ListElement{ xPos: 4.93857; yPos: -1.6805; zPos: -0.127298 }
- ListElement{ xPos: 1.46098; yPos: -1.64073; zPos: 1.35833 }
- ListElement{ xPos: 0.0518058; yPos: 0.285151; zPos: -2.2437 }
- ListElement{ xPos: 1.5587; yPos: -1.23067; zPos: 0.458753 }
- ListElement{ xPos: 3.13089; yPos: 3.64132; zPos: 1.45181 }
- ListElement{ xPos: -1.55648; yPos: 2.167; zPos: 0.153491 }
- ListElement{ xPos: 3.94451; yPos: -2.56372; zPos: -1.25276 }
- ListElement{ xPos: 4.15866; yPos: 0.646921; zPos: 2.65542 }
- ListElement{ xPos: -2.88189; yPos: 0.562407; zPos: -1.35379 }
- ListElement{ xPos: 1.31686; yPos: 1.2808; zPos: 0.804375 }
- ListElement{ xPos: -2.36912; yPos: -3.08775; zPos: 1.28335 }
- ListElement{ xPos: 0.575203; yPos: -0.36483; zPos: -2.43958 }
- ListElement{ xPos: 0.613108; yPos: 0.526892; zPos: 2.75368 }
- ListElement{ xPos: 3.96027; yPos: -0.525425; zPos: -4.25746 }
- ListElement{ xPos: -0.510821; yPos: 1.28578; zPos: -0.058488 }
- ListElement{ xPos: -0.254704; yPos: -3.847; zPos: 3.15258 }
- ListElement{ xPos: -0.925874; yPos: -1.72014; zPos: -3.15341 }
- ListElement{ xPos: 0.85704; yPos: 0.84788; zPos: -1.75947 }
- ListElement{ xPos: -3.35712; yPos: 0.722104; zPos: 2.15645 }
- ListElement{ xPos: -1.67305; yPos: 0.681216; zPos: 1.65726 }
- ListElement{ xPos: -3.64682; yPos: 0.867926; zPos: 2.63525 }
- ListElement{ xPos: -0.715921; yPos: 1.96081; zPos: -0.939934 }
- ListElement{ xPos: -2.45646; yPos: 1.3249; zPos: -2.75733 }
- ListElement{ xPos: -1.75798; yPos: 0.725382; zPos: -0.851921 }
- ListElement{ xPos: -2.78528; yPos: 0.679275; zPos: -2.59212 }
- ListElement{ xPos: -2.24551; yPos: -3.4597; zPos: -1.85735 }
- ListElement{ xPos: 0.85142; yPos: 2.28058; zPos: -3.75328 }
- ListElement{ xPos: -3.85054; yPos: 2.44519; zPos: 4.35081 }
- ListElement{ xPos: -3.6553; yPos: 0.521917; zPos: 0.293354 }
- ListElement{ xPos: -4.35959; yPos: -0.528198; zPos: 1.55557 }
- ListElement{ xPos: 1.45186; yPos: -0.0891161; zPos: -0.468118 }
- ListElement{ xPos: 1.85594; yPos: -0.761461; zPos: -4.68083 }
- ListElement{ xPos: 0.950642; yPos: 0.526239; zPos: -1.30614 }
- ListElement{ xPos: -2.50526; yPos: -0.885606; zPos: -0.362569 }
- ListElement{ xPos: -2.96569; yPos: 1.68519; zPos: -1.15965 }
- ListElement{ xPos: -3.212; yPos: 0.260715; zPos: 1.18472 }
- ListElement{ xPos: 0.950556; yPos: -0.282806; zPos: 0.776252 }
- ListElement{ xPos: 3.66678; yPos: 1.08585; zPos: -2.15646 }
- ListElement{ xPos: -0.806289; yPos: 1.72784; zPos: 2.85906 }
- ListElement{ xPos: 0.363827; yPos: 1.76644; zPos: 0.931866 }
- ListElement{ xPos: -1.34204; yPos: -0.563686; zPos: -2.34091 }
- ListElement{ xPos: -2.81333; yPos: 0.415358; zPos: 4.28363 }
- ListElement{ xPos: 1.52053; yPos: -0.327359; zPos: 0.35052 }
- ListElement{ xPos: -0.633441; yPos: -0.240518; zPos: 4.05745 }
- ListElement{ xPos: -2.38947; yPos: -1.84662; zPos: -2.29572 }
- ListElement{ xPos: -1.95744; yPos: -0.863705; zPos: 1.85889 }
- ListElement{ xPos: -0.0509082; yPos: -0.164164; zPos: 3.8571 }
- ListElement{ xPos: 0.156438; yPos: -2.64188; zPos: 1.75836 }
- ListElement{ xPos: -3.85642; yPos: 1.48025; zPos: 0.171659 }
- ListElement{ xPos: 0.253545; yPos: 1.0852; zPos: -2.45243 }
- ListElement{ xPos: -4.11318; yPos: 0.41655; zPos: -0.120976 }
- ListElement{ xPos: -1.44928; yPos: -0.328222; zPos: -0.871279 }
- ListElement{ xPos: -1.90972; yPos: -1.8495; zPos: -3.16966 }
- ListElement{ xPos: 0.359433; yPos: 1.3236; zPos: -3.95045 }
- ListElement{ xPos: -2.60974; yPos: -1.04138; zPos: 4.25836 }
- ListElement{ xPos: -3.16336; yPos: -0.961581; zPos: -1.65161 }
- ListElement{ xPos: -0.552909; yPos: -1.16942; zPos: 4.05164 }
- ListElement{ xPos: -3.10918; yPos: -1.2402; zPos: -0.555073 }
- ListElement{ xPos: 2.25494; yPos: 1.24432; zPos: 3.44063 }
- ListElement{ xPos: -1.24998; yPos: -1.24928; zPos: -4.05493 }
- ListElement{ xPos: 3.05441; yPos: 1.92762; zPos: 1.43329 }
- ListElement{ xPos: 0.557032; yPos: -2.7688; zPos: -3.25463 }
- ListElement{ xPos: -2.05665; yPos: 1.6357; zPos: 0.656665 }
- ListElement{ xPos: -0.459042; yPos: 0.122664; zPos: -0.152961 }
- ListElement{ xPos: 2.17715; yPos: 2.96833; zPos: 1.1332 }
- ListElement{ xPos: 0.0536573; yPos: -2.08635; zPos: -0.736471 }
- ListElement{ xPos: -3.15658; yPos: 1.0818; zPos: -0.172166 }
- ListElement{ xPos: -1.95784; yPos: 0.44402; zPos: 0.612685 }
- ListElement{ xPos: 0.15168; yPos: -0.323951; zPos: 2.85563 }
- ListElement{ xPos: 0.559356; yPos: 1.63101; zPos: 0.558005 }
- ListElement{ xPos: -2.05643; yPos: 1.84615; zPos: -1.87964 }
- ListElement{ xPos: -0.254098; yPos: 0.368208; zPos: 1.23061 }
- ListElement{ xPos: 4.6438; yPos: -0.209283; zPos: 0.695869 }
- ListElement{ xPos: -1.95087; yPos: -0.859788; zPos: 0.0539467 }
- ListElement{ xPos: -0.351737; yPos: -1.04291; zPos: 0.869198 }
- ListElement{ xPos: 0.776319; yPos: 3.04922; zPos: -3.55278 }
- ListElement{ xPos: -0.158751; yPos: 1.12538; zPos: -2.59681 }
- ListElement{ xPos: -0.560997; yPos: -1.68381; zPos: 1.56935 }
- ListElement{ xPos: 1.71385; yPos: -0.446223; zPos: -1.56843 }
- ListElement{ xPos: 4.05142; yPos: -1.3243; zPos: 2.85052 }
- ListElement{ xPos: 1.68685; yPos: -1.56305; zPos: 2.159 }
- ListElement{ xPos: 0.359977; yPos: -1.16029; zPos: 1.25037 }
- ListElement{ xPos: -2.65045; yPos: -1.28532; zPos: 0.459338 }
- ListElement{ xPos: 0.542068; yPos: 1.52601; zPos: -1.35562 }
- ListElement{ xPos: 1.34386; yPos: 1.68231; zPos: -2.75114 }
- ListElement{ xPos: 1.25123; yPos: 0.43108; zPos: 0.383897 }
- ListElement{ xPos: -0.952936; yPos: 3.6889; zPos: 1.75759 }
- ListElement{ xPos: -3.55855; yPos: 0.484241; zPos: 1.15503 }
- ListElement{ xPos: -1.71394; yPos: -2.64568; zPos: -3.30684 }
- ListElement{ xPos: -2.23513; yPos: -2.46812; zPos: 1.05321 }
- ListElement{ xPos: 0.160986; yPos: 0.442362; zPos: -1.05077 }
- ListElement{ xPos: 2.05433; yPos: 0.473204; zPos: 0.823968 }
- ListElement{ xPos: 0.482077; yPos: 0.0477338; zPos: 4.21712 }
- ListElement{ xPos: -1.25348; yPos: 0.767612; zPos: 0.455813 }
- ListElement{ xPos: 1.61308; yPos: 2.04125; zPos: -2.95433 }
- ListElement{ xPos: -2.05862; yPos: -0.444052; zPos: 1.35177 }
- ListElement{ xPos: -3.2582; yPos: 0.44354; zPos: 2.15898 }
- ListElement{ xPos: -1.75935; yPos: 0.0459283; zPos: 2.35061 }
- ListElement{ xPos: -4.15501; yPos: 0.68674; zPos: 0.802439 }
- ListElement{ xPos: -1.66005; yPos: 1.12067; zPos: 0.552901 }
- ListElement{ xPos: -0.150828; yPos: 3.4151; zPos: 3.05446 }
- ListElement{ xPos: -0.274381; yPos: 0.0405946; zPos: -1.45463 }
- ListElement{ xPos: 2.94543; yPos: -0.360918; zPos: 1.45895 }
- ListElement{ xPos: -1.42494; yPos: 1.56503; zPos: 1.31012 }
- ListElement{ xPos: 3.45402; yPos: -1.27808; zPos: -4.29049 }
- ListElement{ xPos: -1.14819; yPos: 0.674339; zPos: 1.55807 }
- ListElement{ xPos: -0.356159; yPos: 1.52295; zPos: -0.351445 }
- ListElement{ xPos: 0.387809; yPos: 0.965119; zPos: 1.84271 }
- ListElement{ xPos: 2.56165; yPos: -1.84639; zPos: 1.65056 }
- ListElement{ xPos: -0.619108; yPos: 2.24004; zPos: -2.92134 }
- ListElement{ xPos: -0.254288; yPos: -2.32744; zPos: -0.720931 }
- ListElement{ xPos: 3.3508; yPos: -2.24501; zPos: 1.58268 }
- ListElement{ xPos: 1.69434; yPos: 1.96814; zPos: 3.97439 }
- ListElement{ xPos: 1.80785; yPos: 0.685502; zPos: -1.55595 }
- ListElement{ xPos: 2.71587; yPos: 1.76415; zPos: -2.98124 }
- ListElement{ xPos: -2.35151; yPos: -0.697338; zPos: -3.96269 }
- ListElement{ xPos: -1.85759; yPos: 1.96899; zPos: -1.25212 }
- ListElement{ xPos: -4.05922; yPos: 1.12838; zPos: -2.7597 }
- ListElement{ xPos: -2.85434; yPos: -1.36487; zPos: 0.659987 }
- ListElement{ xPos: -1.75616; yPos: 2.12969; zPos: -1.35032 }
- ListElement{ xPos: -2.95985; yPos: -0.0854955; zPos: 3.65545 }
- ListElement{ xPos: -2.46049; yPos: 2.45378; zPos: 4.51969 }
- ListElement{ xPos: -0.0577358; yPos: 0.0427911; zPos: 0.359068 }
- ListElement{ xPos: -3.25346; yPos: 0.161829; zPos: 1.12956 }
- ListElement{ xPos: 3.55498; yPos: 2.32482; zPos: 1.33302 }
- ListElement{ xPos: 4.99905; yPos: -1.88748; zPos: 0.450165 }
- ListElement{ xPos: -2.35406; yPos: -1.44715; zPos: -0.745307 }
- ListElement{ xPos: 2.44217; yPos: -0.642981; zPos: 0.126924 }
- ListElement{ xPos: 1.73283; yPos: 1.67362; zPos: 1.91136 }
- ListElement{ xPos: 1.34239; yPos: -0.434386; zPos: -0.449795 }
- ListElement{ xPos: -0.9813; yPos: -2.72962; zPos: -3.6889 }
- ListElement{ xPos: 1.29807; yPos: -0.448566; zPos: 2.13911 }
- ListElement{ xPos: 0.654017; yPos: 3.54591; zPos: -1.55982 }
- ListElement{ xPos: -1.55508; yPos: -2.64564; zPos: 0.555 }
- ListElement{ xPos: 1.92722; yPos: -0.322513; zPos: -2.13691 }
- ListElement{ xPos: 1.35913; yPos: -2.84853; zPos: -0.470788 }
- ListElement{ xPos: 0.257868; yPos: -2.68874; zPos: -0.268328 }
- ListElement{ xPos: -2.05043; yPos: -1.68405; zPos: -3.05075 }
- ListElement{ xPos: 1.65173; yPos: -0.446801; zPos: -0.75339 }
- ListElement{ xPos: -1.25655; yPos: 0.965275; zPos: -4.15374 }
- ListElement{ xPos: -4.27942; yPos: -0.564403; zPos: 1.45826 }
- ListElement{ xPos: 0.950669; yPos: -2.4416; zPos: -1.68235 }
- ListElement{ xPos: -0.0541107; yPos: 0.882274; zPos: 3.15308 }
- ListElement{ xPos: -1.65016; yPos: -0.886156; zPos: -3.85588 }
- ListElement{ xPos: 0.355613; yPos: 0.217671; zPos: 4.25412 }
- ListElement{ xPos: 0.800472; yPos: 0.847259; zPos: 3.11114 }
- ListElement{ xPos: 1.8599; yPos: -2.16981; zPos: -2.22314 }
- ListElement{ xPos: -2.05061; yPos: 0.164561; zPos: -0.452181 }
- ListElement{ xPos: 0.854144; yPos: 1.84334; zPos: -1.45981 }
- ListElement{ xPos: 1.68547; yPos: 1.56536; zPos: -1.45874 }
- ListElement{ xPos: 1.25244; yPos: -0.844991; zPos: -2.95475 }
- ListElement{ xPos: -1.92348; yPos: 2.32119; zPos: -1.80444 }
- ListElement{ xPos: -0.645646; yPos: 2.45193; zPos: -3.65332 }
- ListElement{ xPos: 4.45803; yPos: 0.527732; zPos: 3.02031 }
- ListElement{ xPos: 2.74572; yPos: 0.287964; zPos: -1.80485 }
- ListElement{ xPos: 0.35961; yPos: -2.56437; zPos: 3.97194 }
- ListElement{ xPos: -0.956828; yPos: -1.28915; zPos: 1.64424 }
- ListElement{ xPos: 0.414971; yPos: -0.235061; zPos: -2.15757 }
- ListElement{ xPos: -0.0530542; yPos: -1.08464; zPos: -4.11853 }
- ListElement{ xPos: 3.17203; yPos: -1.21013; zPos: -3.85806 }
- ListElement{ xPos: 0.758948; yPos: 0.124698; zPos: -3.10188 }
- ListElement{ xPos: -1.65404; yPos: -1.16204; zPos: -1.65357 }
- ListElement{ xPos: -1.65985; yPos: 3.84433; zPos: 4.65101 }
- ListElement{ xPos: 2.83444; yPos: -2.69529; zPos: -1.65021 }
- ListElement{ xPos: 1.29814; yPos: -2.76926; zPos: -2.27139 }
- ListElement{ xPos: 0.462382; yPos: 3.04217; zPos: 3.45153 }
- ListElement{ xPos: -3.61944; yPos: 1.04723; zPos: -0.638308 }
- ListElement{ xPos: 2.25235; yPos: 1.64048; zPos: 2.95175 }
- ListElement{ xPos: -3.05826; yPos: -0.76526; zPos: -2.38243 }
- ListElement{ xPos: -2.8506; yPos: 2.12102; zPos: -0.659444 }
- ListElement{ xPos: -0.10046; yPos: 0.0887098; zPos: -1.63621 }
- ListElement{ xPos: -1.55585; yPos: -1.36073; zPos: 2.2076 }
- ListElement{ xPos: -0.474968; yPos: 1.56568; zPos: -0.302349 }
- ListElement{ xPos: 0.36584; yPos: -2.36102; zPos: 1.35289 }
- ListElement{ xPos: 0.224784; yPos: -0.637694; zPos: 1.62444 }
- ListElement{ xPos: -0.658172; yPos: 1.9689; zPos: -3.13712 }
- ListElement{ xPos: 0.646334; yPos: -1.04672; zPos: 2.59285 }
- ListElement{ xPos: -2.63054; yPos: -1.08263; zPos: -0.851087 }
- ListElement{ xPos: 1.45804; yPos: -2.56159; zPos: -2.66388 }
- ListElement{ xPos: -2.45748; yPos: 0.0409116; zPos: -2.85428 }
- ListElement{ xPos: -0.0561462; yPos: -1.24229; zPos: -1.25145 }
- ListElement{ xPos: -2.95391; yPos: -1.80896; zPos: -2.05036 }
- ListElement{ xPos: 4.36778; yPos: -0.969951; zPos: 3.53686 }
- ListElement{ xPos: 2.15582; yPos: -1.67173; zPos: -0.831609 }
- ListElement{ xPos: -1.27059; yPos: -1.14919; zPos: 1.7569 }
- ListElement{ xPos: -1.57398; yPos: -1.28091; zPos: -0.251735 }
- ListElement{ xPos: 2.59506; yPos: -2.6408; zPos: -0.345589 }
- ListElement{ xPos: -1.64147; yPos: -0.360324; zPos: 3.1562 }
- ListElement{ xPos: -0.125427; yPos: -0.641484; zPos: -3.66095 }
- ListElement{ xPos: -1.9148; yPos: 1.8885; zPos: 2.12972 }
- ListElement{ xPos: -2.85768; yPos: -2.28782; zPos: -1.55719 }
- ListElement{ xPos: -1.37239; yPos: -0.485964; zPos: -2.22291 }
- ListElement{ xPos: 0.516294; yPos: 0.281078; zPos: 0.652612 }
- ListElement{ xPos: -1.13028; yPos: 0.246659; zPos: -2.25636 }
- ListElement{ xPos: 1.7555; yPos: -1.41602; zPos: 0.348449 }
- ListElement{ xPos: 1.5355; yPos: -1.32646; zPos: -2.82417 }
- ListElement{ xPos: -0.95426; yPos: 2.0824; zPos: -0.383507 }
- ListElement{ xPos: 2.75739; yPos: 0.241779; zPos: 0.755701 }
- ListElement{ xPos: 0.752655; yPos: 0.56204; zPos: -1.55738 }
- ListElement{ xPos: 1.1271; yPos: -3.76145; zPos: 0.43701 }
- ListElement{ xPos: 0.326656; yPos: -1.24467; zPos: 2.62222 }
- ListElement{ xPos: -0.259702; yPos: 2.68152; zPos: -3.18542 }
- ListElement{ xPos: 1.88504; yPos: -0.760623; zPos: 4.42592 }
- ListElement{ xPos: 0.251673; yPos: 0.472252; zPos: -1.99239 }
- ListElement{ xPos: -1.66934; yPos: -0.129677; zPos: -2.49048 }
- ListElement{ xPos: -1.25499; yPos: 2.36151; zPos: -2.98447 }
- ListElement{ xPos: 2.65331; yPos: 0.0443886; zPos: 0.108819 }
- ListElement{ xPos: -3.35439; yPos: 0.0872109; zPos: -1.33429 }
- ListElement{ xPos: 3.35597; yPos: 0.0403626; zPos: 2.8203 }
- ListElement{ xPos: 4.45191; yPos: 1.24824; zPos: -0.95821 }
- ListElement{ xPos: -0.171441; yPos: -1.52622; zPos: -4.68253 }
- ListElement{ xPos: 1.19986; yPos: 1.72992; zPos: -3.29566 }
- ListElement{ xPos: -0.451339; yPos: 1.92976; zPos: 1.21534 }
- ListElement{ xPos: -0.743119; yPos: -0.160688; zPos: 0.805688 }
- ListElement{ xPos: 2.38678; yPos: 0.272829; zPos: 2.75457 }
- ListElement{ xPos: 1.72464; yPos: 2.08232; zPos: -0.950389 }
- ListElement{ xPos: 2.11167; yPos: 1.56576; zPos: 1.21969 }
- ListElement{ xPos: 3.05157; yPos: -1.56838; zPos: -0.450535 }
- ListElement{ xPos: 0.132417; yPos: -3.08279; zPos: -1.34127 }
- ListElement{ xPos: 1.65441; yPos: -0.325204; zPos: -0.825145 }
- ListElement{ xPos: 2.05515; yPos: -1.8417; zPos: 1.8561 }
- ListElement{ xPos: -0.555858; yPos: 1.52007; zPos: -0.80122 }
- ListElement{ xPos: -2.05026; yPos: 1.52773; zPos: 2.33529 }
- ListElement{ xPos: -2.35231; yPos: -3.28716; zPos: 3.53598 }
- ListElement{ xPos: -2.25771; yPos: 2.5667; zPos: -1.92243 }
- ListElement{ xPos: 0.386884; yPos: -3.28674; zPos: 3.49336 }
- ListElement{ xPos: 0.957272; yPos: -1.68124; zPos: -1.89095 }
- ListElement{ xPos: 2.99881; yPos: 2.24992; zPos: -0.0535837 }
- ListElement{ xPos: 3.19604; yPos: 2.92893; zPos: -2.16276 }
- ListElement{ xPos: 2.55903; yPos: 3.12413; zPos: 2.95022 }
- ListElement{ xPos: -0.570758; yPos: -2.85326; zPos: -0.339255 }
- ListElement{ xPos: 0.356627; yPos: 0.641074; zPos: 0.355538 }
- ListElement{ xPos: -1.15777; yPos: -0.162227; zPos: -0.455885 }
- ListElement{ xPos: -2.4871; yPos: -0.885492; zPos: -0.374875 }
- ListElement{ xPos: 1.55464; yPos: -1.48929; zPos: -0.593706 }
- ListElement{ xPos: -0.852655; yPos: -2.08736; zPos: -1.18281 }
- ListElement{ xPos: 0.504087; yPos: -0.879247; zPos: 1.35148 }
- ListElement{ xPos: -2.15261; yPos: 1.04511; zPos: -3.25543 }
- ListElement{ xPos: -0.653745; yPos: -1.32873; zPos: -3.18964 }
- ListElement{ xPos: 0.35973; yPos: -0.844255; zPos: -1.72034 }
- ListElement{ xPos: -2.11112; yPos: 0.962572; zPos: 2.59386 }
- ListElement{ xPos: 1.47531; yPos: -0.693626; zPos: -3.15249 }
- ListElement{ xPos: -1.35814; yPos: 0.767202; zPos: 3.45094 }
- ListElement{ xPos: -3.05812; yPos: -1.26298; zPos: 1.45287 }
- ListElement{ xPos: -1.63927; yPos: 0.893568; zPos: -1.94978 }
- ListElement{ xPos: 0.751992; yPos: 1.68559; zPos: 2.3618 }
- ListElement{ xPos: 0.58205; yPos: -0.769076; zPos: -0.958994 }
- ListElement{ xPos: -2.38512; yPos: -0.166005; zPos: -1.25855 }
- ListElement{ xPos: -0.556071; yPos: -2.28164; zPos: 1.57032 }
- ListElement{ xPos: 0.589172; yPos: -0.244834; zPos: 0.553728 }
- ListElement{ xPos: -0.468648; yPos: -0.927756; zPos: -0.737048 }
- ListElement{ xPos: -2.66659; yPos: -1.64374; zPos: -0.995568 }
- ListElement{ xPos: 0.251499; yPos: -1.24569; zPos: 0.95028 }
- ListElement{ xPos: 0.737721; yPos: 2.88575; zPos: 0.448918 }
- ListElement{ xPos: -0.634421; yPos: -1.84377; zPos: -2.47094 }
- ListElement{ xPos: 0.556349; yPos: 2.86774; zPos: 1.62621 }
- ListElement{ xPos: -3.29644; yPos: 3.28642; zPos: -3.45459 }
- ListElement{ xPos: -1.45045; yPos: 2.52138; zPos: 2.75329 }
- ListElement{ xPos: 1.87449; yPos: -2.68651; zPos: 3.60371 }
- ListElement{ xPos: -0.656424; yPos: -2.56828; zPos: 1.35509 }
- ListElement{ xPos: 1.95771; yPos: -1.48325; zPos: -3.85265 }
- ListElement{ xPos: 3.85074; yPos: 0.0825779; zPos: -1.65283 }
- ListElement{ xPos: -1.17278; yPos: -1.69258; zPos: -1.05875 }
- ListElement{ xPos: 1.25754; yPos: -0.0439433; zPos: 1.3571 }
- ListElement{ xPos: 2.91459; yPos: 2.08715; zPos: 0.259842 }
- ListElement{ xPos: 0.748196; yPos: 2.52132; zPos: 0.659051 }
- ListElement{ xPos: -1.85745; yPos: -1.88355; zPos: 1.05259 }
- ListElement{ xPos: 1.69311; yPos: 1.12299; zPos: -3.05453 }
- ListElement{ xPos: -2.86301; yPos: 0.123274; zPos: 0.559289 }
- ListElement{ xPos: -1.43146; yPos: 1.64425; zPos: -1.95053 }
- ListElement{ xPos: 2.35287; yPos: 0.414621; zPos: -0.950807 }
- ListElement{ xPos: 0.952585; yPos: -0.280452; zPos: -0.844588 }
- ListElement{ xPos: -1.53836; yPos: -1.76396; zPos: 2.51742 }
- ListElement{ xPos: -3.05431; yPos: 2.45; zPos: -0.26571 }
- ListElement{ xPos: -0.637412; yPos: 1.12028; zPos: -0.587387 }
- ListElement{ xPos: -1.71017; yPos: -0.728497; zPos: -1.05087 }
- ListElement{ xPos: 0.454027; yPos: 0.849208; zPos: -0.151716 }
- ListElement{ xPos: -3.54846; yPos: 0.367137; zPos: 1.1484 }
- ListElement{ xPos: 0.200816; yPos: -2.08832; zPos: 0.255433 }
- ListElement{ xPos: -2.15817; yPos: 0.725338; zPos: 0.852676 }
- ListElement{ xPos: -2.45708; yPos: -0.725538; zPos: -0.859435 }
- ListElement{ xPos: 4.25339; yPos: 1.84177; zPos: -0.555145 }
- ListElement{ xPos: 0.119319; yPos: -1.32041; zPos: -1.45864 }
- ListElement{ xPos: -3.65177; yPos: 0.361323; zPos: 0.351554 }
- ListElement{ xPos: 0.928598; yPos: 0.321024; zPos: -3.64759 }
- ListElement{ xPos: -0.250062; yPos: 1.84912; zPos: 0.949887 }
- ListElement{ xPos: 3.59593; yPos: 0.929451; zPos: -2.15224 }
- ListElement{ xPos: 0.658599; yPos: 2.36796; zPos: 4.11632 }
- ListElement{ xPos: 0.55841; yPos: -1.08657; zPos: 0.258326 }
- ListElement{ xPos: 1.9419; yPos: 0.0488641; zPos: -3.75375 }
- ListElement{ xPos: 0.0589998; yPos: 0.521351; zPos: -3.85723 }
- ListElement{ xPos: 3.45108; yPos: 0.562199; zPos: 4.20946 }
- ListElement{ xPos: -0.255073; yPos: 2.36504; zPos: -3.556 }
- ListElement{ xPos: 1.95848; yPos: 1.28698; zPos: 4.25014 }
- ListElement{ xPos: 1.85411; yPos: 3.12131; zPos: 0.652769 }
- ListElement{ xPos: -3.3589; yPos: 0.801817; zPos: -1.5591 }
- ListElement{ xPos: 2.48128; yPos: -0.163406; zPos: 1.25243 }
- ListElement{ xPos: 2.52135; yPos: 0.960467; zPos: 1.45432 }
- ListElement{ xPos: 0.827496; yPos: -0.163021; zPos: -0.558886 }
- ListElement{ xPos: -3.45032; yPos: -0.0831453; zPos: 0.851212 }
- ListElement{ xPos: -3.45334; yPos: 0.855944; zPos: 1.35596 }
- ListElement{ xPos: -0.834644; yPos: 0.245598; zPos: -1.23878 }
- ListElement{ xPos: 3.64558; yPos: 1.16831; zPos: -0.18559 }
- ListElement{ xPos: -1.45919; yPos: -3.08196; zPos: -0.329805 }
- ListElement{ xPos: -3.65715; yPos: -1.04485; zPos: 0.159208 }
- ListElement{ xPos: 1.35463; yPos: -0.766382; zPos: 0.558632 }
- ListElement{ xPos: -2.75899; yPos: -1.67431; zPos: -1.55069 }
- ListElement{ xPos: 1.67539; yPos: 2.04337; zPos: 0.912884 }
- ListElement{ xPos: 3.51677; yPos: -3.24285; zPos: 0.170272 }
- ListElement{ xPos: -4.25189; yPos: 0.56589; zPos: -4.35936 }
- ListElement{ xPos: -2.68545; yPos: -0.448243; zPos: 0.540342 }
- ListElement{ xPos: 0.279844; yPos: -0.641466; zPos: -0.353986 }
- ListElement{ xPos: -3.27626; yPos: -3.52006; zPos: 1.77644 }
- ListElement{ xPos: -0.724096; yPos: -1.84647; zPos: -2.45271 }
- ListElement{ xPos: -4.18603; yPos: 0.123376; zPos: 3.85066 }
- ListElement{ xPos: -4.05156; yPos: 0.0499386; zPos: -0.332945 }
- ListElement{ xPos: 2.69508; yPos: 2.32777; zPos: 1.26256 }
- ListElement{ xPos: -0.353726; yPos: 1.07252; zPos: -0.738837 }
- ListElement{ xPos: -0.947178; yPos: 0.36459; zPos: 1.55593 }
- ListElement{ xPos: -0.058346; yPos: 2.44781; zPos: -4.35023 }
- ListElement{ xPos: 1.51586; yPos: -0.961109; zPos: -3.43483 }
- ListElement{ xPos: -2.8852; yPos: 2.08863; zPos: -1.75468 }
- ListElement{ xPos: -0.297867; yPos: 0.722757; zPos: 0.91355 }
- ListElement{ xPos: -1.12917; yPos: -1.68328; zPos: 0.175315 }
- ListElement{ xPos: -1.24248; yPos: -0.323519; zPos: -0.854841 }
- ListElement{ xPos: 0.751943; yPos: 0.564075; zPos: 3.95073 }
- ListElement{ xPos: 1.15436; yPos: 2.81813; zPos: 0.653114 }
- ListElement{ xPos: -2.55058; yPos: -2.56486; zPos: 0.756618 }
- ListElement{ xPos: 0.959794; yPos: 0.845224; zPos: -0.854001 }
- ListElement{ xPos: -2.15033; yPos: 0.248556; zPos: -3.16151 }
- ListElement{ xPos: 0.353224; yPos: -1.68637; zPos: 0.457949 }
- ListElement{ xPos: -0.753237; yPos: -2.48313; zPos: -0.355373 }
- ListElement{ xPos: 0.296585; yPos: 2.04822; zPos: 0.198473 }
- ListElement{ xPos: -2.4737; yPos: 0.682952; zPos: 1.85349 }
- ListElement{ xPos: 1.9027; yPos: 0.882796; zPos: 1.45908 }
- ListElement{ xPos: 0.254799; yPos: 1.92572; zPos: -1.70848 }
- ListElement{ xPos: -0.951602; yPos: -0.698987; zPos: -2.22682 }
- ListElement{ xPos: 0.262582; yPos: -2.44093; zPos: 1.05636 }
- ListElement{ xPos: 0.385415; yPos: -0.685667; zPos: -3.35928 }
- ListElement{ xPos: 0.055981; yPos: 0.523585; zPos: -3.36093 }
- ListElement{ xPos: -0.0518635; yPos: -0.889068; zPos: -0.840648 }
- ListElement{ xPos: 0.455171; yPos: 2.84624; zPos: -1.98276 }
- ListElement{ xPos: 2.85475; yPos: -0.685697; zPos: -2.45695 }
- ListElement{ xPos: -1.05047; yPos: -1.92121; zPos: 0.931666 }
- ListElement{ xPos: -2.75962; yPos: -0.164458; zPos: -1.55261 }
- ListElement{ xPos: 1.91811; yPos: 1.65767; zPos: 3.15004 }
- ListElement{ xPos: -2.25653; yPos: 0.856735; zPos: -4.351 }
- ListElement{ xPos: 1.89178; yPos: -0.728669; zPos: -3.8803 }
- ListElement{ xPos: -3.25958; yPos: -1.16223; zPos: -1.85148 }
- ListElement{ xPos: -1.6291; yPos: -2.32967; zPos: -0.874786 }
- ListElement{ xPos: 3.17524; yPos: 0.327351; zPos: 2.15337 }
- ListElement{ xPos: -1.05094; yPos: -0.560694; zPos: -3.4581 }
- ListElement{ xPos: 0.759785; yPos: -1.0801; zPos: -0.257876 }
- ListElement{ xPos: -0.4597; yPos: -2.2404; zPos: 2.54341 }
- ListElement{ xPos: 0.242266; yPos: 0.121832; zPos: 0.780878 }
- ListElement{ xPos: -1.6573; yPos: 1.56049; zPos: -1.61749 }
- ListElement{ xPos: 1.39912; yPos: -2.84395; zPos: -0.25965 }
- ListElement{ xPos: 0.552342; yPos: 1.36924; zPos: 2.95278 }
- ListElement{ xPos: -1.92932; yPos: -0.883981; zPos: 0.0589583 }
- ListElement{ xPos: -1.9026; yPos: 0.56297; zPos: -0.723523 }
- ListElement{ xPos: -1.25867; yPos: -0.529617; zPos: 2.3503 }
- ListElement{ xPos: 2.16527; yPos: -0.723364; zPos: -1.45609 }
- ListElement{ xPos: -0.984608; yPos: -0.720375; zPos: -2.05144 }
- ListElement{ xPos: 0.946803; yPos: -0.969188; zPos: -3.14625 }
- ListElement{ xPos: 2.7986; yPos: -2.36069; zPos: 1.25827 }
- ListElement{ xPos: 3.37979; yPos: -1.11699; zPos: -3.55116 }
- ListElement{ xPos: -0.753992; yPos: -1.9649; zPos: 2.98548 }
- ListElement{ xPos: -0.456321; yPos: 0.525303; zPos: -0.109174 }
- ListElement{ xPos: 0.8642; yPos: 0.153147; zPos: -3.34749 }
- ListElement{ xPos: -0.450507; yPos: -0.443265; zPos: -2.8325 }
- ListElement{ xPos: -3.24876; yPos: 3.12791; zPos: 0.576143 }
- ListElement{ xPos: -3.14755; yPos: 2.84502; zPos: -0.45749 }
- ListElement{ xPos: 0.226819; yPos: -1.28172; zPos: 0.939501 }
- ListElement{ xPos: -0.650725; yPos: -1.40317; zPos: -1.35211 }
- ListElement{ xPos: -0.451625; yPos: 1.84271; zPos: -0.950536 }
- ListElement{ xPos: -1.36693; yPos: 0.850218; zPos: -1.09799 }
- ListElement{ xPos: 2.35374; yPos: -0.28759; zPos: 1.55815 }
- ListElement{ xPos: 2.60577; yPos: -2.46765; zPos: 1.2633 }
- ListElement{ xPos: 1.21562; yPos: -1.72153; zPos: -0.4034 }
- ListElement{ xPos: -2.43216; yPos: 3.04268; zPos: 1.90109 }
- ListElement{ xPos: -1.85365; yPos: -0.16523; zPos: -2.98947 }
- ListElement{ xPos: -0.953475; yPos: -2.76164; zPos: 2.53396 }
- ListElement{ xPos: 2.55264; yPos: -0.645611; zPos: 3.25479 }
- ListElement{ xPos: -0.675476; yPos: -0.724382; zPos: -1.4566 }
- ListElement{ xPos: 0.801062; yPos: 0.16778; zPos: 2.21815 }
- ListElement{ xPos: 0.680443; yPos: 0.0407888; zPos: 3.27279 }
- ListElement{ xPos: -3.75426; yPos: -0.247624; zPos: 0.26307 }
- ListElement{ xPos: 0.427609; yPos: -0.322312; zPos: 0.652005 }
- ListElement{ xPos: -2.17428; yPos: -3.68643; zPos: 0.256619 }
- ListElement{ xPos: 0.456732; yPos: -2.44858; zPos: 3.13051 }
- ListElement{ xPos: 0.524175; yPos: -1.88231; zPos: -1.93171 }
- ListElement{ xPos: 0.92311; yPos: 1.8354; zPos: -1.2502 }
- ListElement{ xPos: 2.69502; yPos: 2.25543; zPos: -4.25127 }
- ListElement{ xPos: 0.259357; yPos: 2.28099; zPos: -0.476734 }
- ListElement{ xPos: -0.327316; yPos: -1.24908; zPos: 0.78628 }
- ListElement{ xPos: 0.190362; yPos: -3.26019; zPos: 0.0545844 }
- ListElement{ xPos: -1.25409; yPos: -0.761609; zPos: 2.65361 }
- ListElement{ xPos: 2.86816; yPos: 0.443709; zPos: 0.556137 }
- ListElement{ xPos: 2.60289; yPos: -0.680561; zPos: 0.248414 }
- ListElement{ xPos: 1.75631; yPos: -0.162859; zPos: -3.62488 }
- ListElement{ xPos: -0.559754; yPos: -0.16222; zPos: 2.35858 }
- ListElement{ xPos: 0.157552; yPos: -1.72639; zPos: -0.48056 }
- ListElement{ xPos: 3.69492; yPos: -0.848265; zPos: -0.256413 }
- ListElement{ xPos: -1.4264; yPos: -1.48589; zPos: -2.724 }
- ListElement{ xPos: 1.15372; yPos: -0.27228; zPos: -2.75499 }
- ListElement{ xPos: -1.85159; yPos: 1.76577; zPos: -0.858854 }
- ListElement{ xPos: 0.0580466; yPos: -0.41133; zPos: 1.05649 }
- ListElement{ xPos: -1.25289; yPos: 0.528142; zPos: -0.386138 }
- ListElement{ xPos: -0.858101; yPos: -0.245127; zPos: 1.95078 }
- ListElement{ xPos: -1.95302; yPos: -0.0862415; zPos: -1.95806 }
- ListElement{ xPos: -2.79133; yPos: -0.527094; zPos: -0.356931 }
- ListElement{ xPos: 0.110597; yPos: 0.167534; zPos: 4.12784 }
- ListElement{ xPos: -0.637771; yPos: -0.526587; zPos: -1.25734 }
- ListElement{ xPos: -2.311; yPos: -0.489068; zPos: -2.8594 }
- ListElement{ xPos: -0.352617; yPos: -1.23939; zPos: -1.85435 }
- ListElement{ xPos: 1.78814; yPos: -0.265883; zPos: 3.35913 }
- ListElement{ xPos: 2.75557; yPos: -2.32271; zPos: 3.15559 }
- ListElement{ xPos: 2.85426; yPos: 0.443661; zPos: 0.921828 }
- ListElement{ xPos: -2.14262; yPos: 0.400863; zPos: 1.11614 }
- ListElement{ xPos: 4.45496; yPos: -0.488668; zPos: -3.7533 }
- ListElement{ xPos: 0.754719; yPos: -1.44165; zPos: 0.853323 }
- ListElement{ xPos: -0.856506; yPos: 1.76559; zPos: 1.05702 }
- ListElement{ xPos: -0.418565; yPos: -0.921031; zPos: -2.43699 }
- ListElement{ xPos: -1.29292; yPos: -0.282271; zPos: -1.62927 }
- ListElement{ xPos: -0.759531; yPos: 0.566692; zPos: -0.750991 }
- ListElement{ xPos: 0.559787; yPos: 1.72479; zPos: -0.26667 }
- ListElement{ xPos: 2.75533; yPos: -0.245187; zPos: -0.543844 }
- ListElement{ xPos: -2.27924; yPos: -1.04154; zPos: -4.05156 }
- ListElement{ xPos: 3.35852; yPos: -0.561129; zPos: -2.98986 }
- ListElement{ xPos: 2.41843; yPos: -0.321119; zPos: -1.55651 }
- ListElement{ xPos: 0.85431; yPos: -0.883719; zPos: -2.17826 }
- ListElement{ xPos: 0.417867; yPos: 0.242995; zPos: -0.456326 }
- ListElement{ xPos: -4.17449; yPos: -0.720086; zPos: 0.355145 }
- ListElement{ xPos: -0.577386; yPos: 0.0440364; zPos: -0.950268 }
- ListElement{ xPos: -2.8156; yPos: 2.92346; zPos: 0.958713 }
- ListElement{ xPos: -1.65138; yPos: 0.963561; zPos: 1.25265 }
- ListElement{ xPos: 1.45117; yPos: 0.845424; zPos: 0.252789 }
- ListElement{ xPos: 2.27848; yPos: -1.76777; zPos: 0.0117707 }
- ListElement{ xPos: -0.754248; yPos: 1.08381; zPos: -2.15345 }
- ListElement{ xPos: -3.15415; yPos: -0.162292; zPos: -1.15347 }
- ListElement{ xPos: 2.55396; yPos: -1.68912; zPos: 1.15698 }
- ListElement{ xPos: 0.159561; yPos: 1.84202; zPos: 0.428428 }
- ListElement{ xPos: -1.58079; yPos: 2.04207; zPos: 3.29578 }
- ListElement{ xPos: -1.05711; yPos: -0.843112; zPos: -1.98122 }
- ListElement{ xPos: 0.138866; yPos: -2.96642; zPos: -0.212247 }
- ListElement{ xPos: 2.6778; yPos: 0.686972; zPos: -2.6553 }
- ListElement{ xPos: -0.498291; yPos: -0.362846; zPos: -1.0538 }
- ListElement{ xPos: 1.19872; yPos: 0.0476518; zPos: -2.42077 }
- ListElement{ xPos: -2.3972; yPos: 1.40393; zPos: -0.1943 }
- ListElement{ xPos: 0.85034; yPos: -1.24222; zPos: 1.5646 }
- ListElement{ xPos: 0.142174; yPos: 0.249903; zPos: -2.75252 }
- ListElement{ xPos: 1.15197; yPos: 1.32746; zPos: -1.70104 }
- ListElement{ xPos: 0.359387; yPos: -1.65115; zPos: -2.75243 }
- ListElement{ xPos: 0.357917; yPos: -1.36406; zPos: 2.55102 }
- ListElement{ xPos: -1.65268; yPos: -0.28339; zPos: 2.75665 }
- ListElement{ xPos: -3.82681; yPos: -3.28984; zPos: 2.55128 }
- ListElement{ xPos: -2.61371; yPos: 1.08247; zPos: -0.457068 }
- ListElement{ xPos: 1.67152; yPos: -2.25527; zPos: 2.45819 }
- ListElement{ xPos: -0.753832; yPos: 1.1682; zPos: -1.95913 }
- ListElement{ xPos: -2.05131; yPos: 3.04537; zPos: 1.91954 }
- ListElement{ xPos: -0.695378; yPos: 2.88924; zPos: 1.41965 }
- ListElement{ xPos: 3.25767; yPos: -2.76934; zPos: -0.354127 }
- ListElement{ xPos: -0.746795; yPos: 1.36034; zPos: 1.85953 }
- ListElement{ xPos: 0.859135; yPos: 1.08222; zPos: 0.959116 }
- ListElement{ xPos: 1.15898; yPos: 1.32443; zPos: 3.41981 }
- ListElement{ xPos: 3.67954; yPos: 0.447177; zPos: -0.414029 }
- ListElement{ xPos: 0.907323; yPos: 2.12852; zPos: 1.95837 }
- ListElement{ xPos: -0.683456; yPos: -0.247536; zPos: 1.05621 }
- ListElement{ xPos: -1.67809; yPos: 0.641544; zPos: -1.31143 }
- ListElement{ xPos: -1.30192; yPos: -0.677394; zPos: -1.95159 }
- ListElement{ xPos: -0.105665; yPos: 0.365205; zPos: -1.2567 }
- ListElement{ xPos: 1.12189; yPos: -1.48969; zPos: 0.957166 }
- ListElement{ xPos: 1.25554; yPos: -1.92186; zPos: -0.904086 }
- ListElement{ xPos: 0.117786; yPos: 2.23836; zPos: -0.498009 }
- ListElement{ xPos: -2.85788; yPos: 0.643364; zPos: 0.55867 }
- ListElement{ xPos: -1.66115; yPos: 2.56146; zPos: -2.28632 }
- ListElement{ xPos: -3.29334; yPos: -0.0894367; zPos: -0.656519 }
- ListElement{ xPos: 3.15561; yPos: -0.769732; zPos: 1.15695 }
- ListElement{ xPos: 1.25684; yPos: 0.64652; zPos: -2.6002 }
- ListElement{ xPos: 2.65231; yPos: -3.52625; zPos: 1.55617 }
- ListElement{ xPos: -1.8573; yPos: -1.76276; zPos: -1.74075 }
- ListElement{ xPos: -1.55648; yPos: 1.2592; zPos: 2.1585 }
- ListElement{ xPos: -0.555522; yPos: 2.88068; zPos: -2.85423 }
- ListElement{ xPos: -3.14249; yPos: -0.288592; zPos: -3.35534 }
- ListElement{ xPos: 2.45413; yPos: 0.0854903; zPos: -2.20507 }
- ListElement{ xPos: -2.05464; yPos: 0.887836; zPos: -0.658349 }
- ListElement{ xPos: 1.12708; yPos: -0.568106; zPos: -3.65865 }
- ListElement{ xPos: -0.59147; yPos: -0.685439; zPos: 0.301612 }
- ListElement{ xPos: 0.473679; yPos: 0.886411; zPos: -1.65386 }
- ListElement{ xPos: 1.65166; yPos: 0.166741; zPos: 0.751119 }
- ListElement{ xPos: -0.299287; yPos: 1.72233; zPos: 0.618559 }
- ListElement{ xPos: 1.15181; yPos: -0.488026; zPos: 0.124448 }
- ListElement{ xPos: 0.0561315; yPos: 1.04877; zPos: 2.15922 }
- ListElement{ xPos: 0.154258; yPos: -0.64401; zPos: -1.31179 }
- ListElement{ xPos: 1.75863; yPos: -1.88571; zPos: -2.8537 }
- ListElement{ xPos: 3.35024; yPos: 1.28154; zPos: -1.05461 }
- ListElement{ xPos: -3.71738; yPos: -2.88631; zPos: -1.05314 }
- ListElement{ xPos: -1.78258; yPos: 3.08967; zPos: 0.150476 }
- ListElement{ xPos: 3.47828; yPos: -2.524; zPos: -2.45502 }
- ListElement{ xPos: -0.159138; yPos: 0.160633; zPos: -0.338796 }
- ListElement{ xPos: -2.15885; yPos: -0.82959; zPos: 1.25022 }
- ListElement{ xPos: -1.95268; yPos: -0.841195; zPos: -3.19487 }
- ListElement{ xPos: -0.281381; yPos: -0.887435; zPos: -3.55807 }
- ListElement{ xPos: 0.415164; yPos: 0.326482; zPos: -1.55411 }
- ListElement{ xPos: 1.92868; yPos: -2.84771; zPos: -0.556196 }
- ListElement{ xPos: 1.05804; yPos: 1.32866; zPos: 0.66596 }
- ListElement{ xPos: 2.46545; yPos: 1.00747; zPos: 2.35957 }
- ListElement{ xPos: -0.77358; yPos: 0.284677; zPos: -1.38805 }
- ListElement{ xPos: 0.851046; yPos: 0.960742; zPos: -2.70934 }
- ListElement{ xPos: -0.858208; yPos: -0.884015; zPos: 1.16663 }
- ListElement{ xPos: 1.55291; yPos: 0.282705; zPos: -3.18254 }
- ListElement{ xPos: 1.99034; yPos: 0.286298; zPos: -1.75821 }
- ListElement{ xPos: 0.259097; yPos: -2.04379; zPos: -0.858936 }
- ListElement{ xPos: -1.5956; yPos: 2.04693; zPos: -1.35234 }
- ListElement{ xPos: -0.775432; yPos: 1.24465; zPos: 1.95935 }
- ListElement{ xPos: 1.65595; yPos: -1.04954; zPos: -0.954437 }
- ListElement{ xPos: -2.35417; yPos: -1.76095; zPos: -0.248306 }
- ListElement{ xPos: 0.855717; yPos: -2.92161; zPos: 3.4496 }
- ListElement{ xPos: -0.717941; yPos: 2.52993; zPos: 1.25007 }
- ListElement{ xPos: -3.42927; yPos: 0.673305; zPos: 0.995742 }
- }
-
- ListModel {
- id: dataModelThree
- ListElement{ xPos: 8.00000; yPos: -2.05136; zPos: 4.02113 }
- ListElement{ xPos: 7.88929; yPos: -2.2029; zPos: 5.0000 }
- ListElement{ xPos: 7.61596; yPos: -2.44569; zPos: 4.54892 }
- ListElement{ xPos: 7.41949; yPos: -2.64169; zPos: 3.82339 }
- ListElement{ xPos: 7.21192; yPos: -2.87947; zPos: 4.89423 }
- ListElement{ xPos: 7.08346; yPos: -2.38649; zPos: 4.19212 }
- ListElement{ xPos: 6.90279; yPos: -3.33038; zPos: 4.9273 }
- ListElement{ xPos: 6.78959; yPos: -3.55575; zPos: 3.55127 }
- ListElement{ xPos: 6.57074; yPos: -3.75902; zPos: 3.32517 }
- ListElement{ xPos: 6.30756; yPos: -3.40499; zPos: 3.78366 }
- ListElement{ xPos: 7.90893; yPos: -3.3237; zPos: 2.48012 }
- ListElement{ xPos: 6.24078; yPos: -4.04978; zPos: 3.47459 }
- ListElement{ xPos: 7.93452; yPos: -4.6865; zPos: 4.08057 }
- ListElement{ xPos: 5.98731; yPos: -2.26113; zPos: 2.82166 }
- ListElement{ xPos: 5.46898; yPos: -3.99581; zPos: 3.25024 }
- ListElement{ xPos: 7.92353; yPos: -3.34471; zPos: 3.42168 }
- ListElement{ xPos: 6.8456; yPos: -5.00000; zPos: 2.36145 }
- ListElement{ xPos: 7.62888; yPos: -3.82465; zPos: 2.7879 }
- ListElement{ xPos: 7.18034; yPos: -3.94376; zPos: 2.74348 }
- ListElement{ xPos: 6.02527; yPos: -4.36523; zPos: 2.56247 }
- ListElement{ xPos: 7.82353; yPos: -3.04345; zPos: 2.62974 }
- ListElement{ xPos: 7.82539; yPos: -3.6881; zPos: 2.96164 }
- ListElement{ xPos: 7.10508; yPos: -3.6174; zPos: 4.22416 }
- ListElement{ xPos: 7.64684; yPos: -3.88431; zPos: 3.9336 }
- ListElement{ xPos: 7.46411; yPos: -4.21516; zPos: 3.32001 }
- ListElement{ xPos: 6.98777; yPos: -3.94024; zPos: 3.14694 }
- ListElement{ xPos: 7.36355; yPos: -4.24875; zPos: 1.72061 }
- ListElement{ xPos: 7.92773; yPos: -4.52065; zPos: 2.62078 }
- ListElement{ xPos: 6.04598; yPos: -4.48682; zPos: 2.74494 }
- ListElement{ xPos: 7.83353; yPos: -3.9271; zPos: 3.82815 }
- ListElement{ xPos: 6.76279; yPos: -3.58031; zPos: 2.92525 }
- ListElement{ xPos: 7.14794; yPos: -4.42742; zPos: 2.62365 }
- ListElement{ xPos: 5.32696; yPos: -3.28733; zPos: 3.34916 }
- ListElement{ xPos: 6.43655; yPos: -4.60784; zPos: 2.41548 }
- ListElement{ xPos: 5.66033; yPos: -4.98497; zPos: 3.72282 }
- }
-}
diff --git a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml
deleted file mode 100644
index 77576127..00000000
--- a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml
+++ /dev/null
@@ -1,244 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import QtDataVisualization 1.2
-import "."
-
-Item {
- id: mainView
- width: 1280
- height: 720
-
- Data {
- id: graphData
- }
-
- Item {
- id: dataView
- anchors.bottom: parent.bottom
- width: parent.width
- height: parent.height - buttonLayout.height
-
- //! [0]
- Scatter3D {
- //! [0]
- id: scatterGraph
- width: dataView.width
- height: dataView.height
- theme: Theme3D { type: Theme3D.ThemeDigia }
- shadowQuality: AbstractGraph3D.ShadowQualityMedium
- scene.activeCamera.yRotation: 30.0
- //! [1]
- inputHandler: null
- //! [1]
-
- Scatter3DSeries {
- id: scatterSeriesOne
- itemLabelFormat: "One - X:@xLabel Y:@yLabel Z:@zLabel"
- mesh: Abstract3DSeries.MeshCube
-
- ItemModelScatterDataProxy {
- itemModel: graphData.modelOne
- xPosRole: "xPos"
- yPosRole: "yPos"
- zPosRole: "zPos"
- }
- }
-
- Scatter3DSeries {
- id: scatterSeriesTwo
- itemLabelFormat: "Two - X:@xLabel Y:@yLabel Z:@zLabel"
- mesh: Abstract3DSeries.MeshCube
-
- ItemModelScatterDataProxy {
- itemModel: graphData.modelTwo
- xPosRole: "xPos"
- yPosRole: "yPos"
- zPosRole: "zPos"
- }
- }
-
- Scatter3DSeries {
- id: scatterSeriesThree
- itemLabelFormat: "Three - X:@xLabel Y:@yLabel Z:@zLabel"
- mesh: Abstract3DSeries.MeshCube
-
- ItemModelScatterDataProxy {
- itemModel: graphData.modelThree
- xPosRole: "xPos"
- yPosRole: "yPos"
- zPosRole: "zPos"
- }
- }
- }
-
- //! [2]
- MouseArea {
- id: inputArea
- anchors.fill: parent
- hoverEnabled: true
- acceptedButtons: Qt.LeftButton | Qt.RightButton
- property int mouseX: -1
- property int mouseY: -1
- //! [2]
-
- //! [3]
- onPositionChanged: (mouse)=> {
- mouseX = mouse.x;
- mouseY = mouse.y;
- }
- //! [3]
-
- //! [5]
- onWheel: (wheel)=> {
- // Adjust zoom level based on what zoom range we're in.
- var zoomLevel = scatterGraph.scene.activeCamera.zoomLevel;
- if (zoomLevel > 100)
- zoomLevel += wheel.angleDelta.y / 12.0;
- else if (zoomLevel > 50)
- zoomLevel += wheel.angleDelta.y / 60.0;
- else
- zoomLevel += wheel.angleDelta.y / 120.0;
- if (zoomLevel > 500)
- zoomLevel = 500;
- else if (zoomLevel < 10)
- zoomLevel = 10;
-
- scatterGraph.scene.activeCamera.zoomLevel = zoomLevel;
- }
- //! [5]
- }
-
- //! [4]
- Timer {
- id: reselectTimer
- interval: 10
- running: true
- repeat: true
- onTriggered: {
- scatterGraph.scene.selectionQueryPosition = Qt.point(inputArea.mouseX, inputArea.mouseY);
- }
- }
- //! [4]
- }
-
- //! [6]
- NumberAnimation {
- id: cameraAnimationX
- loops: Animation.Infinite
- running: true
- target: scatterGraph.scene.activeCamera
- property:"xRotation"
- from: 0.0
- to: 360.0
- duration: 20000
- }
- //! [6]
-
-
- //! [7]
- SequentialAnimation {
- id: cameraAnimationY
- loops: Animation.Infinite
- running: true
-
- NumberAnimation {
- target: scatterGraph.scene.activeCamera
- property:"yRotation"
- from: 5.0
- to: 45.0
- duration: 9000
- easing.type: Easing.InOutSine
- }
-
- NumberAnimation {
- target: scatterGraph.scene.activeCamera
- property:"yRotation"
- from: 45.0
- to: 5.0
- duration: 9000
- easing.type: Easing.InOutSine
- }
- }
- //! [7]
-
- RowLayout {
- id: buttonLayout
- Layout.minimumHeight: shadowToggle.height
- width: parent.width
- anchors.left: parent.left
- spacing: 0
-
- Button {
- id: shadowToggle
- Layout.fillHeight: true
- Layout.minimumWidth: parent.width / 3 // 3 buttons divided equally in the layout
- text: scatterGraph.shadowsSupported ? "Hide Shadows" : "Shadows not supported"
- enabled: scatterGraph.shadowsSupported
-
- onClicked: {
- if (scatterGraph.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
- scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityMedium;
- text = "Hide Shadows";
- } else {
- scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityNone;
- text = "Show Shadows";
- }
- }
- }
-
- Button {
- id: cameraToggle
- Layout.fillHeight: true
- Layout.minimumWidth: parent.width / 3
- text: "Pause Camera"
-
- onClicked: {
- cameraAnimationX.paused = !cameraAnimationX.paused;
- cameraAnimationY.paused = cameraAnimationX.paused;
- if (cameraAnimationX.paused) {
- text = "Animate Camera";
- } else {
- text = "Pause Camera";
- }
- }
- }
-
- Button {
- id: exitButton
- Layout.fillHeight: true
- Layout.minimumWidth: parent.width / 3
- text: "Quit"
- onClicked: Qt.quit();
- }
- }
-}
diff --git a/examples/datavisualization/qmlcustominput/qmlcustominput.pro b/examples/datavisualization/qmlcustominput/qmlcustominput.pro
deleted file mode 100644
index 356bb26f..00000000
--- a/examples/datavisualization/qmlcustominput/qmlcustominput.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-# The .cpp file which was generated for your project. Feel free to hack it.
-SOURCES += main.cpp
-
-RESOURCES += qmlcustominput.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- qml/qmlcustominput/*
diff --git a/examples/datavisualization/qmlcustominput/qmlcustominput.qrc b/examples/datavisualization/qmlcustominput/qmlcustominput.qrc
deleted file mode 100644
index d620a3d0..00000000
--- a/examples/datavisualization/qmlcustominput/qmlcustominput.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>qml/qmlcustominput/Data.qml</file>
- <file>qml/qmlcustominput/main.qml</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/qmllegend/CMakeLists.txt b/examples/datavisualization/qmllegend/CMakeLists.txt
deleted file mode 100644
index ed972f4b..00000000
--- a/examples/datavisualization/qmllegend/CMakeLists.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(qmllegend LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Qml)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(qmllegend
- main.cpp
-)
-set_target_properties(qmllegend PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(qmllegend PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Qml
- Qt::Quick
- Qt::DataVisualization
-)
-
-set(qmllegend_resource_files
- "qml/qmllegend/Data.qml"
- "qml/qmllegend/LegendItem.qml"
- "qml/qmllegend/main.qml"
-)
-
-qt6_add_resources(qmllegend "qmllegend"
- PREFIX
- "/"
- FILES
- ${qmllegend_resource_files}
-)
-
-install(TARGETS qmllegend
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/qmllegend/doc/images/qmllegend-example.png b/examples/datavisualization/qmllegend/doc/images/qmllegend-example.png
deleted file mode 100644
index ee546077..00000000
--- a/examples/datavisualization/qmllegend/doc/images/qmllegend-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmllegend/doc/src/qmllegend.qdoc b/examples/datavisualization/qmllegend/doc/src/qmllegend.qdoc
deleted file mode 100644
index f7aa1458..00000000
--- a/examples/datavisualization/qmllegend/doc/src/qmllegend.qdoc
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qmllegend
- \title Qt Quick 2 Legend Example
- \ingroup qtdatavisualization_examples
- \brief Showing graph legend in a QML application.
-
- The Qt Quick 2 legend example shows how to make an interactive legend for a graph.
-
- \image qmllegend-example.png
-
- The interesting thing about this example is displaying the legend. We'll concentrate on
- that and skip explaining the basic functionality - for
- more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
-
- \include examples-run.qdocinc
-
- \section1 Legend
-
- The legend is simply a column of custom \c LegendItem items inside a transparent rectangle.
- Each item is supplied with a series and the graph theme:
-
- \snippet qmllegend/qml/qmllegend/main.qml 0
-
- The legend items consist of a marker rectangle, which indicates the color of the series,
- and a text field, which shows the name of the series. The colors we get from the series and
- the theme supplied at legend item initialization:
-
- \snippet qmllegend/qml/qmllegend/LegendItem.qml 0
- \dots 4
- \snippet qmllegend/qml/qmllegend/LegendItem.qml 1
-
- We want the legend to be interactive, so we add additional logic to enable selection of a
- series by clicking on a legend item, as well as highlighting the legend item corresponding
- to the selected series.
-
- The highlight depends on the selection state of the series, so we define two states, which
- follow the Bar3DSeries::selectedBar property and adjust the \c legendItem color appropriately:
-
- \snippet qmllegend/qml/qmllegend/LegendItem.qml 3
-
- To make the legend item interactive, we define a MouseArea to detect clicks on it and adjust
- the series selection accordingly:
-
- \snippet qmllegend/qml/qmllegend/LegendItem.qml 2
-
- The \c previousSelection used above is another custom property of \c LegendItem, which we update
- whenever selection changes on the series. This way we remember the last selected bar of
- each series:
-
- \snippet qmllegend/qml/qmllegend/LegendItem.qml 4
-*/
diff --git a/examples/datavisualization/qmllegend/main.cpp b/examples/datavisualization/qmllegend/main.cpp
deleted file mode 100644
index 65cd90ab..00000000
--- a/examples/datavisualization/qmllegend/main.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlEngine>
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- QQuickView viewer;
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
- QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
-
- viewer.setTitle(QStringLiteral("Legend example"));
-
- viewer.setSource(QUrl("qrc:/qml/qmllegend/main.qml"));
- viewer.setResizeMode(QQuickView::SizeRootObjectToView);
- viewer.show();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qmllegend/qml/qmllegend/Data.qml b/examples/datavisualization/qmllegend/qml/qmllegend/Data.qml
deleted file mode 100644
index 1bb3d056..00000000
--- a/examples/datavisualization/qmllegend/qml/qmllegend/Data.qml
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-
-Item {
- property alias model: dataModel
-
- ListModel {
- id: dataModel
- ListElement{ year: "2010"; month: "Jan"; s1: "-14"; s2: "-15"; s3: "-15" }
- ListElement{ year: "2010"; month: "Feb"; s1: "-15"; s2: "-16"; s3: "-9" }
- ListElement{ year: "2010"; month: "Mar"; s1: "-7"; s2: "-4"; s3: "-2" }
- ListElement{ year: "2010"; month: "Apr"; s1: "3"; s2: "2"; s3: "2" }
- ListElement{ year: "2010"; month: "May"; s1: "7"; s2: "9"; s3: "10" }
- ListElement{ year: "2010"; month: "Jun"; s1: "12"; s2: "13"; s3: "22" }
- ListElement{ year: "2010"; month: "Jul"; s1: "18"; s2: "19"; s3: "24" }
- ListElement{ year: "2010"; month: "Aug"; s1: "15"; s2: "13"; s3: "16" }
- ListElement{ year: "2010"; month: "Sep"; s1: "6"; s2: "3"; s3: "4" }
- ListElement{ year: "2010"; month: "Oct"; s1: "1"; s2: "2"; s3: "-2" }
- ListElement{ year: "2010"; month: "Nov"; s1: "-2"; s2: "-5"; s3: "-6" }
- ListElement{ year: "2010"; month: "Dec"; s1: "-3"; s2: "-3"; s3: "-9" }
-
- ListElement{ year: "2011"; month: "Jan"; s1: "-12"; s2: "-11"; s3: "-14" }
- ListElement{ year: "2011"; month: "Feb"; s1: "-13"; s2: "-12"; s3: "-10" }
- ListElement{ year: "2011"; month: "Mar"; s1: "-6"; s2: "-4"; s3: "-3" }
- ListElement{ year: "2011"; month: "Apr"; s1: "0"; s2: "1"; s3: "3" }
- ListElement{ year: "2011"; month: "May"; s1: "4"; s2: "12"; s3: "11" }
- ListElement{ year: "2011"; month: "Jun"; s1: "9"; s2: "17"; s3: "23" }
- ListElement{ year: "2011"; month: "Jul"; s1: "15"; s2: "22"; s3: "25" }
- ListElement{ year: "2011"; month: "Aug"; s1: "12"; s2: "15"; s3: "12" }
- ListElement{ year: "2011"; month: "Sep"; s1: "2"; s2: "4"; s3: "7" }
- ListElement{ year: "2011"; month: "Oct"; s1: "-2"; s2: "4"; s3: "-4" }
- ListElement{ year: "2011"; month: "Nov"; s1: "-4"; s2: "-8"; s3: "-5" }
- ListElement{ year: "2011"; month: "Dec"; s1: "-6"; s2: "-6"; s3: "-7" }
-
- ListElement{ year: "2012"; month: "Jan"; s1: "-10"; s2: "-19"; s3: "-11" }
- ListElement{ year: "2012"; month: "Feb"; s1: "-11"; s2: "-17"; s3: "-4" }
- ListElement{ year: "2012"; month: "Mar"; s1: "-6"; s2: "-3"; s3: "-1" }
- ListElement{ year: "2012"; month: "Apr"; s1: "5"; s2: "1"; s3: "2" }
- ListElement{ year: "2012"; month: "May"; s1: "9"; s2: "12"; s3: "13" }
- ListElement{ year: "2012"; month: "Jun"; s1: "11"; s2: "16"; s3: "26" }
- ListElement{ year: "2012"; month: "Jul"; s1: "18"; s2: "20"; s3: "23" }
- ListElement{ year: "2012"; month: "Aug"; s1: "19"; s2: "12"; s3: "12" }
- ListElement{ year: "2012"; month: "Sep"; s1: "9"; s2: "1"; s3: "3" }
- ListElement{ year: "2012"; month: "Oct"; s1: "-3"; s2: "2"; s3: "-1" }
- ListElement{ year: "2012"; month: "Nov"; s1: "-5"; s2: "-4"; s3: "-3" }
- ListElement{ year: "2012"; month: "Dec"; s1: "-7"; s2: "-2"; s3: "-4" }
-
- ListElement{ year: "2013"; month: "Jan"; s1: "-18"; s2: "-19"; s3: "-19" }
- ListElement{ year: "2013"; month: "Feb"; s1: "-17"; s2: "-19"; s3: "-12" }
- ListElement{ year: "2013"; month: "Mar"; s1: "-9"; s2: "-6"; s3: "-5" }
- ListElement{ year: "2013"; month: "Apr"; s1: "0"; s2: "0"; s3: "0" }
- ListElement{ year: "2013"; month: "May"; s1: "4"; s2: "7"; s3: "9" }
- ListElement{ year: "2013"; month: "Jun"; s1: "9"; s2: "11"; s3: "18" }
- ListElement{ year: "2013"; month: "Jul"; s1: "13"; s2: "15"; s3: "20" }
- ListElement{ year: "2013"; month: "Aug"; s1: "10"; s2: "11"; s3: "13" }
- ListElement{ year: "2013"; month: "Sep"; s1: "3"; s2: "1"; s3: "2" }
- ListElement{ year: "2013"; month: "Oct"; s1: "0"; s2: "1"; s3: "-4" }
- ListElement{ year: "2013"; month: "Nov"; s1: "-5"; s2: "-6"; s3: "-5" }
- ListElement{ year: "2013"; month: "Dec"; s1: "-6"; s2: "-7"; s3: "-10" }
- }
-}
diff --git a/examples/datavisualization/qmllegend/qml/qmllegend/LegendItem.qml b/examples/datavisualization/qmllegend/qml/qmllegend/LegendItem.qml
deleted file mode 100644
index 714b1e78..00000000
--- a/examples/datavisualization/qmllegend/qml/qmllegend/LegendItem.qml
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Window
-import QtDataVisualization 1.2
-
-Rectangle {
- //! [0]
- property Theme3D theme
- property Bar3DSeries series
- //! [0]
- property point previousSelection
-
- id: legendItem
- state: "unselected"
-
- // Workaround for a layout bug that in some situations causes changing from fully opaque color
- // to a transparent one to use black background instead of what is actually under the items.
- // Having the control always slighthly transparent forces the background to be refreshed
- // properly.
- opacity: 0.999
-
- //! [1]
- RowLayout {
- anchors.fill: parent
- spacing: 0
- clip: true
- Item {
- id: markerSpace
- Layout.minimumWidth: 20
- Layout.minimumHeight: 20
- Layout.fillWidth: true
- Layout.fillHeight: true
- Layout.alignment: Qt.AlignVCenter
- Rectangle {
- x: parent.x + parent.width / 4
- y: parent.y + parent.height / 4
- width: parent.width / 2
- height: width
- border.color: "black"
- color: series.baseColor
- }
- }
- Item {
- height: markerSpace.height
- Layout.fillWidth: true
- Layout.fillHeight: true
- Layout.alignment: Qt.AlignVCenter
- Layout.minimumWidth: 100
- Text {
- anchors.fill: parent
- text: series.name
- verticalAlignment: Text.AlignVCenter
- clip: true
- color: theme.labelTextColor
- font: theme.font
- }
- }
- }
- //! [1]
-
- //! [2]
- MouseArea {
- id: mouseArea
- anchors.fill: legendItem
- onClicked: {
- if (legendItem.state === "selected") {
- series.selectedBar = series.invalidSelectionPosition
- } else {
- series.selectedBar = previousSelection
- }
- }
- }
- //! [2]
-
- //! [4]
- Connections {
- target: series
- function onSelectedBarChanged(position) {
- if (position !== series.invalidSelectionPosition) {
- previousSelection = position
- }
- }
- }
- //! [4]
-
- //! [3]
- states: [
- State {
- name: "selected"
- when: series.selectedBar != series.invalidSelectionPosition
- PropertyChanges {
- target: legendItem
- color: series.singleHighlightColor
- }
- },
- State {
- name: "unselected"
- when: series.selectedBar == series.invalidSelectionPosition
- PropertyChanges {
- target: legendItem
- color: theme.labelBackgroundColor
- }
- }
- ]
- //! [3]
-}
diff --git a/examples/datavisualization/qmllegend/qml/qmllegend/main.qml b/examples/datavisualization/qmllegend/qml/qmllegend/main.qml
deleted file mode 100644
index 5245fd67..00000000
--- a/examples/datavisualization/qmllegend/qml/qmllegend/main.qml
+++ /dev/null
@@ -1,241 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import QtDataVisualization 1.2
-import "."
-
-Item {
- id: mainView
- width: 800
- height: 600
-
- property int buttonLayoutHeight: 180;
-
- Data {
- id: graphData
- }
-
- Theme3D {
- id: firstTheme
- type: Theme3D.ThemeQt
- }
-
- Theme3D {
- id: secondTheme
- type: Theme3D.ThemeEbony
- }
-
- Item {
- id: dataView
- anchors.fill: parent
-
- Bars3D {
- id: barGraph
- anchors.fill: parent
- selectionMode: AbstractGraph3D.SelectionItemAndRow
- scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
- theme: firstTheme
- valueAxis.labelFormat: "%d\u00B0C"
-
- Bar3DSeries {
- id: station1
- name: "Station 1"
- itemLabelFormat: "Temperature at @seriesName for @colLabel, @rowLabel: @valueLabel"
-
- ItemModelBarDataProxy {
- itemModel: graphData.model
- rowRole: "year"
- columnRole: "month"
- valueRole: "s1"
- }
- }
- Bar3DSeries {
- id: station2
- name: "Station 2"
- itemLabelFormat: "Temperature at @seriesName for @colLabel, @rowLabel: @valueLabel"
-
- ItemModelBarDataProxy {
- itemModel: graphData.model
- rowRole: "year"
- columnRole: "month"
- valueRole: "s2"
- }
- }
- Bar3DSeries {
- id: station3
- name: "Station 3"
- itemLabelFormat: "Temperature at @seriesName for @colLabel, @rowLabel: @valueLabel"
-
- ItemModelBarDataProxy {
- itemModel: graphData.model
- rowRole: "year"
- columnRole: "month"
- valueRole: "s2"
- }
- }
- }
- }
-
- Rectangle {
- property int legendLocation: 3
- // Make the height and width fractional of main view height and width.
- // Reverse the relation if screen is in portrait - this makes legend look the same
- // if the orientation is rotated.
- property int fractionalHeight: mainView.width > mainView.height ? mainView.height / 5 : mainView.width / 5
- property int fractionalWidth: mainView.width > mainView.height ? mainView.width / 5 : mainView.height / 5
-
- id: legendPanel
- width: fractionalWidth > 150 ? fractionalWidth : 150
- // Adjust legendpanel height to avoid gaps between layouted items.
- height: fractionalHeight > 99 ? fractionalHeight - fractionalHeight % 3 : 99
- border.color: barGraph.theme.labelTextColor
- border.width: 3
- color: "#00000000" // Transparent
-
- //! [0]
- ColumnLayout {
- anchors.fill: parent
- anchors.margins: parent.border.width
- spacing: 0
- clip: true
- LegendItem {
- Layout.fillWidth: true
- Layout.fillHeight: true
- series: station1
- theme: barGraph.theme
- }
- LegendItem {
- Layout.fillWidth: true
- Layout.fillHeight: true
- series: station2
- theme: barGraph.theme
- }
- LegendItem {
- Layout.fillWidth: true
- Layout.fillHeight: true
- series: station3
- theme: barGraph.theme
- }
- }
- //! [0]
-
- states: [
- State {
- name: "topleft"
- when: legendPanel.legendLocation === 1
- AnchorChanges {
- target: legendPanel
- anchors.top: buttonLayout.bottom
- anchors.bottom: undefined
- anchors.left: dataView.left
- anchors.right: undefined
- }
- },
- State {
- name: "topright"
- when: legendPanel.legendLocation === 2
- AnchorChanges {
- target: legendPanel
- anchors.top: buttonLayout.bottom
- anchors.bottom: undefined
- anchors.left: undefined
- anchors.right: dataView.right
- }
- },
- State {
- name: "bottomleft"
- when: legendPanel.legendLocation === 3
- AnchorChanges {
- target: legendPanel
- anchors.top: undefined
- anchors.bottom: dataView.bottom
- anchors.left: dataView.left
- anchors.right: undefined
- }
- },
- State {
- name: "bottomright"
- when: legendPanel.legendLocation === 4
- AnchorChanges {
- target: legendPanel
- anchors.top: undefined
- anchors.bottom: dataView.bottom
- anchors.left: undefined
- anchors.right: dataView.right
- }
- }
- ]
- }
-
- RowLayout {
- id: buttonLayout
- Layout.minimumHeight: themeToggle.height
- width: parent.width
- anchors.left: parent.left
- spacing: 0
-
- Button {
- id: themeToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Change Theme"
- onClicked: {
- if (barGraph.theme === firstTheme) {
- barGraph.theme = secondTheme
- } else {
- barGraph.theme = firstTheme
- }
- }
- }
- Button {
- id: repositionLegend
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Reposition Legend"
- onClicked: {
- if (legendPanel.legendLocation === 4) {
- legendPanel.legendLocation = 1
- } else {
- legendPanel.legendLocation++
- }
- }
- }
- Button {
- id: exitButton
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Quit"
- onClicked: Qt.quit();
- }
- }
-
-}
diff --git a/examples/datavisualization/qmllegend/qmllegend.pro b/examples/datavisualization/qmllegend/qmllegend.pro
deleted file mode 100644
index af449d8d..00000000
--- a/examples/datavisualization/qmllegend/qmllegend.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-# The .cpp file which was generated for your project. Feel free to hack it.
-SOURCES += main.cpp
-
-RESOURCES += qmllegend.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- qml/qmllegend/*
-
diff --git a/examples/datavisualization/qmllegend/qmllegend.qrc b/examples/datavisualization/qmllegend/qmllegend.qrc
deleted file mode 100644
index e9b0f4b9..00000000
--- a/examples/datavisualization/qmllegend/qmllegend.qrc
+++ /dev/null
@@ -1,7 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>qml/qmllegend/Data.qml</file>
- <file>qml/qmllegend/LegendItem.qml</file>
- <file>qml/qmllegend/main.qml</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/qmlmultigraph/CMakeLists.txt b/examples/datavisualization/qmlmultigraph/CMakeLists.txt
deleted file mode 100644
index 388c5df2..00000000
--- a/examples/datavisualization/qmlmultigraph/CMakeLists.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(qmlmultigraph LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Qml)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(qmlmultigraph
- main.cpp
-)
-set_target_properties(qmlmultigraph PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(qmlmultigraph PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Qml
- Qt::Quick
- Qt::DataVisualization
-)
-
-set(qmlmultigraph_resource_files
- "qml/qmlmultigraph/Data.qml"
- "qml/qmlmultigraph/main.qml"
-)
-
-qt6_add_resources(qmlmultigraph "qmlmultigraph"
- PREFIX
- "/"
- FILES
- ${qmlmultigraph_resource_files}
-)
-
-install(TARGETS qmlmultigraph
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/qmlmultigraph/doc/images/qmlmultigraph-example.png b/examples/datavisualization/qmlmultigraph/doc/images/qmlmultigraph-example.png
deleted file mode 100644
index 79073f5f..00000000
--- a/examples/datavisualization/qmlmultigraph/doc/images/qmlmultigraph-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlmultigraph/doc/src/qmlmultigraph.qdoc b/examples/datavisualization/qmlmultigraph/doc/src/qmlmultigraph.qdoc
deleted file mode 100644
index 64985c21..00000000
--- a/examples/datavisualization/qmlmultigraph/doc/src/qmlmultigraph.qdoc
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qmlmultigraph
- \title Qt Quick 2 Multiple Graphs Example
- \ingroup qtdatavisualization_examples
- \brief Showing multiple graphs simultaneously in a QML application.
-
- The Qt Quick 2 multiple graphs example demonstrates using multiple graphs in single window.
-
- \image qmlmultigraph-example.png
-
- The interesting thing about this example is demonstrating that multiple graphs can be used
- simultaneously, so most functionality is not explained in detail.
- For more detailed QML example documentation, see \l{Qt Quick 2 Scatter Example}.
-
- \include examples-run.qdocinc
-
- \section1 Multiple Graphs
-
- Using multiple graphs in a single application doesn't require anything special, simply define
- and position the graphs as normal. In this example the graphs are shown in a 2 x 2 grid with
- \c{GridLayout}:
-
- \snippet qmlmultigraph/qml/qmlmultigraph/main.qml 0
-
- Each graph has a parent \c Rectangle item to provide it with a border.
-
- Note that one of the grid cells is used for buttons in an another \c{GridLayout}.
-*/
diff --git a/examples/datavisualization/qmlmultigraph/main.cpp b/examples/datavisualization/qmlmultigraph/main.cpp
deleted file mode 100644
index 188eda01..00000000
--- a/examples/datavisualization/qmlmultigraph/main.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlEngine>
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- QQuickView viewer;
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
- QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
-
- viewer.setTitle(QStringLiteral("QML multigraph example"));
- viewer.setSource(QUrl("qrc:/qml/qmlmultigraph/main.qml"));
- viewer.setResizeMode(QQuickView::SizeRootObjectToView);
- viewer.show();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/Data.qml b/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/Data.qml
deleted file mode 100644
index 61ca12fd..00000000
--- a/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/Data.qml
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-
-Item {
- property alias sharedData: dataModel
-
- ListModel {
- id: dataModel
- ListElement{ row: "0"; col: "0"; longitude: "20.0"; latitude: "10.0"; pop_density: "4.75"; }
- ListElement{ row: "1"; col: "0"; longitude: "21.1"; latitude: "10.3"; pop_density: "3.00"; }
- ListElement{ row: "2"; col: "0"; longitude: "22.5"; latitude: "10.7"; pop_density: "1.24"; }
- ListElement{ row: "3"; col: "0"; longitude: "24.0"; latitude: "10.5"; pop_density: "2.53"; }
- ListElement{ row: "0"; col: "1"; longitude: "20.2"; latitude: "11.2"; pop_density: "3.55"; }
- ListElement{ row: "1"; col: "1"; longitude: "21.3"; latitude: "11.5"; pop_density: "3.03"; }
- ListElement{ row: "2"; col: "1"; longitude: "22.6"; latitude: "11.7"; pop_density: "3.46"; }
- ListElement{ row: "3"; col: "1"; longitude: "23.4"; latitude: "11.5"; pop_density: "4.12"; }
- ListElement{ row: "0"; col: "2"; longitude: "20.2"; latitude: "12.3"; pop_density: "3.37"; }
- ListElement{ row: "1"; col: "2"; longitude: "21.1"; latitude: "12.4"; pop_density: "2.98"; }
- ListElement{ row: "2"; col: "2"; longitude: "22.5"; latitude: "12.1"; pop_density: "3.33"; }
- ListElement{ row: "3"; col: "2"; longitude: "23.3"; latitude: "12.7"; pop_density: "3.23"; }
- ListElement{ row: "0"; col: "3"; longitude: "20.7"; latitude: "13.3"; pop_density: "5.34"; }
- ListElement{ row: "1"; col: "3"; longitude: "21.5"; latitude: "13.2"; pop_density: "4.54"; }
- ListElement{ row: "2"; col: "3"; longitude: "22.4"; latitude: "13.6"; pop_density: "4.65"; }
- ListElement{ row: "3"; col: "3"; longitude: "23.2"; latitude: "13.4"; pop_density: "6.67"; }
- ListElement{ row: "0"; col: "4"; longitude: "20.6"; latitude: "15.0"; pop_density: "6.01"; }
- ListElement{ row: "1"; col: "4"; longitude: "21.3"; latitude: "14.6"; pop_density: "5.83"; }
- ListElement{ row: "2"; col: "4"; longitude: "22.5"; latitude: "14.8"; pop_density: "7.32"; }
- ListElement{ row: "3"; col: "4"; longitude: "23.7"; latitude: "14.3"; pop_density: "6.90"; }
- }
-}
-
diff --git a/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/main.qml b/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/main.qml
deleted file mode 100644
index f30b1739..00000000
--- a/examples/datavisualization/qmlmultigraph/qml/qmlmultigraph/main.qml
+++ /dev/null
@@ -1,225 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import QtDataVisualization 1.2
-import "."
-
-Item {
- id: mainView
- width: 800
- height: 600
-
- Data {
- id: data
- }
-
- //! [0]
- GridLayout {
- id: gridLayout
- columns: 2
- Layout.fillHeight: true
- Layout.fillWidth: true
- anchors.top: mainView.top
- anchors.bottom: mainView.bottom
- anchors.left: mainView.left
- anchors.right: mainView.right
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- border.color: surfaceGraph.theme.gridLineColor
- border.width: 2
- color: "#00000000"
-
- Surface3D {
- id: surfaceGraph
- anchors.fill: parent
- anchors.margins: parent.border.width
- theme: Theme3D {
- type: Theme3D.ThemePrimaryColors
- font.pointSize: 60
- }
- scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
-
- Surface3DSeries {
- itemLabelFormat: "Pop density at (@xLabel N, @zLabel E): @yLabel"
- ItemModelSurfaceDataProxy {
- itemModel: data.sharedData
- // The surface data points are not neatly lined up in rows and columns,
- // so we define explicit row and column roles.
- rowRole: "row"
- columnRole: "col"
- xPosRole: "latitude"
- zPosRole: "longitude"
- yPosRole: "pop_density"
- }
- }
- }
- }
-
- // We'll use one grid cell for buttons
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
-
- GridLayout {
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.top: parent.top
- anchors.bottom: parent.bottom
- columns: 2
-
- Button {
- Layout.minimumWidth: parent.width / 2
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Clear Selections"
- onClicked: clearSelections() // call a helper function to keep button itself simpler
- }
-
- Button {
- Layout.minimumWidth: parent.width / 2
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Quit"
- onClicked: Qt.quit();
- }
-
- Button {
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Reset Cameras"
- onClicked: resetCameras() // call a helper function to keep button itself simpler
- }
-
- Button {
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Toggle Mesh Styles"
- onClicked: toggleMeshStyle() // call a helper function to keep button itself simpler
- }
- }
- }
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- border.color: scatterGraph.theme.gridLineColor
- border.width: 2
- color: "#00000000"
-
- Scatter3D {
- id: scatterGraph
- anchors.fill: parent
- anchors.margins: parent.border.width
- theme: Theme3D {
- type: Theme3D.ThemeDigia
- font.pointSize: 60
- }
- scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
-
- Scatter3DSeries {
- itemLabelFormat: "Pop density at (@xLabel N, @zLabel E): @yLabel"
- ItemModelScatterDataProxy {
- itemModel: data.sharedData
- // Mapping model roles to scatter series item coordinates.
- xPosRole: "latitude"
- zPosRole: "longitude"
- yPosRole: "pop_density"
- }
- }
- }
- }
-
- Rectangle {
- Layout.fillHeight: true
- Layout.fillWidth: true
- border.color: barGraph.theme.gridLineColor
- border.width: 2
- color: "#00000000"
-
- Bars3D {
- id: barGraph
- anchors.fill: parent
- anchors.margins: parent.border.width
- theme: Theme3D {
- type: Theme3D.ThemeQt
- font.pointSize: 60
- }
- selectionMode: AbstractGraph3D.SelectionItemAndRow | AbstractGraph3D.SelectionSlice
- scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
-
- Bar3DSeries {
- itemLabelFormat: "@seriesName: @valueLabel"
- name: "Population density"
-
- ItemModelBarDataProxy {
- itemModel: data.sharedData
- // Mapping model roles to bar series rows, columns, and values.
- rowRole: "row"
- columnRole: "col"
- valueRole: "pop_density"
- }
- }
- }
- }
- }
- //! [0]
-
- function clearSelections() {
- barGraph.clearSelection()
- scatterGraph.clearSelection()
- surfaceGraph.clearSelection()
- }
-
- function resetCameras() {
- surfaceGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh
- scatterGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh
- barGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh
- surfaceGraph.scene.activeCamera.zoomLevel = 100.0
- scatterGraph.scene.activeCamera.zoomLevel = 100.0
- barGraph.scene.activeCamera.zoomLevel = 100.0
- }
-
- function toggleMeshStyle() {
- if (barGraph.seriesList[0].meshSmooth === true) {
- barGraph.seriesList[0].meshSmooth = false
- if (surfaceGraph.seriesList[0].flatShadingSupported)
- surfaceGraph.seriesList[0].flatShadingEnabled = true
- scatterGraph.seriesList[0].meshSmooth = false
- } else {
- barGraph.seriesList[0].meshSmooth = true
- surfaceGraph.seriesList[0].flatShadingEnabled = false
- scatterGraph.seriesList[0].meshSmooth = true
- }
- }
-}
diff --git a/examples/datavisualization/qmlmultigraph/qmlmultigraph.pro b/examples/datavisualization/qmlmultigraph/qmlmultigraph.pro
deleted file mode 100644
index 8cc4c60c..00000000
--- a/examples/datavisualization/qmlmultigraph/qmlmultigraph.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-# The .cpp file which was generated for your project. Feel free to hack it.
-SOURCES += main.cpp
-
-RESOURCES += qmlmultigraph.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- qml/qmlmultigraph/*
diff --git a/examples/datavisualization/qmlmultigraph/qmlmultigraph.qrc b/examples/datavisualization/qmlmultigraph/qmlmultigraph.qrc
deleted file mode 100644
index a1ac4cc0..00000000
--- a/examples/datavisualization/qmlmultigraph/qmlmultigraph.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>qml/qmlmultigraph/Data.qml</file>
- <file>qml/qmlmultigraph/main.qml</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/qmlscatter/CMakeLists.txt b/examples/datavisualization/qmlscatter/CMakeLists.txt
index 65e5d2a7..381ffd79 100644
--- a/examples/datavisualization/qmlscatter/CMakeLists.txt
+++ b/examples/datavisualization/qmlscatter/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
cmake_minimum_required(VERSION 3.16)
project(qmlscatter LANGUAGES CXX)
@@ -34,16 +37,13 @@ target_link_libraries(qmlscatter PUBLIC
Qt::DataVisualization
)
-set(qmlscatter_resource_files
- "qml/qmlscatter/Data.qml"
- "qml/qmlscatter/main.qml"
-)
-
-qt6_add_resources(qmlscatter "qmlscatter"
- PREFIX
- "/"
- FILES
- ${qmlscatter_resource_files}
+qt6_add_qml_module(qmlscatter
+ URI Scatter
+ VERSION 1.0
+ NO_RESOURCE_TARGET_PATH
+ QML_FILES
+ qml/qmlscatter/Data.qml
+ qml/qmlscatter/main.qml
)
install(TARGETS qmlscatter
diff --git a/examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.png b/examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.png
index 65ec4816..5d5de700 100644
--- a/examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.png
+++ b/examples/datavisualization/qmlscatter/doc/images/qmlscatter-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc b/examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc
index 95d2bc66..980fc60d 100644
--- a/examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc
+++ b/examples/datavisualization/qmlscatter/doc/src/qmlscatter.qdoc
@@ -1,42 +1,20 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\example qmlscatter
- \title Qt Quick 2 Scatter Example
- \ingroup qtdatavisualization_examples
+ \meta tags {DataVisualization, Scatter3D, Multiple Series}
+ \title Simple Scatter Graph
+ \ingroup qtdatavisualization_qmlexamples
\brief Using Scatter3D in a QML application.
- The Qt Quick 2 scatter example shows how to make a simple scatter graph visualization using
- Scatter3D and Qt Quick 2.
+ \e {Simple Scatter Graph} shows how to make a simple scatter graph visualization using
+ Scatter3D and QML.
- For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
+ For instructions about how to interact with the graph, see
+ \l{Qt Data Visualization Interacting with Data}{this page}.
- For instructions how to create a new Qt Quick 2 application of your own, see Qt Creator help.
+ For instructions on how to create a new Qt Quick application of your own, see Qt Creator help.
\image qmlscatter-example.png
@@ -44,17 +22,17 @@
\section1 Application Basics
- Before diving into the QML code, let's take a look at the application \c main.cpp.
+ Before diving into the QML code, take a look at the application \c main.cpp.
- This application implements a 'Quit' button in the UI, so we want to connect the QQmlEngine::quit()
- signal to our application's QWindow::close() slot:
+ This application implements a 'Quit' button in the UI, so you want to connect the QQmlEngine::quit()
+ signal to the application's QWindow::close() slot:
\snippet qmlscatter/main.cpp 4
- To make deployment little simpler, we gather all of the application's \c .qml files to a resource
+ To make deployment a little simpler, gather all of the application's \c .qml files to a resource
file (\c qmlscatter.qrc):
- \code
+ \badcode
<RCC>
<qresource prefix="/">
<file>qml/qmlscatter/Data.qml</file>
@@ -63,112 +41,123 @@
</RCC>
\endcode
- This also requires us to set the \c main.qml to be read from the resource (\c{qrc:}):
+ This also requires setting the \c main.qml to be read from the resource (\c{qrc:}):
\snippet qmlscatter/main.cpp 3
- Lastly, we want the application to run in a maximized window:
+ When using cmake instead of qmake, the \c .qml files are added into a QML module in the
+ \c {CMakeLists.txt} instead:
+
+ \badcode
+ qt6_add_qml_module(qmlscatter
+ URI Scatter
+ VERSION 1.0
+ NO_RESOURCE_TARGET_PATH
+ QML_FILES
+ qml/qmlscatter/Data.qml
+ qml/qmlscatter/main.qml
+ )
+ \endcode
+
+ Finally, make the application run in a maximized window:
\snippet qmlscatter/main.cpp 2
\section1 Setting up the Graph
- First we'll import all the QML modules we need:
+ First, import all the needed QML modules:
\snippet qmlscatter/qml/qmlscatter/main.qml 0
- The last \c import just imports all the qml files in the same directory as our \c {main.qml},
- because that's where \c Data.qml is.
-
- Then we create our main \c Item and call it \c mainView:
+ Then, create the main \c Item and call it \c mainView:
\snippet qmlscatter/qml/qmlscatter/main.qml 1
- Then we'll add another \c Item inside the main \c Item, and call it \c dataView.
- This will be the item to hold the Scatter3D graph. We'll anchor it to the parent bottom:
+ Then, add another \c Item inside the main \c Item, and call it \c {dataView}.
+ This will be the item to hold the Scatter3D graph. Anchor it to the parent bottom:
\snippet qmlscatter/qml/qmlscatter/main.qml 9
- Next we're ready to add the Scatter3D graph itself. We'll add it inside the \c dataView and
- name it \c {scatterGraph}. Let's make it fill the \c {dataView}:
+ Next, add the Scatter3D graph itself. Add it inside the \c dataView and
+ name it \c {scatterGraph}. Make it fill the \c {dataView}:
\snippet qmlscatter/qml/qmlscatter/main.qml 2
Now the graph is ready for use, but has no data. It also has the default axes and visual
properties.
- Let's modify some visual properties first by adding the following inside \c {scatterGraph}:
+ Next, modify some visual properties first by adding the following inside \c {scatterGraph}:
\snippet qmlscatter/qml/qmlscatter/main.qml 3
- We added a customized theme and changed the shadow quality.
- We're happy with the other visual properties, so we won't change them.
+ A customized theme was added, the shadow quality changed, and the camera position adjusted.
+ The other visual properties are fine, so there is no need to change them.
- The custom theme is based on a predefined theme, but we change the font in it:
+ The custom theme is based on a predefined theme, \c {Theme3D.ThemeQt}, but the font in it
+ is changed:
\snippet qmlscatter/qml/qmlscatter/main.qml 13
- Then it's time to start feeding the graph some data.
+ Then, start feeding the graph some data.
\section1 Adding Data to the Graph
- Let's create a \c Data item inside the \c mainView and name it \c seriesData:
+ Create a \c Data item inside the \c mainView and name it \c seriesData:
\snippet qmlscatter/qml/qmlscatter/main.qml 4
- The \c seriesData item contains the data models for all three series we use in this example.
+ The \c seriesData item contains the data models for all three series used in this example.
- This is the component that holds our data in \c {Data.qml}. It has an \c Item as the main
+ This is the component that holds the data in \c {Data.qml}. It has an \c Item as the main
component.
- In the main component we'll add the data itself in a \c ListModel and name it
- \c {dataModel}:
+ In the main component, add the data itself to a \c ListModel and name it \c {dataModel}:
\snippet qmlscatter/qml/qmlscatter/Data.qml 0
\dots
- We'll add two more of these for the other two series, and name them \c dataModelTwo and
+ Add two more of these to the other two series, and name them \c dataModelTwo and
\c {dataModelThree}.
- Then we need to expose the data models to be usable from \c {main.qml}. We do this by defining
+ Then, expose the data models to be usable from \c {main.qml}. Do this by defining
them as aliases in the main data component:
\snippet qmlscatter/qml/qmlscatter/Data.qml 1
- Now we can use the data from \c Data.qml with \c scatterGraph in \c {main.qml}. First we'll add
+ Now you can use the data from \c Data.qml with \c scatterGraph in \c {main.qml}. First, add
a Scatter3DSeries and call it \c {scatterSeries}:
\snippet qmlscatter/qml/qmlscatter/main.qml 5
- Then we'll set up selection label format for the series:
+ Then, set up selection label format for the series:
\snippet qmlscatter/qml/qmlscatter/main.qml 10
- And finally the data for series one in a ItemModelScatterDataProxy. We set the data itself as
- \c itemModel for the proxy:
+ And finally, add the data for series one in a ItemModelScatterDataProxy. Set the data itself as
+ the \c itemModel for the proxy:
\snippet qmlscatter/qml/qmlscatter/main.qml 11
- We'll add the other two series in the same way, but modify some series-specific details a bit:
+ Add the other two series in the same way, but modify some series-specific details a bit:
\snippet qmlscatter/qml/qmlscatter/main.qml 12
\dots
- Then we'll modify the properties of the default axes in \c scatterGraph a bit:
+ Then, modify the properties of the default axes in \c scatterGraph a bit:
\snippet qmlscatter/qml/qmlscatter/main.qml 6
- After that we'll just add a few buttons to the \c mainView to control the graph. We'll only
- show one as an example:
+ After that, add a few buttons to the \c mainView to control the graph, one of which is shown as
+ an example:
\snippet qmlscatter/qml/qmlscatter/main.qml 7
- Then we'll modify \c dataView to make room for the buttons at the top:
+ Then, modify \c dataView to make some room for the buttons at the top:
\snippet qmlscatter/qml/qmlscatter/main.qml 8
\dots
- And we're done!
+ And you're done!
\section1 Example Contents
*/
diff --git a/examples/datavisualization/qmlscatter/main.cpp b/examples/datavisualization/qmlscatter/main.cpp
index a5327cdc..e9332869 100644
--- a/examples/datavisualization/qmlscatter/main.cpp
+++ b/examples/datavisualization/qmlscatter/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include <QtGui/QGuiApplication>
#include <QtCore/QDir>
@@ -52,7 +26,7 @@ int main(int argc, char *argv[])
QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
//! [4]
- viewer.setTitle(QStringLiteral("QML scatter example"));
+ viewer.setTitle(QStringLiteral("Simple Scatter Graph"));
//! [3]
viewer.setSource(QUrl("qrc:/qml/qmlscatter/main.qml"));
diff --git a/examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml b/examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml
index 26bfe3ef..e38bba91 100644
--- a/examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml
+++ b/examples/datavisualization/qmlscatter/qml/qmlscatter/Data.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
diff --git a/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml b/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml
index a64538da..f1ccabde 100644
--- a/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml
+++ b/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml
@@ -1,46 +1,25 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
//! [0]
import QtQuick
-import QtQuick.Layouts
import QtQuick.Controls
-import QtDataVisualization 1.2
-import "."
+import QtDataVisualization
//! [0]
//! [1]
Item {
id: mainView
//! [1]
- width: 500
- height: 500
+ width: 1600
+ height: 1200
+
+ property bool portraitMode: width < height
+ // Adjust the button width based on screen orientation:
+ // If we're in portrait mode, just fit two buttons side-by-side, otherwise
+ // fit all of the buttons side-by-side.
+ property real buttonWidth: mainView.portraitMode ? (mainView.width / 2 - 8)
+ : (mainView.width / 6 - 6)
//! [4]
Data {
@@ -50,15 +29,15 @@ Item {
//! [13]
Theme3D {
- id: themeIsabelle
- type: Theme3D.ThemeIsabelle
+ id: themeQt
+ type: Theme3D.ThemeQt
font.pointSize: 40
}
//! [13]
Theme3D {
- id: themeArmyBlue
- type: Theme3D.ThemeArmyBlue
+ id: themeRetro
+ type: Theme3D.ThemeRetro
}
//! [8]
@@ -68,18 +47,21 @@ Item {
anchors.bottom: parent.bottom
//! [9]
width: parent.width
- height: parent.height - buttonLayout.height
+ // Adjust the space based on screen orientation:
+ // If we're in portrait mode, we have 3 rows of buttons, otherwise they are all in one row.
+ height: parent.height - (mainView.portraitMode ? shadowToggle.implicitHeight * 3 + 25
+ : shadowToggle.implicitHeight + 10)
//! [8]
//! [2]
Scatter3D {
id: scatterGraph
- width: dataView.width
- height: dataView.height
+ anchors.fill: parent
//! [2]
//! [3]
- theme: themeIsabelle
- shadowQuality: AbstractGraph3D.ShadowQualitySoftLow
+ theme: themeQt
+ shadowQuality: AbstractGraph3D.ShadowQualityHigh
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetFront
//! [3]
//! [6]
axisX.segmentCount: 3
@@ -114,7 +96,7 @@ Item {
Scatter3DSeries {
id: scatterSeriesTwo
itemLabelFormat: "Series 2: X:@xLabel Y:@yLabel Z:@zLabel"
- itemSize: 0.1
+ itemSize: 0.05
mesh: Abstract3DSeries.MeshCube
//! [12]
@@ -128,7 +110,7 @@ Item {
Scatter3DSeries {
id: scatterSeriesThree
itemLabelFormat: "Series 3: X:@xLabel Y:@yLabel Z:@zLabel"
- itemSize: 0.2
+ itemSize: 0.1
mesh: Abstract3DSeries.MeshMinimal
ItemModelScatterDataProxy {
@@ -141,103 +123,106 @@ Item {
}
}
- RowLayout {
- id: buttonLayout
- Layout.minimumHeight: cameraToggle.height
- width: parent.width
+ //! [7]
+ Button {
+ id: shadowToggle
+ width: mainView.buttonWidth // Calculated elsewhere based on screen orientation
anchors.left: parent.left
- spacing: 0
- //! [7]
- Button {
- id: shadowToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: scatterGraph.shadowsSupported ? "Hide Shadows" : "Shadows not supported"
- enabled: scatterGraph.shadowsSupported
- onClicked: {
- if (scatterGraph.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
- scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualitySoftLow;
- text = "Hide Shadows";
- } else {
- scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityNone;
- text = "Show Shadows";
- }
+ anchors.top: parent.top
+ anchors.margins: 5
+ text: scatterGraph.shadowsSupported ? "Hide Shadows" : "Shadows not supported"
+ enabled: scatterGraph.shadowsSupported
+ onClicked: {
+ if (scatterGraph.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
+ scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityHigh;
+ text = "Hide Shadows";
+ } else {
+ scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualityNone;
+ text = "Show Shadows";
}
}
- //! [7]
-
- Button {
- id: smoothToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Use Smooth for Series One"
- onClicked: {
- if (scatterSeries.meshSmooth === false) {
- text = "Use Flat for Series One";
- scatterSeries.meshSmooth = true;
- } else {
- text = "Use Smooth for Series One"
- scatterSeries.meshSmooth = false;
- }
+ }
+ //! [7]
+
+ Button {
+ id: smoothToggle
+ width: mainView.buttonWidth
+ anchors.left: shadowToggle.right
+ anchors.top: parent.top
+ anchors.margins: 5
+ text: "Use Smooth for Series One"
+ onClicked: {
+ if (!scatterSeries.meshSmooth) {
+ text = "Use Flat for Series One";
+ scatterSeries.meshSmooth = true;
+ } else {
+ text = "Use Smooth for Series One";
+ scatterSeries.meshSmooth = false;
}
}
+ }
- Button {
- id: cameraToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Change Camera Placement"
- onClicked: {
- if (scatterGraph.scene.activeCamera.cameraPreset === Camera3D.CameraPresetFront) {
- scatterGraph.scene.activeCamera.cameraPreset =
- Camera3D.CameraPresetIsometricRightHigh;
- } else {
- scatterGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetFront;
- }
+ Button {
+ id: cameraToggle
+ width: mainView.buttonWidth
+ anchors.left: mainView.portraitMode ? parent.left : smoothToggle.right
+ anchors.top: mainView.portraitMode ? smoothToggle.bottom : parent.top
+ anchors.margins: 5
+ text: "Change Camera Placement"
+ onClicked: {
+ if (scatterGraph.scene.activeCamera.cameraPreset === Camera3D.CameraPresetFront) {
+ scatterGraph.scene.activeCamera.cameraPreset =
+ Camera3D.CameraPresetIsometricRightHigh;
+ } else {
+ scatterGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetFront;
}
}
+ }
- Button {
- id: themeToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Change Theme"
- onClicked: {
- if (scatterGraph.theme.type === Theme3D.ThemeArmyBlue) {
- scatterGraph.theme = themeIsabelle
- } else {
- scatterGraph.theme = themeArmyBlue
- }
- if (scatterGraph.theme.backgroundEnabled === true) {
- backgroundToggle.text = "Hide Background";
- } else {
- backgroundToggle.text = "Show Background";
- }
- }
+ Button {
+ id: themeToggle
+ width: mainView.buttonWidth
+ anchors.left: cameraToggle.right
+ anchors.top: mainView.portraitMode ? smoothToggle.bottom : parent.top
+ anchors.margins: 5
+ text: "Change Theme"
+ onClicked: {
+ if (scatterGraph.theme.type === Theme3D.ThemeRetro)
+ scatterGraph.theme = themeQt;
+ else
+ scatterGraph.theme = themeRetro;
+ if (scatterGraph.theme.backgroundEnabled)
+ backgroundToggle.text = "Hide Background";
+ else
+ backgroundToggle.text = "Show Background";
}
+ }
- Button {
- id: backgroundToggle
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Hide Background"
- onClicked: {
- if (scatterGraph.theme.backgroundEnabled === true) {
- scatterGraph.theme.backgroundEnabled = false;
- text = "Show Background";
- } else {
- scatterGraph.theme.backgroundEnabled = true;
- text = "Hide Background";
- }
+ Button {
+ id: backgroundToggle
+ width: mainView.buttonWidth
+ anchors.left: mainView.portraitMode ? parent.left : themeToggle.right
+ anchors.top: mainView.portraitMode ? themeToggle.bottom : parent.top
+ anchors.margins: 5
+ text: "Hide Background"
+ onClicked: {
+ if (scatterGraph.theme.backgroundEnabled) {
+ scatterGraph.theme.backgroundEnabled = false;
+ text = "Show Background";
+ } else {
+ scatterGraph.theme.backgroundEnabled = true;
+ text = "Hide Background";
}
}
+ }
- Button {
- id: exitButton
- Layout.fillHeight: true
- Layout.fillWidth: true
- text: "Quit"
- onClicked: Qt.quit();
- }
+ Button {
+ id: exitButton
+ width: mainView.buttonWidth
+ anchors.left: backgroundToggle.right
+ anchors.top: mainView.portraitMode ? themeToggle.bottom : parent.top
+ anchors.margins: 5
+ text: "Quit"
+ onClicked: Qt.quit();
}
}
diff --git a/examples/datavisualization/qmlscatter/qmlscatter.pro b/examples/datavisualization/qmlscatter/qmlscatter.pro
index b97ca7be..2ca00874 100644
--- a/examples/datavisualization/qmlscatter/qmlscatter.pro
+++ b/examples/datavisualization/qmlscatter/qmlscatter.pro
@@ -2,7 +2,6 @@
error( "Couldn't find the examples.pri file!" )
}
-# The .cpp file which was generated for your project. Feel free to hack it.
SOURCES += main.cpp
RESOURCES += qmlscatter.qrc
diff --git a/examples/datavisualization/qmlspectrogram/CMakeLists.txt b/examples/datavisualization/qmlspectrogram/CMakeLists.txt
deleted file mode 100644
index ce86d5c1..00000000
--- a/examples/datavisualization/qmlspectrogram/CMakeLists.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(qmlspectrogram LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Qml)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(qmlspectrogram
- main.cpp
-)
-set_target_properties(qmlspectrogram PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(qmlspectrogram PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Qml
- Qt::Quick
- Qt::DataVisualization
-)
-
-set(qmlspectrogram_resource_files
- "qml/qmlspectrogram/Data.qml"
- "qml/qmlspectrogram/main.qml"
-)
-
-qt6_add_resources(qmlspectrogram "qmlspectrogram"
- PREFIX
- "/qml"
- FILES
- ${qmlspectrogram_resource_files}
-)
-
-install(TARGETS qmlspectrogram
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/qmlspectrogram/doc/images/qmlspectrogram-example.png b/examples/datavisualization/qmlspectrogram/doc/images/qmlspectrogram-example.png
deleted file mode 100644
index de376cd9..00000000
--- a/examples/datavisualization/qmlspectrogram/doc/images/qmlspectrogram-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlspectrogram/doc/src/qmlspectrogram.qdoc b/examples/datavisualization/qmlspectrogram/doc/src/qmlspectrogram.qdoc
deleted file mode 100644
index a0c2ef62..00000000
--- a/examples/datavisualization/qmlspectrogram/doc/src/qmlspectrogram.qdoc
+++ /dev/null
@@ -1,100 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qmlspectrogram
- \title Qt Quick 2 Spectrogram Example
- \ingroup qtdatavisualization_examples
- \brief Showing spectrogram graph in a QML application.
-
- The Qt Quick 2 Spectrogram example demonstrates how to show a polar and cartesian spectrograms
- and how to utilize orthographic projection to show them in 2D.
-
- \image qmlspectrogram-example.png
-
- Spectrogram is simply a surface graph with a range gradient used to emphasize the different
- values. Typically spectrograms are shown with two dimensional surfaces, which we simulate
- with a top down orthographic view of the graph. To enforce the 2D effect, we disable the
- graph rotation via mouse or touch when in the orthographic mode.
-
- The focus in this example is on showing how to display spectrograms, so the basic
- functionality is not explained. For more detailed QML example documentation,
- see \l{Qt Quick 2 Scatter Example}.
-
- \include examples-run.qdocinc
-
- \section1 Creating a Spectrogram
-
- To create a 2D spectrogram, we define a Surface3D item:
-
- \snippet qmlspectrogram/qml/qmlspectrogram/main.qml 0
-
- The key properties for enabling the 2D effect are
- \l{AbstractGraph3D::orthoProjection}{orthoProjection} and
- \l{Camera3D::cameraPreset}{scene.activeCamera.cameraPreset}. We remove the perspective by
- enabling orthographic projection for the graph, and then we eliminate the Y-dimension by
- viewing the graph directly from above:
-
- \snippet qmlspectrogram/qml/qmlspectrogram/main.qml 1
-
- Since this viewpoint causes the horizontal axis grid to be mostly obscured by the surface,
- we also specify that the horizontal grid should be drawn on top of the graph:
-
- \snippet qmlspectrogram/qml/qmlspectrogram/main.qml 2
-
- \section1 Polar Spectrogram
-
- Depending on the data, it is sometimes more natural to use a polar graph instead of a cartesian
- one. Qt Data Visualization supports this via \l{AbstractGraph3D::polar}{polar} property.
- In this example we provide a button to switch between polar and cartesian modes:
-
- \snippet qmlspectrogram/qml/qmlspectrogram/main.qml 3
-
- In the polar mode, the X-axis is converted into the angular polar axis, and the Z-axis is
- converted into the radial polar axis. The surface points are recalculated according to new axes.
-
- The radial axis labels are drawn outside the graph by default, but in this example we want to
- draw them right next to the 0 degree angular axis inside the graph, so we define only a tiny
- offset for them:
-
- \snippet qmlspectrogram/qml/qmlspectrogram/main.qml 4
-
- To enforce the 2D effect, graph rotation via user input is disabled when in orthographic mode.
- We do this by specifying a new input handler:
-
- \snippet qmlspectrogram/qml/qmlspectrogram/main.qml 5
- \snippet qmlspectrogram/qml/qmlspectrogram/main.qml 7
- \dots 0
- \snippet qmlspectrogram/qml/qmlspectrogram/main.qml 6
- \dots 0
-
- When the projection mode changes, we adjust the value of the
- \l{InputHandler3D::rotationEnabled}{rotationEnabled} property of the \c{customInputHandler}
- to control the rotation.
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/qmlspectrogram/main.cpp b/examples/datavisualization/qmlspectrogram/main.cpp
deleted file mode 100644
index 03ac8f4e..00000000
--- a/examples/datavisualization/qmlspectrogram/main.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlApplicationEngine>
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- QQmlApplicationEngine engine;
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- engine.addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
- engine.load(QUrl(QStringLiteral("qrc:/qml/qml/qmlspectrogram/main.qml")));
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml b/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml
deleted file mode 100644
index 35143179..00000000
--- a/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml
+++ /dev/null
@@ -1,303 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import QtQuick.Window
-import QtDataVisualization 1.2
-import "."
-
-Window {
- id: mainview
- title: "Qt Quick 2 Spectrogram Example"
- visible: true
- width: 1024
- height: 768
- color: surfaceGraph.theme.windowColor
-
- Data {
- id: surfaceData
- }
-
- Item {
- id: surfaceView
- width: mainview.width
- height: mainview.height
- anchors.top: mainview.top
- anchors.left: mainview.left
-
- ColorGradient {
- id: surfaceGradient
- ColorGradientStop { position: 0.0; color: "black" }
- ColorGradientStop { position: 0.2; color: "red" }
- ColorGradientStop { position: 0.5; color: "blue" }
- ColorGradientStop { position: 0.8; color: "yellow" }
- ColorGradientStop { position: 1.0; color: "white" }
- }
-
- ValueAxis3D {
- id: xAxis
- segmentCount: 8
- labelFormat: "%i\u00B0"
- title: "Angle"
- titleVisible: true
- titleFixed: false
- }
-
- ValueAxis3D {
- id: yAxis
- segmentCount: 8
- labelFormat: "%i \%"
- title: "Value"
- titleVisible: true
- labelAutoRotation: 0
- titleFixed: false
- }
-
- ValueAxis3D {
- id: zAxis
- segmentCount: 5
- labelFormat: "%i nm"
- title: "Radius"
- titleVisible: true
- titleFixed: false
- }
-
- Theme3D {
- id: customTheme
- type: Theme3D.ThemeQt
- // Don't show specular spotlight as we don't want it to distort the colors
- lightStrength: 0.0
- ambientLightStrength: 1.0
- backgroundEnabled: false
- gridLineColor: "#AAAAAA"
- windowColor: "#EEEEEE"
- }
-
-
- //! [5]
- TouchInputHandler3D {
- id: customInputHandler
- rotationEnabled: false
- }
- //! [5]
-
- //! [0]
- //! [7]
- Surface3D {
- //! [7]
- id: surfaceGraph
- width: surfaceView.width
- height: surfaceView.height
-
- shadowQuality: AbstractGraph3D.ShadowQualityNone
- selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndColumn
- axisX: xAxis
- axisY: yAxis
- axisZ: zAxis
-
- theme: customTheme
- //! [6]
- inputHandler: customInputHandler
- //! [6]
-
- // Remove the perspective and view the graph from top down to achieve 2D effect
- //! [1]
- orthoProjection: true
- scene.activeCamera.cameraPreset: Camera3D.CameraPresetDirectlyAbove
- //! [1]
-
- //! [2]
- flipHorizontalGrid: true
- //! [2]
-
- //! [4]
- radialLabelOffset: 0.01
- //! [4]
-
- horizontalAspectRatio: 1
- scene.activeCamera.zoomLevel: 85
-
- Surface3DSeries {
- id: surfaceSeries
- flatShadingEnabled: false
- drawMode: Surface3DSeries.DrawSurface
- baseGradient: surfaceGradient
- colorStyle: Theme3D.ColorStyleRangeGradient
- itemLabelFormat: "(@xLabel, @zLabel): @yLabel"
-
- ItemModelSurfaceDataProxy {
- itemModel: surfaceData.model
- rowRole: "radius"
- columnRole: "angle"
- yPosRole: "value"
- }
- }
- }
- //! [0]
- }
-
- RowLayout {
- id: buttonLayout
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- opacity: 0.5
-
- //! [3]
- Button {
- id: polarToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Switch to polar"
- onClicked: {
- if (surfaceGraph.polar === false) {
- surfaceGraph.polar = true
- text = "Switch to cartesian"
- } else {
- surfaceGraph.polar = false
- text = "Switch to polar"
- }
- }
- }
- //! [3]
-
- Button {
- id: orthoToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Switch to perspective"
- onClicked: {
- if (surfaceGraph.orthoProjection === true) {
- surfaceGraph.orthoProjection = false;
- xAxis.labelAutoRotation = 30
- yAxis.labelAutoRotation = 30
- zAxis.labelAutoRotation = 30
- customInputHandler.rotationEnabled = true
- text = "Switch to orthographic"
- } else {
- surfaceGraph.orthoProjection = true;
- surfaceGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetDirectlyAbove
- surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
- xAxis.labelAutoRotation = 0
- yAxis.labelAutoRotation = 0
- zAxis.labelAutoRotation = 0
- customInputHandler.rotationEnabled = false
- text = "Switch to perspective"
- }
- }
- }
-
- Button {
- id: flipGridToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Toggle axis grid on top"
- onClicked: {
- if (surfaceGraph.flipHorizontalGrid === true) {
- surfaceGraph.flipHorizontalGrid = false;
- } else {
- surfaceGraph.flipHorizontalGrid = true;
- }
- }
- }
-
- Button {
- id: labelOffsetToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Toggle radial label position"
- visible: surfaceGraph.polar
- onClicked: {
- if (surfaceGraph.radialLabelOffset >= 1.0) {
- surfaceGraph.radialLabelOffset = 0.01
- } else {
- surfaceGraph.radialLabelOffset = 1.0
- }
- }
- }
-
- Button {
- id: surfaceGridToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Toggle surface grid"
- visible: !surfaceGraph.orthoProjection
- onClicked: {
- if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe) {
- surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
- } else {
- surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
- }
- }
- }
-
- }
-
- Rectangle {
- id: legend
- anchors.margins: 20
- anchors.bottom: parent.bottom
- anchors.top: buttonLayout.bottom
- anchors.right: parent.right
- border.color: "black"
- border.width: 1
- width: 50
- rotation: 180
- gradient: Gradient {
- GradientStop { position: 0.0; color: "black" }
- GradientStop { position: 0.2; color: "red" }
- GradientStop { position: 0.5; color: "blue" }
- GradientStop { position: 0.8; color: "yellow" }
- GradientStop { position: 1.0; color: "white" }
- }
- }
-
- Text {
- anchors.verticalCenter: legend.bottom
- anchors.right: legend.left
- anchors.margins: 2
- text: surfaceGraph.axisY.min + "%"
- }
-
- Text {
- anchors.verticalCenter: legend.verticalCenter
- anchors.right: legend.left
- anchors.margins: 2
- text: (surfaceGraph.axisY.max + surfaceGraph.axisY.min) / 2 + "%"
- }
-
- Text {
- anchors.verticalCenter: legend.top
- anchors.right: legend.left
- anchors.margins: 2
- text: surfaceGraph.axisY.max + "%"
- }
-}
diff --git a/examples/datavisualization/qmlspectrogram/qmlspectrogram.pro b/examples/datavisualization/qmlspectrogram/qmlspectrogram.pro
deleted file mode 100644
index 655fb0b8..00000000
--- a/examples/datavisualization/qmlspectrogram/qmlspectrogram.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-# The .cpp file which was generated for your project. Feel free to hack it.
-SOURCES += main.cpp
-
-RESOURCES += qmlspectrogram.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- qml/qmlspectrogram/*
diff --git a/examples/datavisualization/qmlspectrogram/qmlspectrogram.qrc b/examples/datavisualization/qmlspectrogram/qmlspectrogram.qrc
deleted file mode 100644
index 8c323f37..00000000
--- a/examples/datavisualization/qmlspectrogram/qmlspectrogram.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/qml">
- <file>qml/qmlspectrogram/Data.qml</file>
- <file>qml/qmlspectrogram/main.qml</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/qmlsurface/CMakeLists.txt b/examples/datavisualization/qmlsurface/CMakeLists.txt
deleted file mode 100644
index c1a6459c..00000000
--- a/examples/datavisualization/qmlsurface/CMakeLists.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(qmlsurface LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Qml)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(qmlsurface
- main.cpp
-)
-set_target_properties(qmlsurface PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(qmlsurface PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Qml
- Qt::Quick
- Qt::DataVisualization
-)
-
-set(qmlsurface_resource_files
- "qml/qmlsurface/Data.qml"
- "qml/qmlsurface/main.qml"
-)
-
-qt6_add_resources(qmlsurface "qmlsurface"
- PREFIX
- "/qml"
- FILES
- ${qmlsurface_resource_files}
-)
-set_source_files_properties("heightmap.png"
- PROPERTIES QT_RESOURCE_ALIAS "image"
-)
-set(qmlsurface1_resource_files
- "heightmap.png"
-)
-
-qt6_add_resources(qmlsurface "qmlsurface1"
- PREFIX
- "/heightmaps"
- FILES
- ${qmlsurface1_resource_files}
-)
-
-install(TARGETS qmlsurface
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/qmlsurface/doc/images/qmlsurface-example.png b/examples/datavisualization/qmlsurface/doc/images/qmlsurface-example.png
deleted file mode 100644
index 5e37b42c..00000000
--- a/examples/datavisualization/qmlsurface/doc/images/qmlsurface-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlsurface/doc/src/qmlsurface.qdoc b/examples/datavisualization/qmlsurface/doc/src/qmlsurface.qdoc
deleted file mode 100644
index e8073cff..00000000
--- a/examples/datavisualization/qmlsurface/doc/src/qmlsurface.qdoc
+++ /dev/null
@@ -1,119 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qmlsurface
- \title Qt Quick 2 Surface Example
- \ingroup qtdatavisualization_examples
- \brief Using Surface3D in a QML application.
-
- The Qt Quick 2 surface example shows how to make a simple 3D surface plot using Surface3D with
- Qt Quick 2.
-
- \image qmlsurface-example.png
-
- The focus in this example is on generating a surface graph from height data, so in this section
- we skip explaining the application creation. For more detailed QML example documentation,
- see \l{Qt Quick 2 Scatter Example}.
-
- \include examples-run.qdocinc
-
- \section1 Adding Data to the Graph
-
- This example shows two methods to set data to surface graph, using the HeightMapSurfaceDataProxy
- and ItemModelSurfaceDataProxy. First we go through setting the data using the height map specific
- data proxy. It is done with the code snippet below. The proxy itself is contained in a
- Surface3DSeries. Inside the HeightMapSurfaceDataProxy the \c heightMapFile specifies the
- image file containing the height data. The value properties in the proxy define the minimum
- and maximum values for surface area width and depth. This example shows the terrain around Tycho
- crater at imaginary position from 67 to 97 and from 30 to 60. Note that on the graph the scale
- on the Y dimension exaggerates the height.
-
- \snippet qmlsurface/qml/qmlsurface/main.qml 4
-
- The other method to set surface data used in this example is with model mapping. We do that by
- first defining a \c ListModel containing the data for the surface:
-
- \snippet qmlsurface/qml/qmlsurface/Data.qml 0
- \dots 4
-
- Then we set up a Surface3DSeries with a ItemModelSurfaceDataProxy:
-
- \snippet qmlsurface/qml/qmlsurface/main.qml 5
- \dots
-
- We add the actual data to the \c itemModel of the ItemModelSurfaceDataProxy. We also define the
- roles for columns, rows and values. In this example the row holds values for longitude, column
- for latitude and the value is for height.
-
- \dots 0
- \snippet qmlsurface/qml/qmlsurface/main.qml 6
-
- \section1 Showing Data
-
- In the \c main.qml, we set up the Surface3D element to show the data and various UI elements
- to illustrate few interesting features.
-
- First is the gradient to be used for the surface, which can be defined as seen in the following
- snippet. With the ColorGradient we set example colors from position 0.0 to 1.0.
-
- \snippet qmlsurface/qml/qmlsurface/main.qml 0
-
- This element is set into the \c baseGradients property in the \c theme used in Surface3D:
-
- \snippet qmlsurface/qml/qmlsurface/main.qml 7
-
- Other interesting features can be controlled with buttons.
-
- The first button is to toggle on and off the surface grid, for which we use the following code:
-
- \snippet qmlsurface/qml/qmlsurface/main.qml 1
-
- Second button is for surface shading mode, which is controlled with this code:
-
- \snippet qmlsurface/qml/qmlsurface/main.qml 2
-
- Third button is for series visibility, which is controlled with this code:
-
- \snippet qmlsurface/qml/qmlsurface/main.qml 8
-
- Notice that the \c drawMode and \c flatShadingEnable properties are set for both series.
-
- Fourth and fifth buttons are for controlling background features.
-
- The last button is for switching between the two series, one of which uses
- HeightMapSurfaceDataProxy and the other one ItemModelSurfaceDataProxy. For this we use the
- following code:
-
- \snippet qmlsurface/qml/qmlsurface/main.qml 3
-
- We also set the maximum value to 500 in model proxy to make the surface flatter and
- 250 on height map proxy to show exaggerated height. At the same time the middle color position
- on the gradient is modified to match the value range change.
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/qmlsurface/heightmap.png b/examples/datavisualization/qmlsurface/heightmap.png
deleted file mode 100644
index 051a0125..00000000
--- a/examples/datavisualization/qmlsurface/heightmap.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlsurface/main.cpp b/examples/datavisualization/qmlsurface/main.cpp
deleted file mode 100644
index f425c7f5..00000000
--- a/examples/datavisualization/qmlsurface/main.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlEngine>
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- QQuickView viewer;
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
-
- viewer.setSource(QUrl("qrc:/qml/qml/qmlsurface/main.qml"));
-
- viewer.setTitle(QStringLiteral("Tycho crater on the Moon (height exaggerated)"));
- viewer.setResizeMode(QQuickView::SizeRootObjectToView);
- viewer.show();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qmlsurface/qml/qmlsurface/Data.qml b/examples/datavisualization/qmlsurface/qml/qmlsurface/Data.qml
deleted file mode 100644
index 5673e1aa..00000000
--- a/examples/datavisualization/qmlsurface/qml/qmlsurface/Data.qml
+++ /dev/null
@@ -1,10042 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQml
-import QtQml.Models
-
-Item {
- property alias model: dataModel
-
- //! [0]
- ListModel {
- id: dataModel
- ListElement{ longitude: "0"; latitude: "0"; height: "124"; }
- ListElement{ longitude: "0"; latitude: "1"; height: "125"; }
- ListElement{ longitude: "0"; latitude: "2"; height: "124"; }
- //! [0]
- ListElement{ longitude: "0"; latitude: "3"; height: "118"; }
- ListElement{ longitude: "0"; latitude: "4"; height: "112"; }
- ListElement{ longitude: "0"; latitude: "5"; height: "111"; }
- ListElement{ longitude: "0"; latitude: "6"; height: "115"; }
- ListElement{ longitude: "0"; latitude: "7"; height: "102"; }
- ListElement{ longitude: "0"; latitude: "8"; height: "115"; }
- ListElement{ longitude: "0"; latitude: "9"; height: "126"; }
- ListElement{ longitude: "0"; latitude: "10"; height: "127"; }
- ListElement{ longitude: "0"; latitude: "11"; height: "127"; }
- ListElement{ longitude: "0"; latitude: "12"; height: "124"; }
- ListElement{ longitude: "0"; latitude: "13"; height: "120"; }
- ListElement{ longitude: "0"; latitude: "14"; height: "117"; }
- ListElement{ longitude: "0"; latitude: "15"; height: "116"; }
- ListElement{ longitude: "0"; latitude: "16"; height: "114"; }
- ListElement{ longitude: "0"; latitude: "17"; height: "112"; }
- ListElement{ longitude: "0"; latitude: "18"; height: "114"; }
- ListElement{ longitude: "0"; latitude: "19"; height: "114"; }
- ListElement{ longitude: "0"; latitude: "20"; height: "112"; }
- ListElement{ longitude: "0"; latitude: "21"; height: "112"; }
- ListElement{ longitude: "0"; latitude: "22"; height: "116"; }
- ListElement{ longitude: "0"; latitude: "23"; height: "117"; }
- ListElement{ longitude: "0"; latitude: "24"; height: "118"; }
- ListElement{ longitude: "0"; latitude: "25"; height: "119"; }
- ListElement{ longitude: "0"; latitude: "26"; height: "117"; }
- ListElement{ longitude: "0"; latitude: "27"; height: "115"; }
- ListElement{ longitude: "0"; latitude: "28"; height: "112"; }
- ListElement{ longitude: "0"; latitude: "29"; height: "109"; }
- ListElement{ longitude: "0"; latitude: "30"; height: "108"; }
- ListElement{ longitude: "0"; latitude: "31"; height: "105"; }
- ListElement{ longitude: "0"; latitude: "32"; height: "105"; }
- ListElement{ longitude: "0"; latitude: "33"; height: "104"; }
- ListElement{ longitude: "0"; latitude: "34"; height: "105"; }
- ListElement{ longitude: "0"; latitude: "35"; height: "107"; }
- ListElement{ longitude: "0"; latitude: "36"; height: "110"; }
- ListElement{ longitude: "0"; latitude: "37"; height: "114"; }
- ListElement{ longitude: "0"; latitude: "38"; height: "117"; }
- ListElement{ longitude: "0"; latitude: "39"; height: "119"; }
- ListElement{ longitude: "0"; latitude: "40"; height: "121"; }
- ListElement{ longitude: "0"; latitude: "41"; height: "123"; }
- ListElement{ longitude: "0"; latitude: "42"; height: "125"; }
- ListElement{ longitude: "0"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "0"; latitude: "44"; height: "119"; }
- ListElement{ longitude: "0"; latitude: "45"; height: "115"; }
- ListElement{ longitude: "0"; latitude: "46"; height: "114"; }
- ListElement{ longitude: "0"; latitude: "47"; height: "123"; }
- ListElement{ longitude: "0"; latitude: "48"; height: "131"; }
- ListElement{ longitude: "0"; latitude: "49"; height: "130"; }
- ListElement{ longitude: "0"; latitude: "50"; height: "128"; }
- ListElement{ longitude: "0"; latitude: "51"; height: "124"; }
- ListElement{ longitude: "0"; latitude: "52"; height: "121"; }
- ListElement{ longitude: "0"; latitude: "53"; height: "120"; }
- ListElement{ longitude: "0"; latitude: "54"; height: "118"; }
- ListElement{ longitude: "0"; latitude: "55"; height: "116"; }
- ListElement{ longitude: "0"; latitude: "56"; height: "116"; }
- ListElement{ longitude: "0"; latitude: "57"; height: "115"; }
- ListElement{ longitude: "0"; latitude: "58"; height: "112"; }
- ListElement{ longitude: "0"; latitude: "59"; height: "110"; }
- ListElement{ longitude: "0"; latitude: "60"; height: "109"; }
- ListElement{ longitude: "0"; latitude: "61"; height: "107"; }
- ListElement{ longitude: "0"; latitude: "62"; height: "107"; }
- ListElement{ longitude: "0"; latitude: "63"; height: "108"; }
- ListElement{ longitude: "0"; latitude: "64"; height: "110"; }
- ListElement{ longitude: "0"; latitude: "65"; height: "113"; }
- ListElement{ longitude: "0"; latitude: "66"; height: "115"; }
- ListElement{ longitude: "0"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "0"; latitude: "68"; height: "119"; }
- ListElement{ longitude: "0"; latitude: "69"; height: "121"; }
- ListElement{ longitude: "0"; latitude: "70"; height: "122"; }
- ListElement{ longitude: "0"; latitude: "71"; height: "124"; }
- ListElement{ longitude: "0"; latitude: "72"; height: "125"; }
- ListElement{ longitude: "0"; latitude: "73"; height: "125"; }
- ListElement{ longitude: "0"; latitude: "74"; height: "125"; }
- ListElement{ longitude: "0"; latitude: "75"; height: "123"; }
- ListElement{ longitude: "0"; latitude: "76"; height: "123"; }
- ListElement{ longitude: "0"; latitude: "77"; height: "122"; }
- ListElement{ longitude: "0"; latitude: "78"; height: "125"; }
- ListElement{ longitude: "0"; latitude: "79"; height: "129"; }
- ListElement{ longitude: "0"; latitude: "80"; height: "135"; }
- ListElement{ longitude: "0"; latitude: "81"; height: "138"; }
- ListElement{ longitude: "0"; latitude: "82"; height: "136"; }
- ListElement{ longitude: "0"; latitude: "83"; height: "129"; }
- ListElement{ longitude: "0"; latitude: "84"; height: "121"; }
- ListElement{ longitude: "0"; latitude: "85"; height: "116"; }
- ListElement{ longitude: "0"; latitude: "86"; height: "115"; }
- ListElement{ longitude: "0"; latitude: "87"; height: "118"; }
- ListElement{ longitude: "0"; latitude: "88"; height: "122"; }
- ListElement{ longitude: "0"; latitude: "89"; height: "127"; }
- ListElement{ longitude: "0"; latitude: "90"; height: "129"; }
- ListElement{ longitude: "0"; latitude: "91"; height: "130"; }
- ListElement{ longitude: "0"; latitude: "92"; height: "130"; }
- ListElement{ longitude: "0"; latitude: "93"; height: "128"; }
- ListElement{ longitude: "0"; latitude: "94"; height: "128"; }
- ListElement{ longitude: "0"; latitude: "95"; height: "129"; }
- ListElement{ longitude: "0"; latitude: "96"; height: "133"; }
- ListElement{ longitude: "0"; latitude: "97"; height: "138"; }
- ListElement{ longitude: "0"; latitude: "98"; height: "139"; }
- ListElement{ longitude: "0"; latitude: "99"; height: "128"; }
- ListElement{ longitude: "1"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "1"; latitude: "1"; height: "120"; }
- ListElement{ longitude: "1"; latitude: "2"; height: "118"; }
- ListElement{ longitude: "1"; latitude: "3"; height: "110"; }
- ListElement{ longitude: "1"; latitude: "4"; height: "105"; }
- ListElement{ longitude: "1"; latitude: "5"; height: "110"; }
- ListElement{ longitude: "1"; latitude: "6"; height: "116"; }
- ListElement{ longitude: "1"; latitude: "7"; height: "117"; }
- ListElement{ longitude: "1"; latitude: "8"; height: "123"; }
- ListElement{ longitude: "1"; latitude: "9"; height: "128"; }
- ListElement{ longitude: "1"; latitude: "10"; height: "131"; }
- ListElement{ longitude: "1"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "1"; latitude: "12"; height: "128"; }
- ListElement{ longitude: "1"; latitude: "13"; height: "122"; }
- ListElement{ longitude: "1"; latitude: "14"; height: "119"; }
- ListElement{ longitude: "1"; latitude: "15"; height: "116"; }
- ListElement{ longitude: "1"; latitude: "16"; height: "113"; }
- ListElement{ longitude: "1"; latitude: "17"; height: "109"; }
- ListElement{ longitude: "1"; latitude: "18"; height: "109"; }
- ListElement{ longitude: "1"; latitude: "19"; height: "109"; }
- ListElement{ longitude: "1"; latitude: "20"; height: "107"; }
- ListElement{ longitude: "1"; latitude: "21"; height: "109"; }
- ListElement{ longitude: "1"; latitude: "22"; height: "109"; }
- ListElement{ longitude: "1"; latitude: "23"; height: "114"; }
- ListElement{ longitude: "1"; latitude: "24"; height: "117"; }
- ListElement{ longitude: "1"; latitude: "25"; height: "121"; }
- ListElement{ longitude: "1"; latitude: "26"; height: "120"; }
- ListElement{ longitude: "1"; latitude: "27"; height: "118"; }
- ListElement{ longitude: "1"; latitude: "28"; height: "115"; }
- ListElement{ longitude: "1"; latitude: "29"; height: "112"; }
- ListElement{ longitude: "1"; latitude: "30"; height: "110"; }
- ListElement{ longitude: "1"; latitude: "31"; height: "104"; }
- ListElement{ longitude: "1"; latitude: "32"; height: "104"; }
- ListElement{ longitude: "1"; latitude: "33"; height: "103"; }
- ListElement{ longitude: "1"; latitude: "34"; height: "101"; }
- ListElement{ longitude: "1"; latitude: "35"; height: "105"; }
- ListElement{ longitude: "1"; latitude: "36"; height: "108"; }
- ListElement{ longitude: "1"; latitude: "37"; height: "113"; }
- ListElement{ longitude: "1"; latitude: "38"; height: "116"; }
- ListElement{ longitude: "1"; latitude: "39"; height: "117"; }
- ListElement{ longitude: "1"; latitude: "40"; height: "120"; }
- ListElement{ longitude: "1"; latitude: "41"; height: "121"; }
- ListElement{ longitude: "1"; latitude: "42"; height: "121"; }
- ListElement{ longitude: "1"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "1"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "1"; latitude: "45"; height: "126"; }
- ListElement{ longitude: "1"; latitude: "46"; height: "130"; }
- ListElement{ longitude: "1"; latitude: "47"; height: "133"; }
- ListElement{ longitude: "1"; latitude: "48"; height: "134"; }
- ListElement{ longitude: "1"; latitude: "49"; height: "133"; }
- ListElement{ longitude: "1"; latitude: "50"; height: "133"; }
- ListElement{ longitude: "1"; latitude: "51"; height: "128"; }
- ListElement{ longitude: "1"; latitude: "52"; height: "125"; }
- ListElement{ longitude: "1"; latitude: "53"; height: "122"; }
- ListElement{ longitude: "1"; latitude: "54"; height: "118"; }
- ListElement{ longitude: "1"; latitude: "55"; height: "116"; }
- ListElement{ longitude: "1"; latitude: "56"; height: "116"; }
- ListElement{ longitude: "1"; latitude: "57"; height: "117"; }
- ListElement{ longitude: "1"; latitude: "58"; height: "114"; }
- ListElement{ longitude: "1"; latitude: "59"; height: "113"; }
- ListElement{ longitude: "1"; latitude: "60"; height: "109"; }
- ListElement{ longitude: "1"; latitude: "61"; height: "106"; }
- ListElement{ longitude: "1"; latitude: "62"; height: "103"; }
- ListElement{ longitude: "1"; latitude: "63"; height: "105"; }
- ListElement{ longitude: "1"; latitude: "64"; height: "105"; }
- ListElement{ longitude: "1"; latitude: "65"; height: "111"; }
- ListElement{ longitude: "1"; latitude: "66"; height: "112"; }
- ListElement{ longitude: "1"; latitude: "67"; height: "114"; }
- ListElement{ longitude: "1"; latitude: "68"; height: "117"; }
- ListElement{ longitude: "1"; latitude: "69"; height: "119"; }
- ListElement{ longitude: "1"; latitude: "70"; height: "120"; }
- ListElement{ longitude: "1"; latitude: "71"; height: "122"; }
- ListElement{ longitude: "1"; latitude: "72"; height: "123"; }
- ListElement{ longitude: "1"; latitude: "73"; height: "125"; }
- ListElement{ longitude: "1"; latitude: "74"; height: "124"; }
- ListElement{ longitude: "1"; latitude: "75"; height: "123"; }
- ListElement{ longitude: "1"; latitude: "76"; height: "120"; }
- ListElement{ longitude: "1"; latitude: "77"; height: "120"; }
- ListElement{ longitude: "1"; latitude: "78"; height: "122"; }
- ListElement{ longitude: "1"; latitude: "79"; height: "128"; }
- ListElement{ longitude: "1"; latitude: "80"; height: "135"; }
- ListElement{ longitude: "1"; latitude: "81"; height: "140"; }
- ListElement{ longitude: "1"; latitude: "82"; height: "137"; }
- ListElement{ longitude: "1"; latitude: "83"; height: "132"; }
- ListElement{ longitude: "1"; latitude: "84"; height: "124"; }
- ListElement{ longitude: "1"; latitude: "85"; height: "116"; }
- ListElement{ longitude: "1"; latitude: "86"; height: "115"; }
- ListElement{ longitude: "1"; latitude: "87"; height: "120"; }
- ListElement{ longitude: "1"; latitude: "88"; height: "125"; }
- ListElement{ longitude: "1"; latitude: "89"; height: "131"; }
- ListElement{ longitude: "1"; latitude: "90"; height: "134"; }
- ListElement{ longitude: "1"; latitude: "91"; height: "136"; }
- ListElement{ longitude: "1"; latitude: "92"; height: "134"; }
- ListElement{ longitude: "1"; latitude: "93"; height: "131"; }
- ListElement{ longitude: "1"; latitude: "94"; height: "130"; }
- ListElement{ longitude: "1"; latitude: "95"; height: "130"; }
- ListElement{ longitude: "1"; latitude: "96"; height: "133"; }
- ListElement{ longitude: "1"; latitude: "97"; height: "139"; }
- ListElement{ longitude: "1"; latitude: "98"; height: "140"; }
- ListElement{ longitude: "1"; latitude: "99"; height: "124"; }
- ListElement{ longitude: "2"; latitude: "0"; height: "116"; }
- ListElement{ longitude: "2"; latitude: "1"; height: "116"; }
- ListElement{ longitude: "2"; latitude: "2"; height: "111"; }
- ListElement{ longitude: "2"; latitude: "3"; height: "105"; }
- ListElement{ longitude: "2"; latitude: "4"; height: "108"; }
- ListElement{ longitude: "2"; latitude: "5"; height: "110"; }
- ListElement{ longitude: "2"; latitude: "6"; height: "114"; }
- ListElement{ longitude: "2"; latitude: "7"; height: "118"; }
- ListElement{ longitude: "2"; latitude: "8"; height: "124"; }
- ListElement{ longitude: "2"; latitude: "9"; height: "130"; }
- ListElement{ longitude: "2"; latitude: "10"; height: "131"; }
- ListElement{ longitude: "2"; latitude: "11"; height: "134"; }
- ListElement{ longitude: "2"; latitude: "12"; height: "133"; }
- ListElement{ longitude: "2"; latitude: "13"; height: "128"; }
- ListElement{ longitude: "2"; latitude: "14"; height: "125"; }
- ListElement{ longitude: "2"; latitude: "15"; height: "119"; }
- ListElement{ longitude: "2"; latitude: "16"; height: "115"; }
- ListElement{ longitude: "2"; latitude: "17"; height: "111"; }
- ListElement{ longitude: "2"; latitude: "18"; height: "105"; }
- ListElement{ longitude: "2"; latitude: "19"; height: "102"; }
- ListElement{ longitude: "2"; latitude: "20"; height: "99"; }
- ListElement{ longitude: "2"; latitude: "21"; height: "102"; }
- ListElement{ longitude: "2"; latitude: "22"; height: "106"; }
- ListElement{ longitude: "2"; latitude: "23"; height: "110"; }
- ListElement{ longitude: "2"; latitude: "24"; height: "115"; }
- ListElement{ longitude: "2"; latitude: "25"; height: "122"; }
- ListElement{ longitude: "2"; latitude: "26"; height: "122"; }
- ListElement{ longitude: "2"; latitude: "27"; height: "121"; }
- ListElement{ longitude: "2"; latitude: "28"; height: "118"; }
- ListElement{ longitude: "2"; latitude: "29"; height: "115"; }
- ListElement{ longitude: "2"; latitude: "30"; height: "111"; }
- ListElement{ longitude: "2"; latitude: "31"; height: "79"; }
- ListElement{ longitude: "2"; latitude: "32"; height: "94"; }
- ListElement{ longitude: "2"; latitude: "33"; height: "103"; }
- ListElement{ longitude: "2"; latitude: "34"; height: "102"; }
- ListElement{ longitude: "2"; latitude: "35"; height: "103"; }
- ListElement{ longitude: "2"; latitude: "36"; height: "107"; }
- ListElement{ longitude: "2"; latitude: "37"; height: "113"; }
- ListElement{ longitude: "2"; latitude: "38"; height: "116"; }
- ListElement{ longitude: "2"; latitude: "39"; height: "118"; }
- ListElement{ longitude: "2"; latitude: "40"; height: "117"; }
- ListElement{ longitude: "2"; latitude: "41"; height: "119"; }
- ListElement{ longitude: "2"; latitude: "42"; height: "119"; }
- ListElement{ longitude: "2"; latitude: "43"; height: "121"; }
- ListElement{ longitude: "2"; latitude: "44"; height: "123"; }
- ListElement{ longitude: "2"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "2"; latitude: "46"; height: "131"; }
- ListElement{ longitude: "2"; latitude: "47"; height: "132"; }
- ListElement{ longitude: "2"; latitude: "48"; height: "132"; }
- ListElement{ longitude: "2"; latitude: "49"; height: "135"; }
- ListElement{ longitude: "2"; latitude: "50"; height: "134"; }
- ListElement{ longitude: "2"; latitude: "51"; height: "130"; }
- ListElement{ longitude: "2"; latitude: "52"; height: "128"; }
- ListElement{ longitude: "2"; latitude: "53"; height: "123"; }
- ListElement{ longitude: "2"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "2"; latitude: "55"; height: "118"; }
- ListElement{ longitude: "2"; latitude: "56"; height: "118"; }
- ListElement{ longitude: "2"; latitude: "57"; height: "123"; }
- ListElement{ longitude: "2"; latitude: "58"; height: "121"; }
- ListElement{ longitude: "2"; latitude: "59"; height: "120"; }
- ListElement{ longitude: "2"; latitude: "60"; height: "114"; }
- ListElement{ longitude: "2"; latitude: "61"; height: "107"; }
- ListElement{ longitude: "2"; latitude: "62"; height: "103"; }
- ListElement{ longitude: "2"; latitude: "63"; height: "103"; }
- ListElement{ longitude: "2"; latitude: "64"; height: "106"; }
- ListElement{ longitude: "2"; latitude: "65"; height: "108"; }
- ListElement{ longitude: "2"; latitude: "66"; height: "109"; }
- ListElement{ longitude: "2"; latitude: "67"; height: "114"; }
- ListElement{ longitude: "2"; latitude: "68"; height: "117"; }
- ListElement{ longitude: "2"; latitude: "69"; height: "121"; }
- ListElement{ longitude: "2"; latitude: "70"; height: "121"; }
- ListElement{ longitude: "2"; latitude: "71"; height: "122"; }
- ListElement{ longitude: "2"; latitude: "72"; height: "123"; }
- ListElement{ longitude: "2"; latitude: "73"; height: "123"; }
- ListElement{ longitude: "2"; latitude: "74"; height: "122"; }
- ListElement{ longitude: "2"; latitude: "75"; height: "123"; }
- ListElement{ longitude: "2"; latitude: "76"; height: "120"; }
- ListElement{ longitude: "2"; latitude: "77"; height: "118"; }
- ListElement{ longitude: "2"; latitude: "78"; height: "119"; }
- ListElement{ longitude: "2"; latitude: "79"; height: "125"; }
- ListElement{ longitude: "2"; latitude: "80"; height: "130"; }
- ListElement{ longitude: "2"; latitude: "81"; height: "138"; }
- ListElement{ longitude: "2"; latitude: "82"; height: "138"; }
- ListElement{ longitude: "2"; latitude: "83"; height: "131"; }
- ListElement{ longitude: "2"; latitude: "84"; height: "125"; }
- ListElement{ longitude: "2"; latitude: "85"; height: "122"; }
- ListElement{ longitude: "2"; latitude: "86"; height: "121"; }
- ListElement{ longitude: "2"; latitude: "87"; height: "133"; }
- ListElement{ longitude: "2"; latitude: "88"; height: "132"; }
- ListElement{ longitude: "2"; latitude: "89"; height: "135"; }
- ListElement{ longitude: "2"; latitude: "90"; height: "138"; }
- ListElement{ longitude: "2"; latitude: "91"; height: "137"; }
- ListElement{ longitude: "2"; latitude: "92"; height: "137"; }
- ListElement{ longitude: "2"; latitude: "93"; height: "134"; }
- ListElement{ longitude: "2"; latitude: "94"; height: "133"; }
- ListElement{ longitude: "2"; latitude: "95"; height: "133"; }
- ListElement{ longitude: "2"; latitude: "96"; height: "133"; }
- ListElement{ longitude: "2"; latitude: "97"; height: "140"; }
- ListElement{ longitude: "2"; latitude: "98"; height: "140"; }
- ListElement{ longitude: "2"; latitude: "99"; height: "121"; }
- ListElement{ longitude: "3"; latitude: "0"; height: "115"; }
- ListElement{ longitude: "3"; latitude: "1"; height: "111"; }
- ListElement{ longitude: "3"; latitude: "2"; height: "108"; }
- ListElement{ longitude: "3"; latitude: "3"; height: "107"; }
- ListElement{ longitude: "3"; latitude: "4"; height: "108"; }
- ListElement{ longitude: "3"; latitude: "5"; height: "111"; }
- ListElement{ longitude: "3"; latitude: "6"; height: "117"; }
- ListElement{ longitude: "3"; latitude: "7"; height: "119"; }
- ListElement{ longitude: "3"; latitude: "8"; height: "124"; }
- ListElement{ longitude: "3"; latitude: "9"; height: "130"; }
- ListElement{ longitude: "3"; latitude: "10"; height: "133"; }
- ListElement{ longitude: "3"; latitude: "11"; height: "136"; }
- ListElement{ longitude: "3"; latitude: "12"; height: "136"; }
- ListElement{ longitude: "3"; latitude: "13"; height: "132"; }
- ListElement{ longitude: "3"; latitude: "14"; height: "129"; }
- ListElement{ longitude: "3"; latitude: "15"; height: "125"; }
- ListElement{ longitude: "3"; latitude: "16"; height: "119"; }
- ListElement{ longitude: "3"; latitude: "17"; height: "115"; }
- ListElement{ longitude: "3"; latitude: "18"; height: "106"; }
- ListElement{ longitude: "3"; latitude: "19"; height: "101"; }
- ListElement{ longitude: "3"; latitude: "20"; height: "99"; }
- ListElement{ longitude: "3"; latitude: "21"; height: "98"; }
- ListElement{ longitude: "3"; latitude: "22"; height: "103"; }
- ListElement{ longitude: "3"; latitude: "23"; height: "109"; }
- ListElement{ longitude: "3"; latitude: "24"; height: "115"; }
- ListElement{ longitude: "3"; latitude: "25"; height: "121"; }
- ListElement{ longitude: "3"; latitude: "26"; height: "126"; }
- ListElement{ longitude: "3"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "3"; latitude: "28"; height: "123"; }
- ListElement{ longitude: "3"; latitude: "29"; height: "117"; }
- ListElement{ longitude: "3"; latitude: "30"; height: "116"; }
- ListElement{ longitude: "3"; latitude: "31"; height: "106"; }
- ListElement{ longitude: "3"; latitude: "32"; height: "105"; }
- ListElement{ longitude: "3"; latitude: "33"; height: "100"; }
- ListElement{ longitude: "3"; latitude: "34"; height: "99"; }
- ListElement{ longitude: "3"; latitude: "35"; height: "103"; }
- ListElement{ longitude: "3"; latitude: "36"; height: "106"; }
- ListElement{ longitude: "3"; latitude: "37"; height: "114"; }
- ListElement{ longitude: "3"; latitude: "38"; height: "115"; }
- ListElement{ longitude: "3"; latitude: "39"; height: "115"; }
- ListElement{ longitude: "3"; latitude: "40"; height: "115"; }
- ListElement{ longitude: "3"; latitude: "41"; height: "116"; }
- ListElement{ longitude: "3"; latitude: "42"; height: "117"; }
- ListElement{ longitude: "3"; latitude: "43"; height: "119"; }
- ListElement{ longitude: "3"; latitude: "44"; height: "124"; }
- ListElement{ longitude: "3"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "3"; latitude: "46"; height: "129"; }
- ListElement{ longitude: "3"; latitude: "47"; height: "128"; }
- ListElement{ longitude: "3"; latitude: "48"; height: "135"; }
- ListElement{ longitude: "3"; latitude: "49"; height: "139"; }
- ListElement{ longitude: "3"; latitude: "50"; height: "139"; }
- ListElement{ longitude: "3"; latitude: "51"; height: "136"; }
- ListElement{ longitude: "3"; latitude: "52"; height: "130"; }
- ListElement{ longitude: "3"; latitude: "53"; height: "126"; }
- ListElement{ longitude: "3"; latitude: "54"; height: "121"; }
- ListElement{ longitude: "3"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "3"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "3"; latitude: "57"; height: "128"; }
- ListElement{ longitude: "3"; latitude: "58"; height: "98"; }
- ListElement{ longitude: "3"; latitude: "59"; height: "78"; }
- ListElement{ longitude: "3"; latitude: "60"; height: "115"; }
- ListElement{ longitude: "3"; latitude: "61"; height: "112"; }
- ListElement{ longitude: "3"; latitude: "62"; height: "108"; }
- ListElement{ longitude: "3"; latitude: "63"; height: "106"; }
- ListElement{ longitude: "3"; latitude: "64"; height: "105"; }
- ListElement{ longitude: "3"; latitude: "65"; height: "108"; }
- ListElement{ longitude: "3"; latitude: "66"; height: "111"; }
- ListElement{ longitude: "3"; latitude: "67"; height: "115"; }
- ListElement{ longitude: "3"; latitude: "68"; height: "120"; }
- ListElement{ longitude: "3"; latitude: "69"; height: "121"; }
- ListElement{ longitude: "3"; latitude: "70"; height: "123"; }
- ListElement{ longitude: "3"; latitude: "71"; height: "124"; }
- ListElement{ longitude: "3"; latitude: "72"; height: "126"; }
- ListElement{ longitude: "3"; latitude: "73"; height: "127"; }
- ListElement{ longitude: "3"; latitude: "74"; height: "126"; }
- ListElement{ longitude: "3"; latitude: "75"; height: "124"; }
- ListElement{ longitude: "3"; latitude: "76"; height: "121"; }
- ListElement{ longitude: "3"; latitude: "77"; height: "117"; }
- ListElement{ longitude: "3"; latitude: "78"; height: "113"; }
- ListElement{ longitude: "3"; latitude: "79"; height: "119"; }
- ListElement{ longitude: "3"; latitude: "80"; height: "124"; }
- ListElement{ longitude: "3"; latitude: "81"; height: "130"; }
- ListElement{ longitude: "3"; latitude: "82"; height: "133"; }
- ListElement{ longitude: "3"; latitude: "83"; height: "131"; }
- ListElement{ longitude: "3"; latitude: "84"; height: "124"; }
- ListElement{ longitude: "3"; latitude: "85"; height: "122"; }
- ListElement{ longitude: "3"; latitude: "86"; height: "66"; }
- ListElement{ longitude: "3"; latitude: "87"; height: "109"; }
- ListElement{ longitude: "3"; latitude: "88"; height: "136"; }
- ListElement{ longitude: "3"; latitude: "89"; height: "142"; }
- ListElement{ longitude: "3"; latitude: "90"; height: "144"; }
- ListElement{ longitude: "3"; latitude: "91"; height: "144"; }
- ListElement{ longitude: "3"; latitude: "92"; height: "141"; }
- ListElement{ longitude: "3"; latitude: "93"; height: "137"; }
- ListElement{ longitude: "3"; latitude: "94"; height: "136"; }
- ListElement{ longitude: "3"; latitude: "95"; height: "136"; }
- ListElement{ longitude: "3"; latitude: "96"; height: "139"; }
- ListElement{ longitude: "3"; latitude: "97"; height: "142"; }
- ListElement{ longitude: "3"; latitude: "98"; height: "142"; }
- ListElement{ longitude: "3"; latitude: "99"; height: "120"; }
- ListElement{ longitude: "4"; latitude: "0"; height: "112"; }
- ListElement{ longitude: "4"; latitude: "1"; height: "107"; }
- ListElement{ longitude: "4"; latitude: "2"; height: "107"; }
- ListElement{ longitude: "4"; latitude: "3"; height: "106"; }
- ListElement{ longitude: "4"; latitude: "4"; height: "110"; }
- ListElement{ longitude: "4"; latitude: "5"; height: "113"; }
- ListElement{ longitude: "4"; latitude: "6"; height: "117"; }
- ListElement{ longitude: "4"; latitude: "7"; height: "122"; }
- ListElement{ longitude: "4"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "4"; latitude: "9"; height: "131"; }
- ListElement{ longitude: "4"; latitude: "10"; height: "134"; }
- ListElement{ longitude: "4"; latitude: "11"; height: "135"; }
- ListElement{ longitude: "4"; latitude: "12"; height: "135"; }
- ListElement{ longitude: "4"; latitude: "13"; height: "135"; }
- ListElement{ longitude: "4"; latitude: "14"; height: "133"; }
- ListElement{ longitude: "4"; latitude: "15"; height: "131"; }
- ListElement{ longitude: "4"; latitude: "16"; height: "125"; }
- ListElement{ longitude: "4"; latitude: "17"; height: "119"; }
- ListElement{ longitude: "4"; latitude: "18"; height: "111"; }
- ListElement{ longitude: "4"; latitude: "19"; height: "107"; }
- ListElement{ longitude: "4"; latitude: "20"; height: "100"; }
- ListElement{ longitude: "4"; latitude: "21"; height: "102"; }
- ListElement{ longitude: "4"; latitude: "22"; height: "103"; }
- ListElement{ longitude: "4"; latitude: "23"; height: "110"; }
- ListElement{ longitude: "4"; latitude: "24"; height: "115"; }
- ListElement{ longitude: "4"; latitude: "25"; height: "124"; }
- ListElement{ longitude: "4"; latitude: "26"; height: "126"; }
- ListElement{ longitude: "4"; latitude: "27"; height: "131"; }
- ListElement{ longitude: "4"; latitude: "28"; height: "108"; }
- ListElement{ longitude: "4"; latitude: "29"; height: "103"; }
- ListElement{ longitude: "4"; latitude: "30"; height: "117"; }
- ListElement{ longitude: "4"; latitude: "31"; height: "114"; }
- ListElement{ longitude: "4"; latitude: "32"; height: "105"; }
- ListElement{ longitude: "4"; latitude: "33"; height: "101"; }
- ListElement{ longitude: "4"; latitude: "34"; height: "101"; }
- ListElement{ longitude: "4"; latitude: "35"; height: "103"; }
- ListElement{ longitude: "4"; latitude: "36"; height: "108"; }
- ListElement{ longitude: "4"; latitude: "37"; height: "112"; }
- ListElement{ longitude: "4"; latitude: "38"; height: "114"; }
- ListElement{ longitude: "4"; latitude: "39"; height: "116"; }
- ListElement{ longitude: "4"; latitude: "40"; height: "116"; }
- ListElement{ longitude: "4"; latitude: "41"; height: "117"; }
- ListElement{ longitude: "4"; latitude: "42"; height: "117"; }
- ListElement{ longitude: "4"; latitude: "43"; height: "121"; }
- ListElement{ longitude: "4"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "4"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "4"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "4"; latitude: "47"; height: "130"; }
- ListElement{ longitude: "4"; latitude: "48"; height: "137"; }
- ListElement{ longitude: "4"; latitude: "49"; height: "147"; }
- ListElement{ longitude: "4"; latitude: "50"; height: "143"; }
- ListElement{ longitude: "4"; latitude: "51"; height: "143"; }
- ListElement{ longitude: "4"; latitude: "52"; height: "133"; }
- ListElement{ longitude: "4"; latitude: "53"; height: "127"; }
- ListElement{ longitude: "4"; latitude: "54"; height: "123"; }
- ListElement{ longitude: "4"; latitude: "55"; height: "121"; }
- ListElement{ longitude: "4"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "4"; latitude: "57"; height: "132"; }
- ListElement{ longitude: "4"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "4"; latitude: "59"; height: "120"; }
- ListElement{ longitude: "4"; latitude: "60"; height: "123"; }
- ListElement{ longitude: "4"; latitude: "61"; height: "116"; }
- ListElement{ longitude: "4"; latitude: "62"; height: "111"; }
- ListElement{ longitude: "4"; latitude: "63"; height: "109"; }
- ListElement{ longitude: "4"; latitude: "64"; height: "107"; }
- ListElement{ longitude: "4"; latitude: "65"; height: "110"; }
- ListElement{ longitude: "4"; latitude: "66"; height: "113"; }
- ListElement{ longitude: "4"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "4"; latitude: "68"; height: "123"; }
- ListElement{ longitude: "4"; latitude: "69"; height: "126"; }
- ListElement{ longitude: "4"; latitude: "70"; height: "127"; }
- ListElement{ longitude: "4"; latitude: "71"; height: "128"; }
- ListElement{ longitude: "4"; latitude: "72"; height: "128"; }
- ListElement{ longitude: "4"; latitude: "73"; height: "128"; }
- ListElement{ longitude: "4"; latitude: "74"; height: "116"; }
- ListElement{ longitude: "4"; latitude: "75"; height: "116"; }
- ListElement{ longitude: "4"; latitude: "76"; height: "130"; }
- ListElement{ longitude: "4"; latitude: "77"; height: "116"; }
- ListElement{ longitude: "4"; latitude: "78"; height: "112"; }
- ListElement{ longitude: "4"; latitude: "79"; height: "115"; }
- ListElement{ longitude: "4"; latitude: "80"; height: "120"; }
- ListElement{ longitude: "4"; latitude: "81"; height: "126"; }
- ListElement{ longitude: "4"; latitude: "82"; height: "128"; }
- ListElement{ longitude: "4"; latitude: "83"; height: "126"; }
- ListElement{ longitude: "4"; latitude: "84"; height: "124"; }
- ListElement{ longitude: "4"; latitude: "85"; height: "128"; }
- ListElement{ longitude: "4"; latitude: "86"; height: "121"; }
- ListElement{ longitude: "4"; latitude: "87"; height: "132"; }
- ListElement{ longitude: "4"; latitude: "88"; height: "141"; }
- ListElement{ longitude: "4"; latitude: "89"; height: "147"; }
- ListElement{ longitude: "4"; latitude: "90"; height: "148"; }
- ListElement{ longitude: "4"; latitude: "91"; height: "147"; }
- ListElement{ longitude: "4"; latitude: "92"; height: "144"; }
- ListElement{ longitude: "4"; latitude: "93"; height: "141"; }
- ListElement{ longitude: "4"; latitude: "94"; height: "138"; }
- ListElement{ longitude: "4"; latitude: "95"; height: "138"; }
- ListElement{ longitude: "4"; latitude: "96"; height: "141"; }
- ListElement{ longitude: "4"; latitude: "97"; height: "145"; }
- ListElement{ longitude: "4"; latitude: "98"; height: "143"; }
- ListElement{ longitude: "4"; latitude: "99"; height: "121"; }
- ListElement{ longitude: "5"; latitude: "0"; height: "112"; }
- ListElement{ longitude: "5"; latitude: "1"; height: "109"; }
- ListElement{ longitude: "5"; latitude: "2"; height: "108"; }
- ListElement{ longitude: "5"; latitude: "3"; height: "107"; }
- ListElement{ longitude: "5"; latitude: "4"; height: "112"; }
- ListElement{ longitude: "5"; latitude: "5"; height: "116"; }
- ListElement{ longitude: "5"; latitude: "6"; height: "122"; }
- ListElement{ longitude: "5"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "5"; latitude: "8"; height: "130"; }
- ListElement{ longitude: "5"; latitude: "9"; height: "133"; }
- ListElement{ longitude: "5"; latitude: "10"; height: "135"; }
- ListElement{ longitude: "5"; latitude: "11"; height: "136"; }
- ListElement{ longitude: "5"; latitude: "12"; height: "137"; }
- ListElement{ longitude: "5"; latitude: "13"; height: "129"; }
- ListElement{ longitude: "5"; latitude: "14"; height: "126"; }
- ListElement{ longitude: "5"; latitude: "15"; height: "134"; }
- ListElement{ longitude: "5"; latitude: "16"; height: "129"; }
- ListElement{ longitude: "5"; latitude: "17"; height: "123"; }
- ListElement{ longitude: "5"; latitude: "18"; height: "116"; }
- ListElement{ longitude: "5"; latitude: "19"; height: "108"; }
- ListElement{ longitude: "5"; latitude: "20"; height: "102"; }
- ListElement{ longitude: "5"; latitude: "21"; height: "102"; }
- ListElement{ longitude: "5"; latitude: "22"; height: "105"; }
- ListElement{ longitude: "5"; latitude: "23"; height: "113"; }
- ListElement{ longitude: "5"; latitude: "24"; height: "118"; }
- ListElement{ longitude: "5"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "5"; latitude: "26"; height: "130"; }
- ListElement{ longitude: "5"; latitude: "27"; height: "133"; }
- ListElement{ longitude: "5"; latitude: "28"; height: "129"; }
- ListElement{ longitude: "5"; latitude: "29"; height: "123"; }
- ListElement{ longitude: "5"; latitude: "30"; height: "66"; }
- ListElement{ longitude: "5"; latitude: "31"; height: "102"; }
- ListElement{ longitude: "5"; latitude: "32"; height: "106"; }
- ListElement{ longitude: "5"; latitude: "33"; height: "100"; }
- ListElement{ longitude: "5"; latitude: "34"; height: "100"; }
- ListElement{ longitude: "5"; latitude: "35"; height: "104"; }
- ListElement{ longitude: "5"; latitude: "36"; height: "107"; }
- ListElement{ longitude: "5"; latitude: "37"; height: "110"; }
- ListElement{ longitude: "5"; latitude: "38"; height: "112"; }
- ListElement{ longitude: "5"; latitude: "39"; height: "113"; }
- ListElement{ longitude: "5"; latitude: "40"; height: "114"; }
- ListElement{ longitude: "5"; latitude: "41"; height: "116"; }
- ListElement{ longitude: "5"; latitude: "42"; height: "118"; }
- ListElement{ longitude: "5"; latitude: "43"; height: "121"; }
- ListElement{ longitude: "5"; latitude: "44"; height: "123"; }
- ListElement{ longitude: "5"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "5"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "5"; latitude: "47"; height: "130"; }
- ListElement{ longitude: "5"; latitude: "48"; height: "137"; }
- ListElement{ longitude: "5"; latitude: "49"; height: "139"; }
- ListElement{ longitude: "5"; latitude: "50"; height: "77"; }
- ListElement{ longitude: "5"; latitude: "51"; height: "123"; }
- ListElement{ longitude: "5"; latitude: "52"; height: "131"; }
- ListElement{ longitude: "5"; latitude: "53"; height: "126"; }
- ListElement{ longitude: "5"; latitude: "54"; height: "123"; }
- ListElement{ longitude: "5"; latitude: "55"; height: "123"; }
- ListElement{ longitude: "5"; latitude: "56"; height: "124"; }
- ListElement{ longitude: "5"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "5"; latitude: "58"; height: "129"; }
- ListElement{ longitude: "5"; latitude: "59"; height: "129"; }
- ListElement{ longitude: "5"; latitude: "60"; height: "123"; }
- ListElement{ longitude: "5"; latitude: "61"; height: "121"; }
- ListElement{ longitude: "5"; latitude: "62"; height: "116"; }
- ListElement{ longitude: "5"; latitude: "63"; height: "113"; }
- ListElement{ longitude: "5"; latitude: "64"; height: "110"; }
- ListElement{ longitude: "5"; latitude: "65"; height: "111"; }
- ListElement{ longitude: "5"; latitude: "66"; height: "116"; }
- ListElement{ longitude: "5"; latitude: "67"; height: "121"; }
- ListElement{ longitude: "5"; latitude: "68"; height: "127"; }
- ListElement{ longitude: "5"; latitude: "69"; height: "130"; }
- ListElement{ longitude: "5"; latitude: "70"; height: "130"; }
- ListElement{ longitude: "5"; latitude: "71"; height: "131"; }
- ListElement{ longitude: "5"; latitude: "72"; height: "133"; }
- ListElement{ longitude: "5"; latitude: "73"; height: "128"; }
- ListElement{ longitude: "5"; latitude: "74"; height: "107"; }
- ListElement{ longitude: "5"; latitude: "75"; height: "74"; }
- ListElement{ longitude: "5"; latitude: "76"; height: "121"; }
- ListElement{ longitude: "5"; latitude: "77"; height: "116"; }
- ListElement{ longitude: "5"; latitude: "78"; height: "109"; }
- ListElement{ longitude: "5"; latitude: "79"; height: "110"; }
- ListElement{ longitude: "5"; latitude: "80"; height: "113"; }
- ListElement{ longitude: "5"; latitude: "81"; height: "118"; }
- ListElement{ longitude: "5"; latitude: "82"; height: "120"; }
- ListElement{ longitude: "5"; latitude: "83"; height: "124"; }
- ListElement{ longitude: "5"; latitude: "84"; height: "123"; }
- ListElement{ longitude: "5"; latitude: "85"; height: "122"; }
- ListElement{ longitude: "5"; latitude: "86"; height: "127"; }
- ListElement{ longitude: "5"; latitude: "87"; height: "135"; }
- ListElement{ longitude: "5"; latitude: "88"; height: "140"; }
- ListElement{ longitude: "5"; latitude: "89"; height: "146"; }
- ListElement{ longitude: "5"; latitude: "90"; height: "150"; }
- ListElement{ longitude: "5"; latitude: "91"; height: "148"; }
- ListElement{ longitude: "5"; latitude: "92"; height: "146"; }
- ListElement{ longitude: "5"; latitude: "93"; height: "142"; }
- ListElement{ longitude: "5"; latitude: "94"; height: "140"; }
- ListElement{ longitude: "5"; latitude: "95"; height: "140"; }
- ListElement{ longitude: "5"; latitude: "96"; height: "142"; }
- ListElement{ longitude: "5"; latitude: "97"; height: "144"; }
- ListElement{ longitude: "5"; latitude: "98"; height: "145"; }
- ListElement{ longitude: "5"; latitude: "99"; height: "123"; }
- ListElement{ longitude: "6"; latitude: "0"; height: "115"; }
- ListElement{ longitude: "6"; latitude: "1"; height: "111"; }
- ListElement{ longitude: "6"; latitude: "2"; height: "110"; }
- ListElement{ longitude: "6"; latitude: "3"; height: "111"; }
- ListElement{ longitude: "6"; latitude: "4"; height: "116"; }
- ListElement{ longitude: "6"; latitude: "5"; height: "119"; }
- ListElement{ longitude: "6"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "6"; latitude: "7"; height: "129"; }
- ListElement{ longitude: "6"; latitude: "8"; height: "132"; }
- ListElement{ longitude: "6"; latitude: "9"; height: "132"; }
- ListElement{ longitude: "6"; latitude: "10"; height: "135"; }
- ListElement{ longitude: "6"; latitude: "11"; height: "136"; }
- ListElement{ longitude: "6"; latitude: "12"; height: "135"; }
- ListElement{ longitude: "6"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "6"; latitude: "14"; height: "137"; }
- ListElement{ longitude: "6"; latitude: "15"; height: "136"; }
- ListElement{ longitude: "6"; latitude: "16"; height: "132"; }
- ListElement{ longitude: "6"; latitude: "17"; height: "128"; }
- ListElement{ longitude: "6"; latitude: "18"; height: "118"; }
- ListElement{ longitude: "6"; latitude: "19"; height: "111"; }
- ListElement{ longitude: "6"; latitude: "20"; height: "105"; }
- ListElement{ longitude: "6"; latitude: "21"; height: "106"; }
- ListElement{ longitude: "6"; latitude: "22"; height: "107"; }
- ListElement{ longitude: "6"; latitude: "23"; height: "115"; }
- ListElement{ longitude: "6"; latitude: "24"; height: "121"; }
- ListElement{ longitude: "6"; latitude: "25"; height: "111"; }
- ListElement{ longitude: "6"; latitude: "26"; height: "78"; }
- ListElement{ longitude: "6"; latitude: "27"; height: "131"; }
- ListElement{ longitude: "6"; latitude: "28"; height: "130"; }
- ListElement{ longitude: "6"; latitude: "29"; height: "129"; }
- ListElement{ longitude: "6"; latitude: "30"; height: "103"; }
- ListElement{ longitude: "6"; latitude: "31"; height: "113"; }
- ListElement{ longitude: "6"; latitude: "32"; height: "108"; }
- ListElement{ longitude: "6"; latitude: "33"; height: "103"; }
- ListElement{ longitude: "6"; latitude: "34"; height: "103"; }
- ListElement{ longitude: "6"; latitude: "35"; height: "107"; }
- ListElement{ longitude: "6"; latitude: "36"; height: "109"; }
- ListElement{ longitude: "6"; latitude: "37"; height: "113"; }
- ListElement{ longitude: "6"; latitude: "38"; height: "112"; }
- ListElement{ longitude: "6"; latitude: "39"; height: "115"; }
- ListElement{ longitude: "6"; latitude: "40"; height: "115"; }
- ListElement{ longitude: "6"; latitude: "41"; height: "119"; }
- ListElement{ longitude: "6"; latitude: "42"; height: "122"; }
- ListElement{ longitude: "6"; latitude: "43"; height: "125"; }
- ListElement{ longitude: "6"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "6"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "6"; latitude: "46"; height: "129"; }
- ListElement{ longitude: "6"; latitude: "47"; height: "131"; }
- ListElement{ longitude: "6"; latitude: "48"; height: "133"; }
- ListElement{ longitude: "6"; latitude: "49"; height: "141"; }
- ListElement{ longitude: "6"; latitude: "50"; height: "135"; }
- ListElement{ longitude: "6"; latitude: "51"; height: "137"; }
- ListElement{ longitude: "6"; latitude: "52"; height: "132"; }
- ListElement{ longitude: "6"; latitude: "53"; height: "124"; }
- ListElement{ longitude: "6"; latitude: "54"; height: "122"; }
- ListElement{ longitude: "6"; latitude: "55"; height: "125"; }
- ListElement{ longitude: "6"; latitude: "56"; height: "126"; }
- ListElement{ longitude: "6"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "6"; latitude: "58"; height: "128"; }
- ListElement{ longitude: "6"; latitude: "59"; height: "127"; }
- ListElement{ longitude: "6"; latitude: "60"; height: "126"; }
- ListElement{ longitude: "6"; latitude: "61"; height: "124"; }
- ListElement{ longitude: "6"; latitude: "62"; height: "120"; }
- ListElement{ longitude: "6"; latitude: "63"; height: "118"; }
- ListElement{ longitude: "6"; latitude: "64"; height: "118"; }
- ListElement{ longitude: "6"; latitude: "65"; height: "117"; }
- ListElement{ longitude: "6"; latitude: "66"; height: "119"; }
- ListElement{ longitude: "6"; latitude: "67"; height: "124"; }
- ListElement{ longitude: "6"; latitude: "68"; height: "125"; }
- ListElement{ longitude: "6"; latitude: "69"; height: "130"; }
- ListElement{ longitude: "6"; latitude: "70"; height: "132"; }
- ListElement{ longitude: "6"; latitude: "71"; height: "135"; }
- ListElement{ longitude: "6"; latitude: "72"; height: "136"; }
- ListElement{ longitude: "6"; latitude: "73"; height: "135"; }
- ListElement{ longitude: "6"; latitude: "74"; height: "131"; }
- ListElement{ longitude: "6"; latitude: "75"; height: "135"; }
- ListElement{ longitude: "6"; latitude: "76"; height: "123"; }
- ListElement{ longitude: "6"; latitude: "77"; height: "112"; }
- ListElement{ longitude: "6"; latitude: "78"; height: "106"; }
- ListElement{ longitude: "6"; latitude: "79"; height: "106"; }
- ListElement{ longitude: "6"; latitude: "80"; height: "107"; }
- ListElement{ longitude: "6"; latitude: "81"; height: "110"; }
- ListElement{ longitude: "6"; latitude: "82"; height: "114"; }
- ListElement{ longitude: "6"; latitude: "83"; height: "116"; }
- ListElement{ longitude: "6"; latitude: "84"; height: "92"; }
- ListElement{ longitude: "6"; latitude: "85"; height: "105"; }
- ListElement{ longitude: "6"; latitude: "86"; height: "124"; }
- ListElement{ longitude: "6"; latitude: "87"; height: "130"; }
- ListElement{ longitude: "6"; latitude: "88"; height: "138"; }
- ListElement{ longitude: "6"; latitude: "89"; height: "142"; }
- ListElement{ longitude: "6"; latitude: "90"; height: "147"; }
- ListElement{ longitude: "6"; latitude: "91"; height: "147"; }
- ListElement{ longitude: "6"; latitude: "92"; height: "142"; }
- ListElement{ longitude: "6"; latitude: "93"; height: "139"; }
- ListElement{ longitude: "6"; latitude: "94"; height: "138"; }
- ListElement{ longitude: "6"; latitude: "95"; height: "136"; }
- ListElement{ longitude: "6"; latitude: "96"; height: "141"; }
- ListElement{ longitude: "6"; latitude: "97"; height: "142"; }
- ListElement{ longitude: "6"; latitude: "98"; height: "146"; }
- ListElement{ longitude: "6"; latitude: "99"; height: "126"; }
- ListElement{ longitude: "7"; latitude: "0"; height: "117"; }
- ListElement{ longitude: "7"; latitude: "1"; height: "111"; }
- ListElement{ longitude: "7"; latitude: "2"; height: "108"; }
- ListElement{ longitude: "7"; latitude: "3"; height: "112"; }
- ListElement{ longitude: "7"; latitude: "4"; height: "119"; }
- ListElement{ longitude: "7"; latitude: "5"; height: "124"; }
- ListElement{ longitude: "7"; latitude: "6"; height: "130"; }
- ListElement{ longitude: "7"; latitude: "7"; height: "131"; }
- ListElement{ longitude: "7"; latitude: "8"; height: "133"; }
- ListElement{ longitude: "7"; latitude: "9"; height: "136"; }
- ListElement{ longitude: "7"; latitude: "10"; height: "133"; }
- ListElement{ longitude: "7"; latitude: "11"; height: "134"; }
- ListElement{ longitude: "7"; latitude: "12"; height: "138"; }
- ListElement{ longitude: "7"; latitude: "13"; height: "138"; }
- ListElement{ longitude: "7"; latitude: "14"; height: "138"; }
- ListElement{ longitude: "7"; latitude: "15"; height: "138"; }
- ListElement{ longitude: "7"; latitude: "16"; height: "136"; }
- ListElement{ longitude: "7"; latitude: "17"; height: "129"; }
- ListElement{ longitude: "7"; latitude: "18"; height: "123"; }
- ListElement{ longitude: "7"; latitude: "19"; height: "115"; }
- ListElement{ longitude: "7"; latitude: "20"; height: "109"; }
- ListElement{ longitude: "7"; latitude: "21"; height: "109"; }
- ListElement{ longitude: "7"; latitude: "22"; height: "109"; }
- ListElement{ longitude: "7"; latitude: "23"; height: "117"; }
- ListElement{ longitude: "7"; latitude: "24"; height: "124"; }
- ListElement{ longitude: "7"; latitude: "25"; height: "122"; }
- ListElement{ longitude: "7"; latitude: "26"; height: "105"; }
- ListElement{ longitude: "7"; latitude: "27"; height: "131"; }
- ListElement{ longitude: "7"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "7"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "7"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "7"; latitude: "31"; height: "115"; }
- ListElement{ longitude: "7"; latitude: "32"; height: "110"; }
- ListElement{ longitude: "7"; latitude: "33"; height: "108"; }
- ListElement{ longitude: "7"; latitude: "34"; height: "107"; }
- ListElement{ longitude: "7"; latitude: "35"; height: "113"; }
- ListElement{ longitude: "7"; latitude: "36"; height: "115"; }
- ListElement{ longitude: "7"; latitude: "37"; height: "115"; }
- ListElement{ longitude: "7"; latitude: "38"; height: "114"; }
- ListElement{ longitude: "7"; latitude: "39"; height: "114"; }
- ListElement{ longitude: "7"; latitude: "40"; height: "116"; }
- ListElement{ longitude: "7"; latitude: "41"; height: "119"; }
- ListElement{ longitude: "7"; latitude: "42"; height: "122"; }
- ListElement{ longitude: "7"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "7"; latitude: "44"; height: "129"; }
- ListElement{ longitude: "7"; latitude: "45"; height: "129"; }
- ListElement{ longitude: "7"; latitude: "46"; height: "132"; }
- ListElement{ longitude: "7"; latitude: "47"; height: "132"; }
- ListElement{ longitude: "7"; latitude: "48"; height: "135"; }
- ListElement{ longitude: "7"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "7"; latitude: "50"; height: "137"; }
- ListElement{ longitude: "7"; latitude: "51"; height: "133"; }
- ListElement{ longitude: "7"; latitude: "52"; height: "130"; }
- ListElement{ longitude: "7"; latitude: "53"; height: "126"; }
- ListElement{ longitude: "7"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "7"; latitude: "55"; height: "125"; }
- ListElement{ longitude: "7"; latitude: "56"; height: "124"; }
- ListElement{ longitude: "7"; latitude: "57"; height: "125"; }
- ListElement{ longitude: "7"; latitude: "58"; height: "127"; }
- ListElement{ longitude: "7"; latitude: "59"; height: "127"; }
- ListElement{ longitude: "7"; latitude: "60"; height: "127"; }
- ListElement{ longitude: "7"; latitude: "61"; height: "127"; }
- ListElement{ longitude: "7"; latitude: "62"; height: "126"; }
- ListElement{ longitude: "7"; latitude: "63"; height: "125"; }
- ListElement{ longitude: "7"; latitude: "64"; height: "121"; }
- ListElement{ longitude: "7"; latitude: "65"; height: "122"; }
- ListElement{ longitude: "7"; latitude: "66"; height: "127"; }
- ListElement{ longitude: "7"; latitude: "67"; height: "129"; }
- ListElement{ longitude: "7"; latitude: "68"; height: "130"; }
- ListElement{ longitude: "7"; latitude: "69"; height: "129"; }
- ListElement{ longitude: "7"; latitude: "70"; height: "130"; }
- ListElement{ longitude: "7"; latitude: "71"; height: "136"; }
- ListElement{ longitude: "7"; latitude: "72"; height: "135"; }
- ListElement{ longitude: "7"; latitude: "73"; height: "136"; }
- ListElement{ longitude: "7"; latitude: "74"; height: "132"; }
- ListElement{ longitude: "7"; latitude: "75"; height: "124"; }
- ListElement{ longitude: "7"; latitude: "76"; height: "118"; }
- ListElement{ longitude: "7"; latitude: "77"; height: "110"; }
- ListElement{ longitude: "7"; latitude: "78"; height: "103"; }
- ListElement{ longitude: "7"; latitude: "79"; height: "101"; }
- ListElement{ longitude: "7"; latitude: "80"; height: "103"; }
- ListElement{ longitude: "7"; latitude: "81"; height: "105"; }
- ListElement{ longitude: "7"; latitude: "82"; height: "107"; }
- ListElement{ longitude: "7"; latitude: "83"; height: "112"; }
- ListElement{ longitude: "7"; latitude: "84"; height: "104"; }
- ListElement{ longitude: "7"; latitude: "85"; height: "109"; }
- ListElement{ longitude: "7"; latitude: "86"; height: "119"; }
- ListElement{ longitude: "7"; latitude: "87"; height: "125"; }
- ListElement{ longitude: "7"; latitude: "88"; height: "132"; }
- ListElement{ longitude: "7"; latitude: "89"; height: "139"; }
- ListElement{ longitude: "7"; latitude: "90"; height: "143"; }
- ListElement{ longitude: "7"; latitude: "91"; height: "146"; }
- ListElement{ longitude: "7"; latitude: "92"; height: "143"; }
- ListElement{ longitude: "7"; latitude: "93"; height: "139"; }
- ListElement{ longitude: "7"; latitude: "94"; height: "138"; }
- ListElement{ longitude: "7"; latitude: "95"; height: "138"; }
- ListElement{ longitude: "7"; latitude: "96"; height: "141"; }
- ListElement{ longitude: "7"; latitude: "97"; height: "143"; }
- ListElement{ longitude: "7"; latitude: "98"; height: "147"; }
- ListElement{ longitude: "7"; latitude: "99"; height: "130"; }
- ListElement{ longitude: "8"; latitude: "0"; height: "119"; }
- ListElement{ longitude: "8"; latitude: "1"; height: "113"; }
- ListElement{ longitude: "8"; latitude: "2"; height: "114"; }
- ListElement{ longitude: "8"; latitude: "3"; height: "115"; }
- ListElement{ longitude: "8"; latitude: "4"; height: "121"; }
- ListElement{ longitude: "8"; latitude: "5"; height: "127"; }
- ListElement{ longitude: "8"; latitude: "6"; height: "132"; }
- ListElement{ longitude: "8"; latitude: "7"; height: "132"; }
- ListElement{ longitude: "8"; latitude: "8"; height: "134"; }
- ListElement{ longitude: "8"; latitude: "9"; height: "135"; }
- ListElement{ longitude: "8"; latitude: "10"; height: "133"; }
- ListElement{ longitude: "8"; latitude: "11"; height: "135"; }
- ListElement{ longitude: "8"; latitude: "12"; height: "138"; }
- ListElement{ longitude: "8"; latitude: "13"; height: "137"; }
- ListElement{ longitude: "8"; latitude: "14"; height: "137"; }
- ListElement{ longitude: "8"; latitude: "15"; height: "138"; }
- ListElement{ longitude: "8"; latitude: "16"; height: "138"; }
- ListElement{ longitude: "8"; latitude: "17"; height: "133"; }
- ListElement{ longitude: "8"; latitude: "18"; height: "126"; }
- ListElement{ longitude: "8"; latitude: "19"; height: "118"; }
- ListElement{ longitude: "8"; latitude: "20"; height: "114"; }
- ListElement{ longitude: "8"; latitude: "21"; height: "114"; }
- ListElement{ longitude: "8"; latitude: "22"; height: "115"; }
- ListElement{ longitude: "8"; latitude: "23"; height: "120"; }
- ListElement{ longitude: "8"; latitude: "24"; height: "123"; }
- ListElement{ longitude: "8"; latitude: "25"; height: "124"; }
- ListElement{ longitude: "8"; latitude: "26"; height: "129"; }
- ListElement{ longitude: "8"; latitude: "27"; height: "130"; }
- ListElement{ longitude: "8"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "8"; latitude: "29"; height: "123"; }
- ListElement{ longitude: "8"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "8"; latitude: "31"; height: "116"; }
- ListElement{ longitude: "8"; latitude: "32"; height: "115"; }
- ListElement{ longitude: "8"; latitude: "33"; height: "113"; }
- ListElement{ longitude: "8"; latitude: "34"; height: "114"; }
- ListElement{ longitude: "8"; latitude: "35"; height: "119"; }
- ListElement{ longitude: "8"; latitude: "36"; height: "117"; }
- ListElement{ longitude: "8"; latitude: "37"; height: "117"; }
- ListElement{ longitude: "8"; latitude: "38"; height: "118"; }
- ListElement{ longitude: "8"; latitude: "39"; height: "116"; }
- ListElement{ longitude: "8"; latitude: "40"; height: "118"; }
- ListElement{ longitude: "8"; latitude: "41"; height: "121"; }
- ListElement{ longitude: "8"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "8"; latitude: "43"; height: "131"; }
- ListElement{ longitude: "8"; latitude: "44"; height: "130"; }
- ListElement{ longitude: "8"; latitude: "45"; height: "133"; }
- ListElement{ longitude: "8"; latitude: "46"; height: "132"; }
- ListElement{ longitude: "8"; latitude: "47"; height: "133"; }
- ListElement{ longitude: "8"; latitude: "48"; height: "136"; }
- ListElement{ longitude: "8"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "8"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "8"; latitude: "51"; height: "132"; }
- ListElement{ longitude: "8"; latitude: "52"; height: "129"; }
- ListElement{ longitude: "8"; latitude: "53"; height: "126"; }
- ListElement{ longitude: "8"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "8"; latitude: "55"; height: "125"; }
- ListElement{ longitude: "8"; latitude: "56"; height: "124"; }
- ListElement{ longitude: "8"; latitude: "57"; height: "126"; }
- ListElement{ longitude: "8"; latitude: "58"; height: "127"; }
- ListElement{ longitude: "8"; latitude: "59"; height: "127"; }
- ListElement{ longitude: "8"; latitude: "60"; height: "127"; }
- ListElement{ longitude: "8"; latitude: "61"; height: "127"; }
- ListElement{ longitude: "8"; latitude: "62"; height: "116"; }
- ListElement{ longitude: "8"; latitude: "63"; height: "126"; }
- ListElement{ longitude: "8"; latitude: "64"; height: "128"; }
- ListElement{ longitude: "8"; latitude: "65"; height: "129"; }
- ListElement{ longitude: "8"; latitude: "66"; height: "110"; }
- ListElement{ longitude: "8"; latitude: "67"; height: "107"; }
- ListElement{ longitude: "8"; latitude: "68"; height: "124"; }
- ListElement{ longitude: "8"; latitude: "69"; height: "131"; }
- ListElement{ longitude: "8"; latitude: "70"; height: "130"; }
- ListElement{ longitude: "8"; latitude: "71"; height: "134"; }
- ListElement{ longitude: "8"; latitude: "72"; height: "138"; }
- ListElement{ longitude: "8"; latitude: "73"; height: "136"; }
- ListElement{ longitude: "8"; latitude: "74"; height: "127"; }
- ListElement{ longitude: "8"; latitude: "75"; height: "117"; }
- ListElement{ longitude: "8"; latitude: "76"; height: "115"; }
- ListElement{ longitude: "8"; latitude: "77"; height: "111"; }
- ListElement{ longitude: "8"; latitude: "78"; height: "100"; }
- ListElement{ longitude: "8"; latitude: "79"; height: "99"; }
- ListElement{ longitude: "8"; latitude: "80"; height: "99"; }
- ListElement{ longitude: "8"; latitude: "81"; height: "102"; }
- ListElement{ longitude: "8"; latitude: "82"; height: "101"; }
- ListElement{ longitude: "8"; latitude: "83"; height: "105"; }
- ListElement{ longitude: "8"; latitude: "84"; height: "107"; }
- ListElement{ longitude: "8"; latitude: "85"; height: "103"; }
- ListElement{ longitude: "8"; latitude: "86"; height: "110"; }
- ListElement{ longitude: "8"; latitude: "87"; height: "119"; }
- ListElement{ longitude: "8"; latitude: "88"; height: "126"; }
- ListElement{ longitude: "8"; latitude: "89"; height: "134"; }
- ListElement{ longitude: "8"; latitude: "90"; height: "136"; }
- ListElement{ longitude: "8"; latitude: "91"; height: "138"; }
- ListElement{ longitude: "8"; latitude: "92"; height: "136"; }
- ListElement{ longitude: "8"; latitude: "93"; height: "137"; }
- ListElement{ longitude: "8"; latitude: "94"; height: "136"; }
- ListElement{ longitude: "8"; latitude: "95"; height: "134"; }
- ListElement{ longitude: "8"; latitude: "96"; height: "135"; }
- ListElement{ longitude: "8"; latitude: "97"; height: "137"; }
- ListElement{ longitude: "8"; latitude: "98"; height: "143"; }
- ListElement{ longitude: "8"; latitude: "99"; height: "137"; }
- ListElement{ longitude: "9"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "1"; height: "118"; }
- ListElement{ longitude: "9"; latitude: "2"; height: "118"; }
- ListElement{ longitude: "9"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "4"; height: "126"; }
- ListElement{ longitude: "9"; latitude: "5"; height: "129"; }
- ListElement{ longitude: "9"; latitude: "6"; height: "133"; }
- ListElement{ longitude: "9"; latitude: "7"; height: "132"; }
- ListElement{ longitude: "9"; latitude: "8"; height: "133"; }
- ListElement{ longitude: "9"; latitude: "9"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "10"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "11"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "12"; height: "131"; }
- ListElement{ longitude: "9"; latitude: "13"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "14"; height: "136"; }
- ListElement{ longitude: "9"; latitude: "15"; height: "137"; }
- ListElement{ longitude: "9"; latitude: "16"; height: "131"; }
- ListElement{ longitude: "9"; latitude: "17"; height: "119"; }
- ListElement{ longitude: "9"; latitude: "18"; height: "126"; }
- ListElement{ longitude: "9"; latitude: "19"; height: "121"; }
- ListElement{ longitude: "9"; latitude: "20"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "21"; height: "117"; }
- ListElement{ longitude: "9"; latitude: "22"; height: "116"; }
- ListElement{ longitude: "9"; latitude: "23"; height: "119"; }
- ListElement{ longitude: "9"; latitude: "24"; height: "122"; }
- ListElement{ longitude: "9"; latitude: "25"; height: "122"; }
- ListElement{ longitude: "9"; latitude: "26"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "27"; height: "121"; }
- ListElement{ longitude: "9"; latitude: "28"; height: "121"; }
- ListElement{ longitude: "9"; latitude: "29"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "30"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "31"; height: "117"; }
- ListElement{ longitude: "9"; latitude: "32"; height: "116"; }
- ListElement{ longitude: "9"; latitude: "33"; height: "118"; }
- ListElement{ longitude: "9"; latitude: "34"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "35"; height: "123"; }
- ListElement{ longitude: "9"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "9"; latitude: "37"; height: "122"; }
- ListElement{ longitude: "9"; latitude: "38"; height: "121"; }
- ListElement{ longitude: "9"; latitude: "39"; height: "119"; }
- ListElement{ longitude: "9"; latitude: "40"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "41"; height: "121"; }
- ListElement{ longitude: "9"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "9"; latitude: "43"; height: "132"; }
- ListElement{ longitude: "9"; latitude: "44"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "45"; height: "135"; }
- ListElement{ longitude: "9"; latitude: "46"; height: "135"; }
- ListElement{ longitude: "9"; latitude: "47"; height: "133"; }
- ListElement{ longitude: "9"; latitude: "48"; height: "136"; }
- ListElement{ longitude: "9"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "9"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "9"; latitude: "51"; height: "132"; }
- ListElement{ longitude: "9"; latitude: "52"; height: "131"; }
- ListElement{ longitude: "9"; latitude: "53"; height: "126"; }
- ListElement{ longitude: "9"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "9"; latitude: "55"; height: "125"; }
- ListElement{ longitude: "9"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "9"; latitude: "57"; height: "125"; }
- ListElement{ longitude: "9"; latitude: "58"; height: "126"; }
- ListElement{ longitude: "9"; latitude: "59"; height: "125"; }
- ListElement{ longitude: "9"; latitude: "60"; height: "127"; }
- ListElement{ longitude: "9"; latitude: "61"; height: "129"; }
- ListElement{ longitude: "9"; latitude: "62"; height: "129"; }
- ListElement{ longitude: "9"; latitude: "63"; height: "127"; }
- ListElement{ longitude: "9"; latitude: "64"; height: "131"; }
- ListElement{ longitude: "9"; latitude: "65"; height: "122"; }
- ListElement{ longitude: "9"; latitude: "66"; height: "107"; }
- ListElement{ longitude: "9"; latitude: "67"; height: "103"; }
- ListElement{ longitude: "9"; latitude: "68"; height: "105"; }
- ListElement{ longitude: "9"; latitude: "69"; height: "112"; }
- ListElement{ longitude: "9"; latitude: "70"; height: "130"; }
- ListElement{ longitude: "9"; latitude: "71"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "72"; height: "140"; }
- ListElement{ longitude: "9"; latitude: "73"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "74"; height: "129"; }
- ListElement{ longitude: "9"; latitude: "75"; height: "120"; }
- ListElement{ longitude: "9"; latitude: "76"; height: "117"; }
- ListElement{ longitude: "9"; latitude: "77"; height: "113"; }
- ListElement{ longitude: "9"; latitude: "78"; height: "102"; }
- ListElement{ longitude: "9"; latitude: "79"; height: "99"; }
- ListElement{ longitude: "9"; latitude: "80"; height: "101"; }
- ListElement{ longitude: "9"; latitude: "81"; height: "101"; }
- ListElement{ longitude: "9"; latitude: "82"; height: "101"; }
- ListElement{ longitude: "9"; latitude: "83"; height: "101"; }
- ListElement{ longitude: "9"; latitude: "84"; height: "96"; }
- ListElement{ longitude: "9"; latitude: "85"; height: "98"; }
- ListElement{ longitude: "9"; latitude: "86"; height: "106"; }
- ListElement{ longitude: "9"; latitude: "87"; height: "112"; }
- ListElement{ longitude: "9"; latitude: "88"; height: "119"; }
- ListElement{ longitude: "9"; latitude: "89"; height: "126"; }
- ListElement{ longitude: "9"; latitude: "90"; height: "128"; }
- ListElement{ longitude: "9"; latitude: "91"; height: "132"; }
- ListElement{ longitude: "9"; latitude: "92"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "93"; height: "134"; }
- ListElement{ longitude: "9"; latitude: "94"; height: "131"; }
- ListElement{ longitude: "9"; latitude: "95"; height: "131"; }
- ListElement{ longitude: "9"; latitude: "96"; height: "131"; }
- ListElement{ longitude: "9"; latitude: "97"; height: "137"; }
- ListElement{ longitude: "9"; latitude: "98"; height: "141"; }
- ListElement{ longitude: "9"; latitude: "99"; height: "139"; }
- ListElement{ longitude: "10"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "10"; latitude: "1"; height: "121"; }
- ListElement{ longitude: "10"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "10"; latitude: "3"; height: "124"; }
- ListElement{ longitude: "10"; latitude: "4"; height: "129"; }
- ListElement{ longitude: "10"; latitude: "5"; height: "131"; }
- ListElement{ longitude: "10"; latitude: "6"; height: "132"; }
- ListElement{ longitude: "10"; latitude: "7"; height: "130"; }
- ListElement{ longitude: "10"; latitude: "8"; height: "130"; }
- ListElement{ longitude: "10"; latitude: "9"; height: "130"; }
- ListElement{ longitude: "10"; latitude: "10"; height: "133"; }
- ListElement{ longitude: "10"; latitude: "11"; height: "135"; }
- ListElement{ longitude: "10"; latitude: "12"; height: "130"; }
- ListElement{ longitude: "10"; latitude: "13"; height: "134"; }
- ListElement{ longitude: "10"; latitude: "14"; height: "135"; }
- ListElement{ longitude: "10"; latitude: "15"; height: "133"; }
- ListElement{ longitude: "10"; latitude: "16"; height: "129"; }
- ListElement{ longitude: "10"; latitude: "17"; height: "105"; }
- ListElement{ longitude: "10"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "10"; latitude: "19"; height: "124"; }
- ListElement{ longitude: "10"; latitude: "20"; height: "115"; }
- ListElement{ longitude: "10"; latitude: "21"; height: "101"; }
- ListElement{ longitude: "10"; latitude: "22"; height: "103"; }
- ListElement{ longitude: "10"; latitude: "23"; height: "113"; }
- ListElement{ longitude: "10"; latitude: "24"; height: "120"; }
- ListElement{ longitude: "10"; latitude: "25"; height: "120"; }
- ListElement{ longitude: "10"; latitude: "26"; height: "118"; }
- ListElement{ longitude: "10"; latitude: "27"; height: "118"; }
- ListElement{ longitude: "10"; latitude: "28"; height: "120"; }
- ListElement{ longitude: "10"; latitude: "29"; height: "120"; }
- ListElement{ longitude: "10"; latitude: "30"; height: "120"; }
- ListElement{ longitude: "10"; latitude: "31"; height: "119"; }
- ListElement{ longitude: "10"; latitude: "32"; height: "119"; }
- ListElement{ longitude: "10"; latitude: "33"; height: "119"; }
- ListElement{ longitude: "10"; latitude: "34"; height: "123"; }
- ListElement{ longitude: "10"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "10"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "10"; latitude: "37"; height: "125"; }
- ListElement{ longitude: "10"; latitude: "38"; height: "122"; }
- ListElement{ longitude: "10"; latitude: "39"; height: "121"; }
- ListElement{ longitude: "10"; latitude: "40"; height: "122"; }
- ListElement{ longitude: "10"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "10"; latitude: "42"; height: "130"; }
- ListElement{ longitude: "10"; latitude: "43"; height: "135"; }
- ListElement{ longitude: "10"; latitude: "44"; height: "135"; }
- ListElement{ longitude: "10"; latitude: "45"; height: "138"; }
- ListElement{ longitude: "10"; latitude: "46"; height: "136"; }
- ListElement{ longitude: "10"; latitude: "47"; height: "136"; }
- ListElement{ longitude: "10"; latitude: "48"; height: "136"; }
- ListElement{ longitude: "10"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "10"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "10"; latitude: "51"; height: "134"; }
- ListElement{ longitude: "10"; latitude: "52"; height: "131"; }
- ListElement{ longitude: "10"; latitude: "53"; height: "127"; }
- ListElement{ longitude: "10"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "10"; latitude: "55"; height: "122"; }
- ListElement{ longitude: "10"; latitude: "56"; height: "122"; }
- ListElement{ longitude: "10"; latitude: "57"; height: "124"; }
- ListElement{ longitude: "10"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "10"; latitude: "59"; height: "126"; }
- ListElement{ longitude: "10"; latitude: "60"; height: "127"; }
- ListElement{ longitude: "10"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "10"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "10"; latitude: "63"; height: "115"; }
- ListElement{ longitude: "10"; latitude: "64"; height: "133"; }
- ListElement{ longitude: "10"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "10"; latitude: "66"; height: "115"; }
- ListElement{ longitude: "10"; latitude: "67"; height: "105"; }
- ListElement{ longitude: "10"; latitude: "68"; height: "98"; }
- ListElement{ longitude: "10"; latitude: "69"; height: "106"; }
- ListElement{ longitude: "10"; latitude: "70"; height: "132"; }
- ListElement{ longitude: "10"; latitude: "71"; height: "134"; }
- ListElement{ longitude: "10"; latitude: "72"; height: "139"; }
- ListElement{ longitude: "10"; latitude: "73"; height: "137"; }
- ListElement{ longitude: "10"; latitude: "74"; height: "130"; }
- ListElement{ longitude: "10"; latitude: "75"; height: "122"; }
- ListElement{ longitude: "10"; latitude: "76"; height: "116"; }
- ListElement{ longitude: "10"; latitude: "77"; height: "107"; }
- ListElement{ longitude: "10"; latitude: "78"; height: "104"; }
- ListElement{ longitude: "10"; latitude: "79"; height: "104"; }
- ListElement{ longitude: "10"; latitude: "80"; height: "104"; }
- ListElement{ longitude: "10"; latitude: "81"; height: "105"; }
- ListElement{ longitude: "10"; latitude: "82"; height: "102"; }
- ListElement{ longitude: "10"; latitude: "83"; height: "100"; }
- ListElement{ longitude: "10"; latitude: "84"; height: "99"; }
- ListElement{ longitude: "10"; latitude: "85"; height: "102"; }
- ListElement{ longitude: "10"; latitude: "86"; height: "101"; }
- ListElement{ longitude: "10"; latitude: "87"; height: "110"; }
- ListElement{ longitude: "10"; latitude: "88"; height: "114"; }
- ListElement{ longitude: "10"; latitude: "89"; height: "121"; }
- ListElement{ longitude: "10"; latitude: "90"; height: "125"; }
- ListElement{ longitude: "10"; latitude: "91"; height: "128"; }
- ListElement{ longitude: "10"; latitude: "92"; height: "128"; }
- ListElement{ longitude: "10"; latitude: "93"; height: "130"; }
- ListElement{ longitude: "10"; latitude: "94"; height: "129"; }
- ListElement{ longitude: "10"; latitude: "95"; height: "131"; }
- ListElement{ longitude: "10"; latitude: "96"; height: "131"; }
- ListElement{ longitude: "10"; latitude: "97"; height: "132"; }
- ListElement{ longitude: "10"; latitude: "98"; height: "139"; }
- ListElement{ longitude: "10"; latitude: "99"; height: "140"; }
- ListElement{ longitude: "11"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "11"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "11"; latitude: "2"; height: "127"; }
- ListElement{ longitude: "11"; latitude: "3"; height: "129"; }
- ListElement{ longitude: "11"; latitude: "4"; height: "131"; }
- ListElement{ longitude: "11"; latitude: "5"; height: "132"; }
- ListElement{ longitude: "11"; latitude: "6"; height: "132"; }
- ListElement{ longitude: "11"; latitude: "7"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "8"; height: "131"; }
- ListElement{ longitude: "11"; latitude: "9"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "10"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "11"; height: "133"; }
- ListElement{ longitude: "11"; latitude: "12"; height: "131"; }
- ListElement{ longitude: "11"; latitude: "13"; height: "134"; }
- ListElement{ longitude: "11"; latitude: "14"; height: "135"; }
- ListElement{ longitude: "11"; latitude: "15"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "16"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "17"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "11"; latitude: "19"; height: "124"; }
- ListElement{ longitude: "11"; latitude: "20"; height: "100"; }
- ListElement{ longitude: "11"; latitude: "21"; height: "86"; }
- ListElement{ longitude: "11"; latitude: "22"; height: "90"; }
- ListElement{ longitude: "11"; latitude: "23"; height: "104"; }
- ListElement{ longitude: "11"; latitude: "24"; height: "117"; }
- ListElement{ longitude: "11"; latitude: "25"; height: "120"; }
- ListElement{ longitude: "11"; latitude: "26"; height: "115"; }
- ListElement{ longitude: "11"; latitude: "27"; height: "115"; }
- ListElement{ longitude: "11"; latitude: "28"; height: "117"; }
- ListElement{ longitude: "11"; latitude: "29"; height: "118"; }
- ListElement{ longitude: "11"; latitude: "30"; height: "116"; }
- ListElement{ longitude: "11"; latitude: "31"; height: "117"; }
- ListElement{ longitude: "11"; latitude: "32"; height: "118"; }
- ListElement{ longitude: "11"; latitude: "33"; height: "120"; }
- ListElement{ longitude: "11"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "11"; latitude: "35"; height: "126"; }
- ListElement{ longitude: "11"; latitude: "36"; height: "127"; }
- ListElement{ longitude: "11"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "11"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "11"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "11"; latitude: "40"; height: "126"; }
- ListElement{ longitude: "11"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "11"; latitude: "42"; height: "131"; }
- ListElement{ longitude: "11"; latitude: "43"; height: "135"; }
- ListElement{ longitude: "11"; latitude: "44"; height: "135"; }
- ListElement{ longitude: "11"; latitude: "45"; height: "138"; }
- ListElement{ longitude: "11"; latitude: "46"; height: "135"; }
- ListElement{ longitude: "11"; latitude: "47"; height: "136"; }
- ListElement{ longitude: "11"; latitude: "48"; height: "136"; }
- ListElement{ longitude: "11"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "11"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "11"; latitude: "51"; height: "134"; }
- ListElement{ longitude: "11"; latitude: "52"; height: "132"; }
- ListElement{ longitude: "11"; latitude: "53"; height: "129"; }
- ListElement{ longitude: "11"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "11"; latitude: "55"; height: "122"; }
- ListElement{ longitude: "11"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "11"; latitude: "57"; height: "123"; }
- ListElement{ longitude: "11"; latitude: "58"; height: "122"; }
- ListElement{ longitude: "11"; latitude: "59"; height: "125"; }
- ListElement{ longitude: "11"; latitude: "60"; height: "127"; }
- ListElement{ longitude: "11"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "11"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "11"; latitude: "63"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "64"; height: "131"; }
- ListElement{ longitude: "11"; latitude: "65"; height: "127"; }
- ListElement{ longitude: "11"; latitude: "66"; height: "103"; }
- ListElement{ longitude: "11"; latitude: "67"; height: "110"; }
- ListElement{ longitude: "11"; latitude: "68"; height: "102"; }
- ListElement{ longitude: "11"; latitude: "69"; height: "114"; }
- ListElement{ longitude: "11"; latitude: "70"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "71"; height: "134"; }
- ListElement{ longitude: "11"; latitude: "72"; height: "137"; }
- ListElement{ longitude: "11"; latitude: "73"; height: "133"; }
- ListElement{ longitude: "11"; latitude: "74"; height: "122"; }
- ListElement{ longitude: "11"; latitude: "75"; height: "120"; }
- ListElement{ longitude: "11"; latitude: "76"; height: "114"; }
- ListElement{ longitude: "11"; latitude: "77"; height: "110"; }
- ListElement{ longitude: "11"; latitude: "78"; height: "109"; }
- ListElement{ longitude: "11"; latitude: "79"; height: "111"; }
- ListElement{ longitude: "11"; latitude: "80"; height: "111"; }
- ListElement{ longitude: "11"; latitude: "81"; height: "111"; }
- ListElement{ longitude: "11"; latitude: "82"; height: "103"; }
- ListElement{ longitude: "11"; latitude: "83"; height: "102"; }
- ListElement{ longitude: "11"; latitude: "84"; height: "98"; }
- ListElement{ longitude: "11"; latitude: "85"; height: "100"; }
- ListElement{ longitude: "11"; latitude: "86"; height: "102"; }
- ListElement{ longitude: "11"; latitude: "87"; height: "104"; }
- ListElement{ longitude: "11"; latitude: "88"; height: "110"; }
- ListElement{ longitude: "11"; latitude: "89"; height: "115"; }
- ListElement{ longitude: "11"; latitude: "90"; height: "119"; }
- ListElement{ longitude: "11"; latitude: "91"; height: "122"; }
- ListElement{ longitude: "11"; latitude: "92"; height: "126"; }
- ListElement{ longitude: "11"; latitude: "93"; height: "126"; }
- ListElement{ longitude: "11"; latitude: "94"; height: "127"; }
- ListElement{ longitude: "11"; latitude: "95"; height: "128"; }
- ListElement{ longitude: "11"; latitude: "96"; height: "130"; }
- ListElement{ longitude: "11"; latitude: "97"; height: "133"; }
- ListElement{ longitude: "11"; latitude: "98"; height: "141"; }
- ListElement{ longitude: "11"; latitude: "99"; height: "142"; }
- ListElement{ longitude: "12"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "12"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "12"; latitude: "2"; height: "130"; }
- ListElement{ longitude: "12"; latitude: "3"; height: "134"; }
- ListElement{ longitude: "12"; latitude: "4"; height: "136"; }
- ListElement{ longitude: "12"; latitude: "5"; height: "134"; }
- ListElement{ longitude: "12"; latitude: "6"; height: "131"; }
- ListElement{ longitude: "12"; latitude: "7"; height: "131"; }
- ListElement{ longitude: "12"; latitude: "8"; height: "131"; }
- ListElement{ longitude: "12"; latitude: "9"; height: "131"; }
- ListElement{ longitude: "12"; latitude: "10"; height: "129"; }
- ListElement{ longitude: "12"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "12"; latitude: "12"; height: "133"; }
- ListElement{ longitude: "12"; latitude: "13"; height: "133"; }
- ListElement{ longitude: "12"; latitude: "14"; height: "132"; }
- ListElement{ longitude: "12"; latitude: "15"; height: "129"; }
- ListElement{ longitude: "12"; latitude: "16"; height: "129"; }
- ListElement{ longitude: "12"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "12"; latitude: "18"; height: "126"; }
- ListElement{ longitude: "12"; latitude: "19"; height: "119"; }
- ListElement{ longitude: "12"; latitude: "20"; height: "98"; }
- ListElement{ longitude: "12"; latitude: "21"; height: "84"; }
- ListElement{ longitude: "12"; latitude: "22"; height: "87"; }
- ListElement{ longitude: "12"; latitude: "23"; height: "103"; }
- ListElement{ longitude: "12"; latitude: "24"; height: "119"; }
- ListElement{ longitude: "12"; latitude: "25"; height: "117"; }
- ListElement{ longitude: "12"; latitude: "26"; height: "113"; }
- ListElement{ longitude: "12"; latitude: "27"; height: "112"; }
- ListElement{ longitude: "12"; latitude: "28"; height: "113"; }
- ListElement{ longitude: "12"; latitude: "29"; height: "114"; }
- ListElement{ longitude: "12"; latitude: "30"; height: "115"; }
- ListElement{ longitude: "12"; latitude: "31"; height: "118"; }
- ListElement{ longitude: "12"; latitude: "32"; height: "118"; }
- ListElement{ longitude: "12"; latitude: "33"; height: "121"; }
- ListElement{ longitude: "12"; latitude: "34"; height: "124"; }
- ListElement{ longitude: "12"; latitude: "35"; height: "126"; }
- ListElement{ longitude: "12"; latitude: "36"; height: "127"; }
- ListElement{ longitude: "12"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "12"; latitude: "38"; height: "127"; }
- ListElement{ longitude: "12"; latitude: "39"; height: "127"; }
- ListElement{ longitude: "12"; latitude: "40"; height: "126"; }
- ListElement{ longitude: "12"; latitude: "41"; height: "129"; }
- ListElement{ longitude: "12"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "12"; latitude: "43"; height: "133"; }
- ListElement{ longitude: "12"; latitude: "44"; height: "134"; }
- ListElement{ longitude: "12"; latitude: "45"; height: "137"; }
- ListElement{ longitude: "12"; latitude: "46"; height: "136"; }
- ListElement{ longitude: "12"; latitude: "47"; height: "135"; }
- ListElement{ longitude: "12"; latitude: "48"; height: "135"; }
- ListElement{ longitude: "12"; latitude: "49"; height: "135"; }
- ListElement{ longitude: "12"; latitude: "50"; height: "135"; }
- ListElement{ longitude: "12"; latitude: "51"; height: "135"; }
- ListElement{ longitude: "12"; latitude: "52"; height: "133"; }
- ListElement{ longitude: "12"; latitude: "53"; height: "130"; }
- ListElement{ longitude: "12"; latitude: "54"; height: "127"; }
- ListElement{ longitude: "12"; latitude: "55"; height: "122"; }
- ListElement{ longitude: "12"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "12"; latitude: "57"; height: "121"; }
- ListElement{ longitude: "12"; latitude: "58"; height: "121"; }
- ListElement{ longitude: "12"; latitude: "59"; height: "123"; }
- ListElement{ longitude: "12"; latitude: "60"; height: "126"; }
- ListElement{ longitude: "12"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "12"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "12"; latitude: "63"; height: "129"; }
- ListElement{ longitude: "12"; latitude: "64"; height: "117"; }
- ListElement{ longitude: "12"; latitude: "65"; height: "127"; }
- ListElement{ longitude: "12"; latitude: "66"; height: "119"; }
- ListElement{ longitude: "12"; latitude: "67"; height: "118"; }
- ListElement{ longitude: "12"; latitude: "68"; height: "117"; }
- ListElement{ longitude: "12"; latitude: "69"; height: "123"; }
- ListElement{ longitude: "12"; latitude: "70"; height: "128"; }
- ListElement{ longitude: "12"; latitude: "71"; height: "130"; }
- ListElement{ longitude: "12"; latitude: "72"; height: "132"; }
- ListElement{ longitude: "12"; latitude: "73"; height: "119"; }
- ListElement{ longitude: "12"; latitude: "74"; height: "111"; }
- ListElement{ longitude: "12"; latitude: "75"; height: "117"; }
- ListElement{ longitude: "12"; latitude: "76"; height: "113"; }
- ListElement{ longitude: "12"; latitude: "77"; height: "112"; }
- ListElement{ longitude: "12"; latitude: "78"; height: "114"; }
- ListElement{ longitude: "12"; latitude: "79"; height: "117"; }
- ListElement{ longitude: "12"; latitude: "80"; height: "117"; }
- ListElement{ longitude: "12"; latitude: "81"; height: "115"; }
- ListElement{ longitude: "12"; latitude: "82"; height: "110"; }
- ListElement{ longitude: "12"; latitude: "83"; height: "105"; }
- ListElement{ longitude: "12"; latitude: "84"; height: "102"; }
- ListElement{ longitude: "12"; latitude: "85"; height: "101"; }
- ListElement{ longitude: "12"; latitude: "86"; height: "102"; }
- ListElement{ longitude: "12"; latitude: "87"; height: "105"; }
- ListElement{ longitude: "12"; latitude: "88"; height: "108"; }
- ListElement{ longitude: "12"; latitude: "89"; height: "111"; }
- ListElement{ longitude: "12"; latitude: "90"; height: "116"; }
- ListElement{ longitude: "12"; latitude: "91"; height: "121"; }
- ListElement{ longitude: "12"; latitude: "92"; height: "124"; }
- ListElement{ longitude: "12"; latitude: "93"; height: "126"; }
- ListElement{ longitude: "12"; latitude: "94"; height: "126"; }
- ListElement{ longitude: "12"; latitude: "95"; height: "129"; }
- ListElement{ longitude: "12"; latitude: "96"; height: "131"; }
- ListElement{ longitude: "12"; latitude: "97"; height: "131"; }
- ListElement{ longitude: "12"; latitude: "98"; height: "140"; }
- ListElement{ longitude: "12"; latitude: "99"; height: "142"; }
- ListElement{ longitude: "13"; latitude: "0"; height: "108"; }
- ListElement{ longitude: "13"; latitude: "1"; height: "113"; }
- ListElement{ longitude: "13"; latitude: "2"; height: "131"; }
- ListElement{ longitude: "13"; latitude: "3"; height: "136"; }
- ListElement{ longitude: "13"; latitude: "4"; height: "137"; }
- ListElement{ longitude: "13"; latitude: "5"; height: "136"; }
- ListElement{ longitude: "13"; latitude: "6"; height: "130"; }
- ListElement{ longitude: "13"; latitude: "7"; height: "131"; }
- ListElement{ longitude: "13"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "13"; latitude: "9"; height: "129"; }
- ListElement{ longitude: "13"; latitude: "10"; height: "128"; }
- ListElement{ longitude: "13"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "13"; latitude: "12"; height: "132"; }
- ListElement{ longitude: "13"; latitude: "13"; height: "132"; }
- ListElement{ longitude: "13"; latitude: "14"; height: "132"; }
- ListElement{ longitude: "13"; latitude: "15"; height: "129"; }
- ListElement{ longitude: "13"; latitude: "16"; height: "127"; }
- ListElement{ longitude: "13"; latitude: "17"; height: "127"; }
- ListElement{ longitude: "13"; latitude: "18"; height: "124"; }
- ListElement{ longitude: "13"; latitude: "19"; height: "122"; }
- ListElement{ longitude: "13"; latitude: "20"; height: "106"; }
- ListElement{ longitude: "13"; latitude: "21"; height: "95"; }
- ListElement{ longitude: "13"; latitude: "22"; height: "98"; }
- ListElement{ longitude: "13"; latitude: "23"; height: "111"; }
- ListElement{ longitude: "13"; latitude: "24"; height: "120"; }
- ListElement{ longitude: "13"; latitude: "25"; height: "116"; }
- ListElement{ longitude: "13"; latitude: "26"; height: "112"; }
- ListElement{ longitude: "13"; latitude: "27"; height: "111"; }
- ListElement{ longitude: "13"; latitude: "28"; height: "111"; }
- ListElement{ longitude: "13"; latitude: "29"; height: "113"; }
- ListElement{ longitude: "13"; latitude: "30"; height: "116"; }
- ListElement{ longitude: "13"; latitude: "31"; height: "118"; }
- ListElement{ longitude: "13"; latitude: "32"; height: "119"; }
- ListElement{ longitude: "13"; latitude: "33"; height: "118"; }
- ListElement{ longitude: "13"; latitude: "34"; height: "122"; }
- ListElement{ longitude: "13"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "13"; latitude: "36"; height: "126"; }
- ListElement{ longitude: "13"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "13"; latitude: "38"; height: "129"; }
- ListElement{ longitude: "13"; latitude: "39"; height: "127"; }
- ListElement{ longitude: "13"; latitude: "40"; height: "126"; }
- ListElement{ longitude: "13"; latitude: "41"; height: "127"; }
- ListElement{ longitude: "13"; latitude: "42"; height: "130"; }
- ListElement{ longitude: "13"; latitude: "43"; height: "131"; }
- ListElement{ longitude: "13"; latitude: "44"; height: "131"; }
- ListElement{ longitude: "13"; latitude: "45"; height: "133"; }
- ListElement{ longitude: "13"; latitude: "46"; height: "134"; }
- ListElement{ longitude: "13"; latitude: "47"; height: "132"; }
- ListElement{ longitude: "13"; latitude: "48"; height: "133"; }
- ListElement{ longitude: "13"; latitude: "49"; height: "133"; }
- ListElement{ longitude: "13"; latitude: "50"; height: "134"; }
- ListElement{ longitude: "13"; latitude: "51"; height: "136"; }
- ListElement{ longitude: "13"; latitude: "52"; height: "135"; }
- ListElement{ longitude: "13"; latitude: "53"; height: "131"; }
- ListElement{ longitude: "13"; latitude: "54"; height: "127"; }
- ListElement{ longitude: "13"; latitude: "55"; height: "124"; }
- ListElement{ longitude: "13"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "13"; latitude: "57"; height: "120"; }
- ListElement{ longitude: "13"; latitude: "58"; height: "122"; }
- ListElement{ longitude: "13"; latitude: "59"; height: "123"; }
- ListElement{ longitude: "13"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "13"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "13"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "13"; latitude: "63"; height: "126"; }
- ListElement{ longitude: "13"; latitude: "64"; height: "128"; }
- ListElement{ longitude: "13"; latitude: "65"; height: "118"; }
- ListElement{ longitude: "13"; latitude: "66"; height: "121"; }
- ListElement{ longitude: "13"; latitude: "67"; height: "122"; }
- ListElement{ longitude: "13"; latitude: "68"; height: "120"; }
- ListElement{ longitude: "13"; latitude: "69"; height: "121"; }
- ListElement{ longitude: "13"; latitude: "70"; height: "124"; }
- ListElement{ longitude: "13"; latitude: "71"; height: "128"; }
- ListElement{ longitude: "13"; latitude: "72"; height: "130"; }
- ListElement{ longitude: "13"; latitude: "73"; height: "126"; }
- ListElement{ longitude: "13"; latitude: "74"; height: "114"; }
- ListElement{ longitude: "13"; latitude: "75"; height: "116"; }
- ListElement{ longitude: "13"; latitude: "76"; height: "114"; }
- ListElement{ longitude: "13"; latitude: "77"; height: "114"; }
- ListElement{ longitude: "13"; latitude: "78"; height: "117"; }
- ListElement{ longitude: "13"; latitude: "79"; height: "119"; }
- ListElement{ longitude: "13"; latitude: "80"; height: "118"; }
- ListElement{ longitude: "13"; latitude: "81"; height: "119"; }
- ListElement{ longitude: "13"; latitude: "82"; height: "114"; }
- ListElement{ longitude: "13"; latitude: "83"; height: "110"; }
- ListElement{ longitude: "13"; latitude: "84"; height: "103"; }
- ListElement{ longitude: "13"; latitude: "85"; height: "103"; }
- ListElement{ longitude: "13"; latitude: "86"; height: "105"; }
- ListElement{ longitude: "13"; latitude: "87"; height: "104"; }
- ListElement{ longitude: "13"; latitude: "88"; height: "106"; }
- ListElement{ longitude: "13"; latitude: "89"; height: "109"; }
- ListElement{ longitude: "13"; latitude: "90"; height: "116"; }
- ListElement{ longitude: "13"; latitude: "91"; height: "119"; }
- ListElement{ longitude: "13"; latitude: "92"; height: "124"; }
- ListElement{ longitude: "13"; latitude: "93"; height: "127"; }
- ListElement{ longitude: "13"; latitude: "94"; height: "125"; }
- ListElement{ longitude: "13"; latitude: "95"; height: "127"; }
- ListElement{ longitude: "13"; latitude: "96"; height: "129"; }
- ListElement{ longitude: "13"; latitude: "97"; height: "132"; }
- ListElement{ longitude: "13"; latitude: "98"; height: "137"; }
- ListElement{ longitude: "13"; latitude: "99"; height: "140"; }
- ListElement{ longitude: "14"; latitude: "0"; height: "103"; }
- ListElement{ longitude: "14"; latitude: "1"; height: "99"; }
- ListElement{ longitude: "14"; latitude: "2"; height: "120"; }
- ListElement{ longitude: "14"; latitude: "3"; height: "137"; }
- ListElement{ longitude: "14"; latitude: "4"; height: "134"; }
- ListElement{ longitude: "14"; latitude: "5"; height: "131"; }
- ListElement{ longitude: "14"; latitude: "6"; height: "130"; }
- ListElement{ longitude: "14"; latitude: "7"; height: "128"; }
- ListElement{ longitude: "14"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "14"; latitude: "9"; height: "126"; }
- ListElement{ longitude: "14"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "14"; latitude: "11"; height: "127"; }
- ListElement{ longitude: "14"; latitude: "12"; height: "129"; }
- ListElement{ longitude: "14"; latitude: "13"; height: "132"; }
- ListElement{ longitude: "14"; latitude: "14"; height: "132"; }
- ListElement{ longitude: "14"; latitude: "15"; height: "129"; }
- ListElement{ longitude: "14"; latitude: "16"; height: "129"; }
- ListElement{ longitude: "14"; latitude: "17"; height: "127"; }
- ListElement{ longitude: "14"; latitude: "18"; height: "123"; }
- ListElement{ longitude: "14"; latitude: "19"; height: "123"; }
- ListElement{ longitude: "14"; latitude: "20"; height: "116"; }
- ListElement{ longitude: "14"; latitude: "21"; height: "115"; }
- ListElement{ longitude: "14"; latitude: "22"; height: "116"; }
- ListElement{ longitude: "14"; latitude: "23"; height: "123"; }
- ListElement{ longitude: "14"; latitude: "24"; height: "118"; }
- ListElement{ longitude: "14"; latitude: "25"; height: "114"; }
- ListElement{ longitude: "14"; latitude: "26"; height: "108"; }
- ListElement{ longitude: "14"; latitude: "27"; height: "111"; }
- ListElement{ longitude: "14"; latitude: "28"; height: "111"; }
- ListElement{ longitude: "14"; latitude: "29"; height: "114"; }
- ListElement{ longitude: "14"; latitude: "30"; height: "114"; }
- ListElement{ longitude: "14"; latitude: "31"; height: "115"; }
- ListElement{ longitude: "14"; latitude: "32"; height: "118"; }
- ListElement{ longitude: "14"; latitude: "33"; height: "117"; }
- ListElement{ longitude: "14"; latitude: "34"; height: "116"; }
- ListElement{ longitude: "14"; latitude: "35"; height: "119"; }
- ListElement{ longitude: "14"; latitude: "36"; height: "123"; }
- ListElement{ longitude: "14"; latitude: "37"; height: "125"; }
- ListElement{ longitude: "14"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "14"; latitude: "39"; height: "127"; }
- ListElement{ longitude: "14"; latitude: "40"; height: "126"; }
- ListElement{ longitude: "14"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "14"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "14"; latitude: "43"; height: "130"; }
- ListElement{ longitude: "14"; latitude: "44"; height: "129"; }
- ListElement{ longitude: "14"; latitude: "45"; height: "129"; }
- ListElement{ longitude: "14"; latitude: "46"; height: "130"; }
- ListElement{ longitude: "14"; latitude: "47"; height: "131"; }
- ListElement{ longitude: "14"; latitude: "48"; height: "129"; }
- ListElement{ longitude: "14"; latitude: "49"; height: "131"; }
- ListElement{ longitude: "14"; latitude: "50"; height: "130"; }
- ListElement{ longitude: "14"; latitude: "51"; height: "131"; }
- ListElement{ longitude: "14"; latitude: "52"; height: "133"; }
- ListElement{ longitude: "14"; latitude: "53"; height: "132"; }
- ListElement{ longitude: "14"; latitude: "54"; height: "130"; }
- ListElement{ longitude: "14"; latitude: "55"; height: "127"; }
- ListElement{ longitude: "14"; latitude: "56"; height: "122"; }
- ListElement{ longitude: "14"; latitude: "57"; height: "120"; }
- ListElement{ longitude: "14"; latitude: "58"; height: "120"; }
- ListElement{ longitude: "14"; latitude: "59"; height: "118"; }
- ListElement{ longitude: "14"; latitude: "60"; height: "121"; }
- ListElement{ longitude: "14"; latitude: "61"; height: "122"; }
- ListElement{ longitude: "14"; latitude: "62"; height: "122"; }
- ListElement{ longitude: "14"; latitude: "63"; height: "122"; }
- ListElement{ longitude: "14"; latitude: "64"; height: "123"; }
- ListElement{ longitude: "14"; latitude: "65"; height: "123"; }
- ListElement{ longitude: "14"; latitude: "66"; height: "122"; }
- ListElement{ longitude: "14"; latitude: "67"; height: "121"; }
- ListElement{ longitude: "14"; latitude: "68"; height: "117"; }
- ListElement{ longitude: "14"; latitude: "69"; height: "117"; }
- ListElement{ longitude: "14"; latitude: "70"; height: "118"; }
- ListElement{ longitude: "14"; latitude: "71"; height: "122"; }
- ListElement{ longitude: "14"; latitude: "72"; height: "122"; }
- ListElement{ longitude: "14"; latitude: "73"; height: "120"; }
- ListElement{ longitude: "14"; latitude: "74"; height: "117"; }
- ListElement{ longitude: "14"; latitude: "75"; height: "112"; }
- ListElement{ longitude: "14"; latitude: "76"; height: "113"; }
- ListElement{ longitude: "14"; latitude: "77"; height: "111"; }
- ListElement{ longitude: "14"; latitude: "78"; height: "113"; }
- ListElement{ longitude: "14"; latitude: "79"; height: "117"; }
- ListElement{ longitude: "14"; latitude: "80"; height: "121"; }
- ListElement{ longitude: "14"; latitude: "81"; height: "121"; }
- ListElement{ longitude: "14"; latitude: "82"; height: "119"; }
- ListElement{ longitude: "14"; latitude: "83"; height: "112"; }
- ListElement{ longitude: "14"; latitude: "84"; height: "108"; }
- ListElement{ longitude: "14"; latitude: "85"; height: "107"; }
- ListElement{ longitude: "14"; latitude: "86"; height: "104"; }
- ListElement{ longitude: "14"; latitude: "87"; height: "103"; }
- ListElement{ longitude: "14"; latitude: "88"; height: "105"; }
- ListElement{ longitude: "14"; latitude: "89"; height: "108"; }
- ListElement{ longitude: "14"; latitude: "90"; height: "114"; }
- ListElement{ longitude: "14"; latitude: "91"; height: "117"; }
- ListElement{ longitude: "14"; latitude: "92"; height: "108"; }
- ListElement{ longitude: "14"; latitude: "93"; height: "125"; }
- ListElement{ longitude: "14"; latitude: "94"; height: "126"; }
- ListElement{ longitude: "14"; latitude: "95"; height: "126"; }
- ListElement{ longitude: "14"; latitude: "96"; height: "128"; }
- ListElement{ longitude: "14"; latitude: "97"; height: "133"; }
- ListElement{ longitude: "14"; latitude: "98"; height: "137"; }
- ListElement{ longitude: "14"; latitude: "99"; height: "136"; }
- ListElement{ longitude: "15"; latitude: "0"; height: "96"; }
- ListElement{ longitude: "15"; latitude: "1"; height: "98"; }
- ListElement{ longitude: "15"; latitude: "2"; height: "120"; }
- ListElement{ longitude: "15"; latitude: "3"; height: "138"; }
- ListElement{ longitude: "15"; latitude: "4"; height: "128"; }
- ListElement{ longitude: "15"; latitude: "5"; height: "131"; }
- ListElement{ longitude: "15"; latitude: "6"; height: "132"; }
- ListElement{ longitude: "15"; latitude: "7"; height: "128"; }
- ListElement{ longitude: "15"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "15"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "15"; latitude: "10"; height: "125"; }
- ListElement{ longitude: "15"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "15"; latitude: "12"; height: "129"; }
- ListElement{ longitude: "15"; latitude: "13"; height: "131"; }
- ListElement{ longitude: "15"; latitude: "14"; height: "133"; }
- ListElement{ longitude: "15"; latitude: "15"; height: "132"; }
- ListElement{ longitude: "15"; latitude: "16"; height: "129"; }
- ListElement{ longitude: "15"; latitude: "17"; height: "127"; }
- ListElement{ longitude: "15"; latitude: "18"; height: "124"; }
- ListElement{ longitude: "15"; latitude: "19"; height: "122"; }
- ListElement{ longitude: "15"; latitude: "20"; height: "120"; }
- ListElement{ longitude: "15"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "15"; latitude: "22"; height: "119"; }
- ListElement{ longitude: "15"; latitude: "23"; height: "122"; }
- ListElement{ longitude: "15"; latitude: "24"; height: "117"; }
- ListElement{ longitude: "15"; latitude: "25"; height: "116"; }
- ListElement{ longitude: "15"; latitude: "26"; height: "112"; }
- ListElement{ longitude: "15"; latitude: "27"; height: "111"; }
- ListElement{ longitude: "15"; latitude: "28"; height: "112"; }
- ListElement{ longitude: "15"; latitude: "29"; height: "113"; }
- ListElement{ longitude: "15"; latitude: "30"; height: "115"; }
- ListElement{ longitude: "15"; latitude: "31"; height: "118"; }
- ListElement{ longitude: "15"; latitude: "32"; height: "118"; }
- ListElement{ longitude: "15"; latitude: "33"; height: "116"; }
- ListElement{ longitude: "15"; latitude: "34"; height: "116"; }
- ListElement{ longitude: "15"; latitude: "35"; height: "117"; }
- ListElement{ longitude: "15"; latitude: "36"; height: "117"; }
- ListElement{ longitude: "15"; latitude: "37"; height: "123"; }
- ListElement{ longitude: "15"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "15"; latitude: "39"; height: "128"; }
- ListElement{ longitude: "15"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "15"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "15"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "15"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "15"; latitude: "44"; height: "130"; }
- ListElement{ longitude: "15"; latitude: "45"; height: "130"; }
- ListElement{ longitude: "15"; latitude: "46"; height: "130"; }
- ListElement{ longitude: "15"; latitude: "47"; height: "128"; }
- ListElement{ longitude: "15"; latitude: "48"; height: "127"; }
- ListElement{ longitude: "15"; latitude: "49"; height: "127"; }
- ListElement{ longitude: "15"; latitude: "50"; height: "129"; }
- ListElement{ longitude: "15"; latitude: "51"; height: "130"; }
- ListElement{ longitude: "15"; latitude: "52"; height: "131"; }
- ListElement{ longitude: "15"; latitude: "53"; height: "132"; }
- ListElement{ longitude: "15"; latitude: "54"; height: "129"; }
- ListElement{ longitude: "15"; latitude: "55"; height: "129"; }
- ListElement{ longitude: "15"; latitude: "56"; height: "124"; }
- ListElement{ longitude: "15"; latitude: "57"; height: "121"; }
- ListElement{ longitude: "15"; latitude: "58"; height: "122"; }
- ListElement{ longitude: "15"; latitude: "59"; height: "119"; }
- ListElement{ longitude: "15"; latitude: "60"; height: "119"; }
- ListElement{ longitude: "15"; latitude: "61"; height: "121"; }
- ListElement{ longitude: "15"; latitude: "62"; height: "120"; }
- ListElement{ longitude: "15"; latitude: "63"; height: "119"; }
- ListElement{ longitude: "15"; latitude: "64"; height: "119"; }
- ListElement{ longitude: "15"; latitude: "65"; height: "119"; }
- ListElement{ longitude: "15"; latitude: "66"; height: "112"; }
- ListElement{ longitude: "15"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "15"; latitude: "68"; height: "115"; }
- ListElement{ longitude: "15"; latitude: "69"; height: "114"; }
- ListElement{ longitude: "15"; latitude: "70"; height: "116"; }
- ListElement{ longitude: "15"; latitude: "71"; height: "117"; }
- ListElement{ longitude: "15"; latitude: "72"; height: "118"; }
- ListElement{ longitude: "15"; latitude: "73"; height: "115"; }
- ListElement{ longitude: "15"; latitude: "74"; height: "113"; }
- ListElement{ longitude: "15"; latitude: "75"; height: "111"; }
- ListElement{ longitude: "15"; latitude: "76"; height: "110"; }
- ListElement{ longitude: "15"; latitude: "77"; height: "111"; }
- ListElement{ longitude: "15"; latitude: "78"; height: "113"; }
- ListElement{ longitude: "15"; latitude: "79"; height: "113"; }
- ListElement{ longitude: "15"; latitude: "80"; height: "121"; }
- ListElement{ longitude: "15"; latitude: "81"; height: "123"; }
- ListElement{ longitude: "15"; latitude: "82"; height: "120"; }
- ListElement{ longitude: "15"; latitude: "83"; height: "121"; }
- ListElement{ longitude: "15"; latitude: "84"; height: "112"; }
- ListElement{ longitude: "15"; latitude: "85"; height: "107"; }
- ListElement{ longitude: "15"; latitude: "86"; height: "105"; }
- ListElement{ longitude: "15"; latitude: "87"; height: "104"; }
- ListElement{ longitude: "15"; latitude: "88"; height: "101"; }
- ListElement{ longitude: "15"; latitude: "89"; height: "108"; }
- ListElement{ longitude: "15"; latitude: "90"; height: "112"; }
- ListElement{ longitude: "15"; latitude: "91"; height: "119"; }
- ListElement{ longitude: "15"; latitude: "92"; height: "120"; }
- ListElement{ longitude: "15"; latitude: "93"; height: "118"; }
- ListElement{ longitude: "15"; latitude: "94"; height: "123"; }
- ListElement{ longitude: "15"; latitude: "95"; height: "126"; }
- ListElement{ longitude: "15"; latitude: "96"; height: "129"; }
- ListElement{ longitude: "15"; latitude: "97"; height: "132"; }
- ListElement{ longitude: "15"; latitude: "98"; height: "133"; }
- ListElement{ longitude: "15"; latitude: "99"; height: "132"; }
- ListElement{ longitude: "16"; latitude: "0"; height: "99"; }
- ListElement{ longitude: "16"; latitude: "1"; height: "105"; }
- ListElement{ longitude: "16"; latitude: "2"; height: "120"; }
- ListElement{ longitude: "16"; latitude: "3"; height: "135"; }
- ListElement{ longitude: "16"; latitude: "4"; height: "139"; }
- ListElement{ longitude: "16"; latitude: "5"; height: "138"; }
- ListElement{ longitude: "16"; latitude: "6"; height: "133"; }
- ListElement{ longitude: "16"; latitude: "7"; height: "129"; }
- ListElement{ longitude: "16"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "16"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "16"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "16"; latitude: "11"; height: "123"; }
- ListElement{ longitude: "16"; latitude: "12"; height: "126"; }
- ListElement{ longitude: "16"; latitude: "13"; height: "130"; }
- ListElement{ longitude: "16"; latitude: "14"; height: "130"; }
- ListElement{ longitude: "16"; latitude: "15"; height: "129"; }
- ListElement{ longitude: "16"; latitude: "16"; height: "127"; }
- ListElement{ longitude: "16"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "16"; latitude: "18"; height: "123"; }
- ListElement{ longitude: "16"; latitude: "19"; height: "123"; }
- ListElement{ longitude: "16"; latitude: "20"; height: "120"; }
- ListElement{ longitude: "16"; latitude: "21"; height: "120"; }
- ListElement{ longitude: "16"; latitude: "22"; height: "120"; }
- ListElement{ longitude: "16"; latitude: "23"; height: "120"; }
- ListElement{ longitude: "16"; latitude: "24"; height: "119"; }
- ListElement{ longitude: "16"; latitude: "25"; height: "117"; }
- ListElement{ longitude: "16"; latitude: "26"; height: "112"; }
- ListElement{ longitude: "16"; latitude: "27"; height: "113"; }
- ListElement{ longitude: "16"; latitude: "28"; height: "114"; }
- ListElement{ longitude: "16"; latitude: "29"; height: "116"; }
- ListElement{ longitude: "16"; latitude: "30"; height: "117"; }
- ListElement{ longitude: "16"; latitude: "31"; height: "117"; }
- ListElement{ longitude: "16"; latitude: "32"; height: "117"; }
- ListElement{ longitude: "16"; latitude: "33"; height: "116"; }
- ListElement{ longitude: "16"; latitude: "34"; height: "114"; }
- ListElement{ longitude: "16"; latitude: "35"; height: "116"; }
- ListElement{ longitude: "16"; latitude: "36"; height: "118"; }
- ListElement{ longitude: "16"; latitude: "37"; height: "120"; }
- ListElement{ longitude: "16"; latitude: "38"; height: "120"; }
- ListElement{ longitude: "16"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "16"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "16"; latitude: "41"; height: "126"; }
- ListElement{ longitude: "16"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "16"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "16"; latitude: "44"; height: "130"; }
- ListElement{ longitude: "16"; latitude: "45"; height: "130"; }
- ListElement{ longitude: "16"; latitude: "46"; height: "129"; }
- ListElement{ longitude: "16"; latitude: "47"; height: "128"; }
- ListElement{ longitude: "16"; latitude: "48"; height: "125"; }
- ListElement{ longitude: "16"; latitude: "49"; height: "124"; }
- ListElement{ longitude: "16"; latitude: "50"; height: "124"; }
- ListElement{ longitude: "16"; latitude: "51"; height: "126"; }
- ListElement{ longitude: "16"; latitude: "52"; height: "130"; }
- ListElement{ longitude: "16"; latitude: "53"; height: "131"; }
- ListElement{ longitude: "16"; latitude: "54"; height: "133"; }
- ListElement{ longitude: "16"; latitude: "55"; height: "130"; }
- ListElement{ longitude: "16"; latitude: "56"; height: "127"; }
- ListElement{ longitude: "16"; latitude: "57"; height: "123"; }
- ListElement{ longitude: "16"; latitude: "58"; height: "121"; }
- ListElement{ longitude: "16"; latitude: "59"; height: "119"; }
- ListElement{ longitude: "16"; latitude: "60"; height: "117"; }
- ListElement{ longitude: "16"; latitude: "61"; height: "120"; }
- ListElement{ longitude: "16"; latitude: "62"; height: "119"; }
- ListElement{ longitude: "16"; latitude: "63"; height: "121"; }
- ListElement{ longitude: "16"; latitude: "64"; height: "119"; }
- ListElement{ longitude: "16"; latitude: "65"; height: "117"; }
- ListElement{ longitude: "16"; latitude: "66"; height: "114"; }
- ListElement{ longitude: "16"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "16"; latitude: "68"; height: "116"; }
- ListElement{ longitude: "16"; latitude: "69"; height: "111"; }
- ListElement{ longitude: "16"; latitude: "70"; height: "111"; }
- ListElement{ longitude: "16"; latitude: "71"; height: "112"; }
- ListElement{ longitude: "16"; latitude: "72"; height: "114"; }
- ListElement{ longitude: "16"; latitude: "73"; height: "112"; }
- ListElement{ longitude: "16"; latitude: "74"; height: "112"; }
- ListElement{ longitude: "16"; latitude: "75"; height: "109"; }
- ListElement{ longitude: "16"; latitude: "76"; height: "109"; }
- ListElement{ longitude: "16"; latitude: "77"; height: "110"; }
- ListElement{ longitude: "16"; latitude: "78"; height: "98"; }
- ListElement{ longitude: "16"; latitude: "79"; height: "91"; }
- ListElement{ longitude: "16"; latitude: "80"; height: "119"; }
- ListElement{ longitude: "16"; latitude: "81"; height: "122"; }
- ListElement{ longitude: "16"; latitude: "82"; height: "109"; }
- ListElement{ longitude: "16"; latitude: "83"; height: "112"; }
- ListElement{ longitude: "16"; latitude: "84"; height: "118"; }
- ListElement{ longitude: "16"; latitude: "85"; height: "109"; }
- ListElement{ longitude: "16"; latitude: "86"; height: "105"; }
- ListElement{ longitude: "16"; latitude: "87"; height: "105"; }
- ListElement{ longitude: "16"; latitude: "88"; height: "90"; }
- ListElement{ longitude: "16"; latitude: "89"; height: "106"; }
- ListElement{ longitude: "16"; latitude: "90"; height: "110"; }
- ListElement{ longitude: "16"; latitude: "91"; height: "113"; }
- ListElement{ longitude: "16"; latitude: "92"; height: "118"; }
- ListElement{ longitude: "16"; latitude: "93"; height: "116"; }
- ListElement{ longitude: "16"; latitude: "94"; height: "119"; }
- ListElement{ longitude: "16"; latitude: "95"; height: "124"; }
- ListElement{ longitude: "16"; latitude: "96"; height: "127"; }
- ListElement{ longitude: "16"; latitude: "97"; height: "130"; }
- ListElement{ longitude: "16"; latitude: "98"; height: "132"; }
- ListElement{ longitude: "16"; latitude: "99"; height: "128"; }
- ListElement{ longitude: "17"; latitude: "0"; height: "110"; }
- ListElement{ longitude: "17"; latitude: "1"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "2"; height: "130"; }
- ListElement{ longitude: "17"; latitude: "3"; height: "136"; }
- ListElement{ longitude: "17"; latitude: "4"; height: "138"; }
- ListElement{ longitude: "17"; latitude: "5"; height: "132"; }
- ListElement{ longitude: "17"; latitude: "6"; height: "134"; }
- ListElement{ longitude: "17"; latitude: "7"; height: "129"; }
- ListElement{ longitude: "17"; latitude: "8"; height: "127"; }
- ListElement{ longitude: "17"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "17"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "17"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "17"; latitude: "12"; height: "127"; }
- ListElement{ longitude: "17"; latitude: "13"; height: "129"; }
- ListElement{ longitude: "17"; latitude: "14"; height: "128"; }
- ListElement{ longitude: "17"; latitude: "15"; height: "125"; }
- ListElement{ longitude: "17"; latitude: "16"; height: "124"; }
- ListElement{ longitude: "17"; latitude: "17"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "18"; height: "118"; }
- ListElement{ longitude: "17"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "17"; latitude: "20"; height: "116"; }
- ListElement{ longitude: "17"; latitude: "21"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "22"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "23"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "24"; height: "119"; }
- ListElement{ longitude: "17"; latitude: "25"; height: "118"; }
- ListElement{ longitude: "17"; latitude: "26"; height: "115"; }
- ListElement{ longitude: "17"; latitude: "27"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "28"; height: "119"; }
- ListElement{ longitude: "17"; latitude: "29"; height: "122"; }
- ListElement{ longitude: "17"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "17"; latitude: "31"; height: "121"; }
- ListElement{ longitude: "17"; latitude: "32"; height: "119"; }
- ListElement{ longitude: "17"; latitude: "33"; height: "118"; }
- ListElement{ longitude: "17"; latitude: "34"; height: "115"; }
- ListElement{ longitude: "17"; latitude: "35"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "36"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "37"; height: "122"; }
- ListElement{ longitude: "17"; latitude: "38"; height: "122"; }
- ListElement{ longitude: "17"; latitude: "39"; height: "126"; }
- ListElement{ longitude: "17"; latitude: "40"; height: "128"; }
- ListElement{ longitude: "17"; latitude: "41"; height: "127"; }
- ListElement{ longitude: "17"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "17"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "17"; latitude: "44"; height: "130"; }
- ListElement{ longitude: "17"; latitude: "45"; height: "130"; }
- ListElement{ longitude: "17"; latitude: "46"; height: "129"; }
- ListElement{ longitude: "17"; latitude: "47"; height: "125"; }
- ListElement{ longitude: "17"; latitude: "48"; height: "123"; }
- ListElement{ longitude: "17"; latitude: "49"; height: "120"; }
- ListElement{ longitude: "17"; latitude: "50"; height: "122"; }
- ListElement{ longitude: "17"; latitude: "51"; height: "124"; }
- ListElement{ longitude: "17"; latitude: "52"; height: "128"; }
- ListElement{ longitude: "17"; latitude: "53"; height: "130"; }
- ListElement{ longitude: "17"; latitude: "54"; height: "134"; }
- ListElement{ longitude: "17"; latitude: "55"; height: "131"; }
- ListElement{ longitude: "17"; latitude: "56"; height: "129"; }
- ListElement{ longitude: "17"; latitude: "57"; height: "126"; }
- ListElement{ longitude: "17"; latitude: "58"; height: "122"; }
- ListElement{ longitude: "17"; latitude: "59"; height: "122"; }
- ListElement{ longitude: "17"; latitude: "60"; height: "121"; }
- ListElement{ longitude: "17"; latitude: "61"; height: "118"; }
- ListElement{ longitude: "17"; latitude: "62"; height: "107"; }
- ListElement{ longitude: "17"; latitude: "63"; height: "118"; }
- ListElement{ longitude: "17"; latitude: "64"; height: "113"; }
- ListElement{ longitude: "17"; latitude: "65"; height: "117"; }
- ListElement{ longitude: "17"; latitude: "66"; height: "112"; }
- ListElement{ longitude: "17"; latitude: "67"; height: "111"; }
- ListElement{ longitude: "17"; latitude: "68"; height: "110"; }
- ListElement{ longitude: "17"; latitude: "69"; height: "109"; }
- ListElement{ longitude: "17"; latitude: "70"; height: "109"; }
- ListElement{ longitude: "17"; latitude: "71"; height: "110"; }
- ListElement{ longitude: "17"; latitude: "72"; height: "110"; }
- ListElement{ longitude: "17"; latitude: "73"; height: "110"; }
- ListElement{ longitude: "17"; latitude: "74"; height: "109"; }
- ListElement{ longitude: "17"; latitude: "75"; height: "109"; }
- ListElement{ longitude: "17"; latitude: "76"; height: "110"; }
- ListElement{ longitude: "17"; latitude: "77"; height: "111"; }
- ListElement{ longitude: "17"; latitude: "78"; height: "106"; }
- ListElement{ longitude: "17"; latitude: "79"; height: "101"; }
- ListElement{ longitude: "17"; latitude: "80"; height: "115"; }
- ListElement{ longitude: "17"; latitude: "81"; height: "119"; }
- ListElement{ longitude: "17"; latitude: "82"; height: "108"; }
- ListElement{ longitude: "17"; latitude: "83"; height: "116"; }
- ListElement{ longitude: "17"; latitude: "84"; height: "119"; }
- ListElement{ longitude: "17"; latitude: "85"; height: "112"; }
- ListElement{ longitude: "17"; latitude: "86"; height: "108"; }
- ListElement{ longitude: "17"; latitude: "87"; height: "105"; }
- ListElement{ longitude: "17"; latitude: "88"; height: "104"; }
- ListElement{ longitude: "17"; latitude: "89"; height: "105"; }
- ListElement{ longitude: "17"; latitude: "90"; height: "106"; }
- ListElement{ longitude: "17"; latitude: "91"; height: "110"; }
- ListElement{ longitude: "17"; latitude: "92"; height: "111"; }
- ListElement{ longitude: "17"; latitude: "93"; height: "113"; }
- ListElement{ longitude: "17"; latitude: "94"; height: "116"; }
- ListElement{ longitude: "17"; latitude: "95"; height: "121"; }
- ListElement{ longitude: "17"; latitude: "96"; height: "125"; }
- ListElement{ longitude: "17"; latitude: "97"; height: "128"; }
- ListElement{ longitude: "17"; latitude: "98"; height: "131"; }
- ListElement{ longitude: "17"; latitude: "99"; height: "124"; }
- ListElement{ longitude: "18"; latitude: "0"; height: "118"; }
- ListElement{ longitude: "18"; latitude: "1"; height: "124"; }
- ListElement{ longitude: "18"; latitude: "2"; height: "131"; }
- ListElement{ longitude: "18"; latitude: "3"; height: "133"; }
- ListElement{ longitude: "18"; latitude: "4"; height: "135"; }
- ListElement{ longitude: "18"; latitude: "5"; height: "124"; }
- ListElement{ longitude: "18"; latitude: "6"; height: "133"; }
- ListElement{ longitude: "18"; latitude: "7"; height: "130"; }
- ListElement{ longitude: "18"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "18"; latitude: "9"; height: "127"; }
- ListElement{ longitude: "18"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "18"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "18"; latitude: "12"; height: "125"; }
- ListElement{ longitude: "18"; latitude: "13"; height: "122"; }
- ListElement{ longitude: "18"; latitude: "14"; height: "120"; }
- ListElement{ longitude: "18"; latitude: "15"; height: "118"; }
- ListElement{ longitude: "18"; latitude: "16"; height: "112"; }
- ListElement{ longitude: "18"; latitude: "17"; height: "111"; }
- ListElement{ longitude: "18"; latitude: "18"; height: "116"; }
- ListElement{ longitude: "18"; latitude: "19"; height: "119"; }
- ListElement{ longitude: "18"; latitude: "20"; height: "119"; }
- ListElement{ longitude: "18"; latitude: "21"; height: "117"; }
- ListElement{ longitude: "18"; latitude: "22"; height: "118"; }
- ListElement{ longitude: "18"; latitude: "23"; height: "118"; }
- ListElement{ longitude: "18"; latitude: "24"; height: "118"; }
- ListElement{ longitude: "18"; latitude: "25"; height: "116"; }
- ListElement{ longitude: "18"; latitude: "26"; height: "116"; }
- ListElement{ longitude: "18"; latitude: "27"; height: "118"; }
- ListElement{ longitude: "18"; latitude: "28"; height: "120"; }
- ListElement{ longitude: "18"; latitude: "29"; height: "122"; }
- ListElement{ longitude: "18"; latitude: "30"; height: "125"; }
- ListElement{ longitude: "18"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "18"; latitude: "32"; height: "123"; }
- ListElement{ longitude: "18"; latitude: "33"; height: "123"; }
- ListElement{ longitude: "18"; latitude: "34"; height: "122"; }
- ListElement{ longitude: "18"; latitude: "35"; height: "120"; }
- ListElement{ longitude: "18"; latitude: "36"; height: "121"; }
- ListElement{ longitude: "18"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "18"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "18"; latitude: "39"; height: "128"; }
- ListElement{ longitude: "18"; latitude: "40"; height: "129"; }
- ListElement{ longitude: "18"; latitude: "41"; height: "129"; }
- ListElement{ longitude: "18"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "18"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "18"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "18"; latitude: "45"; height: "129"; }
- ListElement{ longitude: "18"; latitude: "46"; height: "128"; }
- ListElement{ longitude: "18"; latitude: "47"; height: "126"; }
- ListElement{ longitude: "18"; latitude: "48"; height: "124"; }
- ListElement{ longitude: "18"; latitude: "49"; height: "121"; }
- ListElement{ longitude: "18"; latitude: "50"; height: "119"; }
- ListElement{ longitude: "18"; latitude: "51"; height: "122"; }
- ListElement{ longitude: "18"; latitude: "52"; height: "126"; }
- ListElement{ longitude: "18"; latitude: "53"; height: "129"; }
- ListElement{ longitude: "18"; latitude: "54"; height: "131"; }
- ListElement{ longitude: "18"; latitude: "55"; height: "131"; }
- ListElement{ longitude: "18"; latitude: "56"; height: "130"; }
- ListElement{ longitude: "18"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "18"; latitude: "58"; height: "123"; }
- ListElement{ longitude: "18"; latitude: "59"; height: "122"; }
- ListElement{ longitude: "18"; latitude: "60"; height: "122"; }
- ListElement{ longitude: "18"; latitude: "61"; height: "124"; }
- ListElement{ longitude: "18"; latitude: "62"; height: "119"; }
- ListElement{ longitude: "18"; latitude: "63"; height: "119"; }
- ListElement{ longitude: "18"; latitude: "64"; height: "111"; }
- ListElement{ longitude: "18"; latitude: "65"; height: "111"; }
- ListElement{ longitude: "18"; latitude: "66"; height: "114"; }
- ListElement{ longitude: "18"; latitude: "67"; height: "107"; }
- ListElement{ longitude: "18"; latitude: "68"; height: "108"; }
- ListElement{ longitude: "18"; latitude: "69"; height: "109"; }
- ListElement{ longitude: "18"; latitude: "70"; height: "108"; }
- ListElement{ longitude: "18"; latitude: "71"; height: "109"; }
- ListElement{ longitude: "18"; latitude: "72"; height: "111"; }
- ListElement{ longitude: "18"; latitude: "73"; height: "110"; }
- ListElement{ longitude: "18"; latitude: "74"; height: "111"; }
- ListElement{ longitude: "18"; latitude: "75"; height: "109"; }
- ListElement{ longitude: "18"; latitude: "76"; height: "109"; }
- ListElement{ longitude: "18"; latitude: "77"; height: "110"; }
- ListElement{ longitude: "18"; latitude: "78"; height: "110"; }
- ListElement{ longitude: "18"; latitude: "79"; height: "91"; }
- ListElement{ longitude: "18"; latitude: "80"; height: "106"; }
- ListElement{ longitude: "18"; latitude: "81"; height: "115"; }
- ListElement{ longitude: "18"; latitude: "82"; height: "120"; }
- ListElement{ longitude: "18"; latitude: "83"; height: "123"; }
- ListElement{ longitude: "18"; latitude: "84"; height: "117"; }
- ListElement{ longitude: "18"; latitude: "85"; height: "110"; }
- ListElement{ longitude: "18"; latitude: "86"; height: "104"; }
- ListElement{ longitude: "18"; latitude: "87"; height: "101"; }
- ListElement{ longitude: "18"; latitude: "88"; height: "102"; }
- ListElement{ longitude: "18"; latitude: "89"; height: "103"; }
- ListElement{ longitude: "18"; latitude: "90"; height: "104"; }
- ListElement{ longitude: "18"; latitude: "91"; height: "107"; }
- ListElement{ longitude: "18"; latitude: "92"; height: "109"; }
- ListElement{ longitude: "18"; latitude: "93"; height: "109"; }
- ListElement{ longitude: "18"; latitude: "94"; height: "113"; }
- ListElement{ longitude: "18"; latitude: "95"; height: "119"; }
- ListElement{ longitude: "18"; latitude: "96"; height: "122"; }
- ListElement{ longitude: "18"; latitude: "97"; height: "123"; }
- ListElement{ longitude: "18"; latitude: "98"; height: "130"; }
- ListElement{ longitude: "18"; latitude: "99"; height: "118"; }
- ListElement{ longitude: "19"; latitude: "0"; height: "118"; }
- ListElement{ longitude: "19"; latitude: "1"; height: "120"; }
- ListElement{ longitude: "19"; latitude: "2"; height: "125"; }
- ListElement{ longitude: "19"; latitude: "3"; height: "128"; }
- ListElement{ longitude: "19"; latitude: "4"; height: "134"; }
- ListElement{ longitude: "19"; latitude: "5"; height: "134"; }
- ListElement{ longitude: "19"; latitude: "6"; height: "131"; }
- ListElement{ longitude: "19"; latitude: "7"; height: "128"; }
- ListElement{ longitude: "19"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "19"; latitude: "9"; height: "124"; }
- ListElement{ longitude: "19"; latitude: "10"; height: "123"; }
- ListElement{ longitude: "19"; latitude: "11"; height: "120"; }
- ListElement{ longitude: "19"; latitude: "12"; height: "121"; }
- ListElement{ longitude: "19"; latitude: "13"; height: "118"; }
- ListElement{ longitude: "19"; latitude: "14"; height: "118"; }
- ListElement{ longitude: "19"; latitude: "15"; height: "113"; }
- ListElement{ longitude: "19"; latitude: "16"; height: "111"; }
- ListElement{ longitude: "19"; latitude: "17"; height: "113"; }
- ListElement{ longitude: "19"; latitude: "18"; height: "115"; }
- ListElement{ longitude: "19"; latitude: "19"; height: "119"; }
- ListElement{ longitude: "19"; latitude: "20"; height: "120"; }
- ListElement{ longitude: "19"; latitude: "21"; height: "119"; }
- ListElement{ longitude: "19"; latitude: "22"; height: "117"; }
- ListElement{ longitude: "19"; latitude: "23"; height: "116"; }
- ListElement{ longitude: "19"; latitude: "24"; height: "116"; }
- ListElement{ longitude: "19"; latitude: "25"; height: "116"; }
- ListElement{ longitude: "19"; latitude: "26"; height: "116"; }
- ListElement{ longitude: "19"; latitude: "27"; height: "117"; }
- ListElement{ longitude: "19"; latitude: "28"; height: "118"; }
- ListElement{ longitude: "19"; latitude: "29"; height: "121"; }
- ListElement{ longitude: "19"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "19"; latitude: "31"; height: "124"; }
- ListElement{ longitude: "19"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "19"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "19"; latitude: "34"; height: "124"; }
- ListElement{ longitude: "19"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "19"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "19"; latitude: "37"; height: "128"; }
- ListElement{ longitude: "19"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "19"; latitude: "39"; height: "130"; }
- ListElement{ longitude: "19"; latitude: "40"; height: "129"; }
- ListElement{ longitude: "19"; latitude: "41"; height: "129"; }
- ListElement{ longitude: "19"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "19"; latitude: "43"; height: "129"; }
- ListElement{ longitude: "19"; latitude: "44"; height: "129"; }
- ListElement{ longitude: "19"; latitude: "45"; height: "128"; }
- ListElement{ longitude: "19"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "19"; latitude: "47"; height: "124"; }
- ListElement{ longitude: "19"; latitude: "48"; height: "122"; }
- ListElement{ longitude: "19"; latitude: "49"; height: "121"; }
- ListElement{ longitude: "19"; latitude: "50"; height: "120"; }
- ListElement{ longitude: "19"; latitude: "51"; height: "121"; }
- ListElement{ longitude: "19"; latitude: "52"; height: "123"; }
- ListElement{ longitude: "19"; latitude: "53"; height: "127"; }
- ListElement{ longitude: "19"; latitude: "54"; height: "129"; }
- ListElement{ longitude: "19"; latitude: "55"; height: "131"; }
- ListElement{ longitude: "19"; latitude: "56"; height: "128"; }
- ListElement{ longitude: "19"; latitude: "57"; height: "122"; }
- ListElement{ longitude: "19"; latitude: "58"; height: "118"; }
- ListElement{ longitude: "19"; latitude: "59"; height: "121"; }
- ListElement{ longitude: "19"; latitude: "60"; height: "122"; }
- ListElement{ longitude: "19"; latitude: "61"; height: "120"; }
- ListElement{ longitude: "19"; latitude: "62"; height: "113"; }
- ListElement{ longitude: "19"; latitude: "63"; height: "119"; }
- ListElement{ longitude: "19"; latitude: "64"; height: "108"; }
- ListElement{ longitude: "19"; latitude: "65"; height: "105"; }
- ListElement{ longitude: "19"; latitude: "66"; height: "109"; }
- ListElement{ longitude: "19"; latitude: "67"; height: "108"; }
- ListElement{ longitude: "19"; latitude: "68"; height: "105"; }
- ListElement{ longitude: "19"; latitude: "69"; height: "107"; }
- ListElement{ longitude: "19"; latitude: "70"; height: "107"; }
- ListElement{ longitude: "19"; latitude: "71"; height: "110"; }
- ListElement{ longitude: "19"; latitude: "72"; height: "112"; }
- ListElement{ longitude: "19"; latitude: "73"; height: "112"; }
- ListElement{ longitude: "19"; latitude: "74"; height: "110"; }
- ListElement{ longitude: "19"; latitude: "75"; height: "111"; }
- ListElement{ longitude: "19"; latitude: "76"; height: "111"; }
- ListElement{ longitude: "19"; latitude: "77"; height: "111"; }
- ListElement{ longitude: "19"; latitude: "78"; height: "111"; }
- ListElement{ longitude: "19"; latitude: "79"; height: "110"; }
- ListElement{ longitude: "19"; latitude: "80"; height: "109"; }
- ListElement{ longitude: "19"; latitude: "81"; height: "110"; }
- ListElement{ longitude: "19"; latitude: "82"; height: "113"; }
- ListElement{ longitude: "19"; latitude: "83"; height: "116"; }
- ListElement{ longitude: "19"; latitude: "84"; height: "116"; }
- ListElement{ longitude: "19"; latitude: "85"; height: "112"; }
- ListElement{ longitude: "19"; latitude: "86"; height: "105"; }
- ListElement{ longitude: "19"; latitude: "87"; height: "102"; }
- ListElement{ longitude: "19"; latitude: "88"; height: "101"; }
- ListElement{ longitude: "19"; latitude: "89"; height: "102"; }
- ListElement{ longitude: "19"; latitude: "90"; height: "105"; }
- ListElement{ longitude: "19"; latitude: "91"; height: "99"; }
- ListElement{ longitude: "19"; latitude: "92"; height: "103"; }
- ListElement{ longitude: "19"; latitude: "93"; height: "104"; }
- ListElement{ longitude: "19"; latitude: "94"; height: "110"; }
- ListElement{ longitude: "19"; latitude: "95"; height: "114"; }
- ListElement{ longitude: "19"; latitude: "96"; height: "120"; }
- ListElement{ longitude: "19"; latitude: "97"; height: "123"; }
- ListElement{ longitude: "19"; latitude: "98"; height: "127"; }
- ListElement{ longitude: "19"; latitude: "99"; height: "114"; }
- ListElement{ longitude: "20"; latitude: "0"; height: "117"; }
- ListElement{ longitude: "20"; latitude: "1"; height: "120"; }
- ListElement{ longitude: "20"; latitude: "2"; height: "121"; }
- ListElement{ longitude: "20"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "20"; latitude: "4"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "5"; height: "127"; }
- ListElement{ longitude: "20"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "20"; latitude: "7"; height: "123"; }
- ListElement{ longitude: "20"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "10"; height: "123"; }
- ListElement{ longitude: "20"; latitude: "11"; height: "122"; }
- ListElement{ longitude: "20"; latitude: "12"; height: "123"; }
- ListElement{ longitude: "20"; latitude: "13"; height: "122"; }
- ListElement{ longitude: "20"; latitude: "14"; height: "120"; }
- ListElement{ longitude: "20"; latitude: "15"; height: "114"; }
- ListElement{ longitude: "20"; latitude: "16"; height: "112"; }
- ListElement{ longitude: "20"; latitude: "17"; height: "113"; }
- ListElement{ longitude: "20"; latitude: "18"; height: "118"; }
- ListElement{ longitude: "20"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "20"; latitude: "20"; height: "120"; }
- ListElement{ longitude: "20"; latitude: "21"; height: "118"; }
- ListElement{ longitude: "20"; latitude: "22"; height: "119"; }
- ListElement{ longitude: "20"; latitude: "23"; height: "118"; }
- ListElement{ longitude: "20"; latitude: "24"; height: "116"; }
- ListElement{ longitude: "20"; latitude: "25"; height: "117"; }
- ListElement{ longitude: "20"; latitude: "26"; height: "116"; }
- ListElement{ longitude: "20"; latitude: "27"; height: "118"; }
- ListElement{ longitude: "20"; latitude: "28"; height: "118"; }
- ListElement{ longitude: "20"; latitude: "29"; height: "121"; }
- ListElement{ longitude: "20"; latitude: "30"; height: "119"; }
- ListElement{ longitude: "20"; latitude: "31"; height: "121"; }
- ListElement{ longitude: "20"; latitude: "32"; height: "124"; }
- ListElement{ longitude: "20"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "20"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "20"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "20"; latitude: "39"; height: "128"; }
- ListElement{ longitude: "20"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "20"; latitude: "41"; height: "129"; }
- ListElement{ longitude: "20"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "20"; latitude: "43"; height: "129"; }
- ListElement{ longitude: "20"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "20"; latitude: "45"; height: "126"; }
- ListElement{ longitude: "20"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "20"; latitude: "47"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "48"; height: "122"; }
- ListElement{ longitude: "20"; latitude: "49"; height: "121"; }
- ListElement{ longitude: "20"; latitude: "50"; height: "120"; }
- ListElement{ longitude: "20"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "20"; latitude: "52"; height: "121"; }
- ListElement{ longitude: "20"; latitude: "53"; height: "123"; }
- ListElement{ longitude: "20"; latitude: "54"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "55"; height: "129"; }
- ListElement{ longitude: "20"; latitude: "56"; height: "124"; }
- ListElement{ longitude: "20"; latitude: "57"; height: "111"; }
- ListElement{ longitude: "20"; latitude: "58"; height: "108"; }
- ListElement{ longitude: "20"; latitude: "59"; height: "118"; }
- ListElement{ longitude: "20"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "61"; height: "124"; }
- ListElement{ longitude: "20"; latitude: "62"; height: "121"; }
- ListElement{ longitude: "20"; latitude: "63"; height: "125"; }
- ListElement{ longitude: "20"; latitude: "64"; height: "122"; }
- ListElement{ longitude: "20"; latitude: "65"; height: "116"; }
- ListElement{ longitude: "20"; latitude: "66"; height: "110"; }
- ListElement{ longitude: "20"; latitude: "67"; height: "108"; }
- ListElement{ longitude: "20"; latitude: "68"; height: "105"; }
- ListElement{ longitude: "20"; latitude: "69"; height: "107"; }
- ListElement{ longitude: "20"; latitude: "70"; height: "106"; }
- ListElement{ longitude: "20"; latitude: "71"; height: "109"; }
- ListElement{ longitude: "20"; latitude: "72"; height: "112"; }
- ListElement{ longitude: "20"; latitude: "73"; height: "112"; }
- ListElement{ longitude: "20"; latitude: "74"; height: "112"; }
- ListElement{ longitude: "20"; latitude: "75"; height: "110"; }
- ListElement{ longitude: "20"; latitude: "76"; height: "111"; }
- ListElement{ longitude: "20"; latitude: "77"; height: "111"; }
- ListElement{ longitude: "20"; latitude: "78"; height: "110"; }
- ListElement{ longitude: "20"; latitude: "79"; height: "107"; }
- ListElement{ longitude: "20"; latitude: "80"; height: "107"; }
- ListElement{ longitude: "20"; latitude: "81"; height: "109"; }
- ListElement{ longitude: "20"; latitude: "82"; height: "113"; }
- ListElement{ longitude: "20"; latitude: "83"; height: "116"; }
- ListElement{ longitude: "20"; latitude: "84"; height: "109"; }
- ListElement{ longitude: "20"; latitude: "85"; height: "102"; }
- ListElement{ longitude: "20"; latitude: "86"; height: "107"; }
- ListElement{ longitude: "20"; latitude: "87"; height: "103"; }
- ListElement{ longitude: "20"; latitude: "88"; height: "102"; }
- ListElement{ longitude: "20"; latitude: "89"; height: "102"; }
- ListElement{ longitude: "20"; latitude: "90"; height: "104"; }
- ListElement{ longitude: "20"; latitude: "91"; height: "101"; }
- ListElement{ longitude: "20"; latitude: "92"; height: "110"; }
- ListElement{ longitude: "20"; latitude: "93"; height: "110"; }
- ListElement{ longitude: "20"; latitude: "94"; height: "111"; }
- ListElement{ longitude: "20"; latitude: "95"; height: "111"; }
- ListElement{ longitude: "20"; latitude: "96"; height: "117"; }
- ListElement{ longitude: "20"; latitude: "97"; height: "121"; }
- ListElement{ longitude: "20"; latitude: "98"; height: "122"; }
- ListElement{ longitude: "20"; latitude: "99"; height: "112"; }
- ListElement{ longitude: "21"; latitude: "0"; height: "116"; }
- ListElement{ longitude: "21"; latitude: "1"; height: "118"; }
- ListElement{ longitude: "21"; latitude: "2"; height: "119"; }
- ListElement{ longitude: "21"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "21"; latitude: "4"; height: "121"; }
- ListElement{ longitude: "21"; latitude: "5"; height: "123"; }
- ListElement{ longitude: "21"; latitude: "6"; height: "119"; }
- ListElement{ longitude: "21"; latitude: "7"; height: "119"; }
- ListElement{ longitude: "21"; latitude: "8"; height: "122"; }
- ListElement{ longitude: "21"; latitude: "9"; height: "123"; }
- ListElement{ longitude: "21"; latitude: "10"; height: "125"; }
- ListElement{ longitude: "21"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "21"; latitude: "12"; height: "124"; }
- ListElement{ longitude: "21"; latitude: "13"; height: "122"; }
- ListElement{ longitude: "21"; latitude: "14"; height: "124"; }
- ListElement{ longitude: "21"; latitude: "15"; height: "120"; }
- ListElement{ longitude: "21"; latitude: "16"; height: "119"; }
- ListElement{ longitude: "21"; latitude: "17"; height: "118"; }
- ListElement{ longitude: "21"; latitude: "18"; height: "119"; }
- ListElement{ longitude: "21"; latitude: "19"; height: "121"; }
- ListElement{ longitude: "21"; latitude: "20"; height: "121"; }
- ListElement{ longitude: "21"; latitude: "21"; height: "119"; }
- ListElement{ longitude: "21"; latitude: "22"; height: "120"; }
- ListElement{ longitude: "21"; latitude: "23"; height: "117"; }
- ListElement{ longitude: "21"; latitude: "24"; height: "116"; }
- ListElement{ longitude: "21"; latitude: "25"; height: "116"; }
- ListElement{ longitude: "21"; latitude: "26"; height: "116"; }
- ListElement{ longitude: "21"; latitude: "27"; height: "115"; }
- ListElement{ longitude: "21"; latitude: "28"; height: "121"; }
- ListElement{ longitude: "21"; latitude: "29"; height: "120"; }
- ListElement{ longitude: "21"; latitude: "30"; height: "119"; }
- ListElement{ longitude: "21"; latitude: "31"; height: "119"; }
- ListElement{ longitude: "21"; latitude: "32"; height: "121"; }
- ListElement{ longitude: "21"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "21"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "21"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "21"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "21"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "21"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "21"; latitude: "39"; height: "128"; }
- ListElement{ longitude: "21"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "21"; latitude: "41"; height: "127"; }
- ListElement{ longitude: "21"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "21"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "21"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "21"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "21"; latitude: "46"; height: "126"; }
- ListElement{ longitude: "21"; latitude: "47"; height: "124"; }
- ListElement{ longitude: "21"; latitude: "48"; height: "124"; }
- ListElement{ longitude: "21"; latitude: "49"; height: "121"; }
- ListElement{ longitude: "21"; latitude: "50"; height: "120"; }
- ListElement{ longitude: "21"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "21"; latitude: "52"; height: "122"; }
- ListElement{ longitude: "21"; latitude: "53"; height: "121"; }
- ListElement{ longitude: "21"; latitude: "54"; height: "122"; }
- ListElement{ longitude: "21"; latitude: "55"; height: "127"; }
- ListElement{ longitude: "21"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "21"; latitude: "57"; height: "114"; }
- ListElement{ longitude: "21"; latitude: "58"; height: "111"; }
- ListElement{ longitude: "21"; latitude: "59"; height: "120"; }
- ListElement{ longitude: "21"; latitude: "60"; height: "127"; }
- ListElement{ longitude: "21"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "21"; latitude: "62"; height: "125"; }
- ListElement{ longitude: "21"; latitude: "63"; height: "123"; }
- ListElement{ longitude: "21"; latitude: "64"; height: "118"; }
- ListElement{ longitude: "21"; latitude: "65"; height: "113"; }
- ListElement{ longitude: "21"; latitude: "66"; height: "112"; }
- ListElement{ longitude: "21"; latitude: "67"; height: "109"; }
- ListElement{ longitude: "21"; latitude: "68"; height: "108"; }
- ListElement{ longitude: "21"; latitude: "69"; height: "109"; }
- ListElement{ longitude: "21"; latitude: "70"; height: "110"; }
- ListElement{ longitude: "21"; latitude: "71"; height: "110"; }
- ListElement{ longitude: "21"; latitude: "72"; height: "110"; }
- ListElement{ longitude: "21"; latitude: "73"; height: "110"; }
- ListElement{ longitude: "21"; latitude: "74"; height: "112"; }
- ListElement{ longitude: "21"; latitude: "75"; height: "112"; }
- ListElement{ longitude: "21"; latitude: "76"; height: "111"; }
- ListElement{ longitude: "21"; latitude: "77"; height: "110"; }
- ListElement{ longitude: "21"; latitude: "78"; height: "109"; }
- ListElement{ longitude: "21"; latitude: "79"; height: "106"; }
- ListElement{ longitude: "21"; latitude: "80"; height: "106"; }
- ListElement{ longitude: "21"; latitude: "81"; height: "107"; }
- ListElement{ longitude: "21"; latitude: "82"; height: "110"; }
- ListElement{ longitude: "21"; latitude: "83"; height: "118"; }
- ListElement{ longitude: "21"; latitude: "84"; height: "109"; }
- ListElement{ longitude: "21"; latitude: "85"; height: "107"; }
- ListElement{ longitude: "21"; latitude: "86"; height: "113"; }
- ListElement{ longitude: "21"; latitude: "87"; height: "103"; }
- ListElement{ longitude: "21"; latitude: "88"; height: "103"; }
- ListElement{ longitude: "21"; latitude: "89"; height: "105"; }
- ListElement{ longitude: "21"; latitude: "90"; height: "104"; }
- ListElement{ longitude: "21"; latitude: "91"; height: "102"; }
- ListElement{ longitude: "21"; latitude: "92"; height: "102"; }
- ListElement{ longitude: "21"; latitude: "93"; height: "104"; }
- ListElement{ longitude: "21"; latitude: "94"; height: "105"; }
- ListElement{ longitude: "21"; latitude: "95"; height: "113"; }
- ListElement{ longitude: "21"; latitude: "96"; height: "117"; }
- ListElement{ longitude: "21"; latitude: "97"; height: "122"; }
- ListElement{ longitude: "21"; latitude: "98"; height: "123"; }
- ListElement{ longitude: "21"; latitude: "99"; height: "114"; }
- ListElement{ longitude: "22"; latitude: "0"; height: "119"; }
- ListElement{ longitude: "22"; latitude: "1"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "2"; height: "119"; }
- ListElement{ longitude: "22"; latitude: "3"; height: "119"; }
- ListElement{ longitude: "22"; latitude: "4"; height: "119"; }
- ListElement{ longitude: "22"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "22"; latitude: "6"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "7"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "8"; height: "121"; }
- ListElement{ longitude: "22"; latitude: "9"; height: "124"; }
- ListElement{ longitude: "22"; latitude: "10"; height: "125"; }
- ListElement{ longitude: "22"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "22"; latitude: "12"; height: "127"; }
- ListElement{ longitude: "22"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "22"; latitude: "14"; height: "123"; }
- ListElement{ longitude: "22"; latitude: "15"; height: "124"; }
- ListElement{ longitude: "22"; latitude: "16"; height: "122"; }
- ListElement{ longitude: "22"; latitude: "17"; height: "122"; }
- ListElement{ longitude: "22"; latitude: "18"; height: "124"; }
- ListElement{ longitude: "22"; latitude: "19"; height: "123"; }
- ListElement{ longitude: "22"; latitude: "20"; height: "124"; }
- ListElement{ longitude: "22"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "22"; latitude: "22"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "23"; height: "116"; }
- ListElement{ longitude: "22"; latitude: "24"; height: "118"; }
- ListElement{ longitude: "22"; latitude: "25"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "26"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "27"; height: "119"; }
- ListElement{ longitude: "22"; latitude: "28"; height: "117"; }
- ListElement{ longitude: "22"; latitude: "29"; height: "117"; }
- ListElement{ longitude: "22"; latitude: "30"; height: "118"; }
- ListElement{ longitude: "22"; latitude: "31"; height: "121"; }
- ListElement{ longitude: "22"; latitude: "32"; height: "122"; }
- ListElement{ longitude: "22"; latitude: "33"; height: "121"; }
- ListElement{ longitude: "22"; latitude: "34"; height: "124"; }
- ListElement{ longitude: "22"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "22"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "22"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "22"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "22"; latitude: "39"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "40"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "22"; latitude: "46"; height: "125"; }
- ListElement{ longitude: "22"; latitude: "47"; height: "126"; }
- ListElement{ longitude: "22"; latitude: "48"; height: "125"; }
- ListElement{ longitude: "22"; latitude: "49"; height: "124"; }
- ListElement{ longitude: "22"; latitude: "50"; height: "121"; }
- ListElement{ longitude: "22"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "52"; height: "119"; }
- ListElement{ longitude: "22"; latitude: "53"; height: "119"; }
- ListElement{ longitude: "22"; latitude: "54"; height: "122"; }
- ListElement{ longitude: "22"; latitude: "55"; height: "123"; }
- ListElement{ longitude: "22"; latitude: "56"; height: "126"; }
- ListElement{ longitude: "22"; latitude: "57"; height: "123"; }
- ListElement{ longitude: "22"; latitude: "58"; height: "123"; }
- ListElement{ longitude: "22"; latitude: "59"; height: "127"; }
- ListElement{ longitude: "22"; latitude: "60"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "61"; height: "129"; }
- ListElement{ longitude: "22"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "63"; height: "123"; }
- ListElement{ longitude: "22"; latitude: "64"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "65"; height: "118"; }
- ListElement{ longitude: "22"; latitude: "66"; height: "116"; }
- ListElement{ longitude: "22"; latitude: "67"; height: "115"; }
- ListElement{ longitude: "22"; latitude: "68"; height: "116"; }
- ListElement{ longitude: "22"; latitude: "69"; height: "114"; }
- ListElement{ longitude: "22"; latitude: "70"; height: "113"; }
- ListElement{ longitude: "22"; latitude: "71"; height: "112"; }
- ListElement{ longitude: "22"; latitude: "72"; height: "113"; }
- ListElement{ longitude: "22"; latitude: "73"; height: "113"; }
- ListElement{ longitude: "22"; latitude: "74"; height: "112"; }
- ListElement{ longitude: "22"; latitude: "75"; height: "110"; }
- ListElement{ longitude: "22"; latitude: "76"; height: "110"; }
- ListElement{ longitude: "22"; latitude: "77"; height: "107"; }
- ListElement{ longitude: "22"; latitude: "78"; height: "105"; }
- ListElement{ longitude: "22"; latitude: "79"; height: "102"; }
- ListElement{ longitude: "22"; latitude: "80"; height: "104"; }
- ListElement{ longitude: "22"; latitude: "81"; height: "108"; }
- ListElement{ longitude: "22"; latitude: "82"; height: "110"; }
- ListElement{ longitude: "22"; latitude: "83"; height: "114"; }
- ListElement{ longitude: "22"; latitude: "84"; height: "118"; }
- ListElement{ longitude: "22"; latitude: "85"; height: "117"; }
- ListElement{ longitude: "22"; latitude: "86"; height: "111"; }
- ListElement{ longitude: "22"; latitude: "87"; height: "107"; }
- ListElement{ longitude: "22"; latitude: "88"; height: "107"; }
- ListElement{ longitude: "22"; latitude: "89"; height: "107"; }
- ListElement{ longitude: "22"; latitude: "90"; height: "103"; }
- ListElement{ longitude: "22"; latitude: "91"; height: "102"; }
- ListElement{ longitude: "22"; latitude: "92"; height: "101"; }
- ListElement{ longitude: "22"; latitude: "93"; height: "108"; }
- ListElement{ longitude: "22"; latitude: "94"; height: "115"; }
- ListElement{ longitude: "22"; latitude: "95"; height: "117"; }
- ListElement{ longitude: "22"; latitude: "96"; height: "120"; }
- ListElement{ longitude: "22"; latitude: "97"; height: "125"; }
- ListElement{ longitude: "22"; latitude: "98"; height: "128"; }
- ListElement{ longitude: "22"; latitude: "99"; height: "118"; }
- ListElement{ longitude: "23"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "23"; latitude: "1"; height: "123"; }
- ListElement{ longitude: "23"; latitude: "2"; height: "120"; }
- ListElement{ longitude: "23"; latitude: "3"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "4"; height: "119"; }
- ListElement{ longitude: "23"; latitude: "5"; height: "119"; }
- ListElement{ longitude: "23"; latitude: "6"; height: "120"; }
- ListElement{ longitude: "23"; latitude: "7"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "8"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "9"; height: "124"; }
- ListElement{ longitude: "23"; latitude: "10"; height: "124"; }
- ListElement{ longitude: "23"; latitude: "11"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "12"; height: "124"; }
- ListElement{ longitude: "23"; latitude: "13"; height: "124"; }
- ListElement{ longitude: "23"; latitude: "14"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "15"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "16"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "17"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "18"; height: "123"; }
- ListElement{ longitude: "23"; latitude: "19"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "20"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "21"; height: "120"; }
- ListElement{ longitude: "23"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "23"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "24"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "25"; height: "120"; }
- ListElement{ longitude: "23"; latitude: "26"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "27"; height: "120"; }
- ListElement{ longitude: "23"; latitude: "28"; height: "116"; }
- ListElement{ longitude: "23"; latitude: "29"; height: "116"; }
- ListElement{ longitude: "23"; latitude: "30"; height: "118"; }
- ListElement{ longitude: "23"; latitude: "31"; height: "119"; }
- ListElement{ longitude: "23"; latitude: "32"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "33"; height: "119"; }
- ListElement{ longitude: "23"; latitude: "34"; height: "123"; }
- ListElement{ longitude: "23"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "23"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "23"; latitude: "37"; height: "128"; }
- ListElement{ longitude: "23"; latitude: "38"; height: "127"; }
- ListElement{ longitude: "23"; latitude: "39"; height: "127"; }
- ListElement{ longitude: "23"; latitude: "40"; height: "126"; }
- ListElement{ longitude: "23"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "23"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "23"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "23"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "23"; latitude: "45"; height: "128"; }
- ListElement{ longitude: "23"; latitude: "46"; height: "126"; }
- ListElement{ longitude: "23"; latitude: "47"; height: "127"; }
- ListElement{ longitude: "23"; latitude: "48"; height: "124"; }
- ListElement{ longitude: "23"; latitude: "49"; height: "124"; }
- ListElement{ longitude: "23"; latitude: "50"; height: "123"; }
- ListElement{ longitude: "23"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "23"; latitude: "52"; height: "119"; }
- ListElement{ longitude: "23"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "23"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "23"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "23"; latitude: "56"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "57"; height: "125"; }
- ListElement{ longitude: "23"; latitude: "58"; height: "127"; }
- ListElement{ longitude: "23"; latitude: "59"; height: "128"; }
- ListElement{ longitude: "23"; latitude: "60"; height: "130"; }
- ListElement{ longitude: "23"; latitude: "61"; height: "133"; }
- ListElement{ longitude: "23"; latitude: "62"; height: "130"; }
- ListElement{ longitude: "23"; latitude: "63"; height: "128"; }
- ListElement{ longitude: "23"; latitude: "64"; height: "123"; }
- ListElement{ longitude: "23"; latitude: "65"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "66"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "67"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "68"; height: "122"; }
- ListElement{ longitude: "23"; latitude: "69"; height: "121"; }
- ListElement{ longitude: "23"; latitude: "70"; height: "119"; }
- ListElement{ longitude: "23"; latitude: "71"; height: "115"; }
- ListElement{ longitude: "23"; latitude: "72"; height: "114"; }
- ListElement{ longitude: "23"; latitude: "73"; height: "112"; }
- ListElement{ longitude: "23"; latitude: "74"; height: "111"; }
- ListElement{ longitude: "23"; latitude: "75"; height: "111"; }
- ListElement{ longitude: "23"; latitude: "76"; height: "108"; }
- ListElement{ longitude: "23"; latitude: "77"; height: "107"; }
- ListElement{ longitude: "23"; latitude: "78"; height: "103"; }
- ListElement{ longitude: "23"; latitude: "79"; height: "102"; }
- ListElement{ longitude: "23"; latitude: "80"; height: "101"; }
- ListElement{ longitude: "23"; latitude: "81"; height: "106"; }
- ListElement{ longitude: "23"; latitude: "82"; height: "113"; }
- ListElement{ longitude: "23"; latitude: "83"; height: "112"; }
- ListElement{ longitude: "23"; latitude: "84"; height: "115"; }
- ListElement{ longitude: "23"; latitude: "85"; height: "111"; }
- ListElement{ longitude: "23"; latitude: "86"; height: "111"; }
- ListElement{ longitude: "23"; latitude: "87"; height: "109"; }
- ListElement{ longitude: "23"; latitude: "88"; height: "108"; }
- ListElement{ longitude: "23"; latitude: "89"; height: "108"; }
- ListElement{ longitude: "23"; latitude: "90"; height: "106"; }
- ListElement{ longitude: "23"; latitude: "91"; height: "103"; }
- ListElement{ longitude: "23"; latitude: "92"; height: "102"; }
- ListElement{ longitude: "23"; latitude: "93"; height: "108"; }
- ListElement{ longitude: "23"; latitude: "94"; height: "115"; }
- ListElement{ longitude: "23"; latitude: "95"; height: "119"; }
- ListElement{ longitude: "23"; latitude: "96"; height: "125"; }
- ListElement{ longitude: "23"; latitude: "97"; height: "128"; }
- ListElement{ longitude: "23"; latitude: "98"; height: "135"; }
- ListElement{ longitude: "23"; latitude: "99"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "24"; latitude: "4"; height: "118"; }
- ListElement{ longitude: "24"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "6"; height: "121"; }
- ListElement{ longitude: "24"; latitude: "7"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "8"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "9"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "10"; height: "124"; }
- ListElement{ longitude: "24"; latitude: "11"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "12"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "13"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "14"; height: "123"; }
- ListElement{ longitude: "24"; latitude: "15"; height: "121"; }
- ListElement{ longitude: "24"; latitude: "16"; height: "118"; }
- ListElement{ longitude: "24"; latitude: "17"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "18"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "20"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "21"; height: "119"; }
- ListElement{ longitude: "24"; latitude: "22"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "23"; height: "121"; }
- ListElement{ longitude: "24"; latitude: "24"; height: "123"; }
- ListElement{ longitude: "24"; latitude: "25"; height: "123"; }
- ListElement{ longitude: "24"; latitude: "26"; height: "121"; }
- ListElement{ longitude: "24"; latitude: "27"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "28"; height: "121"; }
- ListElement{ longitude: "24"; latitude: "29"; height: "121"; }
- ListElement{ longitude: "24"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "24"; latitude: "31"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "32"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "34"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "35"; height: "123"; }
- ListElement{ longitude: "24"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "24"; latitude: "37"; height: "123"; }
- ListElement{ longitude: "24"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "24"; latitude: "39"; height: "125"; }
- ListElement{ longitude: "24"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "24"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "24"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "24"; latitude: "43"; height: "129"; }
- ListElement{ longitude: "24"; latitude: "44"; height: "129"; }
- ListElement{ longitude: "24"; latitude: "45"; height: "129"; }
- ListElement{ longitude: "24"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "24"; latitude: "47"; height: "127"; }
- ListElement{ longitude: "24"; latitude: "48"; height: "124"; }
- ListElement{ longitude: "24"; latitude: "49"; height: "124"; }
- ListElement{ longitude: "24"; latitude: "50"; height: "123"; }
- ListElement{ longitude: "24"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "52"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "24"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "56"; height: "122"; }
- ListElement{ longitude: "24"; latitude: "57"; height: "126"; }
- ListElement{ longitude: "24"; latitude: "58"; height: "126"; }
- ListElement{ longitude: "24"; latitude: "59"; height: "131"; }
- ListElement{ longitude: "24"; latitude: "60"; height: "133"; }
- ListElement{ longitude: "24"; latitude: "61"; height: "134"; }
- ListElement{ longitude: "24"; latitude: "62"; height: "132"; }
- ListElement{ longitude: "24"; latitude: "63"; height: "128"; }
- ListElement{ longitude: "24"; latitude: "64"; height: "126"; }
- ListElement{ longitude: "24"; latitude: "65"; height: "125"; }
- ListElement{ longitude: "24"; latitude: "66"; height: "125"; }
- ListElement{ longitude: "24"; latitude: "67"; height: "127"; }
- ListElement{ longitude: "24"; latitude: "68"; height: "128"; }
- ListElement{ longitude: "24"; latitude: "69"; height: "126"; }
- ListElement{ longitude: "24"; latitude: "70"; height: "124"; }
- ListElement{ longitude: "24"; latitude: "71"; height: "120"; }
- ListElement{ longitude: "24"; latitude: "72"; height: "117"; }
- ListElement{ longitude: "24"; latitude: "73"; height: "113"; }
- ListElement{ longitude: "24"; latitude: "74"; height: "112"; }
- ListElement{ longitude: "24"; latitude: "75"; height: "112"; }
- ListElement{ longitude: "24"; latitude: "76"; height: "106"; }
- ListElement{ longitude: "24"; latitude: "77"; height: "105"; }
- ListElement{ longitude: "24"; latitude: "78"; height: "100"; }
- ListElement{ longitude: "24"; latitude: "79"; height: "99"; }
- ListElement{ longitude: "24"; latitude: "80"; height: "101"; }
- ListElement{ longitude: "24"; latitude: "81"; height: "104"; }
- ListElement{ longitude: "24"; latitude: "82"; height: "111"; }
- ListElement{ longitude: "24"; latitude: "83"; height: "114"; }
- ListElement{ longitude: "24"; latitude: "84"; height: "117"; }
- ListElement{ longitude: "24"; latitude: "85"; height: "114"; }
- ListElement{ longitude: "24"; latitude: "86"; height: "115"; }
- ListElement{ longitude: "24"; latitude: "87"; height: "112"; }
- ListElement{ longitude: "24"; latitude: "88"; height: "110"; }
- ListElement{ longitude: "24"; latitude: "89"; height: "108"; }
- ListElement{ longitude: "24"; latitude: "90"; height: "107"; }
- ListElement{ longitude: "24"; latitude: "91"; height: "104"; }
- ListElement{ longitude: "24"; latitude: "92"; height: "106"; }
- ListElement{ longitude: "24"; latitude: "93"; height: "110"; }
- ListElement{ longitude: "24"; latitude: "94"; height: "115"; }
- ListElement{ longitude: "24"; latitude: "95"; height: "125"; }
- ListElement{ longitude: "24"; latitude: "96"; height: "130"; }
- ListElement{ longitude: "24"; latitude: "97"; height: "133"; }
- ListElement{ longitude: "24"; latitude: "98"; height: "137"; }
- ListElement{ longitude: "24"; latitude: "99"; height: "122"; }
- ListElement{ longitude: "25"; latitude: "0"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "25"; latitude: "2"; height: "116"; }
- ListElement{ longitude: "25"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "25"; latitude: "4"; height: "115"; }
- ListElement{ longitude: "25"; latitude: "5"; height: "126"; }
- ListElement{ longitude: "25"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "7"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "10"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "11"; height: "123"; }
- ListElement{ longitude: "25"; latitude: "12"; height: "124"; }
- ListElement{ longitude: "25"; latitude: "13"; height: "124"; }
- ListElement{ longitude: "25"; latitude: "14"; height: "124"; }
- ListElement{ longitude: "25"; latitude: "15"; height: "123"; }
- ListElement{ longitude: "25"; latitude: "16"; height: "119"; }
- ListElement{ longitude: "25"; latitude: "17"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "18"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "20"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "21"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "25"; latitude: "23"; height: "124"; }
- ListElement{ longitude: "25"; latitude: "24"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "25"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "26"; height: "124"; }
- ListElement{ longitude: "25"; latitude: "27"; height: "123"; }
- ListElement{ longitude: "25"; latitude: "28"; height: "123"; }
- ListElement{ longitude: "25"; latitude: "29"; height: "123"; }
- ListElement{ longitude: "25"; latitude: "30"; height: "123"; }
- ListElement{ longitude: "25"; latitude: "31"; height: "124"; }
- ListElement{ longitude: "25"; latitude: "32"; height: "122"; }
- ListElement{ longitude: "25"; latitude: "33"; height: "119"; }
- ListElement{ longitude: "25"; latitude: "34"; height: "119"; }
- ListElement{ longitude: "25"; latitude: "35"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "36"; height: "121"; }
- ListElement{ longitude: "25"; latitude: "37"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "38"; height: "123"; }
- ListElement{ longitude: "25"; latitude: "39"; height: "126"; }
- ListElement{ longitude: "25"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "25"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "25"; latitude: "43"; height: "129"; }
- ListElement{ longitude: "25"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "25"; latitude: "45"; height: "130"; }
- ListElement{ longitude: "25"; latitude: "46"; height: "131"; }
- ListElement{ longitude: "25"; latitude: "47"; height: "127"; }
- ListElement{ longitude: "25"; latitude: "48"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "49"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "50"; height: "122"; }
- ListElement{ longitude: "25"; latitude: "51"; height: "121"; }
- ListElement{ longitude: "25"; latitude: "52"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "25"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "25"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "25"; latitude: "56"; height: "122"; }
- ListElement{ longitude: "25"; latitude: "57"; height: "126"; }
- ListElement{ longitude: "25"; latitude: "58"; height: "127"; }
- ListElement{ longitude: "25"; latitude: "59"; height: "127"; }
- ListElement{ longitude: "25"; latitude: "60"; height: "130"; }
- ListElement{ longitude: "25"; latitude: "61"; height: "132"; }
- ListElement{ longitude: "25"; latitude: "62"; height: "132"; }
- ListElement{ longitude: "25"; latitude: "63"; height: "131"; }
- ListElement{ longitude: "25"; latitude: "64"; height: "130"; }
- ListElement{ longitude: "25"; latitude: "65"; height: "131"; }
- ListElement{ longitude: "25"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "25"; latitude: "67"; height: "133"; }
- ListElement{ longitude: "25"; latitude: "68"; height: "134"; }
- ListElement{ longitude: "25"; latitude: "69"; height: "133"; }
- ListElement{ longitude: "25"; latitude: "70"; height: "129"; }
- ListElement{ longitude: "25"; latitude: "71"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "72"; height: "122"; }
- ListElement{ longitude: "25"; latitude: "73"; height: "119"; }
- ListElement{ longitude: "25"; latitude: "74"; height: "116"; }
- ListElement{ longitude: "25"; latitude: "75"; height: "114"; }
- ListElement{ longitude: "25"; latitude: "76"; height: "109"; }
- ListElement{ longitude: "25"; latitude: "77"; height: "106"; }
- ListElement{ longitude: "25"; latitude: "78"; height: "102"; }
- ListElement{ longitude: "25"; latitude: "79"; height: "101"; }
- ListElement{ longitude: "25"; latitude: "80"; height: "102"; }
- ListElement{ longitude: "25"; latitude: "81"; height: "107"; }
- ListElement{ longitude: "25"; latitude: "82"; height: "111"; }
- ListElement{ longitude: "25"; latitude: "83"; height: "113"; }
- ListElement{ longitude: "25"; latitude: "84"; height: "115"; }
- ListElement{ longitude: "25"; latitude: "85"; height: "116"; }
- ListElement{ longitude: "25"; latitude: "86"; height: "118"; }
- ListElement{ longitude: "25"; latitude: "87"; height: "121"; }
- ListElement{ longitude: "25"; latitude: "88"; height: "119"; }
- ListElement{ longitude: "25"; latitude: "89"; height: "113"; }
- ListElement{ longitude: "25"; latitude: "90"; height: "103"; }
- ListElement{ longitude: "25"; latitude: "91"; height: "104"; }
- ListElement{ longitude: "25"; latitude: "92"; height: "106"; }
- ListElement{ longitude: "25"; latitude: "93"; height: "117"; }
- ListElement{ longitude: "25"; latitude: "94"; height: "111"; }
- ListElement{ longitude: "25"; latitude: "95"; height: "125"; }
- ListElement{ longitude: "25"; latitude: "96"; height: "134"; }
- ListElement{ longitude: "25"; latitude: "97"; height: "135"; }
- ListElement{ longitude: "25"; latitude: "98"; height: "135"; }
- ListElement{ longitude: "25"; latitude: "99"; height: "120"; }
- ListElement{ longitude: "26"; latitude: "0"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "1"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "2"; height: "128"; }
- ListElement{ longitude: "26"; latitude: "3"; height: "128"; }
- ListElement{ longitude: "26"; latitude: "4"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "5"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "6"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "26"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "9"; height: "123"; }
- ListElement{ longitude: "26"; latitude: "10"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "12"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "13"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "14"; height: "123"; }
- ListElement{ longitude: "26"; latitude: "15"; height: "124"; }
- ListElement{ longitude: "26"; latitude: "16"; height: "124"; }
- ListElement{ longitude: "26"; latitude: "17"; height: "124"; }
- ListElement{ longitude: "26"; latitude: "18"; height: "123"; }
- ListElement{ longitude: "26"; latitude: "19"; height: "121"; }
- ListElement{ longitude: "26"; latitude: "20"; height: "121"; }
- ListElement{ longitude: "26"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "22"; height: "122"; }
- ListElement{ longitude: "26"; latitude: "23"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "24"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "25"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "26"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "27"; height: "124"; }
- ListElement{ longitude: "26"; latitude: "28"; height: "122"; }
- ListElement{ longitude: "26"; latitude: "29"; height: "123"; }
- ListElement{ longitude: "26"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "26"; latitude: "31"; height: "122"; }
- ListElement{ longitude: "26"; latitude: "32"; height: "120"; }
- ListElement{ longitude: "26"; latitude: "33"; height: "119"; }
- ListElement{ longitude: "26"; latitude: "34"; height: "119"; }
- ListElement{ longitude: "26"; latitude: "35"; height: "120"; }
- ListElement{ longitude: "26"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "26"; latitude: "37"; height: "121"; }
- ListElement{ longitude: "26"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "26"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "26"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "26"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "26"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "26"; latitude: "43"; height: "129"; }
- ListElement{ longitude: "26"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "26"; latitude: "45"; height: "128"; }
- ListElement{ longitude: "26"; latitude: "46"; height: "129"; }
- ListElement{ longitude: "26"; latitude: "47"; height: "127"; }
- ListElement{ longitude: "26"; latitude: "48"; height: "123"; }
- ListElement{ longitude: "26"; latitude: "49"; height: "121"; }
- ListElement{ longitude: "26"; latitude: "50"; height: "122"; }
- ListElement{ longitude: "26"; latitude: "51"; height: "119"; }
- ListElement{ longitude: "26"; latitude: "52"; height: "120"; }
- ListElement{ longitude: "26"; latitude: "53"; height: "120"; }
- ListElement{ longitude: "26"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "26"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "26"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "26"; latitude: "57"; height: "123"; }
- ListElement{ longitude: "26"; latitude: "58"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "59"; height: "125"; }
- ListElement{ longitude: "26"; latitude: "60"; height: "128"; }
- ListElement{ longitude: "26"; latitude: "61"; height: "130"; }
- ListElement{ longitude: "26"; latitude: "62"; height: "130"; }
- ListElement{ longitude: "26"; latitude: "63"; height: "130"; }
- ListElement{ longitude: "26"; latitude: "64"; height: "130"; }
- ListElement{ longitude: "26"; latitude: "65"; height: "130"; }
- ListElement{ longitude: "26"; latitude: "66"; height: "131"; }
- ListElement{ longitude: "26"; latitude: "67"; height: "133"; }
- ListElement{ longitude: "26"; latitude: "68"; height: "136"; }
- ListElement{ longitude: "26"; latitude: "69"; height: "134"; }
- ListElement{ longitude: "26"; latitude: "70"; height: "133"; }
- ListElement{ longitude: "26"; latitude: "71"; height: "132"; }
- ListElement{ longitude: "26"; latitude: "72"; height: "128"; }
- ListElement{ longitude: "26"; latitude: "73"; height: "126"; }
- ListElement{ longitude: "26"; latitude: "74"; height: "121"; }
- ListElement{ longitude: "26"; latitude: "75"; height: "116"; }
- ListElement{ longitude: "26"; latitude: "76"; height: "112"; }
- ListElement{ longitude: "26"; latitude: "77"; height: "109"; }
- ListElement{ longitude: "26"; latitude: "78"; height: "105"; }
- ListElement{ longitude: "26"; latitude: "79"; height: "106"; }
- ListElement{ longitude: "26"; latitude: "80"; height: "107"; }
- ListElement{ longitude: "26"; latitude: "81"; height: "114"; }
- ListElement{ longitude: "26"; latitude: "82"; height: "117"; }
- ListElement{ longitude: "26"; latitude: "83"; height: "117"; }
- ListElement{ longitude: "26"; latitude: "84"; height: "118"; }
- ListElement{ longitude: "26"; latitude: "85"; height: "119"; }
- ListElement{ longitude: "26"; latitude: "86"; height: "120"; }
- ListElement{ longitude: "26"; latitude: "87"; height: "119"; }
- ListElement{ longitude: "26"; latitude: "88"; height: "119"; }
- ListElement{ longitude: "26"; latitude: "89"; height: "113"; }
- ListElement{ longitude: "26"; latitude: "90"; height: "100"; }
- ListElement{ longitude: "26"; latitude: "91"; height: "103"; }
- ListElement{ longitude: "26"; latitude: "92"; height: "105"; }
- ListElement{ longitude: "26"; latitude: "93"; height: "119"; }
- ListElement{ longitude: "26"; latitude: "94"; height: "128"; }
- ListElement{ longitude: "26"; latitude: "95"; height: "134"; }
- ListElement{ longitude: "26"; latitude: "96"; height: "137"; }
- ListElement{ longitude: "26"; latitude: "97"; height: "133"; }
- ListElement{ longitude: "26"; latitude: "98"; height: "131"; }
- ListElement{ longitude: "26"; latitude: "99"; height: "116"; }
- ListElement{ longitude: "27"; latitude: "0"; height: "126"; }
- ListElement{ longitude: "27"; latitude: "1"; height: "126"; }
- ListElement{ longitude: "27"; latitude: "2"; height: "130"; }
- ListElement{ longitude: "27"; latitude: "3"; height: "130"; }
- ListElement{ longitude: "27"; latitude: "4"; height: "126"; }
- ListElement{ longitude: "27"; latitude: "5"; height: "127"; }
- ListElement{ longitude: "27"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "27"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "27"; latitude: "8"; height: "124"; }
- ListElement{ longitude: "27"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "10"; height: "124"; }
- ListElement{ longitude: "27"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "27"; latitude: "12"; height: "123"; }
- ListElement{ longitude: "27"; latitude: "13"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "14"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "15"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "16"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "19"; height: "122"; }
- ListElement{ longitude: "27"; latitude: "20"; height: "122"; }
- ListElement{ longitude: "27"; latitude: "21"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "22"; height: "123"; }
- ListElement{ longitude: "27"; latitude: "23"; height: "123"; }
- ListElement{ longitude: "27"; latitude: "24"; height: "123"; }
- ListElement{ longitude: "27"; latitude: "25"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "26"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "27"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "28"; height: "123"; }
- ListElement{ longitude: "27"; latitude: "29"; height: "122"; }
- ListElement{ longitude: "27"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "27"; latitude: "31"; height: "122"; }
- ListElement{ longitude: "27"; latitude: "32"; height: "119"; }
- ListElement{ longitude: "27"; latitude: "33"; height: "119"; }
- ListElement{ longitude: "27"; latitude: "34"; height: "121"; }
- ListElement{ longitude: "27"; latitude: "35"; height: "122"; }
- ListElement{ longitude: "27"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "27"; latitude: "37"; height: "121"; }
- ListElement{ longitude: "27"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "27"; latitude: "39"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "27"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "27"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "27"; latitude: "43"; height: "129"; }
- ListElement{ longitude: "27"; latitude: "44"; height: "129"; }
- ListElement{ longitude: "27"; latitude: "45"; height: "129"; }
- ListElement{ longitude: "27"; latitude: "46"; height: "128"; }
- ListElement{ longitude: "27"; latitude: "47"; height: "126"; }
- ListElement{ longitude: "27"; latitude: "48"; height: "124"; }
- ListElement{ longitude: "27"; latitude: "49"; height: "120"; }
- ListElement{ longitude: "27"; latitude: "50"; height: "121"; }
- ListElement{ longitude: "27"; latitude: "51"; height: "118"; }
- ListElement{ longitude: "27"; latitude: "52"; height: "118"; }
- ListElement{ longitude: "27"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "27"; latitude: "54"; height: "121"; }
- ListElement{ longitude: "27"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "27"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "27"; latitude: "57"; height: "122"; }
- ListElement{ longitude: "27"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "27"; latitude: "59"; height: "124"; }
- ListElement{ longitude: "27"; latitude: "60"; height: "126"; }
- ListElement{ longitude: "27"; latitude: "61"; height: "126"; }
- ListElement{ longitude: "27"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "27"; latitude: "63"; height: "127"; }
- ListElement{ longitude: "27"; latitude: "64"; height: "129"; }
- ListElement{ longitude: "27"; latitude: "65"; height: "129"; }
- ListElement{ longitude: "27"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "27"; latitude: "67"; height: "130"; }
- ListElement{ longitude: "27"; latitude: "68"; height: "134"; }
- ListElement{ longitude: "27"; latitude: "69"; height: "135"; }
- ListElement{ longitude: "27"; latitude: "70"; height: "136"; }
- ListElement{ longitude: "27"; latitude: "71"; height: "137"; }
- ListElement{ longitude: "27"; latitude: "72"; height: "136"; }
- ListElement{ longitude: "27"; latitude: "73"; height: "133"; }
- ListElement{ longitude: "27"; latitude: "74"; height: "128"; }
- ListElement{ longitude: "27"; latitude: "75"; height: "121"; }
- ListElement{ longitude: "27"; latitude: "76"; height: "117"; }
- ListElement{ longitude: "27"; latitude: "77"; height: "113"; }
- ListElement{ longitude: "27"; latitude: "78"; height: "111"; }
- ListElement{ longitude: "27"; latitude: "79"; height: "109"; }
- ListElement{ longitude: "27"; latitude: "80"; height: "110"; }
- ListElement{ longitude: "27"; latitude: "81"; height: "113"; }
- ListElement{ longitude: "27"; latitude: "82"; height: "117"; }
- ListElement{ longitude: "27"; latitude: "83"; height: "115"; }
- ListElement{ longitude: "27"; latitude: "84"; height: "120"; }
- ListElement{ longitude: "27"; latitude: "85"; height: "119"; }
- ListElement{ longitude: "27"; latitude: "86"; height: "121"; }
- ListElement{ longitude: "27"; latitude: "87"; height: "118"; }
- ListElement{ longitude: "27"; latitude: "88"; height: "117"; }
- ListElement{ longitude: "27"; latitude: "89"; height: "114"; }
- ListElement{ longitude: "27"; latitude: "90"; height: "107"; }
- ListElement{ longitude: "27"; latitude: "91"; height: "106"; }
- ListElement{ longitude: "27"; latitude: "92"; height: "109"; }
- ListElement{ longitude: "27"; latitude: "93"; height: "119"; }
- ListElement{ longitude: "27"; latitude: "94"; height: "127"; }
- ListElement{ longitude: "27"; latitude: "95"; height: "136"; }
- ListElement{ longitude: "27"; latitude: "96"; height: "136"; }
- ListElement{ longitude: "27"; latitude: "97"; height: "133"; }
- ListElement{ longitude: "27"; latitude: "98"; height: "128"; }
- ListElement{ longitude: "27"; latitude: "99"; height: "111"; }
- ListElement{ longitude: "28"; latitude: "0"; height: "127"; }
- ListElement{ longitude: "28"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "28"; latitude: "2"; height: "129"; }
- ListElement{ longitude: "28"; latitude: "3"; height: "129"; }
- ListElement{ longitude: "28"; latitude: "4"; height: "128"; }
- ListElement{ longitude: "28"; latitude: "5"; height: "127"; }
- ListElement{ longitude: "28"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "8"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "9"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "10"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "12"; height: "122"; }
- ListElement{ longitude: "28"; latitude: "13"; height: "123"; }
- ListElement{ longitude: "28"; latitude: "14"; height: "123"; }
- ListElement{ longitude: "28"; latitude: "15"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "16"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "17"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "18"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "19"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "20"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "22"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "23"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "24"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "25"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "26"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "27"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "28"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "29"; height: "125"; }
- ListElement{ longitude: "28"; latitude: "30"; height: "118"; }
- ListElement{ longitude: "28"; latitude: "31"; height: "122"; }
- ListElement{ longitude: "28"; latitude: "32"; height: "115"; }
- ListElement{ longitude: "28"; latitude: "33"; height: "119"; }
- ListElement{ longitude: "28"; latitude: "34"; height: "122"; }
- ListElement{ longitude: "28"; latitude: "35"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "36"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "37"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "38"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "39"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "28"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "28"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "28"; latitude: "43"; height: "130"; }
- ListElement{ longitude: "28"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "28"; latitude: "45"; height: "128"; }
- ListElement{ longitude: "28"; latitude: "46"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "47"; height: "123"; }
- ListElement{ longitude: "28"; latitude: "48"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "49"; height: "119"; }
- ListElement{ longitude: "28"; latitude: "50"; height: "118"; }
- ListElement{ longitude: "28"; latitude: "51"; height: "117"; }
- ListElement{ longitude: "28"; latitude: "52"; height: "119"; }
- ListElement{ longitude: "28"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "28"; latitude: "54"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "28"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "28"; latitude: "57"; height: "122"; }
- ListElement{ longitude: "28"; latitude: "58"; height: "122"; }
- ListElement{ longitude: "28"; latitude: "59"; height: "122"; }
- ListElement{ longitude: "28"; latitude: "60"; height: "123"; }
- ListElement{ longitude: "28"; latitude: "61"; height: "124"; }
- ListElement{ longitude: "28"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "28"; latitude: "63"; height: "125"; }
- ListElement{ longitude: "28"; latitude: "64"; height: "127"; }
- ListElement{ longitude: "28"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "66"; height: "127"; }
- ListElement{ longitude: "28"; latitude: "67"; height: "127"; }
- ListElement{ longitude: "28"; latitude: "68"; height: "131"; }
- ListElement{ longitude: "28"; latitude: "69"; height: "136"; }
- ListElement{ longitude: "28"; latitude: "70"; height: "137"; }
- ListElement{ longitude: "28"; latitude: "71"; height: "141"; }
- ListElement{ longitude: "28"; latitude: "72"; height: "143"; }
- ListElement{ longitude: "28"; latitude: "73"; height: "139"; }
- ListElement{ longitude: "28"; latitude: "74"; height: "136"; }
- ListElement{ longitude: "28"; latitude: "75"; height: "129"; }
- ListElement{ longitude: "28"; latitude: "76"; height: "122"; }
- ListElement{ longitude: "28"; latitude: "77"; height: "118"; }
- ListElement{ longitude: "28"; latitude: "78"; height: "117"; }
- ListElement{ longitude: "28"; latitude: "79"; height: "111"; }
- ListElement{ longitude: "28"; latitude: "80"; height: "114"; }
- ListElement{ longitude: "28"; latitude: "81"; height: "117"; }
- ListElement{ longitude: "28"; latitude: "82"; height: "120"; }
- ListElement{ longitude: "28"; latitude: "83"; height: "119"; }
- ListElement{ longitude: "28"; latitude: "84"; height: "122"; }
- ListElement{ longitude: "28"; latitude: "85"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "86"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "87"; height: "120"; }
- ListElement{ longitude: "28"; latitude: "88"; height: "116"; }
- ListElement{ longitude: "28"; latitude: "89"; height: "114"; }
- ListElement{ longitude: "28"; latitude: "90"; height: "120"; }
- ListElement{ longitude: "28"; latitude: "91"; height: "111"; }
- ListElement{ longitude: "28"; latitude: "92"; height: "113"; }
- ListElement{ longitude: "28"; latitude: "93"; height: "121"; }
- ListElement{ longitude: "28"; latitude: "94"; height: "125"; }
- ListElement{ longitude: "28"; latitude: "95"; height: "133"; }
- ListElement{ longitude: "28"; latitude: "96"; height: "134"; }
- ListElement{ longitude: "28"; latitude: "97"; height: "132"; }
- ListElement{ longitude: "28"; latitude: "98"; height: "126"; }
- ListElement{ longitude: "28"; latitude: "99"; height: "109"; }
- ListElement{ longitude: "29"; latitude: "0"; height: "128"; }
- ListElement{ longitude: "29"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "29"; latitude: "2"; height: "128"; }
- ListElement{ longitude: "29"; latitude: "3"; height: "128"; }
- ListElement{ longitude: "29"; latitude: "4"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "5"; height: "125"; }
- ListElement{ longitude: "29"; latitude: "6"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "9"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "12"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "14"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "15"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "17"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "18"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "20"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "21"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "22"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "23"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "28"; height: "125"; }
- ListElement{ longitude: "29"; latitude: "29"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "30"; height: "125"; }
- ListElement{ longitude: "29"; latitude: "31"; height: "124"; }
- ListElement{ longitude: "29"; latitude: "32"; height: "120"; }
- ListElement{ longitude: "29"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "29"; latitude: "34"; height: "121"; }
- ListElement{ longitude: "29"; latitude: "35"; height: "123"; }
- ListElement{ longitude: "29"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "29"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "29"; latitude: "38"; height: "120"; }
- ListElement{ longitude: "29"; latitude: "39"; height: "121"; }
- ListElement{ longitude: "29"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "29"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "29"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "29"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "44"; height: "116"; }
- ListElement{ longitude: "29"; latitude: "45"; height: "120"; }
- ListElement{ longitude: "29"; latitude: "46"; height: "125"; }
- ListElement{ longitude: "29"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "29"; latitude: "48"; height: "122"; }
- ListElement{ longitude: "29"; latitude: "49"; height: "119"; }
- ListElement{ longitude: "29"; latitude: "50"; height: "120"; }
- ListElement{ longitude: "29"; latitude: "51"; height: "117"; }
- ListElement{ longitude: "29"; latitude: "52"; height: "117"; }
- ListElement{ longitude: "29"; latitude: "53"; height: "117"; }
- ListElement{ longitude: "29"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "29"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "29"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "29"; latitude: "57"; height: "123"; }
- ListElement{ longitude: "29"; latitude: "58"; height: "123"; }
- ListElement{ longitude: "29"; latitude: "59"; height: "122"; }
- ListElement{ longitude: "29"; latitude: "60"; height: "122"; }
- ListElement{ longitude: "29"; latitude: "61"; height: "122"; }
- ListElement{ longitude: "29"; latitude: "62"; height: "122"; }
- ListElement{ longitude: "29"; latitude: "63"; height: "123"; }
- ListElement{ longitude: "29"; latitude: "64"; height: "125"; }
- ListElement{ longitude: "29"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "66"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "67"; height: "128"; }
- ListElement{ longitude: "29"; latitude: "68"; height: "131"; }
- ListElement{ longitude: "29"; latitude: "69"; height: "134"; }
- ListElement{ longitude: "29"; latitude: "70"; height: "140"; }
- ListElement{ longitude: "29"; latitude: "71"; height: "146"; }
- ListElement{ longitude: "29"; latitude: "72"; height: "147"; }
- ListElement{ longitude: "29"; latitude: "73"; height: "144"; }
- ListElement{ longitude: "29"; latitude: "74"; height: "140"; }
- ListElement{ longitude: "29"; latitude: "75"; height: "134"; }
- ListElement{ longitude: "29"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "29"; latitude: "77"; height: "123"; }
- ListElement{ longitude: "29"; latitude: "78"; height: "120"; }
- ListElement{ longitude: "29"; latitude: "79"; height: "117"; }
- ListElement{ longitude: "29"; latitude: "80"; height: "120"; }
- ListElement{ longitude: "29"; latitude: "81"; height: "119"; }
- ListElement{ longitude: "29"; latitude: "82"; height: "119"; }
- ListElement{ longitude: "29"; latitude: "83"; height: "117"; }
- ListElement{ longitude: "29"; latitude: "84"; height: "116"; }
- ListElement{ longitude: "29"; latitude: "85"; height: "119"; }
- ListElement{ longitude: "29"; latitude: "86"; height: "121"; }
- ListElement{ longitude: "29"; latitude: "87"; height: "121"; }
- ListElement{ longitude: "29"; latitude: "88"; height: "119"; }
- ListElement{ longitude: "29"; latitude: "89"; height: "114"; }
- ListElement{ longitude: "29"; latitude: "90"; height: "117"; }
- ListElement{ longitude: "29"; latitude: "91"; height: "111"; }
- ListElement{ longitude: "29"; latitude: "92"; height: "112"; }
- ListElement{ longitude: "29"; latitude: "93"; height: "122"; }
- ListElement{ longitude: "29"; latitude: "94"; height: "124"; }
- ListElement{ longitude: "29"; latitude: "95"; height: "129"; }
- ListElement{ longitude: "29"; latitude: "96"; height: "132"; }
- ListElement{ longitude: "29"; latitude: "97"; height: "131"; }
- ListElement{ longitude: "29"; latitude: "98"; height: "124"; }
- ListElement{ longitude: "29"; latitude: "99"; height: "109"; }
- ListElement{ longitude: "30"; latitude: "0"; height: "128"; }
- ListElement{ longitude: "30"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "30"; latitude: "2"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "3"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "4"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "5"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "30"; latitude: "10"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "30"; latitude: "12"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "14"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "15"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "30"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "20"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "22"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "23"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "24"; height: "125"; }
- ListElement{ longitude: "30"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "30"; height: "126"; }
- ListElement{ longitude: "30"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "32"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "33"; height: "120"; }
- ListElement{ longitude: "30"; latitude: "34"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "35"; height: "123"; }
- ListElement{ longitude: "30"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "30"; latitude: "37"; height: "125"; }
- ListElement{ longitude: "30"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "30"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "30"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "30"; latitude: "43"; height: "114"; }
- ListElement{ longitude: "30"; latitude: "44"; height: "105"; }
- ListElement{ longitude: "30"; latitude: "45"; height: "114"; }
- ListElement{ longitude: "30"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "30"; latitude: "47"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "48"; height: "120"; }
- ListElement{ longitude: "30"; latitude: "49"; height: "120"; }
- ListElement{ longitude: "30"; latitude: "50"; height: "118"; }
- ListElement{ longitude: "30"; latitude: "51"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "52"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "53"; height: "116"; }
- ListElement{ longitude: "30"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "30"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "30"; latitude: "57"; height: "122"; }
- ListElement{ longitude: "30"; latitude: "58"; height: "122"; }
- ListElement{ longitude: "30"; latitude: "59"; height: "122"; }
- ListElement{ longitude: "30"; latitude: "60"; height: "123"; }
- ListElement{ longitude: "30"; latitude: "61"; height: "121"; }
- ListElement{ longitude: "30"; latitude: "62"; height: "121"; }
- ListElement{ longitude: "30"; latitude: "63"; height: "121"; }
- ListElement{ longitude: "30"; latitude: "64"; height: "122"; }
- ListElement{ longitude: "30"; latitude: "65"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "66"; height: "125"; }
- ListElement{ longitude: "30"; latitude: "67"; height: "128"; }
- ListElement{ longitude: "30"; latitude: "68"; height: "133"; }
- ListElement{ longitude: "30"; latitude: "69"; height: "135"; }
- ListElement{ longitude: "30"; latitude: "70"; height: "142"; }
- ListElement{ longitude: "30"; latitude: "71"; height: "146"; }
- ListElement{ longitude: "30"; latitude: "72"; height: "150"; }
- ListElement{ longitude: "30"; latitude: "73"; height: "149"; }
- ListElement{ longitude: "30"; latitude: "74"; height: "147"; }
- ListElement{ longitude: "30"; latitude: "75"; height: "137"; }
- ListElement{ longitude: "30"; latitude: "76"; height: "130"; }
- ListElement{ longitude: "30"; latitude: "77"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "78"; height: "121"; }
- ListElement{ longitude: "30"; latitude: "79"; height: "121"; }
- ListElement{ longitude: "30"; latitude: "80"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "81"; height: "117"; }
- ListElement{ longitude: "30"; latitude: "82"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "83"; height: "115"; }
- ListElement{ longitude: "30"; latitude: "84"; height: "121"; }
- ListElement{ longitude: "30"; latitude: "85"; height: "122"; }
- ListElement{ longitude: "30"; latitude: "86"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "87"; height: "121"; }
- ListElement{ longitude: "30"; latitude: "88"; height: "120"; }
- ListElement{ longitude: "30"; latitude: "89"; height: "117"; }
- ListElement{ longitude: "30"; latitude: "90"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "91"; height: "118"; }
- ListElement{ longitude: "30"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "30"; latitude: "93"; height: "128"; }
- ListElement{ longitude: "30"; latitude: "94"; height: "127"; }
- ListElement{ longitude: "30"; latitude: "95"; height: "124"; }
- ListElement{ longitude: "30"; latitude: "96"; height: "123"; }
- ListElement{ longitude: "30"; latitude: "97"; height: "133"; }
- ListElement{ longitude: "30"; latitude: "98"; height: "128"; }
- ListElement{ longitude: "30"; latitude: "99"; height: "111"; }
- ListElement{ longitude: "31"; latitude: "0"; height: "128"; }
- ListElement{ longitude: "31"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "31"; latitude: "2"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "3"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "4"; height: "123"; }
- ListElement{ longitude: "31"; latitude: "5"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "10"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "12"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "14"; height: "123"; }
- ListElement{ longitude: "31"; latitude: "15"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "19"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "20"; height: "128"; }
- ListElement{ longitude: "31"; latitude: "21"; height: "129"; }
- ListElement{ longitude: "31"; latitude: "22"; height: "128"; }
- ListElement{ longitude: "31"; latitude: "23"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "24"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "25"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "26"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "30"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "31"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "32"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "33"; height: "123"; }
- ListElement{ longitude: "31"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "35"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "37"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "43"; height: "118"; }
- ListElement{ longitude: "31"; latitude: "44"; height: "116"; }
- ListElement{ longitude: "31"; latitude: "45"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "46"; height: "120"; }
- ListElement{ longitude: "31"; latitude: "47"; height: "116"; }
- ListElement{ longitude: "31"; latitude: "48"; height: "117"; }
- ListElement{ longitude: "31"; latitude: "49"; height: "117"; }
- ListElement{ longitude: "31"; latitude: "50"; height: "119"; }
- ListElement{ longitude: "31"; latitude: "51"; height: "119"; }
- ListElement{ longitude: "31"; latitude: "52"; height: "118"; }
- ListElement{ longitude: "31"; latitude: "53"; height: "120"; }
- ListElement{ longitude: "31"; latitude: "54"; height: "121"; }
- ListElement{ longitude: "31"; latitude: "55"; height: "121"; }
- ListElement{ longitude: "31"; latitude: "56"; height: "122"; }
- ListElement{ longitude: "31"; latitude: "57"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "59"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "60"; height: "122"; }
- ListElement{ longitude: "31"; latitude: "61"; height: "121"; }
- ListElement{ longitude: "31"; latitude: "62"; height: "121"; }
- ListElement{ longitude: "31"; latitude: "63"; height: "121"; }
- ListElement{ longitude: "31"; latitude: "64"; height: "122"; }
- ListElement{ longitude: "31"; latitude: "65"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "66"; height: "126"; }
- ListElement{ longitude: "31"; latitude: "67"; height: "129"; }
- ListElement{ longitude: "31"; latitude: "68"; height: "133"; }
- ListElement{ longitude: "31"; latitude: "69"; height: "137"; }
- ListElement{ longitude: "31"; latitude: "70"; height: "143"; }
- ListElement{ longitude: "31"; latitude: "71"; height: "147"; }
- ListElement{ longitude: "31"; latitude: "72"; height: "149"; }
- ListElement{ longitude: "31"; latitude: "73"; height: "148"; }
- ListElement{ longitude: "31"; latitude: "74"; height: "146"; }
- ListElement{ longitude: "31"; latitude: "75"; height: "138"; }
- ListElement{ longitude: "31"; latitude: "76"; height: "130"; }
- ListElement{ longitude: "31"; latitude: "77"; height: "123"; }
- ListElement{ longitude: "31"; latitude: "78"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "79"; height: "122"; }
- ListElement{ longitude: "31"; latitude: "80"; height: "116"; }
- ListElement{ longitude: "31"; latitude: "81"; height: "115"; }
- ListElement{ longitude: "31"; latitude: "82"; height: "119"; }
- ListElement{ longitude: "31"; latitude: "83"; height: "117"; }
- ListElement{ longitude: "31"; latitude: "84"; height: "117"; }
- ListElement{ longitude: "31"; latitude: "85"; height: "116"; }
- ListElement{ longitude: "31"; latitude: "86"; height: "119"; }
- ListElement{ longitude: "31"; latitude: "87"; height: "119"; }
- ListElement{ longitude: "31"; latitude: "88"; height: "119"; }
- ListElement{ longitude: "31"; latitude: "89"; height: "120"; }
- ListElement{ longitude: "31"; latitude: "90"; height: "120"; }
- ListElement{ longitude: "31"; latitude: "91"; height: "123"; }
- ListElement{ longitude: "31"; latitude: "92"; height: "124"; }
- ListElement{ longitude: "31"; latitude: "93"; height: "123"; }
- ListElement{ longitude: "31"; latitude: "94"; height: "123"; }
- ListElement{ longitude: "31"; latitude: "95"; height: "122"; }
- ListElement{ longitude: "31"; latitude: "96"; height: "114"; }
- ListElement{ longitude: "31"; latitude: "97"; height: "125"; }
- ListElement{ longitude: "31"; latitude: "98"; height: "127"; }
- ListElement{ longitude: "31"; latitude: "99"; height: "115"; }
- ListElement{ longitude: "32"; latitude: "0"; height: "128"; }
- ListElement{ longitude: "32"; latitude: "1"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "2"; height: "128"; }
- ListElement{ longitude: "32"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "32"; latitude: "4"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "5"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "32"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "9"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "10"; height: "128"; }
- ListElement{ longitude: "32"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "12"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "13"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "14"; height: "121"; }
- ListElement{ longitude: "32"; latitude: "15"; height: "124"; }
- ListElement{ longitude: "32"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "19"; height: "128"; }
- ListElement{ longitude: "32"; latitude: "20"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "21"; height: "129"; }
- ListElement{ longitude: "32"; latitude: "22"; height: "129"; }
- ListElement{ longitude: "32"; latitude: "23"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "25"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "26"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "30"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "34"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "35"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "32"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "32"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "32"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "32"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "44"; height: "123"; }
- ListElement{ longitude: "32"; latitude: "45"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "32"; latitude: "47"; height: "118"; }
- ListElement{ longitude: "32"; latitude: "48"; height: "119"; }
- ListElement{ longitude: "32"; latitude: "49"; height: "119"; }
- ListElement{ longitude: "32"; latitude: "50"; height: "119"; }
- ListElement{ longitude: "32"; latitude: "51"; height: "119"; }
- ListElement{ longitude: "32"; latitude: "52"; height: "118"; }
- ListElement{ longitude: "32"; latitude: "53"; height: "119"; }
- ListElement{ longitude: "32"; latitude: "54"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "55"; height: "121"; }
- ListElement{ longitude: "32"; latitude: "56"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "57"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "58"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "59"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "60"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "61"; height: "123"; }
- ListElement{ longitude: "32"; latitude: "62"; height: "123"; }
- ListElement{ longitude: "32"; latitude: "63"; height: "123"; }
- ListElement{ longitude: "32"; latitude: "64"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "66"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "67"; height: "131"; }
- ListElement{ longitude: "32"; latitude: "68"; height: "137"; }
- ListElement{ longitude: "32"; latitude: "69"; height: "141"; }
- ListElement{ longitude: "32"; latitude: "70"; height: "145"; }
- ListElement{ longitude: "32"; latitude: "71"; height: "148"; }
- ListElement{ longitude: "32"; latitude: "72"; height: "151"; }
- ListElement{ longitude: "32"; latitude: "73"; height: "148"; }
- ListElement{ longitude: "32"; latitude: "74"; height: "144"; }
- ListElement{ longitude: "32"; latitude: "75"; height: "138"; }
- ListElement{ longitude: "32"; latitude: "76"; height: "130"; }
- ListElement{ longitude: "32"; latitude: "77"; height: "124"; }
- ListElement{ longitude: "32"; latitude: "78"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "79"; height: "124"; }
- ListElement{ longitude: "32"; latitude: "80"; height: "120"; }
- ListElement{ longitude: "32"; latitude: "81"; height: "119"; }
- ListElement{ longitude: "32"; latitude: "82"; height: "120"; }
- ListElement{ longitude: "32"; latitude: "83"; height: "119"; }
- ListElement{ longitude: "32"; latitude: "84"; height: "117"; }
- ListElement{ longitude: "32"; latitude: "85"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "86"; height: "123"; }
- ListElement{ longitude: "32"; latitude: "87"; height: "121"; }
- ListElement{ longitude: "32"; latitude: "88"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "89"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "90"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "91"; height: "129"; }
- ListElement{ longitude: "32"; latitude: "92"; height: "127"; }
- ListElement{ longitude: "32"; latitude: "93"; height: "125"; }
- ListElement{ longitude: "32"; latitude: "94"; height: "123"; }
- ListElement{ longitude: "32"; latitude: "95"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "96"; height: "122"; }
- ListElement{ longitude: "32"; latitude: "97"; height: "119"; }
- ListElement{ longitude: "32"; latitude: "98"; height: "126"; }
- ListElement{ longitude: "32"; latitude: "99"; height: "120"; }
- ListElement{ longitude: "33"; latitude: "0"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "1"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "2"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "3"; height: "116"; }
- ListElement{ longitude: "33"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "33"; latitude: "5"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "8"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "10"; height: "130"; }
- ListElement{ longitude: "33"; latitude: "11"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "12"; height: "128"; }
- ListElement{ longitude: "33"; latitude: "13"; height: "123"; }
- ListElement{ longitude: "33"; latitude: "14"; height: "126"; }
- ListElement{ longitude: "33"; latitude: "15"; height: "126"; }
- ListElement{ longitude: "33"; latitude: "16"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "18"; height: "126"; }
- ListElement{ longitude: "33"; latitude: "19"; height: "128"; }
- ListElement{ longitude: "33"; latitude: "20"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "21"; height: "129"; }
- ListElement{ longitude: "33"; latitude: "22"; height: "129"; }
- ListElement{ longitude: "33"; latitude: "23"; height: "126"; }
- ListElement{ longitude: "33"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "25"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "26"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "30"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "32"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "33"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "34"; height: "128"; }
- ListElement{ longitude: "33"; latitude: "35"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "37"; height: "126"; }
- ListElement{ longitude: "33"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "42"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "43"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "44"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "45"; height: "123"; }
- ListElement{ longitude: "33"; latitude: "46"; height: "122"; }
- ListElement{ longitude: "33"; latitude: "47"; height: "119"; }
- ListElement{ longitude: "33"; latitude: "48"; height: "118"; }
- ListElement{ longitude: "33"; latitude: "49"; height: "118"; }
- ListElement{ longitude: "33"; latitude: "50"; height: "119"; }
- ListElement{ longitude: "33"; latitude: "51"; height: "119"; }
- ListElement{ longitude: "33"; latitude: "52"; height: "118"; }
- ListElement{ longitude: "33"; latitude: "53"; height: "119"; }
- ListElement{ longitude: "33"; latitude: "54"; height: "122"; }
- ListElement{ longitude: "33"; latitude: "55"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "56"; height: "126"; }
- ListElement{ longitude: "33"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "58"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "59"; height: "126"; }
- ListElement{ longitude: "33"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "61"; height: "122"; }
- ListElement{ longitude: "33"; latitude: "62"; height: "122"; }
- ListElement{ longitude: "33"; latitude: "63"; height: "122"; }
- ListElement{ longitude: "33"; latitude: "64"; height: "123"; }
- ListElement{ longitude: "33"; latitude: "65"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "33"; latitude: "67"; height: "133"; }
- ListElement{ longitude: "33"; latitude: "68"; height: "141"; }
- ListElement{ longitude: "33"; latitude: "69"; height: "144"; }
- ListElement{ longitude: "33"; latitude: "70"; height: "147"; }
- ListElement{ longitude: "33"; latitude: "71"; height: "149"; }
- ListElement{ longitude: "33"; latitude: "72"; height: "149"; }
- ListElement{ longitude: "33"; latitude: "73"; height: "147"; }
- ListElement{ longitude: "33"; latitude: "74"; height: "144"; }
- ListElement{ longitude: "33"; latitude: "75"; height: "137"; }
- ListElement{ longitude: "33"; latitude: "76"; height: "123"; }
- ListElement{ longitude: "33"; latitude: "77"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "78"; height: "128"; }
- ListElement{ longitude: "33"; latitude: "79"; height: "122"; }
- ListElement{ longitude: "33"; latitude: "80"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "81"; height: "121"; }
- ListElement{ longitude: "33"; latitude: "82"; height: "123"; }
- ListElement{ longitude: "33"; latitude: "83"; height: "118"; }
- ListElement{ longitude: "33"; latitude: "84"; height: "113"; }
- ListElement{ longitude: "33"; latitude: "85"; height: "117"; }
- ListElement{ longitude: "33"; latitude: "86"; height: "118"; }
- ListElement{ longitude: "33"; latitude: "87"; height: "121"; }
- ListElement{ longitude: "33"; latitude: "88"; height: "120"; }
- ListElement{ longitude: "33"; latitude: "89"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "90"; height: "122"; }
- ListElement{ longitude: "33"; latitude: "91"; height: "121"; }
- ListElement{ longitude: "33"; latitude: "92"; height: "123"; }
- ListElement{ longitude: "33"; latitude: "93"; height: "123"; }
- ListElement{ longitude: "33"; latitude: "94"; height: "125"; }
- ListElement{ longitude: "33"; latitude: "95"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "96"; height: "127"; }
- ListElement{ longitude: "33"; latitude: "97"; height: "124"; }
- ListElement{ longitude: "33"; latitude: "98"; height: "132"; }
- ListElement{ longitude: "33"; latitude: "99"; height: "122"; }
- ListElement{ longitude: "34"; latitude: "0"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "1"; height: "125"; }
- ListElement{ longitude: "34"; latitude: "2"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "34"; latitude: "4"; height: "125"; }
- ListElement{ longitude: "34"; latitude: "5"; height: "125"; }
- ListElement{ longitude: "34"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "34"; latitude: "9"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "10"; height: "131"; }
- ListElement{ longitude: "34"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "34"; latitude: "12"; height: "129"; }
- ListElement{ longitude: "34"; latitude: "13"; height: "130"; }
- ListElement{ longitude: "34"; latitude: "14"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "15"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "16"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "17"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "18"; height: "128"; }
- ListElement{ longitude: "34"; latitude: "19"; height: "129"; }
- ListElement{ longitude: "34"; latitude: "20"; height: "129"; }
- ListElement{ longitude: "34"; latitude: "21"; height: "129"; }
- ListElement{ longitude: "34"; latitude: "22"; height: "129"; }
- ListElement{ longitude: "34"; latitude: "23"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "24"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "30"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "32"; height: "123"; }
- ListElement{ longitude: "34"; latitude: "33"; height: "128"; }
- ListElement{ longitude: "34"; latitude: "34"; height: "130"; }
- ListElement{ longitude: "34"; latitude: "35"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "36"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "37"; height: "123"; }
- ListElement{ longitude: "34"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "34"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "40"; height: "128"; }
- ListElement{ longitude: "34"; latitude: "41"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "43"; height: "125"; }
- ListElement{ longitude: "34"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "34"; latitude: "45"; height: "119"; }
- ListElement{ longitude: "34"; latitude: "46"; height: "122"; }
- ListElement{ longitude: "34"; latitude: "47"; height: "122"; }
- ListElement{ longitude: "34"; latitude: "48"; height: "121"; }
- ListElement{ longitude: "34"; latitude: "49"; height: "118"; }
- ListElement{ longitude: "34"; latitude: "50"; height: "117"; }
- ListElement{ longitude: "34"; latitude: "51"; height: "117"; }
- ListElement{ longitude: "34"; latitude: "52"; height: "119"; }
- ListElement{ longitude: "34"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "34"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "34"; latitude: "55"; height: "122"; }
- ListElement{ longitude: "34"; latitude: "56"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "58"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "59"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "34"; latitude: "61"; height: "122"; }
- ListElement{ longitude: "34"; latitude: "62"; height: "122"; }
- ListElement{ longitude: "34"; latitude: "63"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "64"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "66"; height: "129"; }
- ListElement{ longitude: "34"; latitude: "67"; height: "135"; }
- ListElement{ longitude: "34"; latitude: "68"; height: "142"; }
- ListElement{ longitude: "34"; latitude: "69"; height: "145"; }
- ListElement{ longitude: "34"; latitude: "70"; height: "149"; }
- ListElement{ longitude: "34"; latitude: "71"; height: "149"; }
- ListElement{ longitude: "34"; latitude: "72"; height: "150"; }
- ListElement{ longitude: "34"; latitude: "73"; height: "145"; }
- ListElement{ longitude: "34"; latitude: "74"; height: "144"; }
- ListElement{ longitude: "34"; latitude: "75"; height: "144"; }
- ListElement{ longitude: "34"; latitude: "76"; height: "138"; }
- ListElement{ longitude: "34"; latitude: "77"; height: "141"; }
- ListElement{ longitude: "34"; latitude: "78"; height: "140"; }
- ListElement{ longitude: "34"; latitude: "79"; height: "125"; }
- ListElement{ longitude: "34"; latitude: "80"; height: "131"; }
- ListElement{ longitude: "34"; latitude: "81"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "82"; height: "123"; }
- ListElement{ longitude: "34"; latitude: "83"; height: "123"; }
- ListElement{ longitude: "34"; latitude: "84"; height: "117"; }
- ListElement{ longitude: "34"; latitude: "85"; height: "121"; }
- ListElement{ longitude: "34"; latitude: "86"; height: "119"; }
- ListElement{ longitude: "34"; latitude: "87"; height: "119"; }
- ListElement{ longitude: "34"; latitude: "88"; height: "115"; }
- ListElement{ longitude: "34"; latitude: "89"; height: "118"; }
- ListElement{ longitude: "34"; latitude: "90"; height: "121"; }
- ListElement{ longitude: "34"; latitude: "91"; height: "124"; }
- ListElement{ longitude: "34"; latitude: "92"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "93"; height: "122"; }
- ListElement{ longitude: "34"; latitude: "94"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "95"; height: "127"; }
- ListElement{ longitude: "34"; latitude: "96"; height: "120"; }
- ListElement{ longitude: "34"; latitude: "97"; height: "126"; }
- ListElement{ longitude: "34"; latitude: "98"; height: "130"; }
- ListElement{ longitude: "34"; latitude: "99"; height: "123"; }
- ListElement{ longitude: "35"; latitude: "0"; height: "125"; }
- ListElement{ longitude: "35"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "35"; latitude: "2"; height: "119"; }
- ListElement{ longitude: "35"; latitude: "3"; height: "118"; }
- ListElement{ longitude: "35"; latitude: "4"; height: "121"; }
- ListElement{ longitude: "35"; latitude: "5"; height: "125"; }
- ListElement{ longitude: "35"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "35"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "35"; latitude: "9"; height: "131"; }
- ListElement{ longitude: "35"; latitude: "10"; height: "130"; }
- ListElement{ longitude: "35"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "35"; latitude: "12"; height: "130"; }
- ListElement{ longitude: "35"; latitude: "13"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "14"; height: "128"; }
- ListElement{ longitude: "35"; latitude: "15"; height: "128"; }
- ListElement{ longitude: "35"; latitude: "16"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "17"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "18"; height: "128"; }
- ListElement{ longitude: "35"; latitude: "19"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "20"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "21"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "22"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "23"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "24"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "26"; height: "130"; }
- ListElement{ longitude: "35"; latitude: "27"; height: "128"; }
- ListElement{ longitude: "35"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "30"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "31"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "35"; latitude: "33"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "35"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "36"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "37"; height: "121"; }
- ListElement{ longitude: "35"; latitude: "38"; height: "123"; }
- ListElement{ longitude: "35"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "35"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "35"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "35"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "43"; height: "125"; }
- ListElement{ longitude: "35"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "35"; latitude: "45"; height: "123"; }
- ListElement{ longitude: "35"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "35"; latitude: "47"; height: "124"; }
- ListElement{ longitude: "35"; latitude: "48"; height: "120"; }
- ListElement{ longitude: "35"; latitude: "49"; height: "120"; }
- ListElement{ longitude: "35"; latitude: "50"; height: "117"; }
- ListElement{ longitude: "35"; latitude: "51"; height: "117"; }
- ListElement{ longitude: "35"; latitude: "52"; height: "117"; }
- ListElement{ longitude: "35"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "35"; latitude: "54"; height: "121"; }
- ListElement{ longitude: "35"; latitude: "55"; height: "124"; }
- ListElement{ longitude: "35"; latitude: "56"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "57"; height: "125"; }
- ListElement{ longitude: "35"; latitude: "58"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "59"; height: "123"; }
- ListElement{ longitude: "35"; latitude: "60"; height: "124"; }
- ListElement{ longitude: "35"; latitude: "61"; height: "120"; }
- ListElement{ longitude: "35"; latitude: "62"; height: "124"; }
- ListElement{ longitude: "35"; latitude: "63"; height: "125"; }
- ListElement{ longitude: "35"; latitude: "64"; height: "124"; }
- ListElement{ longitude: "35"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "35"; latitude: "67"; height: "135"; }
- ListElement{ longitude: "35"; latitude: "68"; height: "140"; }
- ListElement{ longitude: "35"; latitude: "69"; height: "146"; }
- ListElement{ longitude: "35"; latitude: "70"; height: "147"; }
- ListElement{ longitude: "35"; latitude: "71"; height: "148"; }
- ListElement{ longitude: "35"; latitude: "72"; height: "148"; }
- ListElement{ longitude: "35"; latitude: "73"; height: "144"; }
- ListElement{ longitude: "35"; latitude: "74"; height: "143"; }
- ListElement{ longitude: "35"; latitude: "75"; height: "145"; }
- ListElement{ longitude: "35"; latitude: "76"; height: "146"; }
- ListElement{ longitude: "35"; latitude: "77"; height: "151"; }
- ListElement{ longitude: "35"; latitude: "78"; height: "146"; }
- ListElement{ longitude: "35"; latitude: "79"; height: "136"; }
- ListElement{ longitude: "35"; latitude: "80"; height: "119"; }
- ListElement{ longitude: "35"; latitude: "81"; height: "122"; }
- ListElement{ longitude: "35"; latitude: "82"; height: "121"; }
- ListElement{ longitude: "35"; latitude: "83"; height: "116"; }
- ListElement{ longitude: "35"; latitude: "84"; height: "101"; }
- ListElement{ longitude: "35"; latitude: "85"; height: "111"; }
- ListElement{ longitude: "35"; latitude: "86"; height: "115"; }
- ListElement{ longitude: "35"; latitude: "87"; height: "126"; }
- ListElement{ longitude: "35"; latitude: "88"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "89"; height: "125"; }
- ListElement{ longitude: "35"; latitude: "90"; height: "128"; }
- ListElement{ longitude: "35"; latitude: "91"; height: "121"; }
- ListElement{ longitude: "35"; latitude: "92"; height: "127"; }
- ListElement{ longitude: "35"; latitude: "93"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "94"; height: "129"; }
- ListElement{ longitude: "35"; latitude: "95"; height: "119"; }
- ListElement{ longitude: "35"; latitude: "96"; height: "117"; }
- ListElement{ longitude: "35"; latitude: "97"; height: "135"; }
- ListElement{ longitude: "35"; latitude: "98"; height: "135"; }
- ListElement{ longitude: "35"; latitude: "99"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "0"; height: "123"; }
- ListElement{ longitude: "36"; latitude: "1"; height: "119"; }
- ListElement{ longitude: "36"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "36"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "36"; latitude: "4"; height: "121"; }
- ListElement{ longitude: "36"; latitude: "5"; height: "124"; }
- ListElement{ longitude: "36"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "36"; latitude: "7"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "8"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "9"; height: "130"; }
- ListElement{ longitude: "36"; latitude: "10"; height: "129"; }
- ListElement{ longitude: "36"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "36"; latitude: "12"; height: "130"; }
- ListElement{ longitude: "36"; latitude: "13"; height: "129"; }
- ListElement{ longitude: "36"; latitude: "14"; height: "126"; }
- ListElement{ longitude: "36"; latitude: "15"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "16"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "19"; height: "126"; }
- ListElement{ longitude: "36"; latitude: "20"; height: "128"; }
- ListElement{ longitude: "36"; latitude: "21"; height: "124"; }
- ListElement{ longitude: "36"; latitude: "22"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "23"; height: "129"; }
- ListElement{ longitude: "36"; latitude: "24"; height: "128"; }
- ListElement{ longitude: "36"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "26"; height: "122"; }
- ListElement{ longitude: "36"; latitude: "27"; height: "123"; }
- ListElement{ longitude: "36"; latitude: "28"; height: "128"; }
- ListElement{ longitude: "36"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "30"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "32"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "33"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "34"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "35"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "36"; height: "126"; }
- ListElement{ longitude: "36"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "36"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "36"; latitude: "39"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "41"; height: "129"; }
- ListElement{ longitude: "36"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "43"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "36"; latitude: "45"; height: "123"; }
- ListElement{ longitude: "36"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "36"; latitude: "47"; height: "124"; }
- ListElement{ longitude: "36"; latitude: "48"; height: "120"; }
- ListElement{ longitude: "36"; latitude: "49"; height: "120"; }
- ListElement{ longitude: "36"; latitude: "50"; height: "117"; }
- ListElement{ longitude: "36"; latitude: "51"; height: "117"; }
- ListElement{ longitude: "36"; latitude: "52"; height: "117"; }
- ListElement{ longitude: "36"; latitude: "53"; height: "117"; }
- ListElement{ longitude: "36"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "36"; latitude: "55"; height: "121"; }
- ListElement{ longitude: "36"; latitude: "56"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "57"; height: "126"; }
- ListElement{ longitude: "36"; latitude: "58"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "59"; height: "123"; }
- ListElement{ longitude: "36"; latitude: "60"; height: "124"; }
- ListElement{ longitude: "36"; latitude: "61"; height: "122"; }
- ListElement{ longitude: "36"; latitude: "62"; height: "123"; }
- ListElement{ longitude: "36"; latitude: "63"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "64"; height: "124"; }
- ListElement{ longitude: "36"; latitude: "65"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "66"; height: "129"; }
- ListElement{ longitude: "36"; latitude: "67"; height: "129"; }
- ListElement{ longitude: "36"; latitude: "68"; height: "137"; }
- ListElement{ longitude: "36"; latitude: "69"; height: "142"; }
- ListElement{ longitude: "36"; latitude: "70"; height: "146"; }
- ListElement{ longitude: "36"; latitude: "71"; height: "148"; }
- ListElement{ longitude: "36"; latitude: "72"; height: "148"; }
- ListElement{ longitude: "36"; latitude: "73"; height: "145"; }
- ListElement{ longitude: "36"; latitude: "74"; height: "141"; }
- ListElement{ longitude: "36"; latitude: "75"; height: "148"; }
- ListElement{ longitude: "36"; latitude: "76"; height: "152"; }
- ListElement{ longitude: "36"; latitude: "77"; height: "146"; }
- ListElement{ longitude: "36"; latitude: "78"; height: "146"; }
- ListElement{ longitude: "36"; latitude: "79"; height: "154"; }
- ListElement{ longitude: "36"; latitude: "80"; height: "146"; }
- ListElement{ longitude: "36"; latitude: "81"; height: "131"; }
- ListElement{ longitude: "36"; latitude: "82"; height: "103"; }
- ListElement{ longitude: "36"; latitude: "83"; height: "94"; }
- ListElement{ longitude: "36"; latitude: "84"; height: "78"; }
- ListElement{ longitude: "36"; latitude: "85"; height: "73"; }
- ListElement{ longitude: "36"; latitude: "86"; height: "87"; }
- ListElement{ longitude: "36"; latitude: "87"; height: "103"; }
- ListElement{ longitude: "36"; latitude: "88"; height: "98"; }
- ListElement{ longitude: "36"; latitude: "89"; height: "110"; }
- ListElement{ longitude: "36"; latitude: "90"; height: "113"; }
- ListElement{ longitude: "36"; latitude: "91"; height: "125"; }
- ListElement{ longitude: "36"; latitude: "92"; height: "129"; }
- ListElement{ longitude: "36"; latitude: "93"; height: "127"; }
- ListElement{ longitude: "36"; latitude: "94"; height: "129"; }
- ListElement{ longitude: "36"; latitude: "95"; height: "122"; }
- ListElement{ longitude: "36"; latitude: "96"; height: "122"; }
- ListElement{ longitude: "36"; latitude: "97"; height: "128"; }
- ListElement{ longitude: "36"; latitude: "98"; height: "131"; }
- ListElement{ longitude: "36"; latitude: "99"; height: "129"; }
- ListElement{ longitude: "37"; latitude: "0"; height: "123"; }
- ListElement{ longitude: "37"; latitude: "1"; height: "120"; }
- ListElement{ longitude: "37"; latitude: "2"; height: "121"; }
- ListElement{ longitude: "37"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "37"; latitude: "4"; height: "121"; }
- ListElement{ longitude: "37"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "37"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "37"; latitude: "7"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "8"; height: "129"; }
- ListElement{ longitude: "37"; latitude: "9"; height: "132"; }
- ListElement{ longitude: "37"; latitude: "10"; height: "129"; }
- ListElement{ longitude: "37"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "37"; latitude: "12"; height: "130"; }
- ListElement{ longitude: "37"; latitude: "13"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "14"; height: "128"; }
- ListElement{ longitude: "37"; latitude: "15"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "16"; height: "120"; }
- ListElement{ longitude: "37"; latitude: "17"; height: "128"; }
- ListElement{ longitude: "37"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "37"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "20"; height: "128"; }
- ListElement{ longitude: "37"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "37"; latitude: "22"; height: "129"; }
- ListElement{ longitude: "37"; latitude: "23"; height: "130"; }
- ListElement{ longitude: "37"; latitude: "24"; height: "128"; }
- ListElement{ longitude: "37"; latitude: "25"; height: "110"; }
- ListElement{ longitude: "37"; latitude: "26"; height: "98"; }
- ListElement{ longitude: "37"; latitude: "27"; height: "97"; }
- ListElement{ longitude: "37"; latitude: "28"; height: "123"; }
- ListElement{ longitude: "37"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "30"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "32"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "33"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "34"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "37"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "37"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "37"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "37"; latitude: "39"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "40"; height: "126"; }
- ListElement{ longitude: "37"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "37"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "43"; height: "124"; }
- ListElement{ longitude: "37"; latitude: "44"; height: "124"; }
- ListElement{ longitude: "37"; latitude: "45"; height: "121"; }
- ListElement{ longitude: "37"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "37"; latitude: "47"; height: "122"; }
- ListElement{ longitude: "37"; latitude: "48"; height: "119"; }
- ListElement{ longitude: "37"; latitude: "49"; height: "120"; }
- ListElement{ longitude: "37"; latitude: "50"; height: "118"; }
- ListElement{ longitude: "37"; latitude: "51"; height: "119"; }
- ListElement{ longitude: "37"; latitude: "52"; height: "117"; }
- ListElement{ longitude: "37"; latitude: "53"; height: "117"; }
- ListElement{ longitude: "37"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "37"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "37"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "37"; latitude: "57"; height: "123"; }
- ListElement{ longitude: "37"; latitude: "58"; height: "123"; }
- ListElement{ longitude: "37"; latitude: "59"; height: "123"; }
- ListElement{ longitude: "37"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "37"; latitude: "61"; height: "125"; }
- ListElement{ longitude: "37"; latitude: "62"; height: "125"; }
- ListElement{ longitude: "37"; latitude: "63"; height: "124"; }
- ListElement{ longitude: "37"; latitude: "64"; height: "124"; }
- ListElement{ longitude: "37"; latitude: "65"; height: "123"; }
- ListElement{ longitude: "37"; latitude: "66"; height: "126"; }
- ListElement{ longitude: "37"; latitude: "67"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "68"; height: "133"; }
- ListElement{ longitude: "37"; latitude: "69"; height: "138"; }
- ListElement{ longitude: "37"; latitude: "70"; height: "145"; }
- ListElement{ longitude: "37"; latitude: "71"; height: "146"; }
- ListElement{ longitude: "37"; latitude: "72"; height: "146"; }
- ListElement{ longitude: "37"; latitude: "73"; height: "149"; }
- ListElement{ longitude: "37"; latitude: "74"; height: "145"; }
- ListElement{ longitude: "37"; latitude: "75"; height: "154"; }
- ListElement{ longitude: "37"; latitude: "76"; height: "153"; }
- ListElement{ longitude: "37"; latitude: "77"; height: "152"; }
- ListElement{ longitude: "37"; latitude: "78"; height: "149"; }
- ListElement{ longitude: "37"; latitude: "79"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "80"; height: "97"; }
- ListElement{ longitude: "37"; latitude: "81"; height: "70"; }
- ListElement{ longitude: "37"; latitude: "82"; height: "66"; }
- ListElement{ longitude: "37"; latitude: "83"; height: "71"; }
- ListElement{ longitude: "37"; latitude: "84"; height: "59"; }
- ListElement{ longitude: "37"; latitude: "85"; height: "48"; }
- ListElement{ longitude: "37"; latitude: "86"; height: "66"; }
- ListElement{ longitude: "37"; latitude: "87"; height: "74"; }
- ListElement{ longitude: "37"; latitude: "88"; height: "78"; }
- ListElement{ longitude: "37"; latitude: "89"; height: "86"; }
- ListElement{ longitude: "37"; latitude: "90"; height: "94"; }
- ListElement{ longitude: "37"; latitude: "91"; height: "107"; }
- ListElement{ longitude: "37"; latitude: "92"; height: "120"; }
- ListElement{ longitude: "37"; latitude: "93"; height: "131"; }
- ListElement{ longitude: "37"; latitude: "94"; height: "129"; }
- ListElement{ longitude: "37"; latitude: "95"; height: "127"; }
- ListElement{ longitude: "37"; latitude: "96"; height: "133"; }
- ListElement{ longitude: "37"; latitude: "97"; height: "135"; }
- ListElement{ longitude: "37"; latitude: "98"; height: "134"; }
- ListElement{ longitude: "37"; latitude: "99"; height: "130"; }
- ListElement{ longitude: "38"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "38"; latitude: "1"; height: "118"; }
- ListElement{ longitude: "38"; latitude: "2"; height: "121"; }
- ListElement{ longitude: "38"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "38"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "38"; latitude: "5"; height: "124"; }
- ListElement{ longitude: "38"; latitude: "6"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "8"; height: "129"; }
- ListElement{ longitude: "38"; latitude: "9"; height: "128"; }
- ListElement{ longitude: "38"; latitude: "10"; height: "129"; }
- ListElement{ longitude: "38"; latitude: "11"; height: "131"; }
- ListElement{ longitude: "38"; latitude: "12"; height: "128"; }
- ListElement{ longitude: "38"; latitude: "13"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "14"; height: "128"; }
- ListElement{ longitude: "38"; latitude: "15"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "16"; height: "124"; }
- ListElement{ longitude: "38"; latitude: "17"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "38"; latitude: "20"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "21"; height: "128"; }
- ListElement{ longitude: "38"; latitude: "22"; height: "127"; }
- ListElement{ longitude: "38"; latitude: "23"; height: "128"; }
- ListElement{ longitude: "38"; latitude: "24"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "25"; height: "103"; }
- ListElement{ longitude: "38"; latitude: "26"; height: "86"; }
- ListElement{ longitude: "38"; latitude: "27"; height: "90"; }
- ListElement{ longitude: "38"; latitude: "28"; height: "116"; }
- ListElement{ longitude: "38"; latitude: "29"; height: "129"; }
- ListElement{ longitude: "38"; latitude: "30"; height: "124"; }
- ListElement{ longitude: "38"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "38"; latitude: "32"; height: "127"; }
- ListElement{ longitude: "38"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "34"; height: "127"; }
- ListElement{ longitude: "38"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "36"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "37"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "38"; height: "128"; }
- ListElement{ longitude: "38"; latitude: "39"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "38"; latitude: "41"; height: "127"; }
- ListElement{ longitude: "38"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "43"; height: "124"; }
- ListElement{ longitude: "38"; latitude: "44"; height: "123"; }
- ListElement{ longitude: "38"; latitude: "45"; height: "122"; }
- ListElement{ longitude: "38"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "38"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "38"; latitude: "48"; height: "119"; }
- ListElement{ longitude: "38"; latitude: "49"; height: "122"; }
- ListElement{ longitude: "38"; latitude: "50"; height: "120"; }
- ListElement{ longitude: "38"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "38"; latitude: "52"; height: "119"; }
- ListElement{ longitude: "38"; latitude: "53"; height: "117"; }
- ListElement{ longitude: "38"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "38"; latitude: "55"; height: "119"; }
- ListElement{ longitude: "38"; latitude: "56"; height: "122"; }
- ListElement{ longitude: "38"; latitude: "57"; height: "122"; }
- ListElement{ longitude: "38"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "59"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "61"; height: "124"; }
- ListElement{ longitude: "38"; latitude: "62"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "63"; height: "125"; }
- ListElement{ longitude: "38"; latitude: "64"; height: "127"; }
- ListElement{ longitude: "38"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "66"; height: "124"; }
- ListElement{ longitude: "38"; latitude: "67"; height: "126"; }
- ListElement{ longitude: "38"; latitude: "68"; height: "132"; }
- ListElement{ longitude: "38"; latitude: "69"; height: "137"; }
- ListElement{ longitude: "38"; latitude: "70"; height: "145"; }
- ListElement{ longitude: "38"; latitude: "71"; height: "148"; }
- ListElement{ longitude: "38"; latitude: "72"; height: "155"; }
- ListElement{ longitude: "38"; latitude: "73"; height: "161"; }
- ListElement{ longitude: "38"; latitude: "74"; height: "147"; }
- ListElement{ longitude: "38"; latitude: "75"; height: "146"; }
- ListElement{ longitude: "38"; latitude: "76"; height: "139"; }
- ListElement{ longitude: "38"; latitude: "77"; height: "120"; }
- ListElement{ longitude: "38"; latitude: "78"; height: "108"; }
- ListElement{ longitude: "38"; latitude: "79"; height: "93"; }
- ListElement{ longitude: "38"; latitude: "80"; height: "76"; }
- ListElement{ longitude: "38"; latitude: "81"; height: "59"; }
- ListElement{ longitude: "38"; latitude: "82"; height: "54"; }
- ListElement{ longitude: "38"; latitude: "83"; height: "61"; }
- ListElement{ longitude: "38"; latitude: "84"; height: "24"; }
- ListElement{ longitude: "38"; latitude: "85"; height: "13"; }
- ListElement{ longitude: "38"; latitude: "86"; height: "42"; }
- ListElement{ longitude: "38"; latitude: "87"; height: "58"; }
- ListElement{ longitude: "38"; latitude: "88"; height: "73"; }
- ListElement{ longitude: "38"; latitude: "89"; height: "75"; }
- ListElement{ longitude: "38"; latitude: "90"; height: "74"; }
- ListElement{ longitude: "38"; latitude: "91"; height: "77"; }
- ListElement{ longitude: "38"; latitude: "92"; height: "96"; }
- ListElement{ longitude: "38"; latitude: "93"; height: "116"; }
- ListElement{ longitude: "38"; latitude: "94"; height: "133"; }
- ListElement{ longitude: "38"; latitude: "95"; height: "131"; }
- ListElement{ longitude: "38"; latitude: "96"; height: "137"; }
- ListElement{ longitude: "38"; latitude: "97"; height: "137"; }
- ListElement{ longitude: "38"; latitude: "98"; height: "134"; }
- ListElement{ longitude: "38"; latitude: "99"; height: "130"; }
- ListElement{ longitude: "39"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "39"; latitude: "1"; height: "120"; }
- ListElement{ longitude: "39"; latitude: "2"; height: "121"; }
- ListElement{ longitude: "39"; latitude: "3"; height: "121"; }
- ListElement{ longitude: "39"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "39"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "39"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "39"; latitude: "7"; height: "127"; }
- ListElement{ longitude: "39"; latitude: "8"; height: "129"; }
- ListElement{ longitude: "39"; latitude: "9"; height: "129"; }
- ListElement{ longitude: "39"; latitude: "10"; height: "130"; }
- ListElement{ longitude: "39"; latitude: "11"; height: "132"; }
- ListElement{ longitude: "39"; latitude: "12"; height: "128"; }
- ListElement{ longitude: "39"; latitude: "13"; height: "129"; }
- ListElement{ longitude: "39"; latitude: "14"; height: "128"; }
- ListElement{ longitude: "39"; latitude: "15"; height: "125"; }
- ListElement{ longitude: "39"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "17"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "39"; latitude: "19"; height: "125"; }
- ListElement{ longitude: "39"; latitude: "20"; height: "123"; }
- ListElement{ longitude: "39"; latitude: "21"; height: "128"; }
- ListElement{ longitude: "39"; latitude: "22"; height: "128"; }
- ListElement{ longitude: "39"; latitude: "23"; height: "130"; }
- ListElement{ longitude: "39"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "39"; latitude: "25"; height: "108"; }
- ListElement{ longitude: "39"; latitude: "26"; height: "88"; }
- ListElement{ longitude: "39"; latitude: "27"; height: "80"; }
- ListElement{ longitude: "39"; latitude: "28"; height: "108"; }
- ListElement{ longitude: "39"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "39"; latitude: "30"; height: "124"; }
- ListElement{ longitude: "39"; latitude: "31"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "32"; height: "124"; }
- ListElement{ longitude: "39"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "39"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "35"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "36"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "37"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "39"; latitude: "39"; height: "122"; }
- ListElement{ longitude: "39"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "39"; latitude: "41"; height: "121"; }
- ListElement{ longitude: "39"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "39"; latitude: "44"; height: "125"; }
- ListElement{ longitude: "39"; latitude: "45"; height: "124"; }
- ListElement{ longitude: "39"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "39"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "39"; latitude: "48"; height: "118"; }
- ListElement{ longitude: "39"; latitude: "49"; height: "118"; }
- ListElement{ longitude: "39"; latitude: "50"; height: "118"; }
- ListElement{ longitude: "39"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "39"; latitude: "52"; height: "118"; }
- ListElement{ longitude: "39"; latitude: "53"; height: "116"; }
- ListElement{ longitude: "39"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "39"; latitude: "55"; height: "117"; }
- ListElement{ longitude: "39"; latitude: "56"; height: "119"; }
- ListElement{ longitude: "39"; latitude: "57"; height: "121"; }
- ListElement{ longitude: "39"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "39"; latitude: "59"; height: "124"; }
- ListElement{ longitude: "39"; latitude: "60"; height: "124"; }
- ListElement{ longitude: "39"; latitude: "61"; height: "125"; }
- ListElement{ longitude: "39"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "39"; latitude: "63"; height: "127"; }
- ListElement{ longitude: "39"; latitude: "64"; height: "129"; }
- ListElement{ longitude: "39"; latitude: "65"; height: "129"; }
- ListElement{ longitude: "39"; latitude: "66"; height: "129"; }
- ListElement{ longitude: "39"; latitude: "67"; height: "127"; }
- ListElement{ longitude: "39"; latitude: "68"; height: "132"; }
- ListElement{ longitude: "39"; latitude: "69"; height: "136"; }
- ListElement{ longitude: "39"; latitude: "70"; height: "146"; }
- ListElement{ longitude: "39"; latitude: "71"; height: "153"; }
- ListElement{ longitude: "39"; latitude: "72"; height: "161"; }
- ListElement{ longitude: "39"; latitude: "73"; height: "157"; }
- ListElement{ longitude: "39"; latitude: "74"; height: "152"; }
- ListElement{ longitude: "39"; latitude: "75"; height: "139"; }
- ListElement{ longitude: "39"; latitude: "76"; height: "120"; }
- ListElement{ longitude: "39"; latitude: "77"; height: "116"; }
- ListElement{ longitude: "39"; latitude: "78"; height: "97"; }
- ListElement{ longitude: "39"; latitude: "79"; height: "49"; }
- ListElement{ longitude: "39"; latitude: "80"; height: "16"; }
- ListElement{ longitude: "39"; latitude: "81"; height: "11"; }
- ListElement{ longitude: "39"; latitude: "82"; height: "24"; }
- ListElement{ longitude: "39"; latitude: "83"; height: "58"; }
- ListElement{ longitude: "39"; latitude: "84"; height: "13"; }
- ListElement{ longitude: "39"; latitude: "85"; height: "1"; }
- ListElement{ longitude: "39"; latitude: "86"; height: "31"; }
- ListElement{ longitude: "39"; latitude: "87"; height: "58"; }
- ListElement{ longitude: "39"; latitude: "88"; height: "43"; }
- ListElement{ longitude: "39"; latitude: "89"; height: "48"; }
- ListElement{ longitude: "39"; latitude: "90"; height: "67"; }
- ListElement{ longitude: "39"; latitude: "91"; height: "71"; }
- ListElement{ longitude: "39"; latitude: "92"; height: "81"; }
- ListElement{ longitude: "39"; latitude: "93"; height: "92"; }
- ListElement{ longitude: "39"; latitude: "94"; height: "123"; }
- ListElement{ longitude: "39"; latitude: "95"; height: "143"; }
- ListElement{ longitude: "39"; latitude: "96"; height: "135"; }
- ListElement{ longitude: "39"; latitude: "97"; height: "139"; }
- ListElement{ longitude: "39"; latitude: "98"; height: "136"; }
- ListElement{ longitude: "39"; latitude: "99"; height: "129"; }
- ListElement{ longitude: "40"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "40"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "40"; latitude: "2"; height: "120"; }
- ListElement{ longitude: "40"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "40"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "40"; latitude: "5"; height: "119"; }
- ListElement{ longitude: "40"; latitude: "6"; height: "123"; }
- ListElement{ longitude: "40"; latitude: "7"; height: "125"; }
- ListElement{ longitude: "40"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "40"; latitude: "9"; height: "127"; }
- ListElement{ longitude: "40"; latitude: "10"; height: "128"; }
- ListElement{ longitude: "40"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "40"; latitude: "12"; height: "131"; }
- ListElement{ longitude: "40"; latitude: "13"; height: "129"; }
- ListElement{ longitude: "40"; latitude: "14"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "15"; height: "127"; }
- ListElement{ longitude: "40"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "17"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "40"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "40"; latitude: "20"; height: "125"; }
- ListElement{ longitude: "40"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "22"; height: "128"; }
- ListElement{ longitude: "40"; latitude: "23"; height: "128"; }
- ListElement{ longitude: "40"; latitude: "24"; height: "129"; }
- ListElement{ longitude: "40"; latitude: "25"; height: "119"; }
- ListElement{ longitude: "40"; latitude: "26"; height: "103"; }
- ListElement{ longitude: "40"; latitude: "27"; height: "110"; }
- ListElement{ longitude: "40"; latitude: "28"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "29"; height: "128"; }
- ListElement{ longitude: "40"; latitude: "30"; height: "124"; }
- ListElement{ longitude: "40"; latitude: "31"; height: "128"; }
- ListElement{ longitude: "40"; latitude: "32"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "33"; height: "124"; }
- ListElement{ longitude: "40"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "40"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "40"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "40"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "39"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "40"; height: "128"; }
- ListElement{ longitude: "40"; latitude: "41"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "40"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "40"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "40"; latitude: "46"; height: "123"; }
- ListElement{ longitude: "40"; latitude: "47"; height: "119"; }
- ListElement{ longitude: "40"; latitude: "48"; height: "117"; }
- ListElement{ longitude: "40"; latitude: "49"; height: "117"; }
- ListElement{ longitude: "40"; latitude: "50"; height: "117"; }
- ListElement{ longitude: "40"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "40"; latitude: "52"; height: "120"; }
- ListElement{ longitude: "40"; latitude: "53"; height: "120"; }
- ListElement{ longitude: "40"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "40"; latitude: "55"; height: "119"; }
- ListElement{ longitude: "40"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "40"; latitude: "57"; height: "121"; }
- ListElement{ longitude: "40"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "40"; latitude: "59"; height: "124"; }
- ListElement{ longitude: "40"; latitude: "60"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "61"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "62"; height: "129"; }
- ListElement{ longitude: "40"; latitude: "63"; height: "129"; }
- ListElement{ longitude: "40"; latitude: "64"; height: "133"; }
- ListElement{ longitude: "40"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "40"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "40"; latitude: "67"; height: "131"; }
- ListElement{ longitude: "40"; latitude: "68"; height: "134"; }
- ListElement{ longitude: "40"; latitude: "69"; height: "139"; }
- ListElement{ longitude: "40"; latitude: "70"; height: "146"; }
- ListElement{ longitude: "40"; latitude: "71"; height: "157"; }
- ListElement{ longitude: "40"; latitude: "72"; height: "166"; }
- ListElement{ longitude: "40"; latitude: "73"; height: "159"; }
- ListElement{ longitude: "40"; latitude: "74"; height: "151"; }
- ListElement{ longitude: "40"; latitude: "75"; height: "130"; }
- ListElement{ longitude: "40"; latitude: "76"; height: "117"; }
- ListElement{ longitude: "40"; latitude: "77"; height: "98"; }
- ListElement{ longitude: "40"; latitude: "78"; height: "82"; }
- ListElement{ longitude: "40"; latitude: "79"; height: "73"; }
- ListElement{ longitude: "40"; latitude: "80"; height: "49"; }
- ListElement{ longitude: "40"; latitude: "81"; height: "1"; }
- ListElement{ longitude: "40"; latitude: "82"; height: "1"; }
- ListElement{ longitude: "40"; latitude: "83"; height: "1"; }
- ListElement{ longitude: "40"; latitude: "84"; height: "27"; }
- ListElement{ longitude: "40"; latitude: "85"; height: "10"; }
- ListElement{ longitude: "40"; latitude: "86"; height: "17"; }
- ListElement{ longitude: "40"; latitude: "87"; height: "24"; }
- ListElement{ longitude: "40"; latitude: "88"; height: "16"; }
- ListElement{ longitude: "40"; latitude: "89"; height: "35"; }
- ListElement{ longitude: "40"; latitude: "90"; height: "58"; }
- ListElement{ longitude: "40"; latitude: "91"; height: "66"; }
- ListElement{ longitude: "40"; latitude: "92"; height: "78"; }
- ListElement{ longitude: "40"; latitude: "93"; height: "88"; }
- ListElement{ longitude: "40"; latitude: "94"; height: "107"; }
- ListElement{ longitude: "40"; latitude: "95"; height: "139"; }
- ListElement{ longitude: "40"; latitude: "96"; height: "131"; }
- ListElement{ longitude: "40"; latitude: "97"; height: "133"; }
- ListElement{ longitude: "40"; latitude: "98"; height: "133"; }
- ListElement{ longitude: "40"; latitude: "99"; height: "129"; }
- ListElement{ longitude: "41"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "41"; latitude: "1"; height: "123"; }
- ListElement{ longitude: "41"; latitude: "2"; height: "123"; }
- ListElement{ longitude: "41"; latitude: "3"; height: "121"; }
- ListElement{ longitude: "41"; latitude: "4"; height: "122"; }
- ListElement{ longitude: "41"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "41"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "41"; latitude: "7"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "41"; latitude: "9"; height: "129"; }
- ListElement{ longitude: "41"; latitude: "10"; height: "128"; }
- ListElement{ longitude: "41"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "41"; latitude: "12"; height: "131"; }
- ListElement{ longitude: "41"; latitude: "13"; height: "120"; }
- ListElement{ longitude: "41"; latitude: "14"; height: "112"; }
- ListElement{ longitude: "41"; latitude: "15"; height: "122"; }
- ListElement{ longitude: "41"; latitude: "16"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "17"; height: "126"; }
- ListElement{ longitude: "41"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "41"; latitude: "20"; height: "126"; }
- ListElement{ longitude: "41"; latitude: "21"; height: "128"; }
- ListElement{ longitude: "41"; latitude: "22"; height: "128"; }
- ListElement{ longitude: "41"; latitude: "23"; height: "126"; }
- ListElement{ longitude: "41"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "41"; latitude: "25"; height: "131"; }
- ListElement{ longitude: "41"; latitude: "26"; height: "131"; }
- ListElement{ longitude: "41"; latitude: "27"; height: "129"; }
- ListElement{ longitude: "41"; latitude: "28"; height: "129"; }
- ListElement{ longitude: "41"; latitude: "29"; height: "126"; }
- ListElement{ longitude: "41"; latitude: "30"; height: "124"; }
- ListElement{ longitude: "41"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "41"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "33"; height: "126"; }
- ListElement{ longitude: "41"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "41"; latitude: "35"; height: "123"; }
- ListElement{ longitude: "41"; latitude: "36"; height: "118"; }
- ListElement{ longitude: "41"; latitude: "37"; height: "123"; }
- ListElement{ longitude: "41"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "39"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "40"; height: "124"; }
- ListElement{ longitude: "41"; latitude: "41"; height: "124"; }
- ListElement{ longitude: "41"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "41"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "41"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "41"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "41"; latitude: "47"; height: "119"; }
- ListElement{ longitude: "41"; latitude: "48"; height: "117"; }
- ListElement{ longitude: "41"; latitude: "49"; height: "116"; }
- ListElement{ longitude: "41"; latitude: "50"; height: "117"; }
- ListElement{ longitude: "41"; latitude: "51"; height: "118"; }
- ListElement{ longitude: "41"; latitude: "52"; height: "119"; }
- ListElement{ longitude: "41"; latitude: "53"; height: "120"; }
- ListElement{ longitude: "41"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "41"; latitude: "55"; height: "118"; }
- ListElement{ longitude: "41"; latitude: "56"; height: "120"; }
- ListElement{ longitude: "41"; latitude: "57"; height: "122"; }
- ListElement{ longitude: "41"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "59"; height: "124"; }
- ListElement{ longitude: "41"; latitude: "60"; height: "126"; }
- ListElement{ longitude: "41"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "41"; latitude: "62"; height: "130"; }
- ListElement{ longitude: "41"; latitude: "63"; height: "130"; }
- ListElement{ longitude: "41"; latitude: "64"; height: "135"; }
- ListElement{ longitude: "41"; latitude: "65"; height: "135"; }
- ListElement{ longitude: "41"; latitude: "66"; height: "137"; }
- ListElement{ longitude: "41"; latitude: "67"; height: "136"; }
- ListElement{ longitude: "41"; latitude: "68"; height: "135"; }
- ListElement{ longitude: "41"; latitude: "69"; height: "141"; }
- ListElement{ longitude: "41"; latitude: "70"; height: "148"; }
- ListElement{ longitude: "41"; latitude: "71"; height: "159"; }
- ListElement{ longitude: "41"; latitude: "72"; height: "160"; }
- ListElement{ longitude: "41"; latitude: "73"; height: "160"; }
- ListElement{ longitude: "41"; latitude: "74"; height: "148"; }
- ListElement{ longitude: "41"; latitude: "75"; height: "122"; }
- ListElement{ longitude: "41"; latitude: "76"; height: "75"; }
- ListElement{ longitude: "41"; latitude: "77"; height: "4"; }
- ListElement{ longitude: "41"; latitude: "78"; height: "50"; }
- ListElement{ longitude: "41"; latitude: "79"; height: "50"; }
- ListElement{ longitude: "41"; latitude: "80"; height: "46"; }
- ListElement{ longitude: "41"; latitude: "81"; height: "3"; }
- ListElement{ longitude: "41"; latitude: "82"; height: "1"; }
- ListElement{ longitude: "41"; latitude: "83"; height: "1"; }
- ListElement{ longitude: "41"; latitude: "84"; height: "19"; }
- ListElement{ longitude: "41"; latitude: "85"; height: "16"; }
- ListElement{ longitude: "41"; latitude: "86"; height: "1"; }
- ListElement{ longitude: "41"; latitude: "87"; height: "4"; }
- ListElement{ longitude: "41"; latitude: "88"; height: "30"; }
- ListElement{ longitude: "41"; latitude: "89"; height: "18"; }
- ListElement{ longitude: "41"; latitude: "90"; height: "19"; }
- ListElement{ longitude: "41"; latitude: "91"; height: "40"; }
- ListElement{ longitude: "41"; latitude: "92"; height: "64"; }
- ListElement{ longitude: "41"; latitude: "93"; height: "80"; }
- ListElement{ longitude: "41"; latitude: "94"; height: "102"; }
- ListElement{ longitude: "41"; latitude: "95"; height: "125"; }
- ListElement{ longitude: "41"; latitude: "96"; height: "143"; }
- ListElement{ longitude: "41"; latitude: "97"; height: "138"; }
- ListElement{ longitude: "41"; latitude: "98"; height: "131"; }
- ListElement{ longitude: "41"; latitude: "99"; height: "130"; }
- ListElement{ longitude: "42"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "42"; latitude: "1"; height: "124"; }
- ListElement{ longitude: "42"; latitude: "2"; height: "124"; }
- ListElement{ longitude: "42"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "4"; height: "121"; }
- ListElement{ longitude: "42"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "42"; latitude: "6"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "7"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "8"; height: "129"; }
- ListElement{ longitude: "42"; latitude: "9"; height: "128"; }
- ListElement{ longitude: "42"; latitude: "10"; height: "128"; }
- ListElement{ longitude: "42"; latitude: "11"; height: "130"; }
- ListElement{ longitude: "42"; latitude: "12"; height: "131"; }
- ListElement{ longitude: "42"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "14"; height: "120"; }
- ListElement{ longitude: "42"; latitude: "15"; height: "122"; }
- ListElement{ longitude: "42"; latitude: "16"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "17"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "42"; latitude: "20"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "21"; height: "128"; }
- ListElement{ longitude: "42"; latitude: "22"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "23"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "42"; latitude: "25"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "42"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "42"; latitude: "28"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "29"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "30"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "42"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "33"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "35"; height: "127"; }
- ListElement{ longitude: "42"; latitude: "36"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "37"; height: "120"; }
- ListElement{ longitude: "42"; latitude: "38"; height: "122"; }
- ListElement{ longitude: "42"; latitude: "39"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "42"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "42"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "42"; latitude: "47"; height: "119"; }
- ListElement{ longitude: "42"; latitude: "48"; height: "117"; }
- ListElement{ longitude: "42"; latitude: "49"; height: "116"; }
- ListElement{ longitude: "42"; latitude: "50"; height: "117"; }
- ListElement{ longitude: "42"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "42"; latitude: "52"; height: "122"; }
- ListElement{ longitude: "42"; latitude: "53"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "54"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "55"; height: "121"; }
- ListElement{ longitude: "42"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "42"; latitude: "57"; height: "124"; }
- ListElement{ longitude: "42"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "59"; height: "124"; }
- ListElement{ longitude: "42"; latitude: "60"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "61"; height: "125"; }
- ListElement{ longitude: "42"; latitude: "62"; height: "129"; }
- ListElement{ longitude: "42"; latitude: "63"; height: "132"; }
- ListElement{ longitude: "42"; latitude: "64"; height: "137"; }
- ListElement{ longitude: "42"; latitude: "65"; height: "137"; }
- ListElement{ longitude: "42"; latitude: "66"; height: "139"; }
- ListElement{ longitude: "42"; latitude: "67"; height: "135"; }
- ListElement{ longitude: "42"; latitude: "68"; height: "133"; }
- ListElement{ longitude: "42"; latitude: "69"; height: "132"; }
- ListElement{ longitude: "42"; latitude: "70"; height: "141"; }
- ListElement{ longitude: "42"; latitude: "71"; height: "160"; }
- ListElement{ longitude: "42"; latitude: "72"; height: "156"; }
- ListElement{ longitude: "42"; latitude: "73"; height: "159"; }
- ListElement{ longitude: "42"; latitude: "74"; height: "143"; }
- ListElement{ longitude: "42"; latitude: "75"; height: "126"; }
- ListElement{ longitude: "42"; latitude: "76"; height: "72"; }
- ListElement{ longitude: "42"; latitude: "77"; height: "1"; }
- ListElement{ longitude: "42"; latitude: "78"; height: "1"; }
- ListElement{ longitude: "42"; latitude: "79"; height: "1"; }
- ListElement{ longitude: "42"; latitude: "80"; height: "17"; }
- ListElement{ longitude: "42"; latitude: "81"; height: "12"; }
- ListElement{ longitude: "42"; latitude: "82"; height: "1"; }
- ListElement{ longitude: "42"; latitude: "83"; height: "2"; }
- ListElement{ longitude: "42"; latitude: "84"; height: "1"; }
- ListElement{ longitude: "42"; latitude: "85"; height: "1"; }
- ListElement{ longitude: "42"; latitude: "86"; height: "20"; }
- ListElement{ longitude: "42"; latitude: "87"; height: "7"; }
- ListElement{ longitude: "42"; latitude: "88"; height: "20"; }
- ListElement{ longitude: "42"; latitude: "89"; height: "1"; }
- ListElement{ longitude: "42"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "42"; latitude: "91"; height: "34"; }
- ListElement{ longitude: "42"; latitude: "92"; height: "55"; }
- ListElement{ longitude: "42"; latitude: "93"; height: "74"; }
- ListElement{ longitude: "42"; latitude: "94"; height: "91"; }
- ListElement{ longitude: "42"; latitude: "95"; height: "133"; }
- ListElement{ longitude: "42"; latitude: "96"; height: "145"; }
- ListElement{ longitude: "42"; latitude: "97"; height: "139"; }
- ListElement{ longitude: "42"; latitude: "98"; height: "133"; }
- ListElement{ longitude: "42"; latitude: "99"; height: "128"; }
- ListElement{ longitude: "43"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "43"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "43"; latitude: "2"; height: "124"; }
- ListElement{ longitude: "43"; latitude: "3"; height: "122"; }
- ListElement{ longitude: "43"; latitude: "4"; height: "123"; }
- ListElement{ longitude: "43"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "43"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "43"; latitude: "7"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "8"; height: "131"; }
- ListElement{ longitude: "43"; latitude: "9"; height: "130"; }
- ListElement{ longitude: "43"; latitude: "10"; height: "128"; }
- ListElement{ longitude: "43"; latitude: "11"; height: "128"; }
- ListElement{ longitude: "43"; latitude: "12"; height: "129"; }
- ListElement{ longitude: "43"; latitude: "13"; height: "128"; }
- ListElement{ longitude: "43"; latitude: "14"; height: "124"; }
- ListElement{ longitude: "43"; latitude: "15"; height: "124"; }
- ListElement{ longitude: "43"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "43"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "43"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "20"; height: "126"; }
- ListElement{ longitude: "43"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "43"; latitude: "22"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "23"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "30"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "43"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "43"; latitude: "33"; height: "126"; }
- ListElement{ longitude: "43"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "43"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "43"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "43"; latitude: "37"; height: "120"; }
- ListElement{ longitude: "43"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "43"; latitude: "39"; height: "122"; }
- ListElement{ longitude: "43"; latitude: "40"; height: "122"; }
- ListElement{ longitude: "43"; latitude: "41"; height: "123"; }
- ListElement{ longitude: "43"; latitude: "42"; height: "124"; }
- ListElement{ longitude: "43"; latitude: "43"; height: "125"; }
- ListElement{ longitude: "43"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "43"; latitude: "45"; height: "124"; }
- ListElement{ longitude: "43"; latitude: "46"; height: "120"; }
- ListElement{ longitude: "43"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "43"; latitude: "48"; height: "118"; }
- ListElement{ longitude: "43"; latitude: "49"; height: "117"; }
- ListElement{ longitude: "43"; latitude: "50"; height: "117"; }
- ListElement{ longitude: "43"; latitude: "51"; height: "119"; }
- ListElement{ longitude: "43"; latitude: "52"; height: "123"; }
- ListElement{ longitude: "43"; latitude: "53"; height: "126"; }
- ListElement{ longitude: "43"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "43"; latitude: "55"; height: "123"; }
- ListElement{ longitude: "43"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "43"; latitude: "57"; height: "122"; }
- ListElement{ longitude: "43"; latitude: "58"; height: "125"; }
- ListElement{ longitude: "43"; latitude: "59"; height: "125"; }
- ListElement{ longitude: "43"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "43"; latitude: "61"; height: "124"; }
- ListElement{ longitude: "43"; latitude: "62"; height: "126"; }
- ListElement{ longitude: "43"; latitude: "63"; height: "131"; }
- ListElement{ longitude: "43"; latitude: "64"; height: "135"; }
- ListElement{ longitude: "43"; latitude: "65"; height: "139"; }
- ListElement{ longitude: "43"; latitude: "66"; height: "140"; }
- ListElement{ longitude: "43"; latitude: "67"; height: "137"; }
- ListElement{ longitude: "43"; latitude: "68"; height: "139"; }
- ListElement{ longitude: "43"; latitude: "69"; height: "138"; }
- ListElement{ longitude: "43"; latitude: "70"; height: "145"; }
- ListElement{ longitude: "43"; latitude: "71"; height: "162"; }
- ListElement{ longitude: "43"; latitude: "72"; height: "154"; }
- ListElement{ longitude: "43"; latitude: "73"; height: "153"; }
- ListElement{ longitude: "43"; latitude: "74"; height: "136"; }
- ListElement{ longitude: "43"; latitude: "75"; height: "132"; }
- ListElement{ longitude: "43"; latitude: "76"; height: "101"; }
- ListElement{ longitude: "43"; latitude: "77"; height: "32"; }
- ListElement{ longitude: "43"; latitude: "78"; height: "1"; }
- ListElement{ longitude: "43"; latitude: "79"; height: "1"; }
- ListElement{ longitude: "43"; latitude: "80"; height: "23"; }
- ListElement{ longitude: "43"; latitude: "81"; height: "51"; }
- ListElement{ longitude: "43"; latitude: "82"; height: "50"; }
- ListElement{ longitude: "43"; latitude: "83"; height: "65"; }
- ListElement{ longitude: "43"; latitude: "84"; height: "30"; }
- ListElement{ longitude: "43"; latitude: "85"; height: "16"; }
- ListElement{ longitude: "43"; latitude: "86"; height: "1"; }
- ListElement{ longitude: "43"; latitude: "87"; height: "1"; }
- ListElement{ longitude: "43"; latitude: "88"; height: "8"; }
- ListElement{ longitude: "43"; latitude: "89"; height: "2"; }
- ListElement{ longitude: "43"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "43"; latitude: "91"; height: "22"; }
- ListElement{ longitude: "43"; latitude: "92"; height: "42"; }
- ListElement{ longitude: "43"; latitude: "93"; height: "71"; }
- ListElement{ longitude: "43"; latitude: "94"; height: "86"; }
- ListElement{ longitude: "43"; latitude: "95"; height: "109"; }
- ListElement{ longitude: "43"; latitude: "96"; height: "139"; }
- ListElement{ longitude: "43"; latitude: "97"; height: "140"; }
- ListElement{ longitude: "43"; latitude: "98"; height: "131"; }
- ListElement{ longitude: "43"; latitude: "99"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "44"; latitude: "1"; height: "123"; }
- ListElement{ longitude: "44"; latitude: "2"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "3"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "4"; height: "122"; }
- ListElement{ longitude: "44"; latitude: "5"; height: "123"; }
- ListElement{ longitude: "44"; latitude: "6"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "8"; height: "129"; }
- ListElement{ longitude: "44"; latitude: "9"; height: "130"; }
- ListElement{ longitude: "44"; latitude: "10"; height: "128"; }
- ListElement{ longitude: "44"; latitude: "11"; height: "129"; }
- ListElement{ longitude: "44"; latitude: "12"; height: "129"; }
- ListElement{ longitude: "44"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "14"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "15"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "16"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "17"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "20"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "21"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "22"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "23"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "30"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "44"; latitude: "33"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "38"; height: "127"; }
- ListElement{ longitude: "44"; latitude: "39"; height: "121"; }
- ListElement{ longitude: "44"; latitude: "40"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "41"; height: "123"; }
- ListElement{ longitude: "44"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "44"; latitude: "45"; height: "122"; }
- ListElement{ longitude: "44"; latitude: "46"; height: "120"; }
- ListElement{ longitude: "44"; latitude: "47"; height: "122"; }
- ListElement{ longitude: "44"; latitude: "48"; height: "121"; }
- ListElement{ longitude: "44"; latitude: "49"; height: "118"; }
- ListElement{ longitude: "44"; latitude: "50"; height: "118"; }
- ListElement{ longitude: "44"; latitude: "51"; height: "121"; }
- ListElement{ longitude: "44"; latitude: "52"; height: "121"; }
- ListElement{ longitude: "44"; latitude: "53"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "55"; height: "122"; }
- ListElement{ longitude: "44"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "44"; latitude: "57"; height: "122"; }
- ListElement{ longitude: "44"; latitude: "58"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "59"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "60"; height: "124"; }
- ListElement{ longitude: "44"; latitude: "61"; height: "122"; }
- ListElement{ longitude: "44"; latitude: "62"; height: "125"; }
- ListElement{ longitude: "44"; latitude: "63"; height: "129"; }
- ListElement{ longitude: "44"; latitude: "64"; height: "134"; }
- ListElement{ longitude: "44"; latitude: "65"; height: "139"; }
- ListElement{ longitude: "44"; latitude: "66"; height: "139"; }
- ListElement{ longitude: "44"; latitude: "67"; height: "138"; }
- ListElement{ longitude: "44"; latitude: "68"; height: "131"; }
- ListElement{ longitude: "44"; latitude: "69"; height: "130"; }
- ListElement{ longitude: "44"; latitude: "70"; height: "133"; }
- ListElement{ longitude: "44"; latitude: "71"; height: "157"; }
- ListElement{ longitude: "44"; latitude: "72"; height: "153"; }
- ListElement{ longitude: "44"; latitude: "73"; height: "148"; }
- ListElement{ longitude: "44"; latitude: "74"; height: "123"; }
- ListElement{ longitude: "44"; latitude: "75"; height: "108"; }
- ListElement{ longitude: "44"; latitude: "76"; height: "85"; }
- ListElement{ longitude: "44"; latitude: "77"; height: "19"; }
- ListElement{ longitude: "44"; latitude: "78"; height: "1"; }
- ListElement{ longitude: "44"; latitude: "79"; height: "48"; }
- ListElement{ longitude: "44"; latitude: "80"; height: "102"; }
- ListElement{ longitude: "44"; latitude: "81"; height: "112"; }
- ListElement{ longitude: "44"; latitude: "82"; height: "99"; }
- ListElement{ longitude: "44"; latitude: "83"; height: "90"; }
- ListElement{ longitude: "44"; latitude: "84"; height: "71"; }
- ListElement{ longitude: "44"; latitude: "85"; height: "26"; }
- ListElement{ longitude: "44"; latitude: "86"; height: "14"; }
- ListElement{ longitude: "44"; latitude: "87"; height: "1"; }
- ListElement{ longitude: "44"; latitude: "88"; height: "2"; }
- ListElement{ longitude: "44"; latitude: "89"; height: "5"; }
- ListElement{ longitude: "44"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "44"; latitude: "91"; height: "8"; }
- ListElement{ longitude: "44"; latitude: "92"; height: "51"; }
- ListElement{ longitude: "44"; latitude: "93"; height: "67"; }
- ListElement{ longitude: "44"; latitude: "94"; height: "90"; }
- ListElement{ longitude: "44"; latitude: "95"; height: "102"; }
- ListElement{ longitude: "44"; latitude: "96"; height: "132"; }
- ListElement{ longitude: "44"; latitude: "97"; height: "149"; }
- ListElement{ longitude: "44"; latitude: "98"; height: "145"; }
- ListElement{ longitude: "44"; latitude: "99"; height: "128"; }
- ListElement{ longitude: "45"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "45"; latitude: "1"; height: "121"; }
- ListElement{ longitude: "45"; latitude: "2"; height: "124"; }
- ListElement{ longitude: "45"; latitude: "3"; height: "122"; }
- ListElement{ longitude: "45"; latitude: "4"; height: "122"; }
- ListElement{ longitude: "45"; latitude: "5"; height: "123"; }
- ListElement{ longitude: "45"; latitude: "6"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "7"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "45"; latitude: "9"; height: "129"; }
- ListElement{ longitude: "45"; latitude: "10"; height: "129"; }
- ListElement{ longitude: "45"; latitude: "11"; height: "129"; }
- ListElement{ longitude: "45"; latitude: "12"; height: "130"; }
- ListElement{ longitude: "45"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "14"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "15"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "16"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "17"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "20"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "22"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "23"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "24"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "30"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "45"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "45"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "35"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "36"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "39"; height: "123"; }
- ListElement{ longitude: "45"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "45"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "45"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "45"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "45"; latitude: "45"; height: "120"; }
- ListElement{ longitude: "45"; latitude: "46"; height: "120"; }
- ListElement{ longitude: "45"; latitude: "47"; height: "122"; }
- ListElement{ longitude: "45"; latitude: "48"; height: "121"; }
- ListElement{ longitude: "45"; latitude: "49"; height: "120"; }
- ListElement{ longitude: "45"; latitude: "50"; height: "118"; }
- ListElement{ longitude: "45"; latitude: "51"; height: "121"; }
- ListElement{ longitude: "45"; latitude: "52"; height: "122"; }
- ListElement{ longitude: "45"; latitude: "53"; height: "123"; }
- ListElement{ longitude: "45"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "45"; latitude: "55"; height: "123"; }
- ListElement{ longitude: "45"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "45"; latitude: "57"; height: "123"; }
- ListElement{ longitude: "45"; latitude: "58"; height: "121"; }
- ListElement{ longitude: "45"; latitude: "59"; height: "122"; }
- ListElement{ longitude: "45"; latitude: "60"; height: "120"; }
- ListElement{ longitude: "45"; latitude: "61"; height: "119"; }
- ListElement{ longitude: "45"; latitude: "62"; height: "120"; }
- ListElement{ longitude: "45"; latitude: "63"; height: "123"; }
- ListElement{ longitude: "45"; latitude: "64"; height: "128"; }
- ListElement{ longitude: "45"; latitude: "65"; height: "132"; }
- ListElement{ longitude: "45"; latitude: "66"; height: "133"; }
- ListElement{ longitude: "45"; latitude: "67"; height: "133"; }
- ListElement{ longitude: "45"; latitude: "68"; height: "131"; }
- ListElement{ longitude: "45"; latitude: "69"; height: "128"; }
- ListElement{ longitude: "45"; latitude: "70"; height: "131"; }
- ListElement{ longitude: "45"; latitude: "71"; height: "156"; }
- ListElement{ longitude: "45"; latitude: "72"; height: "148"; }
- ListElement{ longitude: "45"; latitude: "73"; height: "148"; }
- ListElement{ longitude: "45"; latitude: "74"; height: "117"; }
- ListElement{ longitude: "45"; latitude: "75"; height: "86"; }
- ListElement{ longitude: "45"; latitude: "76"; height: "72"; }
- ListElement{ longitude: "45"; latitude: "77"; height: "42"; }
- ListElement{ longitude: "45"; latitude: "78"; height: "42"; }
- ListElement{ longitude: "45"; latitude: "79"; height: "84"; }
- ListElement{ longitude: "45"; latitude: "80"; height: "116"; }
- ListElement{ longitude: "45"; latitude: "81"; height: "95"; }
- ListElement{ longitude: "45"; latitude: "82"; height: "94"; }
- ListElement{ longitude: "45"; latitude: "83"; height: "84"; }
- ListElement{ longitude: "45"; latitude: "84"; height: "63"; }
- ListElement{ longitude: "45"; latitude: "85"; height: "21"; }
- ListElement{ longitude: "45"; latitude: "86"; height: "18"; }
- ListElement{ longitude: "45"; latitude: "87"; height: "1"; }
- ListElement{ longitude: "45"; latitude: "88"; height: "1"; }
- ListElement{ longitude: "45"; latitude: "89"; height: "2"; }
- ListElement{ longitude: "45"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "45"; latitude: "91"; height: "1"; }
- ListElement{ longitude: "45"; latitude: "92"; height: "39"; }
- ListElement{ longitude: "45"; latitude: "93"; height: "58"; }
- ListElement{ longitude: "45"; latitude: "94"; height: "90"; }
- ListElement{ longitude: "45"; latitude: "95"; height: "103"; }
- ListElement{ longitude: "45"; latitude: "96"; height: "136"; }
- ListElement{ longitude: "45"; latitude: "97"; height: "149"; }
- ListElement{ longitude: "45"; latitude: "98"; height: "140"; }
- ListElement{ longitude: "45"; latitude: "99"; height: "128"; }
- ListElement{ longitude: "46"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "46"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "46"; latitude: "2"; height: "123"; }
- ListElement{ longitude: "46"; latitude: "3"; height: "122"; }
- ListElement{ longitude: "46"; latitude: "4"; height: "122"; }
- ListElement{ longitude: "46"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "46"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "46"; latitude: "7"; height: "125"; }
- ListElement{ longitude: "46"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "9"; height: "129"; }
- ListElement{ longitude: "46"; latitude: "10"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "12"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "13"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "14"; height: "125"; }
- ListElement{ longitude: "46"; latitude: "15"; height: "125"; }
- ListElement{ longitude: "46"; latitude: "16"; height: "125"; }
- ListElement{ longitude: "46"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "46"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "20"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "21"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "22"; height: "128"; }
- ListElement{ longitude: "46"; latitude: "23"; height: "128"; }
- ListElement{ longitude: "46"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "30"; height: "125"; }
- ListElement{ longitude: "46"; latitude: "31"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "32"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "33"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "35"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "36"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "46"; latitude: "38"; height: "128"; }
- ListElement{ longitude: "46"; latitude: "39"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "46"; latitude: "41"; height: "124"; }
- ListElement{ longitude: "46"; latitude: "42"; height: "124"; }
- ListElement{ longitude: "46"; latitude: "43"; height: "124"; }
- ListElement{ longitude: "46"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "45"; height: "124"; }
- ListElement{ longitude: "46"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "46"; latitude: "47"; height: "122"; }
- ListElement{ longitude: "46"; latitude: "48"; height: "119"; }
- ListElement{ longitude: "46"; latitude: "49"; height: "117"; }
- ListElement{ longitude: "46"; latitude: "50"; height: "119"; }
- ListElement{ longitude: "46"; latitude: "51"; height: "119"; }
- ListElement{ longitude: "46"; latitude: "52"; height: "122"; }
- ListElement{ longitude: "46"; latitude: "53"; height: "123"; }
- ListElement{ longitude: "46"; latitude: "54"; height: "123"; }
- ListElement{ longitude: "46"; latitude: "55"; height: "122"; }
- ListElement{ longitude: "46"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "46"; latitude: "57"; height: "121"; }
- ListElement{ longitude: "46"; latitude: "58"; height: "121"; }
- ListElement{ longitude: "46"; latitude: "59"; height: "121"; }
- ListElement{ longitude: "46"; latitude: "60"; height: "118"; }
- ListElement{ longitude: "46"; latitude: "61"; height: "119"; }
- ListElement{ longitude: "46"; latitude: "62"; height: "116"; }
- ListElement{ longitude: "46"; latitude: "63"; height: "118"; }
- ListElement{ longitude: "46"; latitude: "64"; height: "123"; }
- ListElement{ longitude: "46"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "46"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "46"; latitude: "67"; height: "129"; }
- ListElement{ longitude: "46"; latitude: "68"; height: "130"; }
- ListElement{ longitude: "46"; latitude: "69"; height: "131"; }
- ListElement{ longitude: "46"; latitude: "70"; height: "137"; }
- ListElement{ longitude: "46"; latitude: "71"; height: "156"; }
- ListElement{ longitude: "46"; latitude: "72"; height: "151"; }
- ListElement{ longitude: "46"; latitude: "73"; height: "152"; }
- ListElement{ longitude: "46"; latitude: "74"; height: "120"; }
- ListElement{ longitude: "46"; latitude: "75"; height: "85"; }
- ListElement{ longitude: "46"; latitude: "76"; height: "46"; }
- ListElement{ longitude: "46"; latitude: "77"; height: "1"; }
- ListElement{ longitude: "46"; latitude: "78"; height: "1"; }
- ListElement{ longitude: "46"; latitude: "79"; height: "67"; }
- ListElement{ longitude: "46"; latitude: "80"; height: "98"; }
- ListElement{ longitude: "46"; latitude: "81"; height: "68"; }
- ListElement{ longitude: "46"; latitude: "82"; height: "62"; }
- ListElement{ longitude: "46"; latitude: "83"; height: "62"; }
- ListElement{ longitude: "46"; latitude: "84"; height: "77"; }
- ListElement{ longitude: "46"; latitude: "85"; height: "33"; }
- ListElement{ longitude: "46"; latitude: "86"; height: "20"; }
- ListElement{ longitude: "46"; latitude: "87"; height: "1"; }
- ListElement{ longitude: "46"; latitude: "88"; height: "1"; }
- ListElement{ longitude: "46"; latitude: "89"; height: "1"; }
- ListElement{ longitude: "46"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "46"; latitude: "91"; height: "1"; }
- ListElement{ longitude: "46"; latitude: "92"; height: "41"; }
- ListElement{ longitude: "46"; latitude: "93"; height: "70"; }
- ListElement{ longitude: "46"; latitude: "94"; height: "89"; }
- ListElement{ longitude: "46"; latitude: "95"; height: "108"; }
- ListElement{ longitude: "46"; latitude: "96"; height: "129"; }
- ListElement{ longitude: "46"; latitude: "97"; height: "153"; }
- ListElement{ longitude: "46"; latitude: "98"; height: "141"; }
- ListElement{ longitude: "46"; latitude: "99"; height: "129"; }
- ListElement{ longitude: "47"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "47"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "47"; latitude: "2"; height: "123"; }
- ListElement{ longitude: "47"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "47"; latitude: "4"; height: "123"; }
- ListElement{ longitude: "47"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "47"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "47"; latitude: "8"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "9"; height: "128"; }
- ListElement{ longitude: "47"; latitude: "10"; height: "128"; }
- ListElement{ longitude: "47"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "47"; latitude: "12"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "13"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "14"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "15"; height: "126"; }
- ListElement{ longitude: "47"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "47"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "18"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "19"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "20"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "21"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "22"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "23"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "24"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "28"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "47"; latitude: "30"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "31"; height: "126"; }
- ListElement{ longitude: "47"; latitude: "32"; height: "124"; }
- ListElement{ longitude: "47"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "47"; latitude: "34"; height: "123"; }
- ListElement{ longitude: "47"; latitude: "35"; height: "122"; }
- ListElement{ longitude: "47"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "47"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "47"; latitude: "38"; height: "123"; }
- ListElement{ longitude: "47"; latitude: "39"; height: "123"; }
- ListElement{ longitude: "47"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "42"; height: "124"; }
- ListElement{ longitude: "47"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "47"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "47"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "47"; latitude: "47"; height: "120"; }
- ListElement{ longitude: "47"; latitude: "48"; height: "119"; }
- ListElement{ longitude: "47"; latitude: "49"; height: "121"; }
- ListElement{ longitude: "47"; latitude: "50"; height: "122"; }
- ListElement{ longitude: "47"; latitude: "51"; height: "122"; }
- ListElement{ longitude: "47"; latitude: "52"; height: "122"; }
- ListElement{ longitude: "47"; latitude: "53"; height: "120"; }
- ListElement{ longitude: "47"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "47"; latitude: "55"; height: "118"; }
- ListElement{ longitude: "47"; latitude: "56"; height: "117"; }
- ListElement{ longitude: "47"; latitude: "57"; height: "117"; }
- ListElement{ longitude: "47"; latitude: "58"; height: "119"; }
- ListElement{ longitude: "47"; latitude: "59"; height: "119"; }
- ListElement{ longitude: "47"; latitude: "60"; height: "117"; }
- ListElement{ longitude: "47"; latitude: "61"; height: "114"; }
- ListElement{ longitude: "47"; latitude: "62"; height: "111"; }
- ListElement{ longitude: "47"; latitude: "63"; height: "113"; }
- ListElement{ longitude: "47"; latitude: "64"; height: "115"; }
- ListElement{ longitude: "47"; latitude: "65"; height: "118"; }
- ListElement{ longitude: "47"; latitude: "66"; height: "121"; }
- ListElement{ longitude: "47"; latitude: "67"; height: "122"; }
- ListElement{ longitude: "47"; latitude: "68"; height: "125"; }
- ListElement{ longitude: "47"; latitude: "69"; height: "128"; }
- ListElement{ longitude: "47"; latitude: "70"; height: "138"; }
- ListElement{ longitude: "47"; latitude: "71"; height: "161"; }
- ListElement{ longitude: "47"; latitude: "72"; height: "157"; }
- ListElement{ longitude: "47"; latitude: "73"; height: "158"; }
- ListElement{ longitude: "47"; latitude: "74"; height: "120"; }
- ListElement{ longitude: "47"; latitude: "75"; height: "98"; }
- ListElement{ longitude: "47"; latitude: "76"; height: "38"; }
- ListElement{ longitude: "47"; latitude: "77"; height: "4"; }
- ListElement{ longitude: "47"; latitude: "78"; height: "16"; }
- ListElement{ longitude: "47"; latitude: "79"; height: "36"; }
- ListElement{ longitude: "47"; latitude: "80"; height: "103"; }
- ListElement{ longitude: "47"; latitude: "81"; height: "83"; }
- ListElement{ longitude: "47"; latitude: "82"; height: "47"; }
- ListElement{ longitude: "47"; latitude: "83"; height: "72"; }
- ListElement{ longitude: "47"; latitude: "84"; height: "97"; }
- ListElement{ longitude: "47"; latitude: "85"; height: "22"; }
- ListElement{ longitude: "47"; latitude: "86"; height: "18"; }
- ListElement{ longitude: "47"; latitude: "87"; height: "2"; }
- ListElement{ longitude: "47"; latitude: "88"; height: "1"; }
- ListElement{ longitude: "47"; latitude: "89"; height: "1"; }
- ListElement{ longitude: "47"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "47"; latitude: "91"; height: "1"; }
- ListElement{ longitude: "47"; latitude: "92"; height: "43"; }
- ListElement{ longitude: "47"; latitude: "93"; height: "76"; }
- ListElement{ longitude: "47"; latitude: "94"; height: "91"; }
- ListElement{ longitude: "47"; latitude: "95"; height: "106"; }
- ListElement{ longitude: "47"; latitude: "96"; height: "143"; }
- ListElement{ longitude: "47"; latitude: "97"; height: "155"; }
- ListElement{ longitude: "47"; latitude: "98"; height: "141"; }
- ListElement{ longitude: "47"; latitude: "99"; height: "131"; }
- ListElement{ longitude: "48"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "48"; latitude: "1"; height: "123"; }
- ListElement{ longitude: "48"; latitude: "2"; height: "123"; }
- ListElement{ longitude: "48"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "48"; latitude: "4"; height: "119"; }
- ListElement{ longitude: "48"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "48"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "8"; height: "127"; }
- ListElement{ longitude: "48"; latitude: "9"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "11"; height: "127"; }
- ListElement{ longitude: "48"; latitude: "12"; height: "127"; }
- ListElement{ longitude: "48"; latitude: "13"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "14"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "15"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "16"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "17"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "18"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "19"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "20"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "22"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "23"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "24"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "48"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "48"; latitude: "27"; height: "127"; }
- ListElement{ longitude: "48"; latitude: "28"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "29"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "30"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "31"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "37"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "38"; height: "120"; }
- ListElement{ longitude: "48"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "48"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "42"; height: "124"; }
- ListElement{ longitude: "48"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "48"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "46"; height: "119"; }
- ListElement{ longitude: "48"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "48"; latitude: "48"; height: "121"; }
- ListElement{ longitude: "48"; latitude: "49"; height: "122"; }
- ListElement{ longitude: "48"; latitude: "50"; height: "123"; }
- ListElement{ longitude: "48"; latitude: "51"; height: "123"; }
- ListElement{ longitude: "48"; latitude: "52"; height: "122"; }
- ListElement{ longitude: "48"; latitude: "53"; height: "120"; }
- ListElement{ longitude: "48"; latitude: "54"; height: "118"; }
- ListElement{ longitude: "48"; latitude: "55"; height: "115"; }
- ListElement{ longitude: "48"; latitude: "56"; height: "115"; }
- ListElement{ longitude: "48"; latitude: "57"; height: "115"; }
- ListElement{ longitude: "48"; latitude: "58"; height: "116"; }
- ListElement{ longitude: "48"; latitude: "59"; height: "116"; }
- ListElement{ longitude: "48"; latitude: "60"; height: "113"; }
- ListElement{ longitude: "48"; latitude: "61"; height: "113"; }
- ListElement{ longitude: "48"; latitude: "62"; height: "110"; }
- ListElement{ longitude: "48"; latitude: "63"; height: "108"; }
- ListElement{ longitude: "48"; latitude: "64"; height: "109"; }
- ListElement{ longitude: "48"; latitude: "65"; height: "115"; }
- ListElement{ longitude: "48"; latitude: "66"; height: "116"; }
- ListElement{ longitude: "48"; latitude: "67"; height: "118"; }
- ListElement{ longitude: "48"; latitude: "68"; height: "121"; }
- ListElement{ longitude: "48"; latitude: "69"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "70"; height: "120"; }
- ListElement{ longitude: "48"; latitude: "71"; height: "145"; }
- ListElement{ longitude: "48"; latitude: "72"; height: "154"; }
- ListElement{ longitude: "48"; latitude: "73"; height: "153"; }
- ListElement{ longitude: "48"; latitude: "74"; height: "125"; }
- ListElement{ longitude: "48"; latitude: "75"; height: "106"; }
- ListElement{ longitude: "48"; latitude: "76"; height: "52"; }
- ListElement{ longitude: "48"; latitude: "77"; height: "6"; }
- ListElement{ longitude: "48"; latitude: "78"; height: "6"; }
- ListElement{ longitude: "48"; latitude: "79"; height: "1"; }
- ListElement{ longitude: "48"; latitude: "80"; height: "67"; }
- ListElement{ longitude: "48"; latitude: "81"; height: "81"; }
- ListElement{ longitude: "48"; latitude: "82"; height: "57"; }
- ListElement{ longitude: "48"; latitude: "83"; height: "93"; }
- ListElement{ longitude: "48"; latitude: "84"; height: "58"; }
- ListElement{ longitude: "48"; latitude: "85"; height: "16"; }
- ListElement{ longitude: "48"; latitude: "86"; height: "1"; }
- ListElement{ longitude: "48"; latitude: "87"; height: "1"; }
- ListElement{ longitude: "48"; latitude: "88"; height: "2"; }
- ListElement{ longitude: "48"; latitude: "89"; height: "1"; }
- ListElement{ longitude: "48"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "48"; latitude: "91"; height: "1"; }
- ListElement{ longitude: "48"; latitude: "92"; height: "45"; }
- ListElement{ longitude: "48"; latitude: "93"; height: "80"; }
- ListElement{ longitude: "48"; latitude: "94"; height: "91"; }
- ListElement{ longitude: "48"; latitude: "95"; height: "97"; }
- ListElement{ longitude: "48"; latitude: "96"; height: "136"; }
- ListElement{ longitude: "48"; latitude: "97"; height: "148"; }
- ListElement{ longitude: "48"; latitude: "98"; height: "140"; }
- ListElement{ longitude: "48"; latitude: "99"; height: "131"; }
- ListElement{ longitude: "49"; latitude: "0"; height: "123"; }
- ListElement{ longitude: "49"; latitude: "1"; height: "123"; }
- ListElement{ longitude: "49"; latitude: "2"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "49"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "49"; latitude: "5"; height: "119"; }
- ListElement{ longitude: "49"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "9"; height: "129"; }
- ListElement{ longitude: "49"; latitude: "10"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "49"; latitude: "12"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "13"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "14"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "15"; height: "126"; }
- ListElement{ longitude: "49"; latitude: "16"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "17"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "18"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "19"; height: "123"; }
- ListElement{ longitude: "49"; latitude: "20"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "21"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "22"; height: "123"; }
- ListElement{ longitude: "49"; latitude: "23"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "24"; height: "126"; }
- ListElement{ longitude: "49"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "49"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "49"; latitude: "27"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "28"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "29"; height: "121"; }
- ListElement{ longitude: "49"; latitude: "30"; height: "123"; }
- ListElement{ longitude: "49"; latitude: "31"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "33"; height: "123"; }
- ListElement{ longitude: "49"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "49"; latitude: "37"; height: "122"; }
- ListElement{ longitude: "49"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "49"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "42"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "43"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "49"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "49"; latitude: "47"; height: "118"; }
- ListElement{ longitude: "49"; latitude: "48"; height: "118"; }
- ListElement{ longitude: "49"; latitude: "49"; height: "121"; }
- ListElement{ longitude: "49"; latitude: "50"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "51"; height: "125"; }
- ListElement{ longitude: "49"; latitude: "52"; height: "120"; }
- ListElement{ longitude: "49"; latitude: "53"; height: "117"; }
- ListElement{ longitude: "49"; latitude: "54"; height: "116"; }
- ListElement{ longitude: "49"; latitude: "55"; height: "111"; }
- ListElement{ longitude: "49"; latitude: "56"; height: "110"; }
- ListElement{ longitude: "49"; latitude: "57"; height: "108"; }
- ListElement{ longitude: "49"; latitude: "58"; height: "112"; }
- ListElement{ longitude: "49"; latitude: "59"; height: "113"; }
- ListElement{ longitude: "49"; latitude: "60"; height: "113"; }
- ListElement{ longitude: "49"; latitude: "61"; height: "110"; }
- ListElement{ longitude: "49"; latitude: "62"; height: "107"; }
- ListElement{ longitude: "49"; latitude: "63"; height: "108"; }
- ListElement{ longitude: "49"; latitude: "64"; height: "107"; }
- ListElement{ longitude: "49"; latitude: "65"; height: "110"; }
- ListElement{ longitude: "49"; latitude: "66"; height: "113"; }
- ListElement{ longitude: "49"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "49"; latitude: "68"; height: "118"; }
- ListElement{ longitude: "49"; latitude: "69"; height: "124"; }
- ListElement{ longitude: "49"; latitude: "70"; height: "130"; }
- ListElement{ longitude: "49"; latitude: "71"; height: "138"; }
- ListElement{ longitude: "49"; latitude: "72"; height: "153"; }
- ListElement{ longitude: "49"; latitude: "73"; height: "156"; }
- ListElement{ longitude: "49"; latitude: "74"; height: "148"; }
- ListElement{ longitude: "49"; latitude: "75"; height: "112"; }
- ListElement{ longitude: "49"; latitude: "76"; height: "83"; }
- ListElement{ longitude: "49"; latitude: "77"; height: "31"; }
- ListElement{ longitude: "49"; latitude: "78"; height: "1"; }
- ListElement{ longitude: "49"; latitude: "79"; height: "9"; }
- ListElement{ longitude: "49"; latitude: "80"; height: "36"; }
- ListElement{ longitude: "49"; latitude: "81"; height: "12"; }
- ListElement{ longitude: "49"; latitude: "82"; height: "15"; }
- ListElement{ longitude: "49"; latitude: "83"; height: "23"; }
- ListElement{ longitude: "49"; latitude: "84"; height: "22"; }
- ListElement{ longitude: "49"; latitude: "85"; height: "9"; }
- ListElement{ longitude: "49"; latitude: "86"; height: "1"; }
- ListElement{ longitude: "49"; latitude: "87"; height: "1"; }
- ListElement{ longitude: "49"; latitude: "88"; height: "1"; }
- ListElement{ longitude: "49"; latitude: "89"; height: "1"; }
- ListElement{ longitude: "49"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "49"; latitude: "91"; height: "5"; }
- ListElement{ longitude: "49"; latitude: "92"; height: "22"; }
- ListElement{ longitude: "49"; latitude: "93"; height: "64"; }
- ListElement{ longitude: "49"; latitude: "94"; height: "87"; }
- ListElement{ longitude: "49"; latitude: "95"; height: "89"; }
- ListElement{ longitude: "49"; latitude: "96"; height: "131"; }
- ListElement{ longitude: "49"; latitude: "97"; height: "139"; }
- ListElement{ longitude: "49"; latitude: "98"; height: "136"; }
- ListElement{ longitude: "49"; latitude: "99"; height: "129"; }
- ListElement{ longitude: "50"; latitude: "0"; height: "123"; }
- ListElement{ longitude: "50"; latitude: "1"; height: "123"; }
- ListElement{ longitude: "50"; latitude: "2"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "3"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "4"; height: "123"; }
- ListElement{ longitude: "50"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "50"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "50"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "50"; latitude: "9"; height: "127"; }
- ListElement{ longitude: "50"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "50"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "50"; latitude: "12"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "13"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "14"; height: "120"; }
- ListElement{ longitude: "50"; latitude: "15"; height: "118"; }
- ListElement{ longitude: "50"; latitude: "16"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "17"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "18"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "19"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "20"; height: "119"; }
- ListElement{ longitude: "50"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "23"; height: "123"; }
- ListElement{ longitude: "50"; latitude: "24"; height: "126"; }
- ListElement{ longitude: "50"; latitude: "25"; height: "127"; }
- ListElement{ longitude: "50"; latitude: "26"; height: "127"; }
- ListElement{ longitude: "50"; latitude: "27"; height: "126"; }
- ListElement{ longitude: "50"; latitude: "28"; height: "125"; }
- ListElement{ longitude: "50"; latitude: "29"; height: "120"; }
- ListElement{ longitude: "50"; latitude: "30"; height: "123"; }
- ListElement{ longitude: "50"; latitude: "31"; height: "125"; }
- ListElement{ longitude: "50"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "50"; latitude: "33"; height: "119"; }
- ListElement{ longitude: "50"; latitude: "34"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "35"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "37"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "38"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "39"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "40"; height: "120"; }
- ListElement{ longitude: "50"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "50"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "50"; latitude: "43"; height: "124"; }
- ListElement{ longitude: "50"; latitude: "44"; height: "124"; }
- ListElement{ longitude: "50"; latitude: "45"; height: "126"; }
- ListElement{ longitude: "50"; latitude: "46"; height: "124"; }
- ListElement{ longitude: "50"; latitude: "47"; height: "123"; }
- ListElement{ longitude: "50"; latitude: "48"; height: "122"; }
- ListElement{ longitude: "50"; latitude: "49"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "50"; height: "123"; }
- ListElement{ longitude: "50"; latitude: "51"; height: "123"; }
- ListElement{ longitude: "50"; latitude: "52"; height: "121"; }
- ListElement{ longitude: "50"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "50"; latitude: "54"; height: "112"; }
- ListElement{ longitude: "50"; latitude: "55"; height: "107"; }
- ListElement{ longitude: "50"; latitude: "56"; height: "108"; }
- ListElement{ longitude: "50"; latitude: "57"; height: "106"; }
- ListElement{ longitude: "50"; latitude: "58"; height: "107"; }
- ListElement{ longitude: "50"; latitude: "59"; height: "111"; }
- ListElement{ longitude: "50"; latitude: "60"; height: "110"; }
- ListElement{ longitude: "50"; latitude: "61"; height: "111"; }
- ListElement{ longitude: "50"; latitude: "62"; height: "108"; }
- ListElement{ longitude: "50"; latitude: "63"; height: "108"; }
- ListElement{ longitude: "50"; latitude: "64"; height: "108"; }
- ListElement{ longitude: "50"; latitude: "65"; height: "111"; }
- ListElement{ longitude: "50"; latitude: "66"; height: "111"; }
- ListElement{ longitude: "50"; latitude: "67"; height: "114"; }
- ListElement{ longitude: "50"; latitude: "68"; height: "117"; }
- ListElement{ longitude: "50"; latitude: "69"; height: "120"; }
- ListElement{ longitude: "50"; latitude: "70"; height: "124"; }
- ListElement{ longitude: "50"; latitude: "71"; height: "124"; }
- ListElement{ longitude: "50"; latitude: "72"; height: "141"; }
- ListElement{ longitude: "50"; latitude: "73"; height: "150"; }
- ListElement{ longitude: "50"; latitude: "74"; height: "153"; }
- ListElement{ longitude: "50"; latitude: "75"; height: "118"; }
- ListElement{ longitude: "50"; latitude: "76"; height: "85"; }
- ListElement{ longitude: "50"; latitude: "77"; height: "65"; }
- ListElement{ longitude: "50"; latitude: "78"; height: "19"; }
- ListElement{ longitude: "50"; latitude: "79"; height: "18"; }
- ListElement{ longitude: "50"; latitude: "80"; height: "28"; }
- ListElement{ longitude: "50"; latitude: "81"; height: "3"; }
- ListElement{ longitude: "50"; latitude: "82"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "83"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "84"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "85"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "86"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "87"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "88"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "89"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "90"; height: "1"; }
- ListElement{ longitude: "50"; latitude: "91"; height: "19"; }
- ListElement{ longitude: "50"; latitude: "92"; height: "10"; }
- ListElement{ longitude: "50"; latitude: "93"; height: "59"; }
- ListElement{ longitude: "50"; latitude: "94"; height: "72"; }
- ListElement{ longitude: "50"; latitude: "95"; height: "95"; }
- ListElement{ longitude: "50"; latitude: "96"; height: "127"; }
- ListElement{ longitude: "50"; latitude: "97"; height: "129"; }
- ListElement{ longitude: "50"; latitude: "98"; height: "132"; }
- ListElement{ longitude: "50"; latitude: "99"; height: "126"; }
- ListElement{ longitude: "51"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "1"; height: "124"; }
- ListElement{ longitude: "51"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "4"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "51"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "51"; latitude: "11"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "12"; height: "121"; }
- ListElement{ longitude: "51"; latitude: "13"; height: "120"; }
- ListElement{ longitude: "51"; latitude: "14"; height: "119"; }
- ListElement{ longitude: "51"; latitude: "15"; height: "119"; }
- ListElement{ longitude: "51"; latitude: "16"; height: "120"; }
- ListElement{ longitude: "51"; latitude: "17"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "18"; height: "121"; }
- ListElement{ longitude: "51"; latitude: "19"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "20"; height: "118"; }
- ListElement{ longitude: "51"; latitude: "21"; height: "120"; }
- ListElement{ longitude: "51"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "51"; latitude: "23"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "24"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "25"; height: "126"; }
- ListElement{ longitude: "51"; latitude: "26"; height: "126"; }
- ListElement{ longitude: "51"; latitude: "27"; height: "124"; }
- ListElement{ longitude: "51"; latitude: "28"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "29"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "30"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "31"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "51"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "37"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "38"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "39"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "40"; height: "124"; }
- ListElement{ longitude: "51"; latitude: "41"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "42"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "51"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "51"; latitude: "45"; height: "126"; }
- ListElement{ longitude: "51"; latitude: "46"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "47"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "48"; height: "119"; }
- ListElement{ longitude: "51"; latitude: "49"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "50"; height: "123"; }
- ListElement{ longitude: "51"; latitude: "51"; height: "124"; }
- ListElement{ longitude: "51"; latitude: "52"; height: "120"; }
- ListElement{ longitude: "51"; latitude: "53"; height: "117"; }
- ListElement{ longitude: "51"; latitude: "54"; height: "111"; }
- ListElement{ longitude: "51"; latitude: "55"; height: "105"; }
- ListElement{ longitude: "51"; latitude: "56"; height: "102"; }
- ListElement{ longitude: "51"; latitude: "57"; height: "102"; }
- ListElement{ longitude: "51"; latitude: "58"; height: "105"; }
- ListElement{ longitude: "51"; latitude: "59"; height: "111"; }
- ListElement{ longitude: "51"; latitude: "60"; height: "111"; }
- ListElement{ longitude: "51"; latitude: "61"; height: "113"; }
- ListElement{ longitude: "51"; latitude: "62"; height: "109"; }
- ListElement{ longitude: "51"; latitude: "63"; height: "109"; }
- ListElement{ longitude: "51"; latitude: "64"; height: "109"; }
- ListElement{ longitude: "51"; latitude: "65"; height: "110"; }
- ListElement{ longitude: "51"; latitude: "66"; height: "110"; }
- ListElement{ longitude: "51"; latitude: "67"; height: "115"; }
- ListElement{ longitude: "51"; latitude: "68"; height: "116"; }
- ListElement{ longitude: "51"; latitude: "69"; height: "118"; }
- ListElement{ longitude: "51"; latitude: "70"; height: "122"; }
- ListElement{ longitude: "51"; latitude: "71"; height: "121"; }
- ListElement{ longitude: "51"; latitude: "72"; height: "133"; }
- ListElement{ longitude: "51"; latitude: "73"; height: "151"; }
- ListElement{ longitude: "51"; latitude: "74"; height: "153"; }
- ListElement{ longitude: "51"; latitude: "75"; height: "138"; }
- ListElement{ longitude: "51"; latitude: "76"; height: "98"; }
- ListElement{ longitude: "51"; latitude: "77"; height: "64"; }
- ListElement{ longitude: "51"; latitude: "78"; height: "32"; }
- ListElement{ longitude: "51"; latitude: "79"; height: "1"; }
- ListElement{ longitude: "51"; latitude: "80"; height: "1"; }
- ListElement{ longitude: "51"; latitude: "81"; height: "1"; }
- ListElement{ longitude: "51"; latitude: "82"; height: "1"; }
- ListElement{ longitude: "51"; latitude: "83"; height: "6"; }
- ListElement{ longitude: "51"; latitude: "84"; height: "8"; }
- ListElement{ longitude: "51"; latitude: "85"; height: "1"; }
- ListElement{ longitude: "51"; latitude: "86"; height: "1"; }
- ListElement{ longitude: "51"; latitude: "87"; height: "1"; }
- ListElement{ longitude: "51"; latitude: "88"; height: "1"; }
- ListElement{ longitude: "51"; latitude: "89"; height: "13"; }
- ListElement{ longitude: "51"; latitude: "90"; height: "15"; }
- ListElement{ longitude: "51"; latitude: "91"; height: "22"; }
- ListElement{ longitude: "51"; latitude: "92"; height: "33"; }
- ListElement{ longitude: "51"; latitude: "93"; height: "67"; }
- ListElement{ longitude: "51"; latitude: "94"; height: "69"; }
- ListElement{ longitude: "51"; latitude: "95"; height: "110"; }
- ListElement{ longitude: "51"; latitude: "96"; height: "125"; }
- ListElement{ longitude: "51"; latitude: "97"; height: "127"; }
- ListElement{ longitude: "51"; latitude: "98"; height: "131"; }
- ListElement{ longitude: "51"; latitude: "99"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "0"; height: "121"; }
- ListElement{ longitude: "52"; latitude: "1"; height: "119"; }
- ListElement{ longitude: "52"; latitude: "2"; height: "117"; }
- ListElement{ longitude: "52"; latitude: "3"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "4"; height: "123"; }
- ListElement{ longitude: "52"; latitude: "5"; height: "126"; }
- ListElement{ longitude: "52"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "52"; latitude: "8"; height: "127"; }
- ListElement{ longitude: "52"; latitude: "9"; height: "127"; }
- ListElement{ longitude: "52"; latitude: "10"; height: "127"; }
- ListElement{ longitude: "52"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "12"; height: "123"; }
- ListElement{ longitude: "52"; latitude: "13"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "14"; height: "121"; }
- ListElement{ longitude: "52"; latitude: "15"; height: "121"; }
- ListElement{ longitude: "52"; latitude: "16"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "17"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "18"; height: "120"; }
- ListElement{ longitude: "52"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "52"; latitude: "20"; height: "121"; }
- ListElement{ longitude: "52"; latitude: "21"; height: "120"; }
- ListElement{ longitude: "52"; latitude: "22"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "23"; height: "121"; }
- ListElement{ longitude: "52"; latitude: "24"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "25"; height: "126"; }
- ListElement{ longitude: "52"; latitude: "26"; height: "126"; }
- ListElement{ longitude: "52"; latitude: "27"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "28"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "29"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "52"; latitude: "31"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "37"; height: "121"; }
- ListElement{ longitude: "52"; latitude: "38"; height: "123"; }
- ListElement{ longitude: "52"; latitude: "39"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "40"; height: "122"; }
- ListElement{ longitude: "52"; latitude: "41"; height: "120"; }
- ListElement{ longitude: "52"; latitude: "42"; height: "125"; }
- ListElement{ longitude: "52"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "52"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "52"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "52"; latitude: "46"; height: "126"; }
- ListElement{ longitude: "52"; latitude: "47"; height: "124"; }
- ListElement{ longitude: "52"; latitude: "48"; height: "123"; }
- ListElement{ longitude: "52"; latitude: "49"; height: "124"; }
- ListElement{ longitude: "52"; latitude: "50"; height: "123"; }
- ListElement{ longitude: "52"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "52"; latitude: "52"; height: "119"; }
- ListElement{ longitude: "52"; latitude: "53"; height: "116"; }
- ListElement{ longitude: "52"; latitude: "54"; height: "110"; }
- ListElement{ longitude: "52"; latitude: "55"; height: "106"; }
- ListElement{ longitude: "52"; latitude: "56"; height: "101"; }
- ListElement{ longitude: "52"; latitude: "57"; height: "101"; }
- ListElement{ longitude: "52"; latitude: "58"; height: "104"; }
- ListElement{ longitude: "52"; latitude: "59"; height: "107"; }
- ListElement{ longitude: "52"; latitude: "60"; height: "109"; }
- ListElement{ longitude: "52"; latitude: "61"; height: "112"; }
- ListElement{ longitude: "52"; latitude: "62"; height: "112"; }
- ListElement{ longitude: "52"; latitude: "63"; height: "110"; }
- ListElement{ longitude: "52"; latitude: "64"; height: "110"; }
- ListElement{ longitude: "52"; latitude: "65"; height: "113"; }
- ListElement{ longitude: "52"; latitude: "66"; height: "114"; }
- ListElement{ longitude: "52"; latitude: "67"; height: "116"; }
- ListElement{ longitude: "52"; latitude: "68"; height: "115"; }
- ListElement{ longitude: "52"; latitude: "69"; height: "116"; }
- ListElement{ longitude: "52"; latitude: "70"; height: "117"; }
- ListElement{ longitude: "52"; latitude: "71"; height: "120"; }
- ListElement{ longitude: "52"; latitude: "72"; height: "126"; }
- ListElement{ longitude: "52"; latitude: "73"; height: "146"; }
- ListElement{ longitude: "52"; latitude: "74"; height: "152"; }
- ListElement{ longitude: "52"; latitude: "75"; height: "148"; }
- ListElement{ longitude: "52"; latitude: "76"; height: "117"; }
- ListElement{ longitude: "52"; latitude: "77"; height: "93"; }
- ListElement{ longitude: "52"; latitude: "78"; height: "72"; }
- ListElement{ longitude: "52"; latitude: "79"; height: "50"; }
- ListElement{ longitude: "52"; latitude: "80"; height: "16"; }
- ListElement{ longitude: "52"; latitude: "81"; height: "1"; }
- ListElement{ longitude: "52"; latitude: "82"; height: "3"; }
- ListElement{ longitude: "52"; latitude: "83"; height: "6"; }
- ListElement{ longitude: "52"; latitude: "84"; height: "24"; }
- ListElement{ longitude: "52"; latitude: "85"; height: "1"; }
- ListElement{ longitude: "52"; latitude: "86"; height: "4"; }
- ListElement{ longitude: "52"; latitude: "87"; height: "4"; }
- ListElement{ longitude: "52"; latitude: "88"; height: "7"; }
- ListElement{ longitude: "52"; latitude: "89"; height: "42"; }
- ListElement{ longitude: "52"; latitude: "90"; height: "52"; }
- ListElement{ longitude: "52"; latitude: "91"; height: "47"; }
- ListElement{ longitude: "52"; latitude: "92"; height: "46"; }
- ListElement{ longitude: "52"; latitude: "93"; height: "61"; }
- ListElement{ longitude: "52"; latitude: "94"; height: "73"; }
- ListElement{ longitude: "52"; latitude: "95"; height: "114"; }
- ListElement{ longitude: "52"; latitude: "96"; height: "121"; }
- ListElement{ longitude: "52"; latitude: "97"; height: "127"; }
- ListElement{ longitude: "52"; latitude: "98"; height: "129"; }
- ListElement{ longitude: "52"; latitude: "99"; height: "119"; }
- ListElement{ longitude: "53"; latitude: "0"; height: "119"; }
- ListElement{ longitude: "53"; latitude: "1"; height: "117"; }
- ListElement{ longitude: "53"; latitude: "2"; height: "116"; }
- ListElement{ longitude: "53"; latitude: "3"; height: "119"; }
- ListElement{ longitude: "53"; latitude: "4"; height: "119"; }
- ListElement{ longitude: "53"; latitude: "5"; height: "126"; }
- ListElement{ longitude: "53"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "53"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "53"; latitude: "8"; height: "127"; }
- ListElement{ longitude: "53"; latitude: "9"; height: "127"; }
- ListElement{ longitude: "53"; latitude: "10"; height: "127"; }
- ListElement{ longitude: "53"; latitude: "11"; height: "124"; }
- ListElement{ longitude: "53"; latitude: "12"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "13"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "14"; height: "120"; }
- ListElement{ longitude: "53"; latitude: "15"; height: "120"; }
- ListElement{ longitude: "53"; latitude: "16"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "17"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "18"; height: "120"; }
- ListElement{ longitude: "53"; latitude: "19"; height: "121"; }
- ListElement{ longitude: "53"; latitude: "20"; height: "121"; }
- ListElement{ longitude: "53"; latitude: "21"; height: "120"; }
- ListElement{ longitude: "53"; latitude: "22"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "23"; height: "121"; }
- ListElement{ longitude: "53"; latitude: "24"; height: "124"; }
- ListElement{ longitude: "53"; latitude: "25"; height: "124"; }
- ListElement{ longitude: "53"; latitude: "26"; height: "124"; }
- ListElement{ longitude: "53"; latitude: "27"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "28"; height: "123"; }
- ListElement{ longitude: "53"; latitude: "29"; height: "123"; }
- ListElement{ longitude: "53"; latitude: "30"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "31"; height: "126"; }
- ListElement{ longitude: "53"; latitude: "32"; height: "125"; }
- ListElement{ longitude: "53"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "53"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "53"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "53"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "53"; latitude: "37"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "38"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "39"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "53"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "53"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "53"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "53"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "53"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "53"; latitude: "46"; height: "129"; }
- ListElement{ longitude: "53"; latitude: "47"; height: "127"; }
- ListElement{ longitude: "53"; latitude: "48"; height: "127"; }
- ListElement{ longitude: "53"; latitude: "49"; height: "126"; }
- ListElement{ longitude: "53"; latitude: "50"; height: "122"; }
- ListElement{ longitude: "53"; latitude: "51"; height: "121"; }
- ListElement{ longitude: "53"; latitude: "52"; height: "118"; }
- ListElement{ longitude: "53"; latitude: "53"; height: "114"; }
- ListElement{ longitude: "53"; latitude: "54"; height: "106"; }
- ListElement{ longitude: "53"; latitude: "55"; height: "108"; }
- ListElement{ longitude: "53"; latitude: "56"; height: "105"; }
- ListElement{ longitude: "53"; latitude: "57"; height: "104"; }
- ListElement{ longitude: "53"; latitude: "58"; height: "103"; }
- ListElement{ longitude: "53"; latitude: "59"; height: "107"; }
- ListElement{ longitude: "53"; latitude: "60"; height: "109"; }
- ListElement{ longitude: "53"; latitude: "61"; height: "112"; }
- ListElement{ longitude: "53"; latitude: "62"; height: "111"; }
- ListElement{ longitude: "53"; latitude: "63"; height: "113"; }
- ListElement{ longitude: "53"; latitude: "64"; height: "111"; }
- ListElement{ longitude: "53"; latitude: "65"; height: "113"; }
- ListElement{ longitude: "53"; latitude: "66"; height: "113"; }
- ListElement{ longitude: "53"; latitude: "67"; height: "116"; }
- ListElement{ longitude: "53"; latitude: "68"; height: "116"; }
- ListElement{ longitude: "53"; latitude: "69"; height: "114"; }
- ListElement{ longitude: "53"; latitude: "70"; height: "114"; }
- ListElement{ longitude: "53"; latitude: "71"; height: "112"; }
- ListElement{ longitude: "53"; latitude: "72"; height: "118"; }
- ListElement{ longitude: "53"; latitude: "73"; height: "133"; }
- ListElement{ longitude: "53"; latitude: "74"; height: "150"; }
- ListElement{ longitude: "53"; latitude: "75"; height: "154"; }
- ListElement{ longitude: "53"; latitude: "76"; height: "141"; }
- ListElement{ longitude: "53"; latitude: "77"; height: "103"; }
- ListElement{ longitude: "53"; latitude: "78"; height: "97"; }
- ListElement{ longitude: "53"; latitude: "79"; height: "94"; }
- ListElement{ longitude: "53"; latitude: "80"; height: "54"; }
- ListElement{ longitude: "53"; latitude: "81"; height: "17"; }
- ListElement{ longitude: "53"; latitude: "82"; height: "5"; }
- ListElement{ longitude: "53"; latitude: "83"; height: "4"; }
- ListElement{ longitude: "53"; latitude: "84"; height: "1"; }
- ListElement{ longitude: "53"; latitude: "85"; height: "1"; }
- ListElement{ longitude: "53"; latitude: "86"; height: "19"; }
- ListElement{ longitude: "53"; latitude: "87"; height: "9"; }
- ListElement{ longitude: "53"; latitude: "88"; height: "25"; }
- ListElement{ longitude: "53"; latitude: "89"; height: "40"; }
- ListElement{ longitude: "53"; latitude: "90"; height: "55"; }
- ListElement{ longitude: "53"; latitude: "91"; height: "54"; }
- ListElement{ longitude: "53"; latitude: "92"; height: "53"; }
- ListElement{ longitude: "53"; latitude: "93"; height: "69"; }
- ListElement{ longitude: "53"; latitude: "94"; height: "100"; }
- ListElement{ longitude: "53"; latitude: "95"; height: "112"; }
- ListElement{ longitude: "53"; latitude: "96"; height: "120"; }
- ListElement{ longitude: "53"; latitude: "97"; height: "126"; }
- ListElement{ longitude: "53"; latitude: "98"; height: "125"; }
- ListElement{ longitude: "53"; latitude: "99"; height: "118"; }
- ListElement{ longitude: "54"; latitude: "0"; height: "119"; }
- ListElement{ longitude: "54"; latitude: "1"; height: "118"; }
- ListElement{ longitude: "54"; latitude: "2"; height: "118"; }
- ListElement{ longitude: "54"; latitude: "3"; height: "119"; }
- ListElement{ longitude: "54"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "54"; latitude: "5"; height: "123"; }
- ListElement{ longitude: "54"; latitude: "6"; height: "125"; }
- ListElement{ longitude: "54"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "54"; latitude: "8"; height: "127"; }
- ListElement{ longitude: "54"; latitude: "9"; height: "126"; }
- ListElement{ longitude: "54"; latitude: "10"; height: "127"; }
- ListElement{ longitude: "54"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "54"; latitude: "12"; height: "122"; }
- ListElement{ longitude: "54"; latitude: "13"; height: "122"; }
- ListElement{ longitude: "54"; latitude: "14"; height: "120"; }
- ListElement{ longitude: "54"; latitude: "15"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "16"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "17"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "18"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "19"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "20"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "22"; height: "122"; }
- ListElement{ longitude: "54"; latitude: "23"; height: "122"; }
- ListElement{ longitude: "54"; latitude: "24"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "25"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "26"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "27"; height: "120"; }
- ListElement{ longitude: "54"; latitude: "28"; height: "120"; }
- ListElement{ longitude: "54"; latitude: "29"; height: "120"; }
- ListElement{ longitude: "54"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "31"; height: "123"; }
- ListElement{ longitude: "54"; latitude: "32"; height: "121"; }
- ListElement{ longitude: "54"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "54"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "54"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "54"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "54"; latitude: "37"; height: "125"; }
- ListElement{ longitude: "54"; latitude: "38"; height: "123"; }
- ListElement{ longitude: "54"; latitude: "39"; height: "125"; }
- ListElement{ longitude: "54"; latitude: "40"; height: "124"; }
- ListElement{ longitude: "54"; latitude: "41"; height: "126"; }
- ListElement{ longitude: "54"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "54"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "54"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "54"; latitude: "45"; height: "126"; }
- ListElement{ longitude: "54"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "54"; latitude: "47"; height: "125"; }
- ListElement{ longitude: "54"; latitude: "48"; height: "129"; }
- ListElement{ longitude: "54"; latitude: "49"; height: "127"; }
- ListElement{ longitude: "54"; latitude: "50"; height: "125"; }
- ListElement{ longitude: "54"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "54"; latitude: "52"; height: "118"; }
- ListElement{ longitude: "54"; latitude: "53"; height: "112"; }
- ListElement{ longitude: "54"; latitude: "54"; height: "96"; }
- ListElement{ longitude: "54"; latitude: "55"; height: "107"; }
- ListElement{ longitude: "54"; latitude: "56"; height: "108"; }
- ListElement{ longitude: "54"; latitude: "57"; height: "105"; }
- ListElement{ longitude: "54"; latitude: "58"; height: "105"; }
- ListElement{ longitude: "54"; latitude: "59"; height: "108"; }
- ListElement{ longitude: "54"; latitude: "60"; height: "111"; }
- ListElement{ longitude: "54"; latitude: "61"; height: "111"; }
- ListElement{ longitude: "54"; latitude: "62"; height: "115"; }
- ListElement{ longitude: "54"; latitude: "63"; height: "112"; }
- ListElement{ longitude: "54"; latitude: "64"; height: "112"; }
- ListElement{ longitude: "54"; latitude: "65"; height: "112"; }
- ListElement{ longitude: "54"; latitude: "66"; height: "113"; }
- ListElement{ longitude: "54"; latitude: "67"; height: "113"; }
- ListElement{ longitude: "54"; latitude: "68"; height: "115"; }
- ListElement{ longitude: "54"; latitude: "69"; height: "115"; }
- ListElement{ longitude: "54"; latitude: "70"; height: "112"; }
- ListElement{ longitude: "54"; latitude: "71"; height: "110"; }
- ListElement{ longitude: "54"; latitude: "72"; height: "112"; }
- ListElement{ longitude: "54"; latitude: "73"; height: "119"; }
- ListElement{ longitude: "54"; latitude: "74"; height: "140"; }
- ListElement{ longitude: "54"; latitude: "75"; height: "151"; }
- ListElement{ longitude: "54"; latitude: "76"; height: "150"; }
- ListElement{ longitude: "54"; latitude: "77"; height: "140"; }
- ListElement{ longitude: "54"; latitude: "78"; height: "104"; }
- ListElement{ longitude: "54"; latitude: "79"; height: "102"; }
- ListElement{ longitude: "54"; latitude: "80"; height: "90"; }
- ListElement{ longitude: "54"; latitude: "81"; height: "46"; }
- ListElement{ longitude: "54"; latitude: "82"; height: "37"; }
- ListElement{ longitude: "54"; latitude: "83"; height: "30"; }
- ListElement{ longitude: "54"; latitude: "84"; height: "24"; }
- ListElement{ longitude: "54"; latitude: "85"; height: "16"; }
- ListElement{ longitude: "54"; latitude: "86"; height: "18"; }
- ListElement{ longitude: "54"; latitude: "87"; height: "46"; }
- ListElement{ longitude: "54"; latitude: "88"; height: "26"; }
- ListElement{ longitude: "54"; latitude: "89"; height: "28"; }
- ListElement{ longitude: "54"; latitude: "90"; height: "60"; }
- ListElement{ longitude: "54"; latitude: "91"; height: "51"; }
- ListElement{ longitude: "54"; latitude: "92"; height: "54"; }
- ListElement{ longitude: "54"; latitude: "93"; height: "108"; }
- ListElement{ longitude: "54"; latitude: "94"; height: "131"; }
- ListElement{ longitude: "54"; latitude: "95"; height: "116"; }
- ListElement{ longitude: "54"; latitude: "96"; height: "122"; }
- ListElement{ longitude: "54"; latitude: "97"; height: "126"; }
- ListElement{ longitude: "54"; latitude: "98"; height: "125"; }
- ListElement{ longitude: "54"; latitude: "99"; height: "118"; }
- ListElement{ longitude: "55"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "55"; latitude: "1"; height: "120"; }
- ListElement{ longitude: "55"; latitude: "2"; height: "120"; }
- ListElement{ longitude: "55"; latitude: "3"; height: "121"; }
- ListElement{ longitude: "55"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "55"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "55"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "55"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "55"; latitude: "8"; height: "129"; }
- ListElement{ longitude: "55"; latitude: "9"; height: "129"; }
- ListElement{ longitude: "55"; latitude: "10"; height: "127"; }
- ListElement{ longitude: "55"; latitude: "11"; height: "125"; }
- ListElement{ longitude: "55"; latitude: "12"; height: "123"; }
- ListElement{ longitude: "55"; latitude: "13"; height: "120"; }
- ListElement{ longitude: "55"; latitude: "14"; height: "121"; }
- ListElement{ longitude: "55"; latitude: "15"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "16"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "17"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "18"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "19"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "20"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "21"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "55"; latitude: "23"; height: "120"; }
- ListElement{ longitude: "55"; latitude: "24"; height: "122"; }
- ListElement{ longitude: "55"; latitude: "25"; height: "122"; }
- ListElement{ longitude: "55"; latitude: "26"; height: "120"; }
- ListElement{ longitude: "55"; latitude: "27"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "28"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "29"; height: "119"; }
- ListElement{ longitude: "55"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "55"; latitude: "31"; height: "124"; }
- ListElement{ longitude: "55"; latitude: "32"; height: "116"; }
- ListElement{ longitude: "55"; latitude: "33"; height: "120"; }
- ListElement{ longitude: "55"; latitude: "34"; height: "127"; }
- ListElement{ longitude: "55"; latitude: "35"; height: "124"; }
- ListElement{ longitude: "55"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "55"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "55"; latitude: "38"; height: "123"; }
- ListElement{ longitude: "55"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "55"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "55"; latitude: "41"; height: "127"; }
- ListElement{ longitude: "55"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "55"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "55"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "55"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "55"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "55"; latitude: "47"; height: "125"; }
- ListElement{ longitude: "55"; latitude: "48"; height: "128"; }
- ListElement{ longitude: "55"; latitude: "49"; height: "126"; }
- ListElement{ longitude: "55"; latitude: "50"; height: "126"; }
- ListElement{ longitude: "55"; latitude: "51"; height: "121"; }
- ListElement{ longitude: "55"; latitude: "52"; height: "117"; }
- ListElement{ longitude: "55"; latitude: "53"; height: "114"; }
- ListElement{ longitude: "55"; latitude: "54"; height: "112"; }
- ListElement{ longitude: "55"; latitude: "55"; height: "115"; }
- ListElement{ longitude: "55"; latitude: "56"; height: "113"; }
- ListElement{ longitude: "55"; latitude: "57"; height: "112"; }
- ListElement{ longitude: "55"; latitude: "58"; height: "110"; }
- ListElement{ longitude: "55"; latitude: "59"; height: "110"; }
- ListElement{ longitude: "55"; latitude: "60"; height: "111"; }
- ListElement{ longitude: "55"; latitude: "61"; height: "111"; }
- ListElement{ longitude: "55"; latitude: "62"; height: "114"; }
- ListElement{ longitude: "55"; latitude: "63"; height: "113"; }
- ListElement{ longitude: "55"; latitude: "64"; height: "113"; }
- ListElement{ longitude: "55"; latitude: "65"; height: "113"; }
- ListElement{ longitude: "55"; latitude: "66"; height: "113"; }
- ListElement{ longitude: "55"; latitude: "67"; height: "115"; }
- ListElement{ longitude: "55"; latitude: "68"; height: "113"; }
- ListElement{ longitude: "55"; latitude: "69"; height: "111"; }
- ListElement{ longitude: "55"; latitude: "70"; height: "110"; }
- ListElement{ longitude: "55"; latitude: "71"; height: "110"; }
- ListElement{ longitude: "55"; latitude: "72"; height: "109"; }
- ListElement{ longitude: "55"; latitude: "73"; height: "113"; }
- ListElement{ longitude: "55"; latitude: "74"; height: "122"; }
- ListElement{ longitude: "55"; latitude: "75"; height: "145"; }
- ListElement{ longitude: "55"; latitude: "76"; height: "156"; }
- ListElement{ longitude: "55"; latitude: "77"; height: "161"; }
- ListElement{ longitude: "55"; latitude: "78"; height: "148"; }
- ListElement{ longitude: "55"; latitude: "79"; height: "109"; }
- ListElement{ longitude: "55"; latitude: "80"; height: "99"; }
- ListElement{ longitude: "55"; latitude: "81"; height: "90"; }
- ListElement{ longitude: "55"; latitude: "82"; height: "59"; }
- ListElement{ longitude: "55"; latitude: "83"; height: "48"; }
- ListElement{ longitude: "55"; latitude: "84"; height: "35"; }
- ListElement{ longitude: "55"; latitude: "85"; height: "9"; }
- ListElement{ longitude: "55"; latitude: "86"; height: "1"; }
- ListElement{ longitude: "55"; latitude: "87"; height: "32"; }
- ListElement{ longitude: "55"; latitude: "88"; height: "55"; }
- ListElement{ longitude: "55"; latitude: "89"; height: "52"; }
- ListElement{ longitude: "55"; latitude: "90"; height: "55"; }
- ListElement{ longitude: "55"; latitude: "91"; height: "70"; }
- ListElement{ longitude: "55"; latitude: "92"; height: "90"; }
- ListElement{ longitude: "55"; latitude: "93"; height: "124"; }
- ListElement{ longitude: "55"; latitude: "94"; height: "128"; }
- ListElement{ longitude: "55"; latitude: "95"; height: "118"; }
- ListElement{ longitude: "55"; latitude: "96"; height: "122"; }
- ListElement{ longitude: "55"; latitude: "97"; height: "126"; }
- ListElement{ longitude: "55"; latitude: "98"; height: "126"; }
- ListElement{ longitude: "55"; latitude: "99"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "1"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "2"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "3"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "56"; latitude: "6"; height: "124"; }
- ListElement{ longitude: "56"; latitude: "7"; height: "125"; }
- ListElement{ longitude: "56"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "56"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "56"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "56"; latitude: "11"; height: "122"; }
- ListElement{ longitude: "56"; latitude: "12"; height: "121"; }
- ListElement{ longitude: "56"; latitude: "13"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "14"; height: "121"; }
- ListElement{ longitude: "56"; latitude: "15"; height: "118"; }
- ListElement{ longitude: "56"; latitude: "16"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "17"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "18"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "20"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "21"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "56"; latitude: "23"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "24"; height: "122"; }
- ListElement{ longitude: "56"; latitude: "25"; height: "124"; }
- ListElement{ longitude: "56"; latitude: "26"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "27"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "28"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "29"; height: "120"; }
- ListElement{ longitude: "56"; latitude: "30"; height: "117"; }
- ListElement{ longitude: "56"; latitude: "31"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "32"; height: "123"; }
- ListElement{ longitude: "56"; latitude: "33"; height: "126"; }
- ListElement{ longitude: "56"; latitude: "34"; height: "125"; }
- ListElement{ longitude: "56"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "56"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "56"; latitude: "37"; height: "123"; }
- ListElement{ longitude: "56"; latitude: "38"; height: "126"; }
- ListElement{ longitude: "56"; latitude: "39"; height: "127"; }
- ListElement{ longitude: "56"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "56"; latitude: "41"; height: "130"; }
- ListElement{ longitude: "56"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "56"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "56"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "56"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "56"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "56"; latitude: "47"; height: "126"; }
- ListElement{ longitude: "56"; latitude: "48"; height: "128"; }
- ListElement{ longitude: "56"; latitude: "49"; height: "129"; }
- ListElement{ longitude: "56"; latitude: "50"; height: "128"; }
- ListElement{ longitude: "56"; latitude: "51"; height: "123"; }
- ListElement{ longitude: "56"; latitude: "52"; height: "123"; }
- ListElement{ longitude: "56"; latitude: "53"; height: "118"; }
- ListElement{ longitude: "56"; latitude: "54"; height: "117"; }
- ListElement{ longitude: "56"; latitude: "55"; height: "117"; }
- ListElement{ longitude: "56"; latitude: "56"; height: "117"; }
- ListElement{ longitude: "56"; latitude: "57"; height: "116"; }
- ListElement{ longitude: "56"; latitude: "58"; height: "113"; }
- ListElement{ longitude: "56"; latitude: "59"; height: "114"; }
- ListElement{ longitude: "56"; latitude: "60"; height: "114"; }
- ListElement{ longitude: "56"; latitude: "61"; height: "113"; }
- ListElement{ longitude: "56"; latitude: "62"; height: "115"; }
- ListElement{ longitude: "56"; latitude: "63"; height: "116"; }
- ListElement{ longitude: "56"; latitude: "64"; height: "116"; }
- ListElement{ longitude: "56"; latitude: "65"; height: "116"; }
- ListElement{ longitude: "56"; latitude: "66"; height: "116"; }
- ListElement{ longitude: "56"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "56"; latitude: "68"; height: "114"; }
- ListElement{ longitude: "56"; latitude: "69"; height: "111"; }
- ListElement{ longitude: "56"; latitude: "70"; height: "111"; }
- ListElement{ longitude: "56"; latitude: "71"; height: "107"; }
- ListElement{ longitude: "56"; latitude: "72"; height: "106"; }
- ListElement{ longitude: "56"; latitude: "73"; height: "112"; }
- ListElement{ longitude: "56"; latitude: "74"; height: "117"; }
- ListElement{ longitude: "56"; latitude: "75"; height: "129"; }
- ListElement{ longitude: "56"; latitude: "76"; height: "142"; }
- ListElement{ longitude: "56"; latitude: "77"; height: "164"; }
- ListElement{ longitude: "56"; latitude: "78"; height: "167"; }
- ListElement{ longitude: "56"; latitude: "79"; height: "152"; }
- ListElement{ longitude: "56"; latitude: "80"; height: "134"; }
- ListElement{ longitude: "56"; latitude: "81"; height: "118"; }
- ListElement{ longitude: "56"; latitude: "82"; height: "99"; }
- ListElement{ longitude: "56"; latitude: "83"; height: "102"; }
- ListElement{ longitude: "56"; latitude: "84"; height: "102"; }
- ListElement{ longitude: "56"; latitude: "85"; height: "88"; }
- ListElement{ longitude: "56"; latitude: "86"; height: "73"; }
- ListElement{ longitude: "56"; latitude: "87"; height: "66"; }
- ListElement{ longitude: "56"; latitude: "88"; height: "56"; }
- ListElement{ longitude: "56"; latitude: "89"; height: "51"; }
- ListElement{ longitude: "56"; latitude: "90"; height: "73"; }
- ListElement{ longitude: "56"; latitude: "91"; height: "104"; }
- ListElement{ longitude: "56"; latitude: "92"; height: "110"; }
- ListElement{ longitude: "56"; latitude: "93"; height: "114"; }
- ListElement{ longitude: "56"; latitude: "94"; height: "119"; }
- ListElement{ longitude: "56"; latitude: "95"; height: "122"; }
- ListElement{ longitude: "56"; latitude: "96"; height: "126"; }
- ListElement{ longitude: "56"; latitude: "97"; height: "128"; }
- ListElement{ longitude: "56"; latitude: "98"; height: "127"; }
- ListElement{ longitude: "56"; latitude: "99"; height: "123"; }
- ListElement{ longitude: "57"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "1"; height: "121"; }
- ListElement{ longitude: "57"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "57"; latitude: "3"; height: "122"; }
- ListElement{ longitude: "57"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "5"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "6"; height: "122"; }
- ListElement{ longitude: "57"; latitude: "7"; height: "123"; }
- ListElement{ longitude: "57"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "9"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "10"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "11"; height: "124"; }
- ListElement{ longitude: "57"; latitude: "12"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "13"; height: "119"; }
- ListElement{ longitude: "57"; latitude: "14"; height: "119"; }
- ListElement{ longitude: "57"; latitude: "15"; height: "119"; }
- ListElement{ longitude: "57"; latitude: "16"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "17"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "18"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "20"; height: "119"; }
- ListElement{ longitude: "57"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "57"; latitude: "22"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "23"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "24"; height: "122"; }
- ListElement{ longitude: "57"; latitude: "25"; height: "122"; }
- ListElement{ longitude: "57"; latitude: "26"; height: "119"; }
- ListElement{ longitude: "57"; latitude: "27"; height: "121"; }
- ListElement{ longitude: "57"; latitude: "28"; height: "121"; }
- ListElement{ longitude: "57"; latitude: "29"; height: "118"; }
- ListElement{ longitude: "57"; latitude: "30"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "31"; height: "123"; }
- ListElement{ longitude: "57"; latitude: "32"; height: "121"; }
- ListElement{ longitude: "57"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "57"; latitude: "34"; height: "124"; }
- ListElement{ longitude: "57"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "37"; height: "122"; }
- ListElement{ longitude: "57"; latitude: "38"; height: "127"; }
- ListElement{ longitude: "57"; latitude: "39"; height: "126"; }
- ListElement{ longitude: "57"; latitude: "40"; height: "128"; }
- ListElement{ longitude: "57"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "57"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "57"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "57"; latitude: "44"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "46"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "47"; height: "126"; }
- ListElement{ longitude: "57"; latitude: "48"; height: "129"; }
- ListElement{ longitude: "57"; latitude: "49"; height: "130"; }
- ListElement{ longitude: "57"; latitude: "50"; height: "128"; }
- ListElement{ longitude: "57"; latitude: "51"; height: "128"; }
- ListElement{ longitude: "57"; latitude: "52"; height: "118"; }
- ListElement{ longitude: "57"; latitude: "53"; height: "111"; }
- ListElement{ longitude: "57"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "57"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "56"; height: "120"; }
- ListElement{ longitude: "57"; latitude: "57"; height: "118"; }
- ListElement{ longitude: "57"; latitude: "58"; height: "117"; }
- ListElement{ longitude: "57"; latitude: "59"; height: "115"; }
- ListElement{ longitude: "57"; latitude: "60"; height: "116"; }
- ListElement{ longitude: "57"; latitude: "61"; height: "114"; }
- ListElement{ longitude: "57"; latitude: "62"; height: "114"; }
- ListElement{ longitude: "57"; latitude: "63"; height: "116"; }
- ListElement{ longitude: "57"; latitude: "64"; height: "116"; }
- ListElement{ longitude: "57"; latitude: "65"; height: "116"; }
- ListElement{ longitude: "57"; latitude: "66"; height: "116"; }
- ListElement{ longitude: "57"; latitude: "67"; height: "114"; }
- ListElement{ longitude: "57"; latitude: "68"; height: "112"; }
- ListElement{ longitude: "57"; latitude: "69"; height: "111"; }
- ListElement{ longitude: "57"; latitude: "70"; height: "111"; }
- ListElement{ longitude: "57"; latitude: "71"; height: "109"; }
- ListElement{ longitude: "57"; latitude: "72"; height: "110"; }
- ListElement{ longitude: "57"; latitude: "73"; height: "113"; }
- ListElement{ longitude: "57"; latitude: "74"; height: "118"; }
- ListElement{ longitude: "57"; latitude: "75"; height: "125"; }
- ListElement{ longitude: "57"; latitude: "76"; height: "133"; }
- ListElement{ longitude: "57"; latitude: "77"; height: "139"; }
- ListElement{ longitude: "57"; latitude: "78"; height: "148"; }
- ListElement{ longitude: "57"; latitude: "79"; height: "161"; }
- ListElement{ longitude: "57"; latitude: "80"; height: "167"; }
- ListElement{ longitude: "57"; latitude: "81"; height: "167"; }
- ListElement{ longitude: "57"; latitude: "82"; height: "164"; }
- ListElement{ longitude: "57"; latitude: "83"; height: "152"; }
- ListElement{ longitude: "57"; latitude: "84"; height: "143"; }
- ListElement{ longitude: "57"; latitude: "85"; height: "138"; }
- ListElement{ longitude: "57"; latitude: "86"; height: "102"; }
- ListElement{ longitude: "57"; latitude: "87"; height: "94"; }
- ListElement{ longitude: "57"; latitude: "88"; height: "81"; }
- ListElement{ longitude: "57"; latitude: "89"; height: "81"; }
- ListElement{ longitude: "57"; latitude: "90"; height: "91"; }
- ListElement{ longitude: "57"; latitude: "91"; height: "99"; }
- ListElement{ longitude: "57"; latitude: "92"; height: "107"; }
- ListElement{ longitude: "57"; latitude: "93"; height: "118"; }
- ListElement{ longitude: "57"; latitude: "94"; height: "126"; }
- ListElement{ longitude: "57"; latitude: "95"; height: "127"; }
- ListElement{ longitude: "57"; latitude: "96"; height: "128"; }
- ListElement{ longitude: "57"; latitude: "97"; height: "130"; }
- ListElement{ longitude: "57"; latitude: "98"; height: "130"; }
- ListElement{ longitude: "57"; latitude: "99"; height: "128"; }
- ListElement{ longitude: "58"; latitude: "0"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "58"; latitude: "4"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "6"; height: "123"; }
- ListElement{ longitude: "58"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "58"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "58"; latitude: "9"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "10"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "11"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "12"; height: "120"; }
- ListElement{ longitude: "58"; latitude: "13"; height: "120"; }
- ListElement{ longitude: "58"; latitude: "14"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "15"; height: "119"; }
- ListElement{ longitude: "58"; latitude: "16"; height: "119"; }
- ListElement{ longitude: "58"; latitude: "17"; height: "120"; }
- ListElement{ longitude: "58"; latitude: "18"; height: "120"; }
- ListElement{ longitude: "58"; latitude: "19"; height: "118"; }
- ListElement{ longitude: "58"; latitude: "20"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "22"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "23"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "24"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "25"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "26"; height: "119"; }
- ListElement{ longitude: "58"; latitude: "27"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "28"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "29"; height: "119"; }
- ListElement{ longitude: "58"; latitude: "30"; height: "115"; }
- ListElement{ longitude: "58"; latitude: "31"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "32"; height: "120"; }
- ListElement{ longitude: "58"; latitude: "33"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "34"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "35"; height: "123"; }
- ListElement{ longitude: "58"; latitude: "36"; height: "125"; }
- ListElement{ longitude: "58"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "58"; latitude: "38"; height: "127"; }
- ListElement{ longitude: "58"; latitude: "39"; height: "128"; }
- ListElement{ longitude: "58"; latitude: "40"; height: "130"; }
- ListElement{ longitude: "58"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "58"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "58"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "58"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "58"; latitude: "45"; height: "126"; }
- ListElement{ longitude: "58"; latitude: "46"; height: "123"; }
- ListElement{ longitude: "58"; latitude: "47"; height: "125"; }
- ListElement{ longitude: "58"; latitude: "48"; height: "130"; }
- ListElement{ longitude: "58"; latitude: "49"; height: "131"; }
- ListElement{ longitude: "58"; latitude: "50"; height: "134"; }
- ListElement{ longitude: "58"; latitude: "51"; height: "131"; }
- ListElement{ longitude: "58"; latitude: "52"; height: "130"; }
- ListElement{ longitude: "58"; latitude: "53"; height: "128"; }
- ListElement{ longitude: "58"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "58"; latitude: "55"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "58"; latitude: "57"; height: "120"; }
- ListElement{ longitude: "58"; latitude: "58"; height: "120"; }
- ListElement{ longitude: "58"; latitude: "59"; height: "119"; }
- ListElement{ longitude: "58"; latitude: "60"; height: "118"; }
- ListElement{ longitude: "58"; latitude: "61"; height: "116"; }
- ListElement{ longitude: "58"; latitude: "62"; height: "115"; }
- ListElement{ longitude: "58"; latitude: "63"; height: "115"; }
- ListElement{ longitude: "58"; latitude: "64"; height: "115"; }
- ListElement{ longitude: "58"; latitude: "65"; height: "115"; }
- ListElement{ longitude: "58"; latitude: "66"; height: "117"; }
- ListElement{ longitude: "58"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "58"; latitude: "68"; height: "114"; }
- ListElement{ longitude: "58"; latitude: "69"; height: "111"; }
- ListElement{ longitude: "58"; latitude: "70"; height: "110"; }
- ListElement{ longitude: "58"; latitude: "71"; height: "109"; }
- ListElement{ longitude: "58"; latitude: "72"; height: "109"; }
- ListElement{ longitude: "58"; latitude: "73"; height: "113"; }
- ListElement{ longitude: "58"; latitude: "74"; height: "117"; }
- ListElement{ longitude: "58"; latitude: "75"; height: "122"; }
- ListElement{ longitude: "58"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "58"; latitude: "77"; height: "126"; }
- ListElement{ longitude: "58"; latitude: "78"; height: "136"; }
- ListElement{ longitude: "58"; latitude: "79"; height: "139"; }
- ListElement{ longitude: "58"; latitude: "80"; height: "142"; }
- ListElement{ longitude: "58"; latitude: "81"; height: "149"; }
- ListElement{ longitude: "58"; latitude: "82"; height: "153"; }
- ListElement{ longitude: "58"; latitude: "83"; height: "149"; }
- ListElement{ longitude: "58"; latitude: "84"; height: "141"; }
- ListElement{ longitude: "58"; latitude: "85"; height: "134"; }
- ListElement{ longitude: "58"; latitude: "86"; height: "113"; }
- ListElement{ longitude: "58"; latitude: "87"; height: "94"; }
- ListElement{ longitude: "58"; latitude: "88"; height: "83"; }
- ListElement{ longitude: "58"; latitude: "89"; height: "89"; }
- ListElement{ longitude: "58"; latitude: "90"; height: "98"; }
- ListElement{ longitude: "58"; latitude: "91"; height: "109"; }
- ListElement{ longitude: "58"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "58"; latitude: "93"; height: "126"; }
- ListElement{ longitude: "58"; latitude: "94"; height: "128"; }
- ListElement{ longitude: "58"; latitude: "95"; height: "127"; }
- ListElement{ longitude: "58"; latitude: "96"; height: "129"; }
- ListElement{ longitude: "58"; latitude: "97"; height: "131"; }
- ListElement{ longitude: "58"; latitude: "98"; height: "135"; }
- ListElement{ longitude: "58"; latitude: "99"; height: "131"; }
- ListElement{ longitude: "59"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "59"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "59"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "59"; latitude: "3"; height: "121"; }
- ListElement{ longitude: "59"; latitude: "4"; height: "123"; }
- ListElement{ longitude: "59"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "59"; latitude: "6"; height: "121"; }
- ListElement{ longitude: "59"; latitude: "7"; height: "123"; }
- ListElement{ longitude: "59"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "59"; latitude: "9"; height: "124"; }
- ListElement{ longitude: "59"; latitude: "10"; height: "123"; }
- ListElement{ longitude: "59"; latitude: "11"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "12"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "13"; height: "124"; }
- ListElement{ longitude: "59"; latitude: "14"; height: "124"; }
- ListElement{ longitude: "59"; latitude: "15"; height: "121"; }
- ListElement{ longitude: "59"; latitude: "16"; height: "119"; }
- ListElement{ longitude: "59"; latitude: "17"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "18"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "19"; height: "118"; }
- ListElement{ longitude: "59"; latitude: "20"; height: "121"; }
- ListElement{ longitude: "59"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "59"; latitude: "22"; height: "119"; }
- ListElement{ longitude: "59"; latitude: "23"; height: "119"; }
- ListElement{ longitude: "59"; latitude: "24"; height: "119"; }
- ListElement{ longitude: "59"; latitude: "25"; height: "119"; }
- ListElement{ longitude: "59"; latitude: "26"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "27"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "28"; height: "119"; }
- ListElement{ longitude: "59"; latitude: "29"; height: "113"; }
- ListElement{ longitude: "59"; latitude: "30"; height: "105"; }
- ListElement{ longitude: "59"; latitude: "31"; height: "122"; }
- ListElement{ longitude: "59"; latitude: "32"; height: "123"; }
- ListElement{ longitude: "59"; latitude: "33"; height: "121"; }
- ListElement{ longitude: "59"; latitude: "34"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "35"; height: "123"; }
- ListElement{ longitude: "59"; latitude: "36"; height: "124"; }
- ListElement{ longitude: "59"; latitude: "37"; height: "127"; }
- ListElement{ longitude: "59"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "59"; latitude: "39"; height: "130"; }
- ListElement{ longitude: "59"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "59"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "59"; latitude: "42"; height: "125"; }
- ListElement{ longitude: "59"; latitude: "43"; height: "125"; }
- ListElement{ longitude: "59"; latitude: "44"; height: "125"; }
- ListElement{ longitude: "59"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "59"; latitude: "46"; height: "129"; }
- ListElement{ longitude: "59"; latitude: "47"; height: "131"; }
- ListElement{ longitude: "59"; latitude: "48"; height: "133"; }
- ListElement{ longitude: "59"; latitude: "49"; height: "127"; }
- ListElement{ longitude: "59"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "59"; latitude: "51"; height: "134"; }
- ListElement{ longitude: "59"; latitude: "52"; height: "132"; }
- ListElement{ longitude: "59"; latitude: "53"; height: "129"; }
- ListElement{ longitude: "59"; latitude: "54"; height: "128"; }
- ListElement{ longitude: "59"; latitude: "55"; height: "125"; }
- ListElement{ longitude: "59"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "59"; latitude: "57"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "58"; height: "116"; }
- ListElement{ longitude: "59"; latitude: "59"; height: "115"; }
- ListElement{ longitude: "59"; latitude: "60"; height: "114"; }
- ListElement{ longitude: "59"; latitude: "61"; height: "113"; }
- ListElement{ longitude: "59"; latitude: "62"; height: "112"; }
- ListElement{ longitude: "59"; latitude: "63"; height: "111"; }
- ListElement{ longitude: "59"; latitude: "64"; height: "111"; }
- ListElement{ longitude: "59"; latitude: "65"; height: "111"; }
- ListElement{ longitude: "59"; latitude: "66"; height: "112"; }
- ListElement{ longitude: "59"; latitude: "67"; height: "114"; }
- ListElement{ longitude: "59"; latitude: "68"; height: "113"; }
- ListElement{ longitude: "59"; latitude: "69"; height: "111"; }
- ListElement{ longitude: "59"; latitude: "70"; height: "110"; }
- ListElement{ longitude: "59"; latitude: "71"; height: "112"; }
- ListElement{ longitude: "59"; latitude: "72"; height: "111"; }
- ListElement{ longitude: "59"; latitude: "73"; height: "116"; }
- ListElement{ longitude: "59"; latitude: "74"; height: "117"; }
- ListElement{ longitude: "59"; latitude: "75"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "76"; height: "124"; }
- ListElement{ longitude: "59"; latitude: "77"; height: "118"; }
- ListElement{ longitude: "59"; latitude: "78"; height: "125"; }
- ListElement{ longitude: "59"; latitude: "79"; height: "122"; }
- ListElement{ longitude: "59"; latitude: "80"; height: "132"; }
- ListElement{ longitude: "59"; latitude: "81"; height: "131"; }
- ListElement{ longitude: "59"; latitude: "82"; height: "132"; }
- ListElement{ longitude: "59"; latitude: "83"; height: "139"; }
- ListElement{ longitude: "59"; latitude: "84"; height: "133"; }
- ListElement{ longitude: "59"; latitude: "85"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "86"; height: "111"; }
- ListElement{ longitude: "59"; latitude: "87"; height: "105"; }
- ListElement{ longitude: "59"; latitude: "88"; height: "92"; }
- ListElement{ longitude: "59"; latitude: "89"; height: "95"; }
- ListElement{ longitude: "59"; latitude: "90"; height: "100"; }
- ListElement{ longitude: "59"; latitude: "91"; height: "111"; }
- ListElement{ longitude: "59"; latitude: "92"; height: "120"; }
- ListElement{ longitude: "59"; latitude: "93"; height: "123"; }
- ListElement{ longitude: "59"; latitude: "94"; height: "125"; }
- ListElement{ longitude: "59"; latitude: "95"; height: "130"; }
- ListElement{ longitude: "59"; latitude: "96"; height: "131"; }
- ListElement{ longitude: "59"; latitude: "97"; height: "137"; }
- ListElement{ longitude: "59"; latitude: "98"; height: "138"; }
- ListElement{ longitude: "59"; latitude: "99"; height: "135"; }
- ListElement{ longitude: "60"; latitude: "0"; height: "121"; }
- ListElement{ longitude: "60"; latitude: "1"; height: "118"; }
- ListElement{ longitude: "60"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "60"; latitude: "3"; height: "121"; }
- ListElement{ longitude: "60"; latitude: "4"; height: "124"; }
- ListElement{ longitude: "60"; latitude: "5"; height: "126"; }
- ListElement{ longitude: "60"; latitude: "6"; height: "128"; }
- ListElement{ longitude: "60"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "60"; latitude: "8"; height: "125"; }
- ListElement{ longitude: "60"; latitude: "9"; height: "122"; }
- ListElement{ longitude: "60"; latitude: "10"; height: "121"; }
- ListElement{ longitude: "60"; latitude: "11"; height: "120"; }
- ListElement{ longitude: "60"; latitude: "12"; height: "120"; }
- ListElement{ longitude: "60"; latitude: "13"; height: "119"; }
- ListElement{ longitude: "60"; latitude: "14"; height: "120"; }
- ListElement{ longitude: "60"; latitude: "15"; height: "120"; }
- ListElement{ longitude: "60"; latitude: "16"; height: "121"; }
- ListElement{ longitude: "60"; latitude: "17"; height: "118"; }
- ListElement{ longitude: "60"; latitude: "18"; height: "118"; }
- ListElement{ longitude: "60"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "60"; latitude: "20"; height: "119"; }
- ListElement{ longitude: "60"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "60"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "60"; latitude: "23"; height: "121"; }
- ListElement{ longitude: "60"; latitude: "24"; height: "120"; }
- ListElement{ longitude: "60"; latitude: "25"; height: "118"; }
- ListElement{ longitude: "60"; latitude: "26"; height: "118"; }
- ListElement{ longitude: "60"; latitude: "27"; height: "120"; }
- ListElement{ longitude: "60"; latitude: "28"; height: "119"; }
- ListElement{ longitude: "60"; latitude: "29"; height: "113"; }
- ListElement{ longitude: "60"; latitude: "30"; height: "111"; }
- ListElement{ longitude: "60"; latitude: "31"; height: "122"; }
- ListElement{ longitude: "60"; latitude: "32"; height: "124"; }
- ListElement{ longitude: "60"; latitude: "33"; height: "124"; }
- ListElement{ longitude: "60"; latitude: "34"; height: "123"; }
- ListElement{ longitude: "60"; latitude: "35"; height: "129"; }
- ListElement{ longitude: "60"; latitude: "36"; height: "128"; }
- ListElement{ longitude: "60"; latitude: "37"; height: "128"; }
- ListElement{ longitude: "60"; latitude: "38"; height: "128"; }
- ListElement{ longitude: "60"; latitude: "39"; height: "127"; }
- ListElement{ longitude: "60"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "60"; latitude: "41"; height: "124"; }
- ListElement{ longitude: "60"; latitude: "42"; height: "122"; }
- ListElement{ longitude: "60"; latitude: "43"; height: "122"; }
- ListElement{ longitude: "60"; latitude: "44"; height: "118"; }
- ListElement{ longitude: "60"; latitude: "45"; height: "120"; }
- ListElement{ longitude: "60"; latitude: "46"; height: "126"; }
- ListElement{ longitude: "60"; latitude: "47"; height: "127"; }
- ListElement{ longitude: "60"; latitude: "48"; height: "130"; }
- ListElement{ longitude: "60"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "60"; latitude: "50"; height: "139"; }
- ListElement{ longitude: "60"; latitude: "51"; height: "135"; }
- ListElement{ longitude: "60"; latitude: "52"; height: "133"; }
- ListElement{ longitude: "60"; latitude: "53"; height: "130"; }
- ListElement{ longitude: "60"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "60"; latitude: "55"; height: "117"; }
- ListElement{ longitude: "60"; latitude: "56"; height: "119"; }
- ListElement{ longitude: "60"; latitude: "57"; height: "117"; }
- ListElement{ longitude: "60"; latitude: "58"; height: "116"; }
- ListElement{ longitude: "60"; latitude: "59"; height: "113"; }
- ListElement{ longitude: "60"; latitude: "60"; height: "112"; }
- ListElement{ longitude: "60"; latitude: "61"; height: "113"; }
- ListElement{ longitude: "60"; latitude: "62"; height: "114"; }
- ListElement{ longitude: "60"; latitude: "63"; height: "112"; }
- ListElement{ longitude: "60"; latitude: "64"; height: "111"; }
- ListElement{ longitude: "60"; latitude: "65"; height: "111"; }
- ListElement{ longitude: "60"; latitude: "66"; height: "110"; }
- ListElement{ longitude: "60"; latitude: "67"; height: "112"; }
- ListElement{ longitude: "60"; latitude: "68"; height: "112"; }
- ListElement{ longitude: "60"; latitude: "69"; height: "112"; }
- ListElement{ longitude: "60"; latitude: "70"; height: "112"; }
- ListElement{ longitude: "60"; latitude: "71"; height: "113"; }
- ListElement{ longitude: "60"; latitude: "72"; height: "113"; }
- ListElement{ longitude: "60"; latitude: "73"; height: "113"; }
- ListElement{ longitude: "60"; latitude: "74"; height: "119"; }
- ListElement{ longitude: "60"; latitude: "75"; height: "117"; }
- ListElement{ longitude: "60"; latitude: "76"; height: "123"; }
- ListElement{ longitude: "60"; latitude: "77"; height: "123"; }
- ListElement{ longitude: "60"; latitude: "78"; height: "127"; }
- ListElement{ longitude: "60"; latitude: "79"; height: "125"; }
- ListElement{ longitude: "60"; latitude: "80"; height: "130"; }
- ListElement{ longitude: "60"; latitude: "81"; height: "124"; }
- ListElement{ longitude: "60"; latitude: "82"; height: "132"; }
- ListElement{ longitude: "60"; latitude: "83"; height: "132"; }
- ListElement{ longitude: "60"; latitude: "84"; height: "130"; }
- ListElement{ longitude: "60"; latitude: "85"; height: "122"; }
- ListElement{ longitude: "60"; latitude: "86"; height: "113"; }
- ListElement{ longitude: "60"; latitude: "87"; height: "102"; }
- ListElement{ longitude: "60"; latitude: "88"; height: "98"; }
- ListElement{ longitude: "60"; latitude: "89"; height: "103"; }
- ListElement{ longitude: "60"; latitude: "90"; height: "112"; }
- ListElement{ longitude: "60"; latitude: "91"; height: "114"; }
- ListElement{ longitude: "60"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "60"; latitude: "93"; height: "122"; }
- ListElement{ longitude: "60"; latitude: "94"; height: "127"; }
- ListElement{ longitude: "60"; latitude: "95"; height: "129"; }
- ListElement{ longitude: "60"; latitude: "96"; height: "137"; }
- ListElement{ longitude: "60"; latitude: "97"; height: "139"; }
- ListElement{ longitude: "60"; latitude: "98"; height: "140"; }
- ListElement{ longitude: "60"; latitude: "99"; height: "138"; }
- ListElement{ longitude: "61"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "61"; latitude: "1"; height: "120"; }
- ListElement{ longitude: "61"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "61"; latitude: "3"; height: "122"; }
- ListElement{ longitude: "61"; latitude: "4"; height: "125"; }
- ListElement{ longitude: "61"; latitude: "5"; height: "127"; }
- ListElement{ longitude: "61"; latitude: "6"; height: "129"; }
- ListElement{ longitude: "61"; latitude: "7"; height: "127"; }
- ListElement{ longitude: "61"; latitude: "8"; height: "127"; }
- ListElement{ longitude: "61"; latitude: "9"; height: "123"; }
- ListElement{ longitude: "61"; latitude: "10"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "11"; height: "123"; }
- ListElement{ longitude: "61"; latitude: "12"; height: "125"; }
- ListElement{ longitude: "61"; latitude: "13"; height: "123"; }
- ListElement{ longitude: "61"; latitude: "14"; height: "123"; }
- ListElement{ longitude: "61"; latitude: "15"; height: "123"; }
- ListElement{ longitude: "61"; latitude: "16"; height: "122"; }
- ListElement{ longitude: "61"; latitude: "17"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "18"; height: "118"; }
- ListElement{ longitude: "61"; latitude: "19"; height: "120"; }
- ListElement{ longitude: "61"; latitude: "20"; height: "118"; }
- ListElement{ longitude: "61"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "23"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "24"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "25"; height: "119"; }
- ListElement{ longitude: "61"; latitude: "26"; height: "117"; }
- ListElement{ longitude: "61"; latitude: "27"; height: "120"; }
- ListElement{ longitude: "61"; latitude: "28"; height: "120"; }
- ListElement{ longitude: "61"; latitude: "29"; height: "118"; }
- ListElement{ longitude: "61"; latitude: "30"; height: "117"; }
- ListElement{ longitude: "61"; latitude: "31"; height: "123"; }
- ListElement{ longitude: "61"; latitude: "32"; height: "126"; }
- ListElement{ longitude: "61"; latitude: "33"; height: "125"; }
- ListElement{ longitude: "61"; latitude: "34"; height: "127"; }
- ListElement{ longitude: "61"; latitude: "35"; height: "130"; }
- ListElement{ longitude: "61"; latitude: "36"; height: "129"; }
- ListElement{ longitude: "61"; latitude: "37"; height: "130"; }
- ListElement{ longitude: "61"; latitude: "38"; height: "129"; }
- ListElement{ longitude: "61"; latitude: "39"; height: "128"; }
- ListElement{ longitude: "61"; latitude: "40"; height: "126"; }
- ListElement{ longitude: "61"; latitude: "41"; height: "107"; }
- ListElement{ longitude: "61"; latitude: "42"; height: "98"; }
- ListElement{ longitude: "61"; latitude: "43"; height: "117"; }
- ListElement{ longitude: "61"; latitude: "44"; height: "117"; }
- ListElement{ longitude: "61"; latitude: "45"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "46"; height: "126"; }
- ListElement{ longitude: "61"; latitude: "47"; height: "125"; }
- ListElement{ longitude: "61"; latitude: "48"; height: "130"; }
- ListElement{ longitude: "61"; latitude: "49"; height: "137"; }
- ListElement{ longitude: "61"; latitude: "50"; height: "138"; }
- ListElement{ longitude: "61"; latitude: "51"; height: "134"; }
- ListElement{ longitude: "61"; latitude: "52"; height: "134"; }
- ListElement{ longitude: "61"; latitude: "53"; height: "131"; }
- ListElement{ longitude: "61"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "61"; latitude: "55"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "57"; height: "117"; }
- ListElement{ longitude: "61"; latitude: "58"; height: "113"; }
- ListElement{ longitude: "61"; latitude: "59"; height: "111"; }
- ListElement{ longitude: "61"; latitude: "60"; height: "110"; }
- ListElement{ longitude: "61"; latitude: "61"; height: "109"; }
- ListElement{ longitude: "61"; latitude: "62"; height: "109"; }
- ListElement{ longitude: "61"; latitude: "63"; height: "110"; }
- ListElement{ longitude: "61"; latitude: "64"; height: "108"; }
- ListElement{ longitude: "61"; latitude: "65"; height: "108"; }
- ListElement{ longitude: "61"; latitude: "66"; height: "108"; }
- ListElement{ longitude: "61"; latitude: "67"; height: "108"; }
- ListElement{ longitude: "61"; latitude: "68"; height: "110"; }
- ListElement{ longitude: "61"; latitude: "69"; height: "109"; }
- ListElement{ longitude: "61"; latitude: "70"; height: "110"; }
- ListElement{ longitude: "61"; latitude: "71"; height: "112"; }
- ListElement{ longitude: "61"; latitude: "72"; height: "116"; }
- ListElement{ longitude: "61"; latitude: "73"; height: "116"; }
- ListElement{ longitude: "61"; latitude: "74"; height: "119"; }
- ListElement{ longitude: "61"; latitude: "75"; height: "120"; }
- ListElement{ longitude: "61"; latitude: "76"; height: "123"; }
- ListElement{ longitude: "61"; latitude: "77"; height: "121"; }
- ListElement{ longitude: "61"; latitude: "78"; height: "125"; }
- ListElement{ longitude: "61"; latitude: "79"; height: "122"; }
- ListElement{ longitude: "61"; latitude: "80"; height: "124"; }
- ListElement{ longitude: "61"; latitude: "81"; height: "125"; }
- ListElement{ longitude: "61"; latitude: "82"; height: "128"; }
- ListElement{ longitude: "61"; latitude: "83"; height: "128"; }
- ListElement{ longitude: "61"; latitude: "84"; height: "124"; }
- ListElement{ longitude: "61"; latitude: "85"; height: "119"; }
- ListElement{ longitude: "61"; latitude: "86"; height: "116"; }
- ListElement{ longitude: "61"; latitude: "87"; height: "112"; }
- ListElement{ longitude: "61"; latitude: "88"; height: "110"; }
- ListElement{ longitude: "61"; latitude: "89"; height: "109"; }
- ListElement{ longitude: "61"; latitude: "90"; height: "113"; }
- ListElement{ longitude: "61"; latitude: "91"; height: "119"; }
- ListElement{ longitude: "61"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "61"; latitude: "93"; height: "118"; }
- ListElement{ longitude: "61"; latitude: "94"; height: "120"; }
- ListElement{ longitude: "61"; latitude: "95"; height: "124"; }
- ListElement{ longitude: "61"; latitude: "96"; height: "131"; }
- ListElement{ longitude: "61"; latitude: "97"; height: "144"; }
- ListElement{ longitude: "61"; latitude: "98"; height: "143"; }
- ListElement{ longitude: "61"; latitude: "99"; height: "137"; }
- ListElement{ longitude: "62"; latitude: "0"; height: "122"; }
- ListElement{ longitude: "62"; latitude: "1"; height: "121"; }
- ListElement{ longitude: "62"; latitude: "2"; height: "121"; }
- ListElement{ longitude: "62"; latitude: "3"; height: "124"; }
- ListElement{ longitude: "62"; latitude: "4"; height: "127"; }
- ListElement{ longitude: "62"; latitude: "5"; height: "128"; }
- ListElement{ longitude: "62"; latitude: "6"; height: "128"; }
- ListElement{ longitude: "62"; latitude: "7"; height: "125"; }
- ListElement{ longitude: "62"; latitude: "8"; height: "122"; }
- ListElement{ longitude: "62"; latitude: "9"; height: "122"; }
- ListElement{ longitude: "62"; latitude: "10"; height: "120"; }
- ListElement{ longitude: "62"; latitude: "11"; height: "122"; }
- ListElement{ longitude: "62"; latitude: "12"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "13"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "14"; height: "127"; }
- ListElement{ longitude: "62"; latitude: "15"; height: "125"; }
- ListElement{ longitude: "62"; latitude: "16"; height: "124"; }
- ListElement{ longitude: "62"; latitude: "17"; height: "121"; }
- ListElement{ longitude: "62"; latitude: "18"; height: "120"; }
- ListElement{ longitude: "62"; latitude: "19"; height: "117"; }
- ListElement{ longitude: "62"; latitude: "20"; height: "116"; }
- ListElement{ longitude: "62"; latitude: "21"; height: "119"; }
- ListElement{ longitude: "62"; latitude: "22"; height: "110"; }
- ListElement{ longitude: "62"; latitude: "23"; height: "110"; }
- ListElement{ longitude: "62"; latitude: "24"; height: "119"; }
- ListElement{ longitude: "62"; latitude: "25"; height: "119"; }
- ListElement{ longitude: "62"; latitude: "26"; height: "116"; }
- ListElement{ longitude: "62"; latitude: "27"; height: "114"; }
- ListElement{ longitude: "62"; latitude: "28"; height: "114"; }
- ListElement{ longitude: "62"; latitude: "29"; height: "117"; }
- ListElement{ longitude: "62"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "62"; latitude: "31"; height: "121"; }
- ListElement{ longitude: "62"; latitude: "32"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "62"; latitude: "34"; height: "124"; }
- ListElement{ longitude: "62"; latitude: "35"; height: "130"; }
- ListElement{ longitude: "62"; latitude: "36"; height: "128"; }
- ListElement{ longitude: "62"; latitude: "37"; height: "125"; }
- ListElement{ longitude: "62"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "62"; latitude: "39"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "62"; latitude: "41"; height: "106"; }
- ListElement{ longitude: "62"; latitude: "42"; height: "94"; }
- ListElement{ longitude: "62"; latitude: "43"; height: "120"; }
- ListElement{ longitude: "62"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "62"; latitude: "45"; height: "120"; }
- ListElement{ longitude: "62"; latitude: "46"; height: "126"; }
- ListElement{ longitude: "62"; latitude: "47"; height: "125"; }
- ListElement{ longitude: "62"; latitude: "48"; height: "132"; }
- ListElement{ longitude: "62"; latitude: "49"; height: "137"; }
- ListElement{ longitude: "62"; latitude: "50"; height: "137"; }
- ListElement{ longitude: "62"; latitude: "51"; height: "127"; }
- ListElement{ longitude: "62"; latitude: "52"; height: "131"; }
- ListElement{ longitude: "62"; latitude: "53"; height: "128"; }
- ListElement{ longitude: "62"; latitude: "54"; height: "125"; }
- ListElement{ longitude: "62"; latitude: "55"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "56"; height: "110"; }
- ListElement{ longitude: "62"; latitude: "57"; height: "116"; }
- ListElement{ longitude: "62"; latitude: "58"; height: "112"; }
- ListElement{ longitude: "62"; latitude: "59"; height: "109"; }
- ListElement{ longitude: "62"; latitude: "60"; height: "108"; }
- ListElement{ longitude: "62"; latitude: "61"; height: "107"; }
- ListElement{ longitude: "62"; latitude: "62"; height: "107"; }
- ListElement{ longitude: "62"; latitude: "63"; height: "107"; }
- ListElement{ longitude: "62"; latitude: "64"; height: "108"; }
- ListElement{ longitude: "62"; latitude: "65"; height: "108"; }
- ListElement{ longitude: "62"; latitude: "66"; height: "108"; }
- ListElement{ longitude: "62"; latitude: "67"; height: "106"; }
- ListElement{ longitude: "62"; latitude: "68"; height: "107"; }
- ListElement{ longitude: "62"; latitude: "69"; height: "107"; }
- ListElement{ longitude: "62"; latitude: "70"; height: "109"; }
- ListElement{ longitude: "62"; latitude: "71"; height: "114"; }
- ListElement{ longitude: "62"; latitude: "72"; height: "116"; }
- ListElement{ longitude: "62"; latitude: "73"; height: "118"; }
- ListElement{ longitude: "62"; latitude: "74"; height: "119"; }
- ListElement{ longitude: "62"; latitude: "75"; height: "121"; }
- ListElement{ longitude: "62"; latitude: "76"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "77"; height: "126"; }
- ListElement{ longitude: "62"; latitude: "78"; height: "126"; }
- ListElement{ longitude: "62"; latitude: "79"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "80"; height: "121"; }
- ListElement{ longitude: "62"; latitude: "81"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "82"; height: "123"; }
- ListElement{ longitude: "62"; latitude: "83"; height: "127"; }
- ListElement{ longitude: "62"; latitude: "84"; height: "124"; }
- ListElement{ longitude: "62"; latitude: "85"; height: "119"; }
- ListElement{ longitude: "62"; latitude: "86"; height: "118"; }
- ListElement{ longitude: "62"; latitude: "87"; height: "116"; }
- ListElement{ longitude: "62"; latitude: "88"; height: "117"; }
- ListElement{ longitude: "62"; latitude: "89"; height: "113"; }
- ListElement{ longitude: "62"; latitude: "90"; height: "114"; }
- ListElement{ longitude: "62"; latitude: "91"; height: "116"; }
- ListElement{ longitude: "62"; latitude: "92"; height: "120"; }
- ListElement{ longitude: "62"; latitude: "93"; height: "116"; }
- ListElement{ longitude: "62"; latitude: "94"; height: "116"; }
- ListElement{ longitude: "62"; latitude: "95"; height: "118"; }
- ListElement{ longitude: "62"; latitude: "96"; height: "126"; }
- ListElement{ longitude: "62"; latitude: "97"; height: "126"; }
- ListElement{ longitude: "62"; latitude: "98"; height: "122"; }
- ListElement{ longitude: "62"; latitude: "99"; height: "124"; }
- ListElement{ longitude: "63"; latitude: "0"; height: "125"; }
- ListElement{ longitude: "63"; latitude: "1"; height: "125"; }
- ListElement{ longitude: "63"; latitude: "2"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "63"; latitude: "4"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "5"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "6"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "7"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "8"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "9"; height: "118"; }
- ListElement{ longitude: "63"; latitude: "10"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "11"; height: "119"; }
- ListElement{ longitude: "63"; latitude: "12"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "13"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "14"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "15"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "16"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "17"; height: "120"; }
- ListElement{ longitude: "63"; latitude: "18"; height: "119"; }
- ListElement{ longitude: "63"; latitude: "19"; height: "116"; }
- ListElement{ longitude: "63"; latitude: "20"; height: "115"; }
- ListElement{ longitude: "63"; latitude: "21"; height: "116"; }
- ListElement{ longitude: "63"; latitude: "22"; height: "109"; }
- ListElement{ longitude: "63"; latitude: "23"; height: "109"; }
- ListElement{ longitude: "63"; latitude: "24"; height: "117"; }
- ListElement{ longitude: "63"; latitude: "25"; height: "113"; }
- ListElement{ longitude: "63"; latitude: "26"; height: "112"; }
- ListElement{ longitude: "63"; latitude: "27"; height: "111"; }
- ListElement{ longitude: "63"; latitude: "28"; height: "111"; }
- ListElement{ longitude: "63"; latitude: "29"; height: "113"; }
- ListElement{ longitude: "63"; latitude: "30"; height: "115"; }
- ListElement{ longitude: "63"; latitude: "31"; height: "119"; }
- ListElement{ longitude: "63"; latitude: "32"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "33"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "34"; height: "124"; }
- ListElement{ longitude: "63"; latitude: "35"; height: "127"; }
- ListElement{ longitude: "63"; latitude: "36"; height: "127"; }
- ListElement{ longitude: "63"; latitude: "37"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "38"; height: "125"; }
- ListElement{ longitude: "63"; latitude: "39"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "63"; latitude: "41"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "42"; height: "118"; }
- ListElement{ longitude: "63"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "63"; latitude: "44"; height: "125"; }
- ListElement{ longitude: "63"; latitude: "45"; height: "124"; }
- ListElement{ longitude: "63"; latitude: "46"; height: "125"; }
- ListElement{ longitude: "63"; latitude: "47"; height: "128"; }
- ListElement{ longitude: "63"; latitude: "48"; height: "133"; }
- ListElement{ longitude: "63"; latitude: "49"; height: "135"; }
- ListElement{ longitude: "63"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "63"; latitude: "51"; height: "132"; }
- ListElement{ longitude: "63"; latitude: "52"; height: "128"; }
- ListElement{ longitude: "63"; latitude: "53"; height: "124"; }
- ListElement{ longitude: "63"; latitude: "54"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "55"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "56"; height: "110"; }
- ListElement{ longitude: "63"; latitude: "57"; height: "113"; }
- ListElement{ longitude: "63"; latitude: "58"; height: "113"; }
- ListElement{ longitude: "63"; latitude: "59"; height: "109"; }
- ListElement{ longitude: "63"; latitude: "60"; height: "107"; }
- ListElement{ longitude: "63"; latitude: "61"; height: "106"; }
- ListElement{ longitude: "63"; latitude: "62"; height: "106"; }
- ListElement{ longitude: "63"; latitude: "63"; height: "106"; }
- ListElement{ longitude: "63"; latitude: "64"; height: "104"; }
- ListElement{ longitude: "63"; latitude: "65"; height: "104"; }
- ListElement{ longitude: "63"; latitude: "66"; height: "104"; }
- ListElement{ longitude: "63"; latitude: "67"; height: "106"; }
- ListElement{ longitude: "63"; latitude: "68"; height: "106"; }
- ListElement{ longitude: "63"; latitude: "69"; height: "107"; }
- ListElement{ longitude: "63"; latitude: "70"; height: "109"; }
- ListElement{ longitude: "63"; latitude: "71"; height: "114"; }
- ListElement{ longitude: "63"; latitude: "72"; height: "115"; }
- ListElement{ longitude: "63"; latitude: "73"; height: "117"; }
- ListElement{ longitude: "63"; latitude: "74"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "75"; height: "123"; }
- ListElement{ longitude: "63"; latitude: "76"; height: "127"; }
- ListElement{ longitude: "63"; latitude: "77"; height: "128"; }
- ListElement{ longitude: "63"; latitude: "78"; height: "127"; }
- ListElement{ longitude: "63"; latitude: "79"; height: "124"; }
- ListElement{ longitude: "63"; latitude: "80"; height: "125"; }
- ListElement{ longitude: "63"; latitude: "81"; height: "122"; }
- ListElement{ longitude: "63"; latitude: "82"; height: "123"; }
- ListElement{ longitude: "63"; latitude: "83"; height: "123"; }
- ListElement{ longitude: "63"; latitude: "84"; height: "123"; }
- ListElement{ longitude: "63"; latitude: "85"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "86"; height: "115"; }
- ListElement{ longitude: "63"; latitude: "87"; height: "115"; }
- ListElement{ longitude: "63"; latitude: "88"; height: "117"; }
- ListElement{ longitude: "63"; latitude: "89"; height: "117"; }
- ListElement{ longitude: "63"; latitude: "90"; height: "118"; }
- ListElement{ longitude: "63"; latitude: "91"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "63"; latitude: "93"; height: "109"; }
- ListElement{ longitude: "63"; latitude: "94"; height: "111"; }
- ListElement{ longitude: "63"; latitude: "95"; height: "116"; }
- ListElement{ longitude: "63"; latitude: "96"; height: "121"; }
- ListElement{ longitude: "63"; latitude: "97"; height: "119"; }
- ListElement{ longitude: "63"; latitude: "98"; height: "124"; }
- ListElement{ longitude: "63"; latitude: "99"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "0"; height: "127"; }
- ListElement{ longitude: "64"; latitude: "1"; height: "127"; }
- ListElement{ longitude: "64"; latitude: "2"; height: "127"; }
- ListElement{ longitude: "64"; latitude: "3"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "5"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "6"; height: "119"; }
- ListElement{ longitude: "64"; latitude: "7"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "8"; height: "119"; }
- ListElement{ longitude: "64"; latitude: "9"; height: "114"; }
- ListElement{ longitude: "64"; latitude: "10"; height: "114"; }
- ListElement{ longitude: "64"; latitude: "11"; height: "114"; }
- ListElement{ longitude: "64"; latitude: "12"; height: "114"; }
- ListElement{ longitude: "64"; latitude: "13"; height: "115"; }
- ListElement{ longitude: "64"; latitude: "14"; height: "116"; }
- ListElement{ longitude: "64"; latitude: "15"; height: "117"; }
- ListElement{ longitude: "64"; latitude: "16"; height: "119"; }
- ListElement{ longitude: "64"; latitude: "17"; height: "119"; }
- ListElement{ longitude: "64"; latitude: "18"; height: "116"; }
- ListElement{ longitude: "64"; latitude: "19"; height: "115"; }
- ListElement{ longitude: "64"; latitude: "20"; height: "114"; }
- ListElement{ longitude: "64"; latitude: "21"; height: "116"; }
- ListElement{ longitude: "64"; latitude: "22"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "23"; height: "116"; }
- ListElement{ longitude: "64"; latitude: "24"; height: "113"; }
- ListElement{ longitude: "64"; latitude: "25"; height: "111"; }
- ListElement{ longitude: "64"; latitude: "26"; height: "109"; }
- ListElement{ longitude: "64"; latitude: "27"; height: "108"; }
- ListElement{ longitude: "64"; latitude: "28"; height: "110"; }
- ListElement{ longitude: "64"; latitude: "29"; height: "110"; }
- ListElement{ longitude: "64"; latitude: "30"; height: "114"; }
- ListElement{ longitude: "64"; latitude: "31"; height: "114"; }
- ListElement{ longitude: "64"; latitude: "32"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "33"; height: "119"; }
- ListElement{ longitude: "64"; latitude: "34"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "35"; height: "121"; }
- ListElement{ longitude: "64"; latitude: "36"; height: "121"; }
- ListElement{ longitude: "64"; latitude: "37"; height: "121"; }
- ListElement{ longitude: "64"; latitude: "38"; height: "122"; }
- ListElement{ longitude: "64"; latitude: "39"; height: "116"; }
- ListElement{ longitude: "64"; latitude: "40"; height: "119"; }
- ListElement{ longitude: "64"; latitude: "41"; height: "123"; }
- ListElement{ longitude: "64"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "64"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "64"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "64"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "64"; latitude: "46"; height: "128"; }
- ListElement{ longitude: "64"; latitude: "47"; height: "130"; }
- ListElement{ longitude: "64"; latitude: "48"; height: "134"; }
- ListElement{ longitude: "64"; latitude: "49"; height: "137"; }
- ListElement{ longitude: "64"; latitude: "50"; height: "135"; }
- ListElement{ longitude: "64"; latitude: "51"; height: "126"; }
- ListElement{ longitude: "64"; latitude: "52"; height: "125"; }
- ListElement{ longitude: "64"; latitude: "53"; height: "122"; }
- ListElement{ longitude: "64"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "64"; latitude: "57"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "58"; height: "112"; }
- ListElement{ longitude: "64"; latitude: "59"; height: "109"; }
- ListElement{ longitude: "64"; latitude: "60"; height: "107"; }
- ListElement{ longitude: "64"; latitude: "61"; height: "106"; }
- ListElement{ longitude: "64"; latitude: "62"; height: "106"; }
- ListElement{ longitude: "64"; latitude: "63"; height: "106"; }
- ListElement{ longitude: "64"; latitude: "64"; height: "108"; }
- ListElement{ longitude: "64"; latitude: "65"; height: "108"; }
- ListElement{ longitude: "64"; latitude: "66"; height: "108"; }
- ListElement{ longitude: "64"; latitude: "67"; height: "110"; }
- ListElement{ longitude: "64"; latitude: "68"; height: "107"; }
- ListElement{ longitude: "64"; latitude: "69"; height: "110"; }
- ListElement{ longitude: "64"; latitude: "70"; height: "110"; }
- ListElement{ longitude: "64"; latitude: "71"; height: "113"; }
- ListElement{ longitude: "64"; latitude: "72"; height: "115"; }
- ListElement{ longitude: "64"; latitude: "73"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "74"; height: "123"; }
- ListElement{ longitude: "64"; latitude: "75"; height: "127"; }
- ListElement{ longitude: "64"; latitude: "76"; height: "129"; }
- ListElement{ longitude: "64"; latitude: "77"; height: "130"; }
- ListElement{ longitude: "64"; latitude: "78"; height: "131"; }
- ListElement{ longitude: "64"; latitude: "79"; height: "127"; }
- ListElement{ longitude: "64"; latitude: "80"; height: "123"; }
- ListElement{ longitude: "64"; latitude: "81"; height: "121"; }
- ListElement{ longitude: "64"; latitude: "82"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "83"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "84"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "85"; height: "121"; }
- ListElement{ longitude: "64"; latitude: "86"; height: "117"; }
- ListElement{ longitude: "64"; latitude: "87"; height: "116"; }
- ListElement{ longitude: "64"; latitude: "88"; height: "116"; }
- ListElement{ longitude: "64"; latitude: "89"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "90"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "91"; height: "122"; }
- ListElement{ longitude: "64"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "64"; latitude: "93"; height: "106"; }
- ListElement{ longitude: "64"; latitude: "94"; height: "111"; }
- ListElement{ longitude: "64"; latitude: "95"; height: "116"; }
- ListElement{ longitude: "64"; latitude: "96"; height: "120"; }
- ListElement{ longitude: "64"; latitude: "97"; height: "118"; }
- ListElement{ longitude: "64"; latitude: "98"; height: "119"; }
- ListElement{ longitude: "64"; latitude: "99"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "0"; height: "128"; }
- ListElement{ longitude: "65"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "65"; latitude: "2"; height: "127"; }
- ListElement{ longitude: "65"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "65"; latitude: "4"; height: "122"; }
- ListElement{ longitude: "65"; latitude: "5"; height: "119"; }
- ListElement{ longitude: "65"; latitude: "6"; height: "120"; }
- ListElement{ longitude: "65"; latitude: "7"; height: "117"; }
- ListElement{ longitude: "65"; latitude: "8"; height: "117"; }
- ListElement{ longitude: "65"; latitude: "9"; height: "114"; }
- ListElement{ longitude: "65"; latitude: "10"; height: "112"; }
- ListElement{ longitude: "65"; latitude: "11"; height: "110"; }
- ListElement{ longitude: "65"; latitude: "12"; height: "110"; }
- ListElement{ longitude: "65"; latitude: "13"; height: "111"; }
- ListElement{ longitude: "65"; latitude: "14"; height: "113"; }
- ListElement{ longitude: "65"; latitude: "15"; height: "118"; }
- ListElement{ longitude: "65"; latitude: "16"; height: "117"; }
- ListElement{ longitude: "65"; latitude: "17"; height: "114"; }
- ListElement{ longitude: "65"; latitude: "18"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "19"; height: "114"; }
- ListElement{ longitude: "65"; latitude: "20"; height: "114"; }
- ListElement{ longitude: "65"; latitude: "21"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "22"; height: "117"; }
- ListElement{ longitude: "65"; latitude: "23"; height: "117"; }
- ListElement{ longitude: "65"; latitude: "24"; height: "113"; }
- ListElement{ longitude: "65"; latitude: "25"; height: "112"; }
- ListElement{ longitude: "65"; latitude: "26"; height: "107"; }
- ListElement{ longitude: "65"; latitude: "27"; height: "104"; }
- ListElement{ longitude: "65"; latitude: "28"; height: "104"; }
- ListElement{ longitude: "65"; latitude: "29"; height: "108"; }
- ListElement{ longitude: "65"; latitude: "30"; height: "110"; }
- ListElement{ longitude: "65"; latitude: "31"; height: "112"; }
- ListElement{ longitude: "65"; latitude: "32"; height: "115"; }
- ListElement{ longitude: "65"; latitude: "33"; height: "115"; }
- ListElement{ longitude: "65"; latitude: "34"; height: "115"; }
- ListElement{ longitude: "65"; latitude: "35"; height: "113"; }
- ListElement{ longitude: "65"; latitude: "36"; height: "117"; }
- ListElement{ longitude: "65"; latitude: "37"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "38"; height: "114"; }
- ListElement{ longitude: "65"; latitude: "39"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "40"; height: "118"; }
- ListElement{ longitude: "65"; latitude: "41"; height: "122"; }
- ListElement{ longitude: "65"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "65"; latitude: "43"; height: "130"; }
- ListElement{ longitude: "65"; latitude: "44"; height: "131"; }
- ListElement{ longitude: "65"; latitude: "45"; height: "132"; }
- ListElement{ longitude: "65"; latitude: "46"; height: "133"; }
- ListElement{ longitude: "65"; latitude: "47"; height: "134"; }
- ListElement{ longitude: "65"; latitude: "48"; height: "130"; }
- ListElement{ longitude: "65"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "65"; latitude: "50"; height: "133"; }
- ListElement{ longitude: "65"; latitude: "51"; height: "120"; }
- ListElement{ longitude: "65"; latitude: "52"; height: "125"; }
- ListElement{ longitude: "65"; latitude: "53"; height: "124"; }
- ListElement{ longitude: "65"; latitude: "54"; height: "120"; }
- ListElement{ longitude: "65"; latitude: "55"; height: "119"; }
- ListElement{ longitude: "65"; latitude: "56"; height: "119"; }
- ListElement{ longitude: "65"; latitude: "57"; height: "117"; }
- ListElement{ longitude: "65"; latitude: "58"; height: "113"; }
- ListElement{ longitude: "65"; latitude: "59"; height: "110"; }
- ListElement{ longitude: "65"; latitude: "60"; height: "110"; }
- ListElement{ longitude: "65"; latitude: "61"; height: "108"; }
- ListElement{ longitude: "65"; latitude: "62"; height: "109"; }
- ListElement{ longitude: "65"; latitude: "63"; height: "109"; }
- ListElement{ longitude: "65"; latitude: "64"; height: "107"; }
- ListElement{ longitude: "65"; latitude: "65"; height: "107"; }
- ListElement{ longitude: "65"; latitude: "66"; height: "107"; }
- ListElement{ longitude: "65"; latitude: "67"; height: "109"; }
- ListElement{ longitude: "65"; latitude: "68"; height: "104"; }
- ListElement{ longitude: "65"; latitude: "69"; height: "112"; }
- ListElement{ longitude: "65"; latitude: "70"; height: "112"; }
- ListElement{ longitude: "65"; latitude: "71"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "72"; height: "118"; }
- ListElement{ longitude: "65"; latitude: "73"; height: "119"; }
- ListElement{ longitude: "65"; latitude: "74"; height: "126"; }
- ListElement{ longitude: "65"; latitude: "75"; height: "128"; }
- ListElement{ longitude: "65"; latitude: "76"; height: "132"; }
- ListElement{ longitude: "65"; latitude: "77"; height: "129"; }
- ListElement{ longitude: "65"; latitude: "78"; height: "131"; }
- ListElement{ longitude: "65"; latitude: "79"; height: "129"; }
- ListElement{ longitude: "65"; latitude: "80"; height: "124"; }
- ListElement{ longitude: "65"; latitude: "81"; height: "119"; }
- ListElement{ longitude: "65"; latitude: "82"; height: "120"; }
- ListElement{ longitude: "65"; latitude: "83"; height: "121"; }
- ListElement{ longitude: "65"; latitude: "84"; height: "121"; }
- ListElement{ longitude: "65"; latitude: "85"; height: "120"; }
- ListElement{ longitude: "65"; latitude: "86"; height: "119"; }
- ListElement{ longitude: "65"; latitude: "87"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "88"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "89"; height: "118"; }
- ListElement{ longitude: "65"; latitude: "90"; height: "120"; }
- ListElement{ longitude: "65"; latitude: "91"; height: "122"; }
- ListElement{ longitude: "65"; latitude: "92"; height: "120"; }
- ListElement{ longitude: "65"; latitude: "93"; height: "111"; }
- ListElement{ longitude: "65"; latitude: "94"; height: "110"; }
- ListElement{ longitude: "65"; latitude: "95"; height: "110"; }
- ListElement{ longitude: "65"; latitude: "96"; height: "117"; }
- ListElement{ longitude: "65"; latitude: "97"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "98"; height: "116"; }
- ListElement{ longitude: "65"; latitude: "99"; height: "116"; }
- ListElement{ longitude: "66"; latitude: "0"; height: "128"; }
- ListElement{ longitude: "66"; latitude: "1"; height: "130"; }
- ListElement{ longitude: "66"; latitude: "2"; height: "127"; }
- ListElement{ longitude: "66"; latitude: "3"; height: "125"; }
- ListElement{ longitude: "66"; latitude: "4"; height: "123"; }
- ListElement{ longitude: "66"; latitude: "5"; height: "120"; }
- ListElement{ longitude: "66"; latitude: "6"; height: "121"; }
- ListElement{ longitude: "66"; latitude: "7"; height: "119"; }
- ListElement{ longitude: "66"; latitude: "8"; height: "115"; }
- ListElement{ longitude: "66"; latitude: "9"; height: "113"; }
- ListElement{ longitude: "66"; latitude: "10"; height: "110"; }
- ListElement{ longitude: "66"; latitude: "11"; height: "107"; }
- ListElement{ longitude: "66"; latitude: "12"; height: "108"; }
- ListElement{ longitude: "66"; latitude: "13"; height: "111"; }
- ListElement{ longitude: "66"; latitude: "14"; height: "111"; }
- ListElement{ longitude: "66"; latitude: "15"; height: "116"; }
- ListElement{ longitude: "66"; latitude: "16"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "17"; height: "112"; }
- ListElement{ longitude: "66"; latitude: "18"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "19"; height: "115"; }
- ListElement{ longitude: "66"; latitude: "20"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "21"; height: "119"; }
- ListElement{ longitude: "66"; latitude: "22"; height: "117"; }
- ListElement{ longitude: "66"; latitude: "23"; height: "117"; }
- ListElement{ longitude: "66"; latitude: "24"; height: "115"; }
- ListElement{ longitude: "66"; latitude: "25"; height: "112"; }
- ListElement{ longitude: "66"; latitude: "26"; height: "107"; }
- ListElement{ longitude: "66"; latitude: "27"; height: "102"; }
- ListElement{ longitude: "66"; latitude: "28"; height: "102"; }
- ListElement{ longitude: "66"; latitude: "29"; height: "107"; }
- ListElement{ longitude: "66"; latitude: "30"; height: "110"; }
- ListElement{ longitude: "66"; latitude: "31"; height: "110"; }
- ListElement{ longitude: "66"; latitude: "32"; height: "113"; }
- ListElement{ longitude: "66"; latitude: "33"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "34"; height: "113"; }
- ListElement{ longitude: "66"; latitude: "35"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "36"; height: "112"; }
- ListElement{ longitude: "66"; latitude: "37"; height: "111"; }
- ListElement{ longitude: "66"; latitude: "38"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "39"; height: "116"; }
- ListElement{ longitude: "66"; latitude: "40"; height: "119"; }
- ListElement{ longitude: "66"; latitude: "41"; height: "124"; }
- ListElement{ longitude: "66"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "66"; latitude: "43"; height: "131"; }
- ListElement{ longitude: "66"; latitude: "44"; height: "133"; }
- ListElement{ longitude: "66"; latitude: "45"; height: "136"; }
- ListElement{ longitude: "66"; latitude: "46"; height: "137"; }
- ListElement{ longitude: "66"; latitude: "47"; height: "134"; }
- ListElement{ longitude: "66"; latitude: "48"; height: "136"; }
- ListElement{ longitude: "66"; latitude: "49"; height: "128"; }
- ListElement{ longitude: "66"; latitude: "50"; height: "130"; }
- ListElement{ longitude: "66"; latitude: "51"; height: "121"; }
- ListElement{ longitude: "66"; latitude: "52"; height: "124"; }
- ListElement{ longitude: "66"; latitude: "53"; height: "125"; }
- ListElement{ longitude: "66"; latitude: "54"; height: "121"; }
- ListElement{ longitude: "66"; latitude: "55"; height: "120"; }
- ListElement{ longitude: "66"; latitude: "56"; height: "118"; }
- ListElement{ longitude: "66"; latitude: "57"; height: "118"; }
- ListElement{ longitude: "66"; latitude: "58"; height: "117"; }
- ListElement{ longitude: "66"; latitude: "59"; height: "109"; }
- ListElement{ longitude: "66"; latitude: "60"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "61"; height: "109"; }
- ListElement{ longitude: "66"; latitude: "62"; height: "110"; }
- ListElement{ longitude: "66"; latitude: "63"; height: "111"; }
- ListElement{ longitude: "66"; latitude: "64"; height: "110"; }
- ListElement{ longitude: "66"; latitude: "65"; height: "108"; }
- ListElement{ longitude: "66"; latitude: "66"; height: "108"; }
- ListElement{ longitude: "66"; latitude: "67"; height: "109"; }
- ListElement{ longitude: "66"; latitude: "68"; height: "112"; }
- ListElement{ longitude: "66"; latitude: "69"; height: "112"; }
- ListElement{ longitude: "66"; latitude: "70"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "71"; height: "117"; }
- ListElement{ longitude: "66"; latitude: "72"; height: "119"; }
- ListElement{ longitude: "66"; latitude: "73"; height: "120"; }
- ListElement{ longitude: "66"; latitude: "74"; height: "123"; }
- ListElement{ longitude: "66"; latitude: "75"; height: "128"; }
- ListElement{ longitude: "66"; latitude: "76"; height: "131"; }
- ListElement{ longitude: "66"; latitude: "77"; height: "134"; }
- ListElement{ longitude: "66"; latitude: "78"; height: "136"; }
- ListElement{ longitude: "66"; latitude: "79"; height: "130"; }
- ListElement{ longitude: "66"; latitude: "80"; height: "126"; }
- ListElement{ longitude: "66"; latitude: "81"; height: "120"; }
- ListElement{ longitude: "66"; latitude: "82"; height: "120"; }
- ListElement{ longitude: "66"; latitude: "83"; height: "119"; }
- ListElement{ longitude: "66"; latitude: "84"; height: "119"; }
- ListElement{ longitude: "66"; latitude: "85"; height: "119"; }
- ListElement{ longitude: "66"; latitude: "86"; height: "120"; }
- ListElement{ longitude: "66"; latitude: "87"; height: "117"; }
- ListElement{ longitude: "66"; latitude: "88"; height: "116"; }
- ListElement{ longitude: "66"; latitude: "89"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "90"; height: "117"; }
- ListElement{ longitude: "66"; latitude: "91"; height: "120"; }
- ListElement{ longitude: "66"; latitude: "92"; height: "121"; }
- ListElement{ longitude: "66"; latitude: "93"; height: "114"; }
- ListElement{ longitude: "66"; latitude: "94"; height: "115"; }
- ListElement{ longitude: "66"; latitude: "95"; height: "112"; }
- ListElement{ longitude: "66"; latitude: "96"; height: "119"; }
- ListElement{ longitude: "66"; latitude: "97"; height: "116"; }
- ListElement{ longitude: "66"; latitude: "98"; height: "116"; }
- ListElement{ longitude: "66"; latitude: "99"; height: "119"; }
- ListElement{ longitude: "67"; latitude: "0"; height: "126"; }
- ListElement{ longitude: "67"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "67"; latitude: "2"; height: "127"; }
- ListElement{ longitude: "67"; latitude: "3"; height: "126"; }
- ListElement{ longitude: "67"; latitude: "4"; height: "124"; }
- ListElement{ longitude: "67"; latitude: "5"; height: "120"; }
- ListElement{ longitude: "67"; latitude: "6"; height: "121"; }
- ListElement{ longitude: "67"; latitude: "7"; height: "119"; }
- ListElement{ longitude: "67"; latitude: "8"; height: "116"; }
- ListElement{ longitude: "67"; latitude: "9"; height: "114"; }
- ListElement{ longitude: "67"; latitude: "10"; height: "111"; }
- ListElement{ longitude: "67"; latitude: "11"; height: "108"; }
- ListElement{ longitude: "67"; latitude: "12"; height: "108"; }
- ListElement{ longitude: "67"; latitude: "13"; height: "108"; }
- ListElement{ longitude: "67"; latitude: "14"; height: "109"; }
- ListElement{ longitude: "67"; latitude: "15"; height: "109"; }
- ListElement{ longitude: "67"; latitude: "16"; height: "109"; }
- ListElement{ longitude: "67"; latitude: "17"; height: "112"; }
- ListElement{ longitude: "67"; latitude: "18"; height: "112"; }
- ListElement{ longitude: "67"; latitude: "19"; height: "110"; }
- ListElement{ longitude: "67"; latitude: "20"; height: "97"; }
- ListElement{ longitude: "67"; latitude: "21"; height: "113"; }
- ListElement{ longitude: "67"; latitude: "22"; height: "118"; }
- ListElement{ longitude: "67"; latitude: "23"; height: "118"; }
- ListElement{ longitude: "67"; latitude: "24"; height: "114"; }
- ListElement{ longitude: "67"; latitude: "25"; height: "112"; }
- ListElement{ longitude: "67"; latitude: "26"; height: "109"; }
- ListElement{ longitude: "67"; latitude: "27"; height: "105"; }
- ListElement{ longitude: "67"; latitude: "28"; height: "104"; }
- ListElement{ longitude: "67"; latitude: "29"; height: "102"; }
- ListElement{ longitude: "67"; latitude: "30"; height: "107"; }
- ListElement{ longitude: "67"; latitude: "31"; height: "111"; }
- ListElement{ longitude: "67"; latitude: "32"; height: "111"; }
- ListElement{ longitude: "67"; latitude: "33"; height: "114"; }
- ListElement{ longitude: "67"; latitude: "34"; height: "113"; }
- ListElement{ longitude: "67"; latitude: "35"; height: "112"; }
- ListElement{ longitude: "67"; latitude: "36"; height: "110"; }
- ListElement{ longitude: "67"; latitude: "37"; height: "109"; }
- ListElement{ longitude: "67"; latitude: "38"; height: "114"; }
- ListElement{ longitude: "67"; latitude: "39"; height: "117"; }
- ListElement{ longitude: "67"; latitude: "40"; height: "122"; }
- ListElement{ longitude: "67"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "67"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "67"; latitude: "43"; height: "131"; }
- ListElement{ longitude: "67"; latitude: "44"; height: "134"; }
- ListElement{ longitude: "67"; latitude: "45"; height: "136"; }
- ListElement{ longitude: "67"; latitude: "46"; height: "134"; }
- ListElement{ longitude: "67"; latitude: "47"; height: "133"; }
- ListElement{ longitude: "67"; latitude: "48"; height: "136"; }
- ListElement{ longitude: "67"; latitude: "49"; height: "133"; }
- ListElement{ longitude: "67"; latitude: "50"; height: "129"; }
- ListElement{ longitude: "67"; latitude: "51"; height: "128"; }
- ListElement{ longitude: "67"; latitude: "52"; height: "128"; }
- ListElement{ longitude: "67"; latitude: "53"; height: "128"; }
- ListElement{ longitude: "67"; latitude: "54"; height: "123"; }
- ListElement{ longitude: "67"; latitude: "55"; height: "123"; }
- ListElement{ longitude: "67"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "67"; latitude: "57"; height: "118"; }
- ListElement{ longitude: "67"; latitude: "58"; height: "117"; }
- ListElement{ longitude: "67"; latitude: "59"; height: "104"; }
- ListElement{ longitude: "67"; latitude: "60"; height: "114"; }
- ListElement{ longitude: "67"; latitude: "61"; height: "117"; }
- ListElement{ longitude: "67"; latitude: "62"; height: "116"; }
- ListElement{ longitude: "67"; latitude: "63"; height: "114"; }
- ListElement{ longitude: "67"; latitude: "64"; height: "110"; }
- ListElement{ longitude: "67"; latitude: "65"; height: "109"; }
- ListElement{ longitude: "67"; latitude: "66"; height: "111"; }
- ListElement{ longitude: "67"; latitude: "67"; height: "112"; }
- ListElement{ longitude: "67"; latitude: "68"; height: "112"; }
- ListElement{ longitude: "67"; latitude: "69"; height: "116"; }
- ListElement{ longitude: "67"; latitude: "70"; height: "117"; }
- ListElement{ longitude: "67"; latitude: "71"; height: "119"; }
- ListElement{ longitude: "67"; latitude: "72"; height: "118"; }
- ListElement{ longitude: "67"; latitude: "73"; height: "121"; }
- ListElement{ longitude: "67"; latitude: "74"; height: "124"; }
- ListElement{ longitude: "67"; latitude: "75"; height: "127"; }
- ListElement{ longitude: "67"; latitude: "76"; height: "132"; }
- ListElement{ longitude: "67"; latitude: "77"; height: "132"; }
- ListElement{ longitude: "67"; latitude: "78"; height: "132"; }
- ListElement{ longitude: "67"; latitude: "79"; height: "124"; }
- ListElement{ longitude: "67"; latitude: "80"; height: "127"; }
- ListElement{ longitude: "67"; latitude: "81"; height: "123"; }
- ListElement{ longitude: "67"; latitude: "82"; height: "121"; }
- ListElement{ longitude: "67"; latitude: "83"; height: "122"; }
- ListElement{ longitude: "67"; latitude: "84"; height: "122"; }
- ListElement{ longitude: "67"; latitude: "85"; height: "122"; }
- ListElement{ longitude: "67"; latitude: "86"; height: "122"; }
- ListElement{ longitude: "67"; latitude: "87"; height: "120"; }
- ListElement{ longitude: "67"; latitude: "88"; height: "116"; }
- ListElement{ longitude: "67"; latitude: "89"; height: "115"; }
- ListElement{ longitude: "67"; latitude: "90"; height: "115"; }
- ListElement{ longitude: "67"; latitude: "91"; height: "117"; }
- ListElement{ longitude: "67"; latitude: "92"; height: "120"; }
- ListElement{ longitude: "67"; latitude: "93"; height: "122"; }
- ListElement{ longitude: "67"; latitude: "94"; height: "121"; }
- ListElement{ longitude: "67"; latitude: "95"; height: "120"; }
- ListElement{ longitude: "67"; latitude: "96"; height: "124"; }
- ListElement{ longitude: "67"; latitude: "97"; height: "128"; }
- ListElement{ longitude: "67"; latitude: "98"; height: "122"; }
- ListElement{ longitude: "67"; latitude: "99"; height: "123"; }
- ListElement{ longitude: "68"; latitude: "0"; height: "125"; }
- ListElement{ longitude: "68"; latitude: "1"; height: "126"; }
- ListElement{ longitude: "68"; latitude: "2"; height: "128"; }
- ListElement{ longitude: "68"; latitude: "3"; height: "125"; }
- ListElement{ longitude: "68"; latitude: "4"; height: "121"; }
- ListElement{ longitude: "68"; latitude: "5"; height: "121"; }
- ListElement{ longitude: "68"; latitude: "6"; height: "120"; }
- ListElement{ longitude: "68"; latitude: "7"; height: "118"; }
- ListElement{ longitude: "68"; latitude: "8"; height: "115"; }
- ListElement{ longitude: "68"; latitude: "9"; height: "110"; }
- ListElement{ longitude: "68"; latitude: "10"; height: "109"; }
- ListElement{ longitude: "68"; latitude: "11"; height: "108"; }
- ListElement{ longitude: "68"; latitude: "12"; height: "109"; }
- ListElement{ longitude: "68"; latitude: "13"; height: "109"; }
- ListElement{ longitude: "68"; latitude: "14"; height: "108"; }
- ListElement{ longitude: "68"; latitude: "15"; height: "108"; }
- ListElement{ longitude: "68"; latitude: "16"; height: "104"; }
- ListElement{ longitude: "68"; latitude: "17"; height: "108"; }
- ListElement{ longitude: "68"; latitude: "18"; height: "111"; }
- ListElement{ longitude: "68"; latitude: "19"; height: "113"; }
- ListElement{ longitude: "68"; latitude: "20"; height: "105"; }
- ListElement{ longitude: "68"; latitude: "21"; height: "114"; }
- ListElement{ longitude: "68"; latitude: "22"; height: "114"; }
- ListElement{ longitude: "68"; latitude: "23"; height: "114"; }
- ListElement{ longitude: "68"; latitude: "24"; height: "113"; }
- ListElement{ longitude: "68"; latitude: "25"; height: "111"; }
- ListElement{ longitude: "68"; latitude: "26"; height: "109"; }
- ListElement{ longitude: "68"; latitude: "27"; height: "107"; }
- ListElement{ longitude: "68"; latitude: "28"; height: "105"; }
- ListElement{ longitude: "68"; latitude: "29"; height: "104"; }
- ListElement{ longitude: "68"; latitude: "30"; height: "100"; }
- ListElement{ longitude: "68"; latitude: "31"; height: "105"; }
- ListElement{ longitude: "68"; latitude: "32"; height: "107"; }
- ListElement{ longitude: "68"; latitude: "33"; height: "109"; }
- ListElement{ longitude: "68"; latitude: "34"; height: "111"; }
- ListElement{ longitude: "68"; latitude: "35"; height: "108"; }
- ListElement{ longitude: "68"; latitude: "36"; height: "109"; }
- ListElement{ longitude: "68"; latitude: "37"; height: "111"; }
- ListElement{ longitude: "68"; latitude: "38"; height: "116"; }
- ListElement{ longitude: "68"; latitude: "39"; height: "118"; }
- ListElement{ longitude: "68"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "68"; latitude: "41"; height: "122"; }
- ListElement{ longitude: "68"; latitude: "42"; height: "131"; }
- ListElement{ longitude: "68"; latitude: "43"; height: "124"; }
- ListElement{ longitude: "68"; latitude: "44"; height: "131"; }
- ListElement{ longitude: "68"; latitude: "45"; height: "130"; }
- ListElement{ longitude: "68"; latitude: "46"; height: "131"; }
- ListElement{ longitude: "68"; latitude: "47"; height: "129"; }
- ListElement{ longitude: "68"; latitude: "48"; height: "130"; }
- ListElement{ longitude: "68"; latitude: "49"; height: "126"; }
- ListElement{ longitude: "68"; latitude: "50"; height: "128"; }
- ListElement{ longitude: "68"; latitude: "51"; height: "130"; }
- ListElement{ longitude: "68"; latitude: "52"; height: "129"; }
- ListElement{ longitude: "68"; latitude: "53"; height: "127"; }
- ListElement{ longitude: "68"; latitude: "54"; height: "126"; }
- ListElement{ longitude: "68"; latitude: "55"; height: "124"; }
- ListElement{ longitude: "68"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "68"; latitude: "57"; height: "119"; }
- ListElement{ longitude: "68"; latitude: "58"; height: "120"; }
- ListElement{ longitude: "68"; latitude: "59"; height: "120"; }
- ListElement{ longitude: "68"; latitude: "60"; height: "120"; }
- ListElement{ longitude: "68"; latitude: "61"; height: "122"; }
- ListElement{ longitude: "68"; latitude: "62"; height: "121"; }
- ListElement{ longitude: "68"; latitude: "63"; height: "115"; }
- ListElement{ longitude: "68"; latitude: "64"; height: "115"; }
- ListElement{ longitude: "68"; latitude: "65"; height: "111"; }
- ListElement{ longitude: "68"; latitude: "66"; height: "111"; }
- ListElement{ longitude: "68"; latitude: "67"; height: "112"; }
- ListElement{ longitude: "68"; latitude: "68"; height: "116"; }
- ListElement{ longitude: "68"; latitude: "69"; height: "116"; }
- ListElement{ longitude: "68"; latitude: "70"; height: "119"; }
- ListElement{ longitude: "68"; latitude: "71"; height: "119"; }
- ListElement{ longitude: "68"; latitude: "72"; height: "119"; }
- ListElement{ longitude: "68"; latitude: "73"; height: "119"; }
- ListElement{ longitude: "68"; latitude: "74"; height: "121"; }
- ListElement{ longitude: "68"; latitude: "75"; height: "126"; }
- ListElement{ longitude: "68"; latitude: "76"; height: "127"; }
- ListElement{ longitude: "68"; latitude: "77"; height: "129"; }
- ListElement{ longitude: "68"; latitude: "78"; height: "133"; }
- ListElement{ longitude: "68"; latitude: "79"; height: "130"; }
- ListElement{ longitude: "68"; latitude: "80"; height: "128"; }
- ListElement{ longitude: "68"; latitude: "81"; height: "125"; }
- ListElement{ longitude: "68"; latitude: "82"; height: "123"; }
- ListElement{ longitude: "68"; latitude: "83"; height: "122"; }
- ListElement{ longitude: "68"; latitude: "84"; height: "122"; }
- ListElement{ longitude: "68"; latitude: "85"; height: "123"; }
- ListElement{ longitude: "68"; latitude: "86"; height: "124"; }
- ListElement{ longitude: "68"; latitude: "87"; height: "122"; }
- ListElement{ longitude: "68"; latitude: "88"; height: "117"; }
- ListElement{ longitude: "68"; latitude: "89"; height: "115"; }
- ListElement{ longitude: "68"; latitude: "90"; height: "115"; }
- ListElement{ longitude: "68"; latitude: "91"; height: "116"; }
- ListElement{ longitude: "68"; latitude: "92"; height: "118"; }
- ListElement{ longitude: "68"; latitude: "93"; height: "122"; }
- ListElement{ longitude: "68"; latitude: "94"; height: "122"; }
- ListElement{ longitude: "68"; latitude: "95"; height: "124"; }
- ListElement{ longitude: "68"; latitude: "96"; height: "128"; }
- ListElement{ longitude: "68"; latitude: "97"; height: "133"; }
- ListElement{ longitude: "68"; latitude: "98"; height: "125"; }
- ListElement{ longitude: "68"; latitude: "99"; height: "124"; }
- ListElement{ longitude: "69"; latitude: "0"; height: "126"; }
- ListElement{ longitude: "69"; latitude: "1"; height: "122"; }
- ListElement{ longitude: "69"; latitude: "2"; height: "125"; }
- ListElement{ longitude: "69"; latitude: "3"; height: "124"; }
- ListElement{ longitude: "69"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "69"; latitude: "5"; height: "118"; }
- ListElement{ longitude: "69"; latitude: "6"; height: "118"; }
- ListElement{ longitude: "69"; latitude: "7"; height: "116"; }
- ListElement{ longitude: "69"; latitude: "8"; height: "113"; }
- ListElement{ longitude: "69"; latitude: "9"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "10"; height: "107"; }
- ListElement{ longitude: "69"; latitude: "11"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "12"; height: "108"; }
- ListElement{ longitude: "69"; latitude: "13"; height: "108"; }
- ListElement{ longitude: "69"; latitude: "14"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "15"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "16"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "17"; height: "108"; }
- ListElement{ longitude: "69"; latitude: "18"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "19"; height: "112"; }
- ListElement{ longitude: "69"; latitude: "20"; height: "114"; }
- ListElement{ longitude: "69"; latitude: "21"; height: "114"; }
- ListElement{ longitude: "69"; latitude: "22"; height: "111"; }
- ListElement{ longitude: "69"; latitude: "23"; height: "110"; }
- ListElement{ longitude: "69"; latitude: "24"; height: "112"; }
- ListElement{ longitude: "69"; latitude: "25"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "26"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "27"; height: "107"; }
- ListElement{ longitude: "69"; latitude: "28"; height: "105"; }
- ListElement{ longitude: "69"; latitude: "29"; height: "101"; }
- ListElement{ longitude: "69"; latitude: "30"; height: "100"; }
- ListElement{ longitude: "69"; latitude: "31"; height: "98"; }
- ListElement{ longitude: "69"; latitude: "32"; height: "99"; }
- ListElement{ longitude: "69"; latitude: "33"; height: "101"; }
- ListElement{ longitude: "69"; latitude: "34"; height: "104"; }
- ListElement{ longitude: "69"; latitude: "35"; height: "105"; }
- ListElement{ longitude: "69"; latitude: "36"; height: "109"; }
- ListElement{ longitude: "69"; latitude: "37"; height: "112"; }
- ListElement{ longitude: "69"; latitude: "38"; height: "116"; }
- ListElement{ longitude: "69"; latitude: "39"; height: "121"; }
- ListElement{ longitude: "69"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "69"; latitude: "41"; height: "130"; }
- ListElement{ longitude: "69"; latitude: "42"; height: "131"; }
- ListElement{ longitude: "69"; latitude: "43"; height: "130"; }
- ListElement{ longitude: "69"; latitude: "44"; height: "131"; }
- ListElement{ longitude: "69"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "69"; latitude: "46"; height: "128"; }
- ListElement{ longitude: "69"; latitude: "47"; height: "126"; }
- ListElement{ longitude: "69"; latitude: "48"; height: "126"; }
- ListElement{ longitude: "69"; latitude: "49"; height: "129"; }
- ListElement{ longitude: "69"; latitude: "50"; height: "130"; }
- ListElement{ longitude: "69"; latitude: "51"; height: "131"; }
- ListElement{ longitude: "69"; latitude: "52"; height: "130"; }
- ListElement{ longitude: "69"; latitude: "53"; height: "126"; }
- ListElement{ longitude: "69"; latitude: "54"; height: "119"; }
- ListElement{ longitude: "69"; latitude: "55"; height: "126"; }
- ListElement{ longitude: "69"; latitude: "56"; height: "123"; }
- ListElement{ longitude: "69"; latitude: "57"; height: "124"; }
- ListElement{ longitude: "69"; latitude: "58"; height: "122"; }
- ListElement{ longitude: "69"; latitude: "59"; height: "122"; }
- ListElement{ longitude: "69"; latitude: "60"; height: "123"; }
- ListElement{ longitude: "69"; latitude: "61"; height: "121"; }
- ListElement{ longitude: "69"; latitude: "62"; height: "119"; }
- ListElement{ longitude: "69"; latitude: "63"; height: "120"; }
- ListElement{ longitude: "69"; latitude: "64"; height: "118"; }
- ListElement{ longitude: "69"; latitude: "65"; height: "113"; }
- ListElement{ longitude: "69"; latitude: "66"; height: "112"; }
- ListElement{ longitude: "69"; latitude: "67"; height: "116"; }
- ListElement{ longitude: "69"; latitude: "68"; height: "121"; }
- ListElement{ longitude: "69"; latitude: "69"; height: "121"; }
- ListElement{ longitude: "69"; latitude: "70"; height: "123"; }
- ListElement{ longitude: "69"; latitude: "71"; height: "120"; }
- ListElement{ longitude: "69"; latitude: "72"; height: "121"; }
- ListElement{ longitude: "69"; latitude: "73"; height: "118"; }
- ListElement{ longitude: "69"; latitude: "74"; height: "119"; }
- ListElement{ longitude: "69"; latitude: "75"; height: "124"; }
- ListElement{ longitude: "69"; latitude: "76"; height: "127"; }
- ListElement{ longitude: "69"; latitude: "77"; height: "129"; }
- ListElement{ longitude: "69"; latitude: "78"; height: "131"; }
- ListElement{ longitude: "69"; latitude: "79"; height: "133"; }
- ListElement{ longitude: "69"; latitude: "80"; height: "127"; }
- ListElement{ longitude: "69"; latitude: "81"; height: "127"; }
- ListElement{ longitude: "69"; latitude: "82"; height: "126"; }
- ListElement{ longitude: "69"; latitude: "83"; height: "125"; }
- ListElement{ longitude: "69"; latitude: "84"; height: "125"; }
- ListElement{ longitude: "69"; latitude: "85"; height: "127"; }
- ListElement{ longitude: "69"; latitude: "86"; height: "127"; }
- ListElement{ longitude: "69"; latitude: "87"; height: "125"; }
- ListElement{ longitude: "69"; latitude: "88"; height: "120"; }
- ListElement{ longitude: "69"; latitude: "89"; height: "115"; }
- ListElement{ longitude: "69"; latitude: "90"; height: "115"; }
- ListElement{ longitude: "69"; latitude: "91"; height: "114"; }
- ListElement{ longitude: "69"; latitude: "92"; height: "118"; }
- ListElement{ longitude: "69"; latitude: "93"; height: "122"; }
- ListElement{ longitude: "69"; latitude: "94"; height: "125"; }
- ListElement{ longitude: "69"; latitude: "95"; height: "130"; }
- ListElement{ longitude: "69"; latitude: "96"; height: "133"; }
- ListElement{ longitude: "69"; latitude: "97"; height: "136"; }
- ListElement{ longitude: "69"; latitude: "98"; height: "128"; }
- ListElement{ longitude: "69"; latitude: "99"; height: "125"; }
- ListElement{ longitude: "70"; latitude: "0"; height: "125"; }
- ListElement{ longitude: "70"; latitude: "1"; height: "124"; }
- ListElement{ longitude: "70"; latitude: "2"; height: "125"; }
- ListElement{ longitude: "70"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "70"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "70"; latitude: "5"; height: "116"; }
- ListElement{ longitude: "70"; latitude: "6"; height: "115"; }
- ListElement{ longitude: "70"; latitude: "7"; height: "110"; }
- ListElement{ longitude: "70"; latitude: "8"; height: "112"; }
- ListElement{ longitude: "70"; latitude: "9"; height: "108"; }
- ListElement{ longitude: "70"; latitude: "10"; height: "106"; }
- ListElement{ longitude: "70"; latitude: "11"; height: "105"; }
- ListElement{ longitude: "70"; latitude: "12"; height: "105"; }
- ListElement{ longitude: "70"; latitude: "13"; height: "105"; }
- ListElement{ longitude: "70"; latitude: "14"; height: "108"; }
- ListElement{ longitude: "70"; latitude: "15"; height: "108"; }
- ListElement{ longitude: "70"; latitude: "16"; height: "107"; }
- ListElement{ longitude: "70"; latitude: "17"; height: "110"; }
- ListElement{ longitude: "70"; latitude: "18"; height: "109"; }
- ListElement{ longitude: "70"; latitude: "19"; height: "110"; }
- ListElement{ longitude: "70"; latitude: "20"; height: "112"; }
- ListElement{ longitude: "70"; latitude: "21"; height: "110"; }
- ListElement{ longitude: "70"; latitude: "22"; height: "110"; }
- ListElement{ longitude: "70"; latitude: "23"; height: "109"; }
- ListElement{ longitude: "70"; latitude: "24"; height: "109"; }
- ListElement{ longitude: "70"; latitude: "25"; height: "109"; }
- ListElement{ longitude: "70"; latitude: "26"; height: "107"; }
- ListElement{ longitude: "70"; latitude: "27"; height: "106"; }
- ListElement{ longitude: "70"; latitude: "28"; height: "104"; }
- ListElement{ longitude: "70"; latitude: "29"; height: "101"; }
- ListElement{ longitude: "70"; latitude: "30"; height: "100"; }
- ListElement{ longitude: "70"; latitude: "31"; height: "97"; }
- ListElement{ longitude: "70"; latitude: "32"; height: "98"; }
- ListElement{ longitude: "70"; latitude: "33"; height: "99"; }
- ListElement{ longitude: "70"; latitude: "34"; height: "101"; }
- ListElement{ longitude: "70"; latitude: "35"; height: "104"; }
- ListElement{ longitude: "70"; latitude: "36"; height: "106"; }
- ListElement{ longitude: "70"; latitude: "37"; height: "108"; }
- ListElement{ longitude: "70"; latitude: "38"; height: "116"; }
- ListElement{ longitude: "70"; latitude: "39"; height: "119"; }
- ListElement{ longitude: "70"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "70"; latitude: "41"; height: "131"; }
- ListElement{ longitude: "70"; latitude: "42"; height: "130"; }
- ListElement{ longitude: "70"; latitude: "43"; height: "129"; }
- ListElement{ longitude: "70"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "70"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "70"; latitude: "46"; height: "124"; }
- ListElement{ longitude: "70"; latitude: "47"; height: "124"; }
- ListElement{ longitude: "70"; latitude: "48"; height: "123"; }
- ListElement{ longitude: "70"; latitude: "49"; height: "127"; }
- ListElement{ longitude: "70"; latitude: "50"; height: "129"; }
- ListElement{ longitude: "70"; latitude: "51"; height: "132"; }
- ListElement{ longitude: "70"; latitude: "52"; height: "133"; }
- ListElement{ longitude: "70"; latitude: "53"; height: "130"; }
- ListElement{ longitude: "70"; latitude: "54"; height: "129"; }
- ListElement{ longitude: "70"; latitude: "55"; height: "128"; }
- ListElement{ longitude: "70"; latitude: "56"; height: "126"; }
- ListElement{ longitude: "70"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "70"; latitude: "58"; height: "127"; }
- ListElement{ longitude: "70"; latitude: "59"; height: "128"; }
- ListElement{ longitude: "70"; latitude: "60"; height: "126"; }
- ListElement{ longitude: "70"; latitude: "61"; height: "125"; }
- ListElement{ longitude: "70"; latitude: "62"; height: "123"; }
- ListElement{ longitude: "70"; latitude: "63"; height: "122"; }
- ListElement{ longitude: "70"; latitude: "64"; height: "122"; }
- ListElement{ longitude: "70"; latitude: "65"; height: "115"; }
- ListElement{ longitude: "70"; latitude: "66"; height: "110"; }
- ListElement{ longitude: "70"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "70"; latitude: "68"; height: "126"; }
- ListElement{ longitude: "70"; latitude: "69"; height: "108"; }
- ListElement{ longitude: "70"; latitude: "70"; height: "102"; }
- ListElement{ longitude: "70"; latitude: "71"; height: "98"; }
- ListElement{ longitude: "70"; latitude: "72"; height: "98"; }
- ListElement{ longitude: "70"; latitude: "73"; height: "115"; }
- ListElement{ longitude: "70"; latitude: "74"; height: "120"; }
- ListElement{ longitude: "70"; latitude: "75"; height: "121"; }
- ListElement{ longitude: "70"; latitude: "76"; height: "124"; }
- ListElement{ longitude: "70"; latitude: "77"; height: "127"; }
- ListElement{ longitude: "70"; latitude: "78"; height: "121"; }
- ListElement{ longitude: "70"; latitude: "79"; height: "135"; }
- ListElement{ longitude: "70"; latitude: "80"; height: "131"; }
- ListElement{ longitude: "70"; latitude: "81"; height: "134"; }
- ListElement{ longitude: "70"; latitude: "82"; height: "129"; }
- ListElement{ longitude: "70"; latitude: "83"; height: "128"; }
- ListElement{ longitude: "70"; latitude: "84"; height: "129"; }
- ListElement{ longitude: "70"; latitude: "85"; height: "129"; }
- ListElement{ longitude: "70"; latitude: "86"; height: "129"; }
- ListElement{ longitude: "70"; latitude: "87"; height: "127"; }
- ListElement{ longitude: "70"; latitude: "88"; height: "124"; }
- ListElement{ longitude: "70"; latitude: "89"; height: "119"; }
- ListElement{ longitude: "70"; latitude: "90"; height: "117"; }
- ListElement{ longitude: "70"; latitude: "91"; height: "117"; }
- ListElement{ longitude: "70"; latitude: "92"; height: "118"; }
- ListElement{ longitude: "70"; latitude: "93"; height: "121"; }
- ListElement{ longitude: "70"; latitude: "94"; height: "124"; }
- ListElement{ longitude: "70"; latitude: "95"; height: "129"; }
- ListElement{ longitude: "70"; latitude: "96"; height: "132"; }
- ListElement{ longitude: "70"; latitude: "97"; height: "138"; }
- ListElement{ longitude: "70"; latitude: "98"; height: "134"; }
- ListElement{ longitude: "70"; latitude: "99"; height: "126"; }
- ListElement{ longitude: "71"; latitude: "0"; height: "126"; }
- ListElement{ longitude: "71"; latitude: "1"; height: "126"; }
- ListElement{ longitude: "71"; latitude: "2"; height: "127"; }
- ListElement{ longitude: "71"; latitude: "3"; height: "123"; }
- ListElement{ longitude: "71"; latitude: "4"; height: "116"; }
- ListElement{ longitude: "71"; latitude: "5"; height: "114"; }
- ListElement{ longitude: "71"; latitude: "6"; height: "110"; }
- ListElement{ longitude: "71"; latitude: "7"; height: "110"; }
- ListElement{ longitude: "71"; latitude: "8"; height: "111"; }
- ListElement{ longitude: "71"; latitude: "9"; height: "108"; }
- ListElement{ longitude: "71"; latitude: "10"; height: "106"; }
- ListElement{ longitude: "71"; latitude: "11"; height: "104"; }
- ListElement{ longitude: "71"; latitude: "12"; height: "104"; }
- ListElement{ longitude: "71"; latitude: "13"; height: "104"; }
- ListElement{ longitude: "71"; latitude: "14"; height: "104"; }
- ListElement{ longitude: "71"; latitude: "15"; height: "104"; }
- ListElement{ longitude: "71"; latitude: "16"; height: "107"; }
- ListElement{ longitude: "71"; latitude: "17"; height: "108"; }
- ListElement{ longitude: "71"; latitude: "18"; height: "110"; }
- ListElement{ longitude: "71"; latitude: "19"; height: "111"; }
- ListElement{ longitude: "71"; latitude: "20"; height: "111"; }
- ListElement{ longitude: "71"; latitude: "21"; height: "110"; }
- ListElement{ longitude: "71"; latitude: "22"; height: "111"; }
- ListElement{ longitude: "71"; latitude: "23"; height: "111"; }
- ListElement{ longitude: "71"; latitude: "24"; height: "111"; }
- ListElement{ longitude: "71"; latitude: "25"; height: "111"; }
- ListElement{ longitude: "71"; latitude: "26"; height: "112"; }
- ListElement{ longitude: "71"; latitude: "27"; height: "109"; }
- ListElement{ longitude: "71"; latitude: "28"; height: "105"; }
- ListElement{ longitude: "71"; latitude: "29"; height: "101"; }
- ListElement{ longitude: "71"; latitude: "30"; height: "102"; }
- ListElement{ longitude: "71"; latitude: "31"; height: "102"; }
- ListElement{ longitude: "71"; latitude: "32"; height: "102"; }
- ListElement{ longitude: "71"; latitude: "33"; height: "103"; }
- ListElement{ longitude: "71"; latitude: "34"; height: "106"; }
- ListElement{ longitude: "71"; latitude: "35"; height: "105"; }
- ListElement{ longitude: "71"; latitude: "36"; height: "108"; }
- ListElement{ longitude: "71"; latitude: "37"; height: "109"; }
- ListElement{ longitude: "71"; latitude: "38"; height: "114"; }
- ListElement{ longitude: "71"; latitude: "39"; height: "119"; }
- ListElement{ longitude: "71"; latitude: "40"; height: "124"; }
- ListElement{ longitude: "71"; latitude: "41"; height: "130"; }
- ListElement{ longitude: "71"; latitude: "42"; height: "130"; }
- ListElement{ longitude: "71"; latitude: "43"; height: "127"; }
- ListElement{ longitude: "71"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "71"; latitude: "45"; height: "126"; }
- ListElement{ longitude: "71"; latitude: "46"; height: "123"; }
- ListElement{ longitude: "71"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "71"; latitude: "48"; height: "124"; }
- ListElement{ longitude: "71"; latitude: "49"; height: "127"; }
- ListElement{ longitude: "71"; latitude: "50"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "51"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "52"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "53"; height: "130"; }
- ListElement{ longitude: "71"; latitude: "54"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "55"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "56"; height: "130"; }
- ListElement{ longitude: "71"; latitude: "57"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "58"; height: "128"; }
- ListElement{ longitude: "71"; latitude: "59"; height: "129"; }
- ListElement{ longitude: "71"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "71"; latitude: "61"; height: "127"; }
- ListElement{ longitude: "71"; latitude: "62"; height: "125"; }
- ListElement{ longitude: "71"; latitude: "63"; height: "121"; }
- ListElement{ longitude: "71"; latitude: "64"; height: "123"; }
- ListElement{ longitude: "71"; latitude: "65"; height: "119"; }
- ListElement{ longitude: "71"; latitude: "66"; height: "118"; }
- ListElement{ longitude: "71"; latitude: "67"; height: "121"; }
- ListElement{ longitude: "71"; latitude: "68"; height: "118"; }
- ListElement{ longitude: "71"; latitude: "69"; height: "93"; }
- ListElement{ longitude: "71"; latitude: "70"; height: "94"; }
- ListElement{ longitude: "71"; latitude: "71"; height: "95"; }
- ListElement{ longitude: "71"; latitude: "72"; height: "92"; }
- ListElement{ longitude: "71"; latitude: "73"; height: "100"; }
- ListElement{ longitude: "71"; latitude: "74"; height: "120"; }
- ListElement{ longitude: "71"; latitude: "75"; height: "120"; }
- ListElement{ longitude: "71"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "71"; latitude: "77"; height: "130"; }
- ListElement{ longitude: "71"; latitude: "78"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "79"; height: "135"; }
- ListElement{ longitude: "71"; latitude: "80"; height: "138"; }
- ListElement{ longitude: "71"; latitude: "81"; height: "134"; }
- ListElement{ longitude: "71"; latitude: "82"; height: "135"; }
- ListElement{ longitude: "71"; latitude: "83"; height: "133"; }
- ListElement{ longitude: "71"; latitude: "84"; height: "130"; }
- ListElement{ longitude: "71"; latitude: "85"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "86"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "87"; height: "131"; }
- ListElement{ longitude: "71"; latitude: "88"; height: "127"; }
- ListElement{ longitude: "71"; latitude: "89"; height: "124"; }
- ListElement{ longitude: "71"; latitude: "90"; height: "120"; }
- ListElement{ longitude: "71"; latitude: "91"; height: "119"; }
- ListElement{ longitude: "71"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "71"; latitude: "93"; height: "122"; }
- ListElement{ longitude: "71"; latitude: "94"; height: "125"; }
- ListElement{ longitude: "71"; latitude: "95"; height: "126"; }
- ListElement{ longitude: "71"; latitude: "96"; height: "132"; }
- ListElement{ longitude: "71"; latitude: "97"; height: "138"; }
- ListElement{ longitude: "71"; latitude: "98"; height: "136"; }
- ListElement{ longitude: "71"; latitude: "99"; height: "126"; }
- ListElement{ longitude: "72"; latitude: "0"; height: "127"; }
- ListElement{ longitude: "72"; latitude: "1"; height: "127"; }
- ListElement{ longitude: "72"; latitude: "2"; height: "124"; }
- ListElement{ longitude: "72"; latitude: "3"; height: "124"; }
- ListElement{ longitude: "72"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "72"; latitude: "5"; height: "116"; }
- ListElement{ longitude: "72"; latitude: "6"; height: "111"; }
- ListElement{ longitude: "72"; latitude: "7"; height: "108"; }
- ListElement{ longitude: "72"; latitude: "8"; height: "111"; }
- ListElement{ longitude: "72"; latitude: "9"; height: "108"; }
- ListElement{ longitude: "72"; latitude: "10"; height: "108"; }
- ListElement{ longitude: "72"; latitude: "11"; height: "104"; }
- ListElement{ longitude: "72"; latitude: "12"; height: "103"; }
- ListElement{ longitude: "72"; latitude: "13"; height: "105"; }
- ListElement{ longitude: "72"; latitude: "14"; height: "105"; }
- ListElement{ longitude: "72"; latitude: "15"; height: "105"; }
- ListElement{ longitude: "72"; latitude: "16"; height: "102"; }
- ListElement{ longitude: "72"; latitude: "17"; height: "105"; }
- ListElement{ longitude: "72"; latitude: "18"; height: "107"; }
- ListElement{ longitude: "72"; latitude: "19"; height: "108"; }
- ListElement{ longitude: "72"; latitude: "20"; height: "111"; }
- ListElement{ longitude: "72"; latitude: "21"; height: "111"; }
- ListElement{ longitude: "72"; latitude: "22"; height: "111"; }
- ListElement{ longitude: "72"; latitude: "23"; height: "110"; }
- ListElement{ longitude: "72"; latitude: "24"; height: "110"; }
- ListElement{ longitude: "72"; latitude: "25"; height: "110"; }
- ListElement{ longitude: "72"; latitude: "26"; height: "111"; }
- ListElement{ longitude: "72"; latitude: "27"; height: "110"; }
- ListElement{ longitude: "72"; latitude: "28"; height: "109"; }
- ListElement{ longitude: "72"; latitude: "29"; height: "110"; }
- ListElement{ longitude: "72"; latitude: "30"; height: "107"; }
- ListElement{ longitude: "72"; latitude: "31"; height: "105"; }
- ListElement{ longitude: "72"; latitude: "32"; height: "107"; }
- ListElement{ longitude: "72"; latitude: "33"; height: "108"; }
- ListElement{ longitude: "72"; latitude: "34"; height: "110"; }
- ListElement{ longitude: "72"; latitude: "35"; height: "110"; }
- ListElement{ longitude: "72"; latitude: "36"; height: "108"; }
- ListElement{ longitude: "72"; latitude: "37"; height: "107"; }
- ListElement{ longitude: "72"; latitude: "38"; height: "110"; }
- ListElement{ longitude: "72"; latitude: "39"; height: "115"; }
- ListElement{ longitude: "72"; latitude: "40"; height: "122"; }
- ListElement{ longitude: "72"; latitude: "41"; height: "127"; }
- ListElement{ longitude: "72"; latitude: "42"; height: "131"; }
- ListElement{ longitude: "72"; latitude: "43"; height: "132"; }
- ListElement{ longitude: "72"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "72"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "72"; latitude: "46"; height: "122"; }
- ListElement{ longitude: "72"; latitude: "47"; height: "123"; }
- ListElement{ longitude: "72"; latitude: "48"; height: "125"; }
- ListElement{ longitude: "72"; latitude: "49"; height: "128"; }
- ListElement{ longitude: "72"; latitude: "50"; height: "132"; }
- ListElement{ longitude: "72"; latitude: "51"; height: "134"; }
- ListElement{ longitude: "72"; latitude: "52"; height: "134"; }
- ListElement{ longitude: "72"; latitude: "53"; height: "133"; }
- ListElement{ longitude: "72"; latitude: "54"; height: "133"; }
- ListElement{ longitude: "72"; latitude: "55"; height: "133"; }
- ListElement{ longitude: "72"; latitude: "56"; height: "136"; }
- ListElement{ longitude: "72"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "72"; latitude: "58"; height: "115"; }
- ListElement{ longitude: "72"; latitude: "59"; height: "129"; }
- ListElement{ longitude: "72"; latitude: "60"; height: "128"; }
- ListElement{ longitude: "72"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "72"; latitude: "62"; height: "126"; }
- ListElement{ longitude: "72"; latitude: "63"; height: "122"; }
- ListElement{ longitude: "72"; latitude: "64"; height: "121"; }
- ListElement{ longitude: "72"; latitude: "65"; height: "116"; }
- ListElement{ longitude: "72"; latitude: "66"; height: "117"; }
- ListElement{ longitude: "72"; latitude: "67"; height: "121"; }
- ListElement{ longitude: "72"; latitude: "68"; height: "109"; }
- ListElement{ longitude: "72"; latitude: "69"; height: "101"; }
- ListElement{ longitude: "72"; latitude: "70"; height: "106"; }
- ListElement{ longitude: "72"; latitude: "71"; height: "100"; }
- ListElement{ longitude: "72"; latitude: "72"; height: "91"; }
- ListElement{ longitude: "72"; latitude: "73"; height: "101"; }
- ListElement{ longitude: "72"; latitude: "74"; height: "119"; }
- ListElement{ longitude: "72"; latitude: "75"; height: "121"; }
- ListElement{ longitude: "72"; latitude: "76"; height: "129"; }
- ListElement{ longitude: "72"; latitude: "77"; height: "131"; }
- ListElement{ longitude: "72"; latitude: "78"; height: "135"; }
- ListElement{ longitude: "72"; latitude: "79"; height: "138"; }
- ListElement{ longitude: "72"; latitude: "80"; height: "141"; }
- ListElement{ longitude: "72"; latitude: "81"; height: "139"; }
- ListElement{ longitude: "72"; latitude: "82"; height: "138"; }
- ListElement{ longitude: "72"; latitude: "83"; height: "136"; }
- ListElement{ longitude: "72"; latitude: "84"; height: "134"; }
- ListElement{ longitude: "72"; latitude: "85"; height: "133"; }
- ListElement{ longitude: "72"; latitude: "86"; height: "132"; }
- ListElement{ longitude: "72"; latitude: "87"; height: "131"; }
- ListElement{ longitude: "72"; latitude: "88"; height: "129"; }
- ListElement{ longitude: "72"; latitude: "89"; height: "127"; }
- ListElement{ longitude: "72"; latitude: "90"; height: "122"; }
- ListElement{ longitude: "72"; latitude: "91"; height: "122"; }
- ListElement{ longitude: "72"; latitude: "92"; height: "121"; }
- ListElement{ longitude: "72"; latitude: "93"; height: "120"; }
- ListElement{ longitude: "72"; latitude: "94"; height: "123"; }
- ListElement{ longitude: "72"; latitude: "95"; height: "126"; }
- ListElement{ longitude: "72"; latitude: "96"; height: "130"; }
- ListElement{ longitude: "72"; latitude: "97"; height: "137"; }
- ListElement{ longitude: "72"; latitude: "98"; height: "138"; }
- ListElement{ longitude: "72"; latitude: "99"; height: "125"; }
- ListElement{ longitude: "73"; latitude: "0"; height: "129"; }
- ListElement{ longitude: "73"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "73"; latitude: "2"; height: "127"; }
- ListElement{ longitude: "73"; latitude: "3"; height: "127"; }
- ListElement{ longitude: "73"; latitude: "4"; height: "120"; }
- ListElement{ longitude: "73"; latitude: "5"; height: "116"; }
- ListElement{ longitude: "73"; latitude: "6"; height: "110"; }
- ListElement{ longitude: "73"; latitude: "7"; height: "110"; }
- ListElement{ longitude: "73"; latitude: "8"; height: "111"; }
- ListElement{ longitude: "73"; latitude: "9"; height: "108"; }
- ListElement{ longitude: "73"; latitude: "10"; height: "108"; }
- ListElement{ longitude: "73"; latitude: "11"; height: "106"; }
- ListElement{ longitude: "73"; latitude: "12"; height: "105"; }
- ListElement{ longitude: "73"; latitude: "13"; height: "105"; }
- ListElement{ longitude: "73"; latitude: "14"; height: "103"; }
- ListElement{ longitude: "73"; latitude: "15"; height: "103"; }
- ListElement{ longitude: "73"; latitude: "16"; height: "101"; }
- ListElement{ longitude: "73"; latitude: "17"; height: "104"; }
- ListElement{ longitude: "73"; latitude: "18"; height: "106"; }
- ListElement{ longitude: "73"; latitude: "19"; height: "109"; }
- ListElement{ longitude: "73"; latitude: "20"; height: "111"; }
- ListElement{ longitude: "73"; latitude: "21"; height: "111"; }
- ListElement{ longitude: "73"; latitude: "22"; height: "110"; }
- ListElement{ longitude: "73"; latitude: "23"; height: "110"; }
- ListElement{ longitude: "73"; latitude: "24"; height: "112"; }
- ListElement{ longitude: "73"; latitude: "25"; height: "112"; }
- ListElement{ longitude: "73"; latitude: "26"; height: "112"; }
- ListElement{ longitude: "73"; latitude: "27"; height: "108"; }
- ListElement{ longitude: "73"; latitude: "28"; height: "113"; }
- ListElement{ longitude: "73"; latitude: "29"; height: "111"; }
- ListElement{ longitude: "73"; latitude: "30"; height: "110"; }
- ListElement{ longitude: "73"; latitude: "31"; height: "107"; }
- ListElement{ longitude: "73"; latitude: "32"; height: "108"; }
- ListElement{ longitude: "73"; latitude: "33"; height: "109"; }
- ListElement{ longitude: "73"; latitude: "34"; height: "110"; }
- ListElement{ longitude: "73"; latitude: "35"; height: "106"; }
- ListElement{ longitude: "73"; latitude: "36"; height: "107"; }
- ListElement{ longitude: "73"; latitude: "37"; height: "106"; }
- ListElement{ longitude: "73"; latitude: "38"; height: "107"; }
- ListElement{ longitude: "73"; latitude: "39"; height: "112"; }
- ListElement{ longitude: "73"; latitude: "40"; height: "119"; }
- ListElement{ longitude: "73"; latitude: "41"; height: "126"; }
- ListElement{ longitude: "73"; latitude: "42"; height: "131"; }
- ListElement{ longitude: "73"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "73"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "73"; latitude: "45"; height: "122"; }
- ListElement{ longitude: "73"; latitude: "46"; height: "122"; }
- ListElement{ longitude: "73"; latitude: "47"; height: "123"; }
- ListElement{ longitude: "73"; latitude: "48"; height: "127"; }
- ListElement{ longitude: "73"; latitude: "49"; height: "132"; }
- ListElement{ longitude: "73"; latitude: "50"; height: "135"; }
- ListElement{ longitude: "73"; latitude: "51"; height: "135"; }
- ListElement{ longitude: "73"; latitude: "52"; height: "135"; }
- ListElement{ longitude: "73"; latitude: "53"; height: "133"; }
- ListElement{ longitude: "73"; latitude: "54"; height: "133"; }
- ListElement{ longitude: "73"; latitude: "55"; height: "135"; }
- ListElement{ longitude: "73"; latitude: "56"; height: "138"; }
- ListElement{ longitude: "73"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "73"; latitude: "58"; height: "119"; }
- ListElement{ longitude: "73"; latitude: "59"; height: "129"; }
- ListElement{ longitude: "73"; latitude: "60"; height: "129"; }
- ListElement{ longitude: "73"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "73"; latitude: "62"; height: "126"; }
- ListElement{ longitude: "73"; latitude: "63"; height: "122"; }
- ListElement{ longitude: "73"; latitude: "64"; height: "121"; }
- ListElement{ longitude: "73"; latitude: "65"; height: "117"; }
- ListElement{ longitude: "73"; latitude: "66"; height: "118"; }
- ListElement{ longitude: "73"; latitude: "67"; height: "119"; }
- ListElement{ longitude: "73"; latitude: "68"; height: "108"; }
- ListElement{ longitude: "73"; latitude: "69"; height: "97"; }
- ListElement{ longitude: "73"; latitude: "70"; height: "104"; }
- ListElement{ longitude: "73"; latitude: "71"; height: "102"; }
- ListElement{ longitude: "73"; latitude: "72"; height: "92"; }
- ListElement{ longitude: "73"; latitude: "73"; height: "109"; }
- ListElement{ longitude: "73"; latitude: "74"; height: "123"; }
- ListElement{ longitude: "73"; latitude: "75"; height: "125"; }
- ListElement{ longitude: "73"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "73"; latitude: "77"; height: "132"; }
- ListElement{ longitude: "73"; latitude: "78"; height: "137"; }
- ListElement{ longitude: "73"; latitude: "79"; height: "140"; }
- ListElement{ longitude: "73"; latitude: "80"; height: "143"; }
- ListElement{ longitude: "73"; latitude: "81"; height: "141"; }
- ListElement{ longitude: "73"; latitude: "82"; height: "140"; }
- ListElement{ longitude: "73"; latitude: "83"; height: "136"; }
- ListElement{ longitude: "73"; latitude: "84"; height: "134"; }
- ListElement{ longitude: "73"; latitude: "85"; height: "134"; }
- ListElement{ longitude: "73"; latitude: "86"; height: "133"; }
- ListElement{ longitude: "73"; latitude: "87"; height: "130"; }
- ListElement{ longitude: "73"; latitude: "88"; height: "130"; }
- ListElement{ longitude: "73"; latitude: "89"; height: "128"; }
- ListElement{ longitude: "73"; latitude: "90"; height: "125"; }
- ListElement{ longitude: "73"; latitude: "91"; height: "122"; }
- ListElement{ longitude: "73"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "73"; latitude: "93"; height: "120"; }
- ListElement{ longitude: "73"; latitude: "94"; height: "119"; }
- ListElement{ longitude: "73"; latitude: "95"; height: "120"; }
- ListElement{ longitude: "73"; latitude: "96"; height: "122"; }
- ListElement{ longitude: "73"; latitude: "97"; height: "131"; }
- ListElement{ longitude: "73"; latitude: "98"; height: "137"; }
- ListElement{ longitude: "73"; latitude: "99"; height: "123"; }
- ListElement{ longitude: "74"; latitude: "0"; height: "128"; }
- ListElement{ longitude: "74"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "74"; latitude: "2"; height: "128"; }
- ListElement{ longitude: "74"; latitude: "3"; height: "127"; }
- ListElement{ longitude: "74"; latitude: "4"; height: "124"; }
- ListElement{ longitude: "74"; latitude: "5"; height: "117"; }
- ListElement{ longitude: "74"; latitude: "6"; height: "113"; }
- ListElement{ longitude: "74"; latitude: "7"; height: "111"; }
- ListElement{ longitude: "74"; latitude: "8"; height: "111"; }
- ListElement{ longitude: "74"; latitude: "9"; height: "108"; }
- ListElement{ longitude: "74"; latitude: "10"; height: "106"; }
- ListElement{ longitude: "74"; latitude: "11"; height: "106"; }
- ListElement{ longitude: "74"; latitude: "12"; height: "105"; }
- ListElement{ longitude: "74"; latitude: "13"; height: "104"; }
- ListElement{ longitude: "74"; latitude: "14"; height: "104"; }
- ListElement{ longitude: "74"; latitude: "15"; height: "104"; }
- ListElement{ longitude: "74"; latitude: "16"; height: "106"; }
- ListElement{ longitude: "74"; latitude: "17"; height: "105"; }
- ListElement{ longitude: "74"; latitude: "18"; height: "107"; }
- ListElement{ longitude: "74"; latitude: "19"; height: "107"; }
- ListElement{ longitude: "74"; latitude: "20"; height: "110"; }
- ListElement{ longitude: "74"; latitude: "21"; height: "111"; }
- ListElement{ longitude: "74"; latitude: "22"; height: "112"; }
- ListElement{ longitude: "74"; latitude: "23"; height: "113"; }
- ListElement{ longitude: "74"; latitude: "24"; height: "113"; }
- ListElement{ longitude: "74"; latitude: "25"; height: "113"; }
- ListElement{ longitude: "74"; latitude: "26"; height: "113"; }
- ListElement{ longitude: "74"; latitude: "27"; height: "113"; }
- ListElement{ longitude: "74"; latitude: "28"; height: "114"; }
- ListElement{ longitude: "74"; latitude: "29"; height: "110"; }
- ListElement{ longitude: "74"; latitude: "30"; height: "112"; }
- ListElement{ longitude: "74"; latitude: "31"; height: "111"; }
- ListElement{ longitude: "74"; latitude: "32"; height: "108"; }
- ListElement{ longitude: "74"; latitude: "33"; height: "109"; }
- ListElement{ longitude: "74"; latitude: "34"; height: "106"; }
- ListElement{ longitude: "74"; latitude: "35"; height: "102"; }
- ListElement{ longitude: "74"; latitude: "36"; height: "104"; }
- ListElement{ longitude: "74"; latitude: "37"; height: "105"; }
- ListElement{ longitude: "74"; latitude: "38"; height: "109"; }
- ListElement{ longitude: "74"; latitude: "39"; height: "114"; }
- ListElement{ longitude: "74"; latitude: "40"; height: "121"; }
- ListElement{ longitude: "74"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "74"; latitude: "42"; height: "123"; }
- ListElement{ longitude: "74"; latitude: "43"; height: "117"; }
- ListElement{ longitude: "74"; latitude: "44"; height: "119"; }
- ListElement{ longitude: "74"; latitude: "45"; height: "121"; }
- ListElement{ longitude: "74"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "74"; latitude: "47"; height: "122"; }
- ListElement{ longitude: "74"; latitude: "48"; height: "125"; }
- ListElement{ longitude: "74"; latitude: "49"; height: "129"; }
- ListElement{ longitude: "74"; latitude: "50"; height: "134"; }
- ListElement{ longitude: "74"; latitude: "51"; height: "136"; }
- ListElement{ longitude: "74"; latitude: "52"; height: "136"; }
- ListElement{ longitude: "74"; latitude: "53"; height: "134"; }
- ListElement{ longitude: "74"; latitude: "54"; height: "134"; }
- ListElement{ longitude: "74"; latitude: "55"; height: "137"; }
- ListElement{ longitude: "74"; latitude: "56"; height: "138"; }
- ListElement{ longitude: "74"; latitude: "57"; height: "136"; }
- ListElement{ longitude: "74"; latitude: "58"; height: "135"; }
- ListElement{ longitude: "74"; latitude: "59"; height: "134"; }
- ListElement{ longitude: "74"; latitude: "60"; height: "130"; }
- ListElement{ longitude: "74"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "74"; latitude: "62"; height: "126"; }
- ListElement{ longitude: "74"; latitude: "63"; height: "123"; }
- ListElement{ longitude: "74"; latitude: "64"; height: "120"; }
- ListElement{ longitude: "74"; latitude: "65"; height: "116"; }
- ListElement{ longitude: "74"; latitude: "66"; height: "117"; }
- ListElement{ longitude: "74"; latitude: "67"; height: "119"; }
- ListElement{ longitude: "74"; latitude: "68"; height: "120"; }
- ListElement{ longitude: "74"; latitude: "69"; height: "103"; }
- ListElement{ longitude: "74"; latitude: "70"; height: "100"; }
- ListElement{ longitude: "74"; latitude: "71"; height: "97"; }
- ListElement{ longitude: "74"; latitude: "72"; height: "96"; }
- ListElement{ longitude: "74"; latitude: "73"; height: "121"; }
- ListElement{ longitude: "74"; latitude: "74"; height: "123"; }
- ListElement{ longitude: "74"; latitude: "75"; height: "128"; }
- ListElement{ longitude: "74"; latitude: "76"; height: "121"; }
- ListElement{ longitude: "74"; latitude: "77"; height: "133"; }
- ListElement{ longitude: "74"; latitude: "78"; height: "138"; }
- ListElement{ longitude: "74"; latitude: "79"; height: "142"; }
- ListElement{ longitude: "74"; latitude: "80"; height: "143"; }
- ListElement{ longitude: "74"; latitude: "81"; height: "143"; }
- ListElement{ longitude: "74"; latitude: "82"; height: "141"; }
- ListElement{ longitude: "74"; latitude: "83"; height: "137"; }
- ListElement{ longitude: "74"; latitude: "84"; height: "135"; }
- ListElement{ longitude: "74"; latitude: "85"; height: "135"; }
- ListElement{ longitude: "74"; latitude: "86"; height: "134"; }
- ListElement{ longitude: "74"; latitude: "87"; height: "132"; }
- ListElement{ longitude: "74"; latitude: "88"; height: "130"; }
- ListElement{ longitude: "74"; latitude: "89"; height: "128"; }
- ListElement{ longitude: "74"; latitude: "90"; height: "123"; }
- ListElement{ longitude: "74"; latitude: "91"; height: "120"; }
- ListElement{ longitude: "74"; latitude: "92"; height: "118"; }
- ListElement{ longitude: "74"; latitude: "93"; height: "117"; }
- ListElement{ longitude: "74"; latitude: "94"; height: "116"; }
- ListElement{ longitude: "74"; latitude: "95"; height: "116"; }
- ListElement{ longitude: "74"; latitude: "96"; height: "119"; }
- ListElement{ longitude: "74"; latitude: "97"; height: "125"; }
- ListElement{ longitude: "74"; latitude: "98"; height: "131"; }
- ListElement{ longitude: "74"; latitude: "99"; height: "119"; }
- ListElement{ longitude: "75"; latitude: "0"; height: "128"; }
- ListElement{ longitude: "75"; latitude: "1"; height: "128"; }
- ListElement{ longitude: "75"; latitude: "2"; height: "128"; }
- ListElement{ longitude: "75"; latitude: "3"; height: "128"; }
- ListElement{ longitude: "75"; latitude: "4"; height: "126"; }
- ListElement{ longitude: "75"; latitude: "5"; height: "120"; }
- ListElement{ longitude: "75"; latitude: "6"; height: "116"; }
- ListElement{ longitude: "75"; latitude: "7"; height: "113"; }
- ListElement{ longitude: "75"; latitude: "8"; height: "110"; }
- ListElement{ longitude: "75"; latitude: "9"; height: "108"; }
- ListElement{ longitude: "75"; latitude: "10"; height: "107"; }
- ListElement{ longitude: "75"; latitude: "11"; height: "105"; }
- ListElement{ longitude: "75"; latitude: "12"; height: "102"; }
- ListElement{ longitude: "75"; latitude: "13"; height: "101"; }
- ListElement{ longitude: "75"; latitude: "14"; height: "101"; }
- ListElement{ longitude: "75"; latitude: "15"; height: "101"; }
- ListElement{ longitude: "75"; latitude: "16"; height: "103"; }
- ListElement{ longitude: "75"; latitude: "17"; height: "102"; }
- ListElement{ longitude: "75"; latitude: "18"; height: "106"; }
- ListElement{ longitude: "75"; latitude: "19"; height: "108"; }
- ListElement{ longitude: "75"; latitude: "20"; height: "110"; }
- ListElement{ longitude: "75"; latitude: "21"; height: "111"; }
- ListElement{ longitude: "75"; latitude: "22"; height: "112"; }
- ListElement{ longitude: "75"; latitude: "23"; height: "113"; }
- ListElement{ longitude: "75"; latitude: "24"; height: "113"; }
- ListElement{ longitude: "75"; latitude: "25"; height: "113"; }
- ListElement{ longitude: "75"; latitude: "26"; height: "113"; }
- ListElement{ longitude: "75"; latitude: "27"; height: "113"; }
- ListElement{ longitude: "75"; latitude: "28"; height: "114"; }
- ListElement{ longitude: "75"; latitude: "29"; height: "111"; }
- ListElement{ longitude: "75"; latitude: "30"; height: "108"; }
- ListElement{ longitude: "75"; latitude: "31"; height: "108"; }
- ListElement{ longitude: "75"; latitude: "32"; height: "105"; }
- ListElement{ longitude: "75"; latitude: "33"; height: "104"; }
- ListElement{ longitude: "75"; latitude: "34"; height: "101"; }
- ListElement{ longitude: "75"; latitude: "35"; height: "102"; }
- ListElement{ longitude: "75"; latitude: "36"; height: "102"; }
- ListElement{ longitude: "75"; latitude: "37"; height: "104"; }
- ListElement{ longitude: "75"; latitude: "38"; height: "110"; }
- ListElement{ longitude: "75"; latitude: "39"; height: "115"; }
- ListElement{ longitude: "75"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "75"; latitude: "41"; height: "126"; }
- ListElement{ longitude: "75"; latitude: "42"; height: "118"; }
- ListElement{ longitude: "75"; latitude: "43"; height: "119"; }
- ListElement{ longitude: "75"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "75"; latitude: "45"; height: "124"; }
- ListElement{ longitude: "75"; latitude: "46"; height: "122"; }
- ListElement{ longitude: "75"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "75"; latitude: "48"; height: "126"; }
- ListElement{ longitude: "75"; latitude: "49"; height: "130"; }
- ListElement{ longitude: "75"; latitude: "50"; height: "134"; }
- ListElement{ longitude: "75"; latitude: "51"; height: "138"; }
- ListElement{ longitude: "75"; latitude: "52"; height: "139"; }
- ListElement{ longitude: "75"; latitude: "53"; height: "137"; }
- ListElement{ longitude: "75"; latitude: "54"; height: "137"; }
- ListElement{ longitude: "75"; latitude: "55"; height: "137"; }
- ListElement{ longitude: "75"; latitude: "56"; height: "137"; }
- ListElement{ longitude: "75"; latitude: "57"; height: "136"; }
- ListElement{ longitude: "75"; latitude: "58"; height: "137"; }
- ListElement{ longitude: "75"; latitude: "59"; height: "133"; }
- ListElement{ longitude: "75"; latitude: "60"; height: "130"; }
- ListElement{ longitude: "75"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "75"; latitude: "62"; height: "125"; }
- ListElement{ longitude: "75"; latitude: "63"; height: "120"; }
- ListElement{ longitude: "75"; latitude: "64"; height: "117"; }
- ListElement{ longitude: "75"; latitude: "65"; height: "114"; }
- ListElement{ longitude: "75"; latitude: "66"; height: "113"; }
- ListElement{ longitude: "75"; latitude: "67"; height: "115"; }
- ListElement{ longitude: "75"; latitude: "68"; height: "119"; }
- ListElement{ longitude: "75"; latitude: "69"; height: "121"; }
- ListElement{ longitude: "75"; latitude: "70"; height: "119"; }
- ListElement{ longitude: "75"; latitude: "71"; height: "110"; }
- ListElement{ longitude: "75"; latitude: "72"; height: "122"; }
- ListElement{ longitude: "75"; latitude: "73"; height: "126"; }
- ListElement{ longitude: "75"; latitude: "74"; height: "127"; }
- ListElement{ longitude: "75"; latitude: "75"; height: "128"; }
- ListElement{ longitude: "75"; latitude: "76"; height: "127"; }
- ListElement{ longitude: "75"; latitude: "77"; height: "135"; }
- ListElement{ longitude: "75"; latitude: "78"; height: "140"; }
- ListElement{ longitude: "75"; latitude: "79"; height: "144"; }
- ListElement{ longitude: "75"; latitude: "80"; height: "146"; }
- ListElement{ longitude: "75"; latitude: "81"; height: "147"; }
- ListElement{ longitude: "75"; latitude: "82"; height: "140"; }
- ListElement{ longitude: "75"; latitude: "83"; height: "141"; }
- ListElement{ longitude: "75"; latitude: "84"; height: "137"; }
- ListElement{ longitude: "75"; latitude: "85"; height: "134"; }
- ListElement{ longitude: "75"; latitude: "86"; height: "134"; }
- ListElement{ longitude: "75"; latitude: "87"; height: "132"; }
- ListElement{ longitude: "75"; latitude: "88"; height: "130"; }
- ListElement{ longitude: "75"; latitude: "89"; height: "128"; }
- ListElement{ longitude: "75"; latitude: "90"; height: "123"; }
- ListElement{ longitude: "75"; latitude: "91"; height: "120"; }
- ListElement{ longitude: "75"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "75"; latitude: "93"; height: "117"; }
- ListElement{ longitude: "75"; latitude: "94"; height: "112"; }
- ListElement{ longitude: "75"; latitude: "95"; height: "112"; }
- ListElement{ longitude: "75"; latitude: "96"; height: "114"; }
- ListElement{ longitude: "75"; latitude: "97"; height: "120"; }
- ListElement{ longitude: "75"; latitude: "98"; height: "127"; }
- ListElement{ longitude: "75"; latitude: "99"; height: "114"; }
- ListElement{ longitude: "76"; latitude: "0"; height: "127"; }
- ListElement{ longitude: "76"; latitude: "1"; height: "127"; }
- ListElement{ longitude: "76"; latitude: "2"; height: "128"; }
- ListElement{ longitude: "76"; latitude: "3"; height: "128"; }
- ListElement{ longitude: "76"; latitude: "4"; height: "130"; }
- ListElement{ longitude: "76"; latitude: "5"; height: "125"; }
- ListElement{ longitude: "76"; latitude: "6"; height: "121"; }
- ListElement{ longitude: "76"; latitude: "7"; height: "115"; }
- ListElement{ longitude: "76"; latitude: "8"; height: "113"; }
- ListElement{ longitude: "76"; latitude: "9"; height: "108"; }
- ListElement{ longitude: "76"; latitude: "10"; height: "105"; }
- ListElement{ longitude: "76"; latitude: "11"; height: "102"; }
- ListElement{ longitude: "76"; latitude: "12"; height: "99"; }
- ListElement{ longitude: "76"; latitude: "13"; height: "100"; }
- ListElement{ longitude: "76"; latitude: "14"; height: "100"; }
- ListElement{ longitude: "76"; latitude: "15"; height: "100"; }
- ListElement{ longitude: "76"; latitude: "16"; height: "100"; }
- ListElement{ longitude: "76"; latitude: "17"; height: "102"; }
- ListElement{ longitude: "76"; latitude: "18"; height: "103"; }
- ListElement{ longitude: "76"; latitude: "19"; height: "107"; }
- ListElement{ longitude: "76"; latitude: "20"; height: "109"; }
- ListElement{ longitude: "76"; latitude: "21"; height: "110"; }
- ListElement{ longitude: "76"; latitude: "22"; height: "111"; }
- ListElement{ longitude: "76"; latitude: "23"; height: "114"; }
- ListElement{ longitude: "76"; latitude: "24"; height: "113"; }
- ListElement{ longitude: "76"; latitude: "25"; height: "113"; }
- ListElement{ longitude: "76"; latitude: "26"; height: "113"; }
- ListElement{ longitude: "76"; latitude: "27"; height: "111"; }
- ListElement{ longitude: "76"; latitude: "28"; height: "110"; }
- ListElement{ longitude: "76"; latitude: "29"; height: "110"; }
- ListElement{ longitude: "76"; latitude: "30"; height: "106"; }
- ListElement{ longitude: "76"; latitude: "31"; height: "104"; }
- ListElement{ longitude: "76"; latitude: "32"; height: "103"; }
- ListElement{ longitude: "76"; latitude: "33"; height: "102"; }
- ListElement{ longitude: "76"; latitude: "34"; height: "102"; }
- ListElement{ longitude: "76"; latitude: "35"; height: "102"; }
- ListElement{ longitude: "76"; latitude: "36"; height: "102"; }
- ListElement{ longitude: "76"; latitude: "37"; height: "104"; }
- ListElement{ longitude: "76"; latitude: "38"; height: "107"; }
- ListElement{ longitude: "76"; latitude: "39"; height: "114"; }
- ListElement{ longitude: "76"; latitude: "40"; height: "120"; }
- ListElement{ longitude: "76"; latitude: "41"; height: "129"; }
- ListElement{ longitude: "76"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "76"; latitude: "43"; height: "123"; }
- ListElement{ longitude: "76"; latitude: "44"; height: "123"; }
- ListElement{ longitude: "76"; latitude: "45"; height: "120"; }
- ListElement{ longitude: "76"; latitude: "46"; height: "119"; }
- ListElement{ longitude: "76"; latitude: "47"; height: "118"; }
- ListElement{ longitude: "76"; latitude: "48"; height: "123"; }
- ListElement{ longitude: "76"; latitude: "49"; height: "129"; }
- ListElement{ longitude: "76"; latitude: "50"; height: "133"; }
- ListElement{ longitude: "76"; latitude: "51"; height: "136"; }
- ListElement{ longitude: "76"; latitude: "52"; height: "137"; }
- ListElement{ longitude: "76"; latitude: "53"; height: "137"; }
- ListElement{ longitude: "76"; latitude: "54"; height: "137"; }
- ListElement{ longitude: "76"; latitude: "55"; height: "137"; }
- ListElement{ longitude: "76"; latitude: "56"; height: "136"; }
- ListElement{ longitude: "76"; latitude: "57"; height: "136"; }
- ListElement{ longitude: "76"; latitude: "58"; height: "134"; }
- ListElement{ longitude: "76"; latitude: "59"; height: "132"; }
- ListElement{ longitude: "76"; latitude: "60"; height: "127"; }
- ListElement{ longitude: "76"; latitude: "61"; height: "126"; }
- ListElement{ longitude: "76"; latitude: "62"; height: "123"; }
- ListElement{ longitude: "76"; latitude: "63"; height: "120"; }
- ListElement{ longitude: "76"; latitude: "64"; height: "117"; }
- ListElement{ longitude: "76"; latitude: "65"; height: "112"; }
- ListElement{ longitude: "76"; latitude: "66"; height: "110"; }
- ListElement{ longitude: "76"; latitude: "67"; height: "110"; }
- ListElement{ longitude: "76"; latitude: "68"; height: "111"; }
- ListElement{ longitude: "76"; latitude: "69"; height: "115"; }
- ListElement{ longitude: "76"; latitude: "70"; height: "121"; }
- ListElement{ longitude: "76"; latitude: "71"; height: "122"; }
- ListElement{ longitude: "76"; latitude: "72"; height: "125"; }
- ListElement{ longitude: "76"; latitude: "73"; height: "127"; }
- ListElement{ longitude: "76"; latitude: "74"; height: "127"; }
- ListElement{ longitude: "76"; latitude: "75"; height: "131"; }
- ListElement{ longitude: "76"; latitude: "76"; height: "134"; }
- ListElement{ longitude: "76"; latitude: "77"; height: "137"; }
- ListElement{ longitude: "76"; latitude: "78"; height: "140"; }
- ListElement{ longitude: "76"; latitude: "79"; height: "143"; }
- ListElement{ longitude: "76"; latitude: "80"; height: "143"; }
- ListElement{ longitude: "76"; latitude: "81"; height: "144"; }
- ListElement{ longitude: "76"; latitude: "82"; height: "141"; }
- ListElement{ longitude: "76"; latitude: "83"; height: "137"; }
- ListElement{ longitude: "76"; latitude: "84"; height: "136"; }
- ListElement{ longitude: "76"; latitude: "85"; height: "136"; }
- ListElement{ longitude: "76"; latitude: "86"; height: "133"; }
- ListElement{ longitude: "76"; latitude: "87"; height: "131"; }
- ListElement{ longitude: "76"; latitude: "88"; height: "129"; }
- ListElement{ longitude: "76"; latitude: "89"; height: "128"; }
- ListElement{ longitude: "76"; latitude: "90"; height: "123"; }
- ListElement{ longitude: "76"; latitude: "91"; height: "120"; }
- ListElement{ longitude: "76"; latitude: "92"; height: "117"; }
- ListElement{ longitude: "76"; latitude: "93"; height: "115"; }
- ListElement{ longitude: "76"; latitude: "94"; height: "112"; }
- ListElement{ longitude: "76"; latitude: "95"; height: "112"; }
- ListElement{ longitude: "76"; latitude: "96"; height: "116"; }
- ListElement{ longitude: "76"; latitude: "97"; height: "116"; }
- ListElement{ longitude: "76"; latitude: "98"; height: "122"; }
- ListElement{ longitude: "76"; latitude: "99"; height: "114"; }
- ListElement{ longitude: "77"; latitude: "0"; height: "124"; }
- ListElement{ longitude: "77"; latitude: "1"; height: "124"; }
- ListElement{ longitude: "77"; latitude: "2"; height: "125"; }
- ListElement{ longitude: "77"; latitude: "3"; height: "127"; }
- ListElement{ longitude: "77"; latitude: "4"; height: "130"; }
- ListElement{ longitude: "77"; latitude: "5"; height: "131"; }
- ListElement{ longitude: "77"; latitude: "6"; height: "123"; }
- ListElement{ longitude: "77"; latitude: "7"; height: "119"; }
- ListElement{ longitude: "77"; latitude: "8"; height: "115"; }
- ListElement{ longitude: "77"; latitude: "9"; height: "110"; }
- ListElement{ longitude: "77"; latitude: "10"; height: "106"; }
- ListElement{ longitude: "77"; latitude: "11"; height: "103"; }
- ListElement{ longitude: "77"; latitude: "12"; height: "99"; }
- ListElement{ longitude: "77"; latitude: "13"; height: "98"; }
- ListElement{ longitude: "77"; latitude: "14"; height: "98"; }
- ListElement{ longitude: "77"; latitude: "15"; height: "100"; }
- ListElement{ longitude: "77"; latitude: "16"; height: "99"; }
- ListElement{ longitude: "77"; latitude: "17"; height: "102"; }
- ListElement{ longitude: "77"; latitude: "18"; height: "104"; }
- ListElement{ longitude: "77"; latitude: "19"; height: "106"; }
- ListElement{ longitude: "77"; latitude: "20"; height: "108"; }
- ListElement{ longitude: "77"; latitude: "21"; height: "104"; }
- ListElement{ longitude: "77"; latitude: "22"; height: "107"; }
- ListElement{ longitude: "77"; latitude: "23"; height: "112"; }
- ListElement{ longitude: "77"; latitude: "24"; height: "111"; }
- ListElement{ longitude: "77"; latitude: "25"; height: "113"; }
- ListElement{ longitude: "77"; latitude: "26"; height: "113"; }
- ListElement{ longitude: "77"; latitude: "27"; height: "112"; }
- ListElement{ longitude: "77"; latitude: "28"; height: "111"; }
- ListElement{ longitude: "77"; latitude: "29"; height: "108"; }
- ListElement{ longitude: "77"; latitude: "30"; height: "104"; }
- ListElement{ longitude: "77"; latitude: "31"; height: "102"; }
- ListElement{ longitude: "77"; latitude: "32"; height: "101"; }
- ListElement{ longitude: "77"; latitude: "33"; height: "101"; }
- ListElement{ longitude: "77"; latitude: "34"; height: "104"; }
- ListElement{ longitude: "77"; latitude: "35"; height: "102"; }
- ListElement{ longitude: "77"; latitude: "36"; height: "102"; }
- ListElement{ longitude: "77"; latitude: "37"; height: "105"; }
- ListElement{ longitude: "77"; latitude: "38"; height: "106"; }
- ListElement{ longitude: "77"; latitude: "39"; height: "112"; }
- ListElement{ longitude: "77"; latitude: "40"; height: "117"; }
- ListElement{ longitude: "77"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "77"; latitude: "42"; height: "125"; }
- ListElement{ longitude: "77"; latitude: "43"; height: "125"; }
- ListElement{ longitude: "77"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "77"; latitude: "45"; height: "119"; }
- ListElement{ longitude: "77"; latitude: "46"; height: "118"; }
- ListElement{ longitude: "77"; latitude: "47"; height: "118"; }
- ListElement{ longitude: "77"; latitude: "48"; height: "123"; }
- ListElement{ longitude: "77"; latitude: "49"; height: "127"; }
- ListElement{ longitude: "77"; latitude: "50"; height: "131"; }
- ListElement{ longitude: "77"; latitude: "51"; height: "136"; }
- ListElement{ longitude: "77"; latitude: "52"; height: "136"; }
- ListElement{ longitude: "77"; latitude: "53"; height: "137"; }
- ListElement{ longitude: "77"; latitude: "54"; height: "135"; }
- ListElement{ longitude: "77"; latitude: "55"; height: "136"; }
- ListElement{ longitude: "77"; latitude: "56"; height: "134"; }
- ListElement{ longitude: "77"; latitude: "57"; height: "134"; }
- ListElement{ longitude: "77"; latitude: "58"; height: "133"; }
- ListElement{ longitude: "77"; latitude: "59"; height: "130"; }
- ListElement{ longitude: "77"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "77"; latitude: "61"; height: "124"; }
- ListElement{ longitude: "77"; latitude: "62"; height: "120"; }
- ListElement{ longitude: "77"; latitude: "63"; height: "117"; }
- ListElement{ longitude: "77"; latitude: "64"; height: "114"; }
- ListElement{ longitude: "77"; latitude: "65"; height: "111"; }
- ListElement{ longitude: "77"; latitude: "66"; height: "109"; }
- ListElement{ longitude: "77"; latitude: "67"; height: "107"; }
- ListElement{ longitude: "77"; latitude: "68"; height: "106"; }
- ListElement{ longitude: "77"; latitude: "69"; height: "110"; }
- ListElement{ longitude: "77"; latitude: "70"; height: "116"; }
- ListElement{ longitude: "77"; latitude: "71"; height: "119"; }
- ListElement{ longitude: "77"; latitude: "72"; height: "125"; }
- ListElement{ longitude: "77"; latitude: "73"; height: "129"; }
- ListElement{ longitude: "77"; latitude: "74"; height: "132"; }
- ListElement{ longitude: "77"; latitude: "75"; height: "133"; }
- ListElement{ longitude: "77"; latitude: "76"; height: "135"; }
- ListElement{ longitude: "77"; latitude: "77"; height: "137"; }
- ListElement{ longitude: "77"; latitude: "78"; height: "142"; }
- ListElement{ longitude: "77"; latitude: "79"; height: "143"; }
- ListElement{ longitude: "77"; latitude: "80"; height: "141"; }
- ListElement{ longitude: "77"; latitude: "81"; height: "140"; }
- ListElement{ longitude: "77"; latitude: "82"; height: "138"; }
- ListElement{ longitude: "77"; latitude: "83"; height: "138"; }
- ListElement{ longitude: "77"; latitude: "84"; height: "137"; }
- ListElement{ longitude: "77"; latitude: "85"; height: "136"; }
- ListElement{ longitude: "77"; latitude: "86"; height: "135"; }
- ListElement{ longitude: "77"; latitude: "87"; height: "133"; }
- ListElement{ longitude: "77"; latitude: "88"; height: "129"; }
- ListElement{ longitude: "77"; latitude: "89"; height: "128"; }
- ListElement{ longitude: "77"; latitude: "90"; height: "123"; }
- ListElement{ longitude: "77"; latitude: "91"; height: "120"; }
- ListElement{ longitude: "77"; latitude: "92"; height: "118"; }
- ListElement{ longitude: "77"; latitude: "93"; height: "116"; }
- ListElement{ longitude: "77"; latitude: "94"; height: "115"; }
- ListElement{ longitude: "77"; latitude: "95"; height: "116"; }
- ListElement{ longitude: "77"; latitude: "96"; height: "117"; }
- ListElement{ longitude: "77"; latitude: "97"; height: "120"; }
- ListElement{ longitude: "77"; latitude: "98"; height: "125"; }
- ListElement{ longitude: "77"; latitude: "99"; height: "117"; }
- ListElement{ longitude: "78"; latitude: "0"; height: "120"; }
- ListElement{ longitude: "78"; latitude: "1"; height: "118"; }
- ListElement{ longitude: "78"; latitude: "2"; height: "120"; }
- ListElement{ longitude: "78"; latitude: "3"; height: "125"; }
- ListElement{ longitude: "78"; latitude: "4"; height: "129"; }
- ListElement{ longitude: "78"; latitude: "5"; height: "129"; }
- ListElement{ longitude: "78"; latitude: "6"; height: "126"; }
- ListElement{ longitude: "78"; latitude: "7"; height: "119"; }
- ListElement{ longitude: "78"; latitude: "8"; height: "115"; }
- ListElement{ longitude: "78"; latitude: "9"; height: "112"; }
- ListElement{ longitude: "78"; latitude: "10"; height: "110"; }
- ListElement{ longitude: "78"; latitude: "11"; height: "105"; }
- ListElement{ longitude: "78"; latitude: "12"; height: "100"; }
- ListElement{ longitude: "78"; latitude: "13"; height: "101"; }
- ListElement{ longitude: "78"; latitude: "14"; height: "102"; }
- ListElement{ longitude: "78"; latitude: "15"; height: "104"; }
- ListElement{ longitude: "78"; latitude: "16"; height: "105"; }
- ListElement{ longitude: "78"; latitude: "17"; height: "106"; }
- ListElement{ longitude: "78"; latitude: "18"; height: "106"; }
- ListElement{ longitude: "78"; latitude: "19"; height: "106"; }
- ListElement{ longitude: "78"; latitude: "20"; height: "99"; }
- ListElement{ longitude: "78"; latitude: "21"; height: "92"; }
- ListElement{ longitude: "78"; latitude: "22"; height: "96"; }
- ListElement{ longitude: "78"; latitude: "23"; height: "110"; }
- ListElement{ longitude: "78"; latitude: "24"; height: "112"; }
- ListElement{ longitude: "78"; latitude: "25"; height: "113"; }
- ListElement{ longitude: "78"; latitude: "26"; height: "114"; }
- ListElement{ longitude: "78"; latitude: "27"; height: "112"; }
- ListElement{ longitude: "78"; latitude: "28"; height: "110"; }
- ListElement{ longitude: "78"; latitude: "29"; height: "105"; }
- ListElement{ longitude: "78"; latitude: "30"; height: "100"; }
- ListElement{ longitude: "78"; latitude: "31"; height: "98"; }
- ListElement{ longitude: "78"; latitude: "32"; height: "99"; }
- ListElement{ longitude: "78"; latitude: "33"; height: "102"; }
- ListElement{ longitude: "78"; latitude: "34"; height: "105"; }
- ListElement{ longitude: "78"; latitude: "35"; height: "106"; }
- ListElement{ longitude: "78"; latitude: "36"; height: "106"; }
- ListElement{ longitude: "78"; latitude: "37"; height: "103"; }
- ListElement{ longitude: "78"; latitude: "38"; height: "104"; }
- ListElement{ longitude: "78"; latitude: "39"; height: "108"; }
- ListElement{ longitude: "78"; latitude: "40"; height: "114"; }
- ListElement{ longitude: "78"; latitude: "41"; height: "118"; }
- ListElement{ longitude: "78"; latitude: "42"; height: "119"; }
- ListElement{ longitude: "78"; latitude: "43"; height: "121"; }
- ListElement{ longitude: "78"; latitude: "44"; height: "121"; }
- ListElement{ longitude: "78"; latitude: "45"; height: "116"; }
- ListElement{ longitude: "78"; latitude: "46"; height: "115"; }
- ListElement{ longitude: "78"; latitude: "47"; height: "116"; }
- ListElement{ longitude: "78"; latitude: "48"; height: "120"; }
- ListElement{ longitude: "78"; latitude: "49"; height: "124"; }
- ListElement{ longitude: "78"; latitude: "50"; height: "127"; }
- ListElement{ longitude: "78"; latitude: "51"; height: "132"; }
- ListElement{ longitude: "78"; latitude: "52"; height: "134"; }
- ListElement{ longitude: "78"; latitude: "53"; height: "135"; }
- ListElement{ longitude: "78"; latitude: "54"; height: "137"; }
- ListElement{ longitude: "78"; latitude: "55"; height: "135"; }
- ListElement{ longitude: "78"; latitude: "56"; height: "133"; }
- ListElement{ longitude: "78"; latitude: "57"; height: "133"; }
- ListElement{ longitude: "78"; latitude: "58"; height: "130"; }
- ListElement{ longitude: "78"; latitude: "59"; height: "127"; }
- ListElement{ longitude: "78"; latitude: "60"; height: "124"; }
- ListElement{ longitude: "78"; latitude: "61"; height: "121"; }
- ListElement{ longitude: "78"; latitude: "62"; height: "119"; }
- ListElement{ longitude: "78"; latitude: "63"; height: "117"; }
- ListElement{ longitude: "78"; latitude: "64"; height: "114"; }
- ListElement{ longitude: "78"; latitude: "65"; height: "110"; }
- ListElement{ longitude: "78"; latitude: "66"; height: "109"; }
- ListElement{ longitude: "78"; latitude: "67"; height: "103"; }
- ListElement{ longitude: "78"; latitude: "68"; height: "104"; }
- ListElement{ longitude: "78"; latitude: "69"; height: "106"; }
- ListElement{ longitude: "78"; latitude: "70"; height: "111"; }
- ListElement{ longitude: "78"; latitude: "71"; height: "120"; }
- ListElement{ longitude: "78"; latitude: "72"; height: "124"; }
- ListElement{ longitude: "78"; latitude: "73"; height: "131"; }
- ListElement{ longitude: "78"; latitude: "74"; height: "135"; }
- ListElement{ longitude: "78"; latitude: "75"; height: "139"; }
- ListElement{ longitude: "78"; latitude: "76"; height: "141"; }
- ListElement{ longitude: "78"; latitude: "77"; height: "140"; }
- ListElement{ longitude: "78"; latitude: "78"; height: "139"; }
- ListElement{ longitude: "78"; latitude: "79"; height: "138"; }
- ListElement{ longitude: "78"; latitude: "80"; height: "137"; }
- ListElement{ longitude: "78"; latitude: "81"; height: "133"; }
- ListElement{ longitude: "78"; latitude: "82"; height: "133"; }
- ListElement{ longitude: "78"; latitude: "83"; height: "135"; }
- ListElement{ longitude: "78"; latitude: "84"; height: "136"; }
- ListElement{ longitude: "78"; latitude: "85"; height: "136"; }
- ListElement{ longitude: "78"; latitude: "86"; height: "136"; }
- ListElement{ longitude: "78"; latitude: "87"; height: "136"; }
- ListElement{ longitude: "78"; latitude: "88"; height: "132"; }
- ListElement{ longitude: "78"; latitude: "89"; height: "129"; }
- ListElement{ longitude: "78"; latitude: "90"; height: "126"; }
- ListElement{ longitude: "78"; latitude: "91"; height: "122"; }
- ListElement{ longitude: "78"; latitude: "92"; height: "121"; }
- ListElement{ longitude: "78"; latitude: "93"; height: "119"; }
- ListElement{ longitude: "78"; latitude: "94"; height: "115"; }
- ListElement{ longitude: "78"; latitude: "95"; height: "120"; }
- ListElement{ longitude: "78"; latitude: "96"; height: "124"; }
- ListElement{ longitude: "78"; latitude: "97"; height: "125"; }
- ListElement{ longitude: "78"; latitude: "98"; height: "130"; }
- ListElement{ longitude: "78"; latitude: "99"; height: "121"; }
- ListElement{ longitude: "79"; latitude: "0"; height: "115"; }
- ListElement{ longitude: "79"; latitude: "1"; height: "114"; }
- ListElement{ longitude: "79"; latitude: "2"; height: "116"; }
- ListElement{ longitude: "79"; latitude: "3"; height: "119"; }
- ListElement{ longitude: "79"; latitude: "4"; height: "125"; }
- ListElement{ longitude: "79"; latitude: "5"; height: "126"; }
- ListElement{ longitude: "79"; latitude: "6"; height: "123"; }
- ListElement{ longitude: "79"; latitude: "7"; height: "121"; }
- ListElement{ longitude: "79"; latitude: "8"; height: "119"; }
- ListElement{ longitude: "79"; latitude: "9"; height: "115"; }
- ListElement{ longitude: "79"; latitude: "10"; height: "113"; }
- ListElement{ longitude: "79"; latitude: "11"; height: "108"; }
- ListElement{ longitude: "79"; latitude: "12"; height: "105"; }
- ListElement{ longitude: "79"; latitude: "13"; height: "104"; }
- ListElement{ longitude: "79"; latitude: "14"; height: "106"; }
- ListElement{ longitude: "79"; latitude: "15"; height: "109"; }
- ListElement{ longitude: "79"; latitude: "16"; height: "107"; }
- ListElement{ longitude: "79"; latitude: "17"; height: "107"; }
- ListElement{ longitude: "79"; latitude: "18"; height: "107"; }
- ListElement{ longitude: "79"; latitude: "19"; height: "107"; }
- ListElement{ longitude: "79"; latitude: "20"; height: "100"; }
- ListElement{ longitude: "79"; latitude: "21"; height: "94"; }
- ListElement{ longitude: "79"; latitude: "22"; height: "96"; }
- ListElement{ longitude: "79"; latitude: "23"; height: "107"; }
- ListElement{ longitude: "79"; latitude: "24"; height: "111"; }
- ListElement{ longitude: "79"; latitude: "25"; height: "113"; }
- ListElement{ longitude: "79"; latitude: "26"; height: "114"; }
- ListElement{ longitude: "79"; latitude: "27"; height: "113"; }
- ListElement{ longitude: "79"; latitude: "28"; height: "109"; }
- ListElement{ longitude: "79"; latitude: "29"; height: "104"; }
- ListElement{ longitude: "79"; latitude: "30"; height: "102"; }
- ListElement{ longitude: "79"; latitude: "31"; height: "98"; }
- ListElement{ longitude: "79"; latitude: "32"; height: "98"; }
- ListElement{ longitude: "79"; latitude: "33"; height: "99"; }
- ListElement{ longitude: "79"; latitude: "34"; height: "102"; }
- ListElement{ longitude: "79"; latitude: "35"; height: "103"; }
- ListElement{ longitude: "79"; latitude: "36"; height: "102"; }
- ListElement{ longitude: "79"; latitude: "37"; height: "102"; }
- ListElement{ longitude: "79"; latitude: "38"; height: "103"; }
- ListElement{ longitude: "79"; latitude: "39"; height: "104"; }
- ListElement{ longitude: "79"; latitude: "40"; height: "110"; }
- ListElement{ longitude: "79"; latitude: "41"; height: "115"; }
- ListElement{ longitude: "79"; latitude: "42"; height: "118"; }
- ListElement{ longitude: "79"; latitude: "43"; height: "118"; }
- ListElement{ longitude: "79"; latitude: "44"; height: "120"; }
- ListElement{ longitude: "79"; latitude: "45"; height: "117"; }
- ListElement{ longitude: "79"; latitude: "46"; height: "118"; }
- ListElement{ longitude: "79"; latitude: "47"; height: "117"; }
- ListElement{ longitude: "79"; latitude: "48"; height: "119"; }
- ListElement{ longitude: "79"; latitude: "49"; height: "124"; }
- ListElement{ longitude: "79"; latitude: "50"; height: "127"; }
- ListElement{ longitude: "79"; latitude: "51"; height: "128"; }
- ListElement{ longitude: "79"; latitude: "52"; height: "131"; }
- ListElement{ longitude: "79"; latitude: "53"; height: "131"; }
- ListElement{ longitude: "79"; latitude: "54"; height: "133"; }
- ListElement{ longitude: "79"; latitude: "55"; height: "134"; }
- ListElement{ longitude: "79"; latitude: "56"; height: "134"; }
- ListElement{ longitude: "79"; latitude: "57"; height: "133"; }
- ListElement{ longitude: "79"; latitude: "58"; height: "129"; }
- ListElement{ longitude: "79"; latitude: "59"; height: "127"; }
- ListElement{ longitude: "79"; latitude: "60"; height: "124"; }
- ListElement{ longitude: "79"; latitude: "61"; height: "121"; }
- ListElement{ longitude: "79"; latitude: "62"; height: "120"; }
- ListElement{ longitude: "79"; latitude: "63"; height: "120"; }
- ListElement{ longitude: "79"; latitude: "64"; height: "118"; }
- ListElement{ longitude: "79"; latitude: "65"; height: "114"; }
- ListElement{ longitude: "79"; latitude: "66"; height: "111"; }
- ListElement{ longitude: "79"; latitude: "67"; height: "106"; }
- ListElement{ longitude: "79"; latitude: "68"; height: "107"; }
- ListElement{ longitude: "79"; latitude: "69"; height: "106"; }
- ListElement{ longitude: "79"; latitude: "70"; height: "112"; }
- ListElement{ longitude: "79"; latitude: "71"; height: "119"; }
- ListElement{ longitude: "79"; latitude: "72"; height: "124"; }
- ListElement{ longitude: "79"; latitude: "73"; height: "132"; }
- ListElement{ longitude: "79"; latitude: "74"; height: "137"; }
- ListElement{ longitude: "79"; latitude: "75"; height: "138"; }
- ListElement{ longitude: "79"; latitude: "76"; height: "141"; }
- ListElement{ longitude: "79"; latitude: "77"; height: "140"; }
- ListElement{ longitude: "79"; latitude: "78"; height: "137"; }
- ListElement{ longitude: "79"; latitude: "79"; height: "132"; }
- ListElement{ longitude: "79"; latitude: "80"; height: "130"; }
- ListElement{ longitude: "79"; latitude: "81"; height: "125"; }
- ListElement{ longitude: "79"; latitude: "82"; height: "125"; }
- ListElement{ longitude: "79"; latitude: "83"; height: "132"; }
- ListElement{ longitude: "79"; latitude: "84"; height: "136"; }
- ListElement{ longitude: "79"; latitude: "85"; height: "136"; }
- ListElement{ longitude: "79"; latitude: "86"; height: "136"; }
- ListElement{ longitude: "79"; latitude: "87"; height: "134"; }
- ListElement{ longitude: "79"; latitude: "88"; height: "132"; }
- ListElement{ longitude: "79"; latitude: "89"; height: "129"; }
- ListElement{ longitude: "79"; latitude: "90"; height: "127"; }
- ListElement{ longitude: "79"; latitude: "91"; height: "125"; }
- ListElement{ longitude: "79"; latitude: "92"; height: "122"; }
- ListElement{ longitude: "79"; latitude: "93"; height: "119"; }
- ListElement{ longitude: "79"; latitude: "94"; height: "120"; }
- ListElement{ longitude: "79"; latitude: "95"; height: "123"; }
- ListElement{ longitude: "79"; latitude: "96"; height: "123"; }
- ListElement{ longitude: "79"; latitude: "97"; height: "122"; }
- ListElement{ longitude: "79"; latitude: "98"; height: "124"; }
- ListElement{ longitude: "79"; latitude: "99"; height: "118"; }
- ListElement{ longitude: "80"; latitude: "0"; height: "111"; }
- ListElement{ longitude: "80"; latitude: "1"; height: "108"; }
- ListElement{ longitude: "80"; latitude: "2"; height: "111"; }
- ListElement{ longitude: "80"; latitude: "3"; height: "114"; }
- ListElement{ longitude: "80"; latitude: "4"; height: "119"; }
- ListElement{ longitude: "80"; latitude: "5"; height: "123"; }
- ListElement{ longitude: "80"; latitude: "6"; height: "120"; }
- ListElement{ longitude: "80"; latitude: "7"; height: "120"; }
- ListElement{ longitude: "80"; latitude: "8"; height: "122"; }
- ListElement{ longitude: "80"; latitude: "9"; height: "118"; }
- ListElement{ longitude: "80"; latitude: "10"; height: "117"; }
- ListElement{ longitude: "80"; latitude: "11"; height: "113"; }
- ListElement{ longitude: "80"; latitude: "12"; height: "108"; }
- ListElement{ longitude: "80"; latitude: "13"; height: "106"; }
- ListElement{ longitude: "80"; latitude: "14"; height: "106"; }
- ListElement{ longitude: "80"; latitude: "15"; height: "108"; }
- ListElement{ longitude: "80"; latitude: "16"; height: "108"; }
- ListElement{ longitude: "80"; latitude: "17"; height: "108"; }
- ListElement{ longitude: "80"; latitude: "18"; height: "107"; }
- ListElement{ longitude: "80"; latitude: "19"; height: "105"; }
- ListElement{ longitude: "80"; latitude: "20"; height: "103"; }
- ListElement{ longitude: "80"; latitude: "21"; height: "100"; }
- ListElement{ longitude: "80"; latitude: "22"; height: "101"; }
- ListElement{ longitude: "80"; latitude: "23"; height: "106"; }
- ListElement{ longitude: "80"; latitude: "24"; height: "110"; }
- ListElement{ longitude: "80"; latitude: "25"; height: "113"; }
- ListElement{ longitude: "80"; latitude: "26"; height: "116"; }
- ListElement{ longitude: "80"; latitude: "27"; height: "111"; }
- ListElement{ longitude: "80"; latitude: "28"; height: "109"; }
- ListElement{ longitude: "80"; latitude: "29"; height: "102"; }
- ListElement{ longitude: "80"; latitude: "30"; height: "100"; }
- ListElement{ longitude: "80"; latitude: "31"; height: "98"; }
- ListElement{ longitude: "80"; latitude: "32"; height: "95"; }
- ListElement{ longitude: "80"; latitude: "33"; height: "97"; }
- ListElement{ longitude: "80"; latitude: "34"; height: "100"; }
- ListElement{ longitude: "80"; latitude: "35"; height: "101"; }
- ListElement{ longitude: "80"; latitude: "36"; height: "103"; }
- ListElement{ longitude: "80"; latitude: "37"; height: "101"; }
- ListElement{ longitude: "80"; latitude: "38"; height: "103"; }
- ListElement{ longitude: "80"; latitude: "39"; height: "106"; }
- ListElement{ longitude: "80"; latitude: "40"; height: "109"; }
- ListElement{ longitude: "80"; latitude: "41"; height: "112"; }
- ListElement{ longitude: "80"; latitude: "42"; height: "115"; }
- ListElement{ longitude: "80"; latitude: "43"; height: "117"; }
- ListElement{ longitude: "80"; latitude: "44"; height: "119"; }
- ListElement{ longitude: "80"; latitude: "45"; height: "119"; }
- ListElement{ longitude: "80"; latitude: "46"; height: "117"; }
- ListElement{ longitude: "80"; latitude: "47"; height: "116"; }
- ListElement{ longitude: "80"; latitude: "48"; height: "119"; }
- ListElement{ longitude: "80"; latitude: "49"; height: "122"; }
- ListElement{ longitude: "80"; latitude: "50"; height: "126"; }
- ListElement{ longitude: "80"; latitude: "51"; height: "126"; }
- ListElement{ longitude: "80"; latitude: "52"; height: "127"; }
- ListElement{ longitude: "80"; latitude: "53"; height: "128"; }
- ListElement{ longitude: "80"; latitude: "54"; height: "131"; }
- ListElement{ longitude: "80"; latitude: "55"; height: "131"; }
- ListElement{ longitude: "80"; latitude: "56"; height: "134"; }
- ListElement{ longitude: "80"; latitude: "57"; height: "133"; }
- ListElement{ longitude: "80"; latitude: "58"; height: "130"; }
- ListElement{ longitude: "80"; latitude: "59"; height: "129"; }
- ListElement{ longitude: "80"; latitude: "60"; height: "125"; }
- ListElement{ longitude: "80"; latitude: "61"; height: "123"; }
- ListElement{ longitude: "80"; latitude: "62"; height: "121"; }
- ListElement{ longitude: "80"; latitude: "63"; height: "122"; }
- ListElement{ longitude: "80"; latitude: "64"; height: "121"; }
- ListElement{ longitude: "80"; latitude: "65"; height: "119"; }
- ListElement{ longitude: "80"; latitude: "66"; height: "116"; }
- ListElement{ longitude: "80"; latitude: "67"; height: "111"; }
- ListElement{ longitude: "80"; latitude: "68"; height: "108"; }
- ListElement{ longitude: "80"; latitude: "69"; height: "110"; }
- ListElement{ longitude: "80"; latitude: "70"; height: "112"; }
- ListElement{ longitude: "80"; latitude: "71"; height: "117"; }
- ListElement{ longitude: "80"; latitude: "72"; height: "125"; }
- ListElement{ longitude: "80"; latitude: "73"; height: "132"; }
- ListElement{ longitude: "80"; latitude: "74"; height: "139"; }
- ListElement{ longitude: "80"; latitude: "75"; height: "144"; }
- ListElement{ longitude: "80"; latitude: "76"; height: "144"; }
- ListElement{ longitude: "80"; latitude: "77"; height: "141"; }
- ListElement{ longitude: "80"; latitude: "78"; height: "136"; }
- ListElement{ longitude: "80"; latitude: "79"; height: "127"; }
- ListElement{ longitude: "80"; latitude: "80"; height: "128"; }
- ListElement{ longitude: "80"; latitude: "81"; height: "125"; }
- ListElement{ longitude: "80"; latitude: "82"; height: "129"; }
- ListElement{ longitude: "80"; latitude: "83"; height: "131"; }
- ListElement{ longitude: "80"; latitude: "84"; height: "135"; }
- ListElement{ longitude: "80"; latitude: "85"; height: "136"; }
- ListElement{ longitude: "80"; latitude: "86"; height: "135"; }
- ListElement{ longitude: "80"; latitude: "87"; height: "131"; }
- ListElement{ longitude: "80"; latitude: "88"; height: "129"; }
- ListElement{ longitude: "80"; latitude: "89"; height: "129"; }
- ListElement{ longitude: "80"; latitude: "90"; height: "127"; }
- ListElement{ longitude: "80"; latitude: "91"; height: "125"; }
- ListElement{ longitude: "80"; latitude: "92"; height: "121"; }
- ListElement{ longitude: "80"; latitude: "93"; height: "120"; }
- ListElement{ longitude: "80"; latitude: "94"; height: "120"; }
- ListElement{ longitude: "80"; latitude: "95"; height: "119"; }
- ListElement{ longitude: "80"; latitude: "96"; height: "120"; }
- ListElement{ longitude: "80"; latitude: "97"; height: "117"; }
- ListElement{ longitude: "80"; latitude: "98"; height: "116"; }
- ListElement{ longitude: "80"; latitude: "99"; height: "112"; }
- ListElement{ longitude: "81"; latitude: "0"; height: "107"; }
- ListElement{ longitude: "81"; latitude: "1"; height: "105"; }
- ListElement{ longitude: "81"; latitude: "2"; height: "106"; }
- ListElement{ longitude: "81"; latitude: "3"; height: "109"; }
- ListElement{ longitude: "81"; latitude: "4"; height: "114"; }
- ListElement{ longitude: "81"; latitude: "5"; height: "117"; }
- ListElement{ longitude: "81"; latitude: "6"; height: "121"; }
- ListElement{ longitude: "81"; latitude: "7"; height: "123"; }
- ListElement{ longitude: "81"; latitude: "8"; height: "126"; }
- ListElement{ longitude: "81"; latitude: "9"; height: "129"; }
- ListElement{ longitude: "81"; latitude: "10"; height: "120"; }
- ListElement{ longitude: "81"; latitude: "11"; height: "120"; }
- ListElement{ longitude: "81"; latitude: "12"; height: "113"; }
- ListElement{ longitude: "81"; latitude: "13"; height: "108"; }
- ListElement{ longitude: "81"; latitude: "14"; height: "107"; }
- ListElement{ longitude: "81"; latitude: "15"; height: "108"; }
- ListElement{ longitude: "81"; latitude: "16"; height: "108"; }
- ListElement{ longitude: "81"; latitude: "17"; height: "109"; }
- ListElement{ longitude: "81"; latitude: "18"; height: "106"; }
- ListElement{ longitude: "81"; latitude: "19"; height: "104"; }
- ListElement{ longitude: "81"; latitude: "20"; height: "101"; }
- ListElement{ longitude: "81"; latitude: "21"; height: "102"; }
- ListElement{ longitude: "81"; latitude: "22"; height: "103"; }
- ListElement{ longitude: "81"; latitude: "23"; height: "106"; }
- ListElement{ longitude: "81"; latitude: "24"; height: "110"; }
- ListElement{ longitude: "81"; latitude: "25"; height: "114"; }
- ListElement{ longitude: "81"; latitude: "26"; height: "117"; }
- ListElement{ longitude: "81"; latitude: "27"; height: "112"; }
- ListElement{ longitude: "81"; latitude: "28"; height: "110"; }
- ListElement{ longitude: "81"; latitude: "29"; height: "103"; }
- ListElement{ longitude: "81"; latitude: "30"; height: "103"; }
- ListElement{ longitude: "81"; latitude: "31"; height: "99"; }
- ListElement{ longitude: "81"; latitude: "32"; height: "97"; }
- ListElement{ longitude: "81"; latitude: "33"; height: "93"; }
- ListElement{ longitude: "81"; latitude: "34"; height: "95"; }
- ListElement{ longitude: "81"; latitude: "35"; height: "94"; }
- ListElement{ longitude: "81"; latitude: "36"; height: "95"; }
- ListElement{ longitude: "81"; latitude: "37"; height: "99"; }
- ListElement{ longitude: "81"; latitude: "38"; height: "103"; }
- ListElement{ longitude: "81"; latitude: "39"; height: "108"; }
- ListElement{ longitude: "81"; latitude: "40"; height: "112"; }
- ListElement{ longitude: "81"; latitude: "41"; height: "112"; }
- ListElement{ longitude: "81"; latitude: "42"; height: "116"; }
- ListElement{ longitude: "81"; latitude: "43"; height: "118"; }
- ListElement{ longitude: "81"; latitude: "44"; height: "119"; }
- ListElement{ longitude: "81"; latitude: "45"; height: "118"; }
- ListElement{ longitude: "81"; latitude: "46"; height: "120"; }
- ListElement{ longitude: "81"; latitude: "47"; height: "119"; }
- ListElement{ longitude: "81"; latitude: "48"; height: "122"; }
- ListElement{ longitude: "81"; latitude: "49"; height: "122"; }
- ListElement{ longitude: "81"; latitude: "50"; height: "124"; }
- ListElement{ longitude: "81"; latitude: "51"; height: "125"; }
- ListElement{ longitude: "81"; latitude: "52"; height: "125"; }
- ListElement{ longitude: "81"; latitude: "53"; height: "125"; }
- ListElement{ longitude: "81"; latitude: "54"; height: "128"; }
- ListElement{ longitude: "81"; latitude: "55"; height: "132"; }
- ListElement{ longitude: "81"; latitude: "56"; height: "134"; }
- ListElement{ longitude: "81"; latitude: "57"; height: "134"; }
- ListElement{ longitude: "81"; latitude: "58"; height: "133"; }
- ListElement{ longitude: "81"; latitude: "59"; height: "131"; }
- ListElement{ longitude: "81"; latitude: "60"; height: "126"; }
- ListElement{ longitude: "81"; latitude: "61"; height: "126"; }
- ListElement{ longitude: "81"; latitude: "62"; height: "123"; }
- ListElement{ longitude: "81"; latitude: "63"; height: "124"; }
- ListElement{ longitude: "81"; latitude: "64"; height: "125"; }
- ListElement{ longitude: "81"; latitude: "65"; height: "124"; }
- ListElement{ longitude: "81"; latitude: "66"; height: "116"; }
- ListElement{ longitude: "81"; latitude: "67"; height: "120"; }
- ListElement{ longitude: "81"; latitude: "68"; height: "113"; }
- ListElement{ longitude: "81"; latitude: "69"; height: "110"; }
- ListElement{ longitude: "81"; latitude: "70"; height: "113"; }
- ListElement{ longitude: "81"; latitude: "71"; height: "117"; }
- ListElement{ longitude: "81"; latitude: "72"; height: "123"; }
- ListElement{ longitude: "81"; latitude: "73"; height: "130"; }
- ListElement{ longitude: "81"; latitude: "74"; height: "141"; }
- ListElement{ longitude: "81"; latitude: "75"; height: "140"; }
- ListElement{ longitude: "81"; latitude: "76"; height: "141"; }
- ListElement{ longitude: "81"; latitude: "77"; height: "138"; }
- ListElement{ longitude: "81"; latitude: "78"; height: "115"; }
- ListElement{ longitude: "81"; latitude: "79"; height: "118"; }
- ListElement{ longitude: "81"; latitude: "80"; height: "127"; }
- ListElement{ longitude: "81"; latitude: "81"; height: "127"; }
- ListElement{ longitude: "81"; latitude: "82"; height: "131"; }
- ListElement{ longitude: "81"; latitude: "83"; height: "133"; }
- ListElement{ longitude: "81"; latitude: "84"; height: "136"; }
- ListElement{ longitude: "81"; latitude: "85"; height: "136"; }
- ListElement{ longitude: "81"; latitude: "86"; height: "134"; }
- ListElement{ longitude: "81"; latitude: "87"; height: "129"; }
- ListElement{ longitude: "81"; latitude: "88"; height: "127"; }
- ListElement{ longitude: "81"; latitude: "89"; height: "127"; }
- ListElement{ longitude: "81"; latitude: "90"; height: "124"; }
- ListElement{ longitude: "81"; latitude: "91"; height: "125"; }
- ListElement{ longitude: "81"; latitude: "92"; height: "124"; }
- ListElement{ longitude: "81"; latitude: "93"; height: "122"; }
- ListElement{ longitude: "81"; latitude: "94"; height: "120"; }
- ListElement{ longitude: "81"; latitude: "95"; height: "115"; }
- ListElement{ longitude: "81"; latitude: "96"; height: "112"; }
- ListElement{ longitude: "81"; latitude: "97"; height: "108"; }
- ListElement{ longitude: "81"; latitude: "98"; height: "110"; }
- ListElement{ longitude: "81"; latitude: "99"; height: "108"; }
- ListElement{ longitude: "82"; latitude: "0"; height: "107"; }
- ListElement{ longitude: "82"; latitude: "1"; height: "105"; }
- ListElement{ longitude: "82"; latitude: "2"; height: "108"; }
- ListElement{ longitude: "82"; latitude: "3"; height: "109"; }
- ListElement{ longitude: "82"; latitude: "4"; height: "112"; }
- ListElement{ longitude: "82"; latitude: "5"; height: "115"; }
- ListElement{ longitude: "82"; latitude: "6"; height: "119"; }
- ListElement{ longitude: "82"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "82"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "82"; latitude: "9"; height: "127"; }
- ListElement{ longitude: "82"; latitude: "10"; height: "88"; }
- ListElement{ longitude: "82"; latitude: "11"; height: "118"; }
- ListElement{ longitude: "82"; latitude: "12"; height: "115"; }
- ListElement{ longitude: "82"; latitude: "13"; height: "111"; }
- ListElement{ longitude: "82"; latitude: "14"; height: "108"; }
- ListElement{ longitude: "82"; latitude: "15"; height: "107"; }
- ListElement{ longitude: "82"; latitude: "16"; height: "106"; }
- ListElement{ longitude: "82"; latitude: "17"; height: "105"; }
- ListElement{ longitude: "82"; latitude: "18"; height: "104"; }
- ListElement{ longitude: "82"; latitude: "19"; height: "102"; }
- ListElement{ longitude: "82"; latitude: "20"; height: "99"; }
- ListElement{ longitude: "82"; latitude: "21"; height: "99"; }
- ListElement{ longitude: "82"; latitude: "22"; height: "99"; }
- ListElement{ longitude: "82"; latitude: "23"; height: "104"; }
- ListElement{ longitude: "82"; latitude: "24"; height: "107"; }
- ListElement{ longitude: "82"; latitude: "25"; height: "114"; }
- ListElement{ longitude: "82"; latitude: "26"; height: "118"; }
- ListElement{ longitude: "82"; latitude: "27"; height: "115"; }
- ListElement{ longitude: "82"; latitude: "28"; height: "112"; }
- ListElement{ longitude: "82"; latitude: "29"; height: "107"; }
- ListElement{ longitude: "82"; latitude: "30"; height: "105"; }
- ListElement{ longitude: "82"; latitude: "31"; height: "102"; }
- ListElement{ longitude: "82"; latitude: "32"; height: "97"; }
- ListElement{ longitude: "82"; latitude: "33"; height: "95"; }
- ListElement{ longitude: "82"; latitude: "34"; height: "92"; }
- ListElement{ longitude: "82"; latitude: "35"; height: "94"; }
- ListElement{ longitude: "82"; latitude: "36"; height: "96"; }
- ListElement{ longitude: "82"; latitude: "37"; height: "99"; }
- ListElement{ longitude: "82"; latitude: "38"; height: "103"; }
- ListElement{ longitude: "82"; latitude: "39"; height: "108"; }
- ListElement{ longitude: "82"; latitude: "40"; height: "113"; }
- ListElement{ longitude: "82"; latitude: "41"; height: "116"; }
- ListElement{ longitude: "82"; latitude: "42"; height: "117"; }
- ListElement{ longitude: "82"; latitude: "43"; height: "116"; }
- ListElement{ longitude: "82"; latitude: "44"; height: "117"; }
- ListElement{ longitude: "82"; latitude: "45"; height: "120"; }
- ListElement{ longitude: "82"; latitude: "46"; height: "119"; }
- ListElement{ longitude: "82"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "82"; latitude: "48"; height: "122"; }
- ListElement{ longitude: "82"; latitude: "49"; height: "125"; }
- ListElement{ longitude: "82"; latitude: "50"; height: "126"; }
- ListElement{ longitude: "82"; latitude: "51"; height: "125"; }
- ListElement{ longitude: "82"; latitude: "52"; height: "126"; }
- ListElement{ longitude: "82"; latitude: "53"; height: "127"; }
- ListElement{ longitude: "82"; latitude: "54"; height: "130"; }
- ListElement{ longitude: "82"; latitude: "55"; height: "130"; }
- ListElement{ longitude: "82"; latitude: "56"; height: "132"; }
- ListElement{ longitude: "82"; latitude: "57"; height: "134"; }
- ListElement{ longitude: "82"; latitude: "58"; height: "132"; }
- ListElement{ longitude: "82"; latitude: "59"; height: "132"; }
- ListElement{ longitude: "82"; latitude: "60"; height: "128"; }
- ListElement{ longitude: "82"; latitude: "61"; height: "128"; }
- ListElement{ longitude: "82"; latitude: "62"; height: "125"; }
- ListElement{ longitude: "82"; latitude: "63"; height: "127"; }
- ListElement{ longitude: "82"; latitude: "64"; height: "123"; }
- ListElement{ longitude: "82"; latitude: "65"; height: "119"; }
- ListElement{ longitude: "82"; latitude: "66"; height: "112"; }
- ListElement{ longitude: "82"; latitude: "67"; height: "117"; }
- ListElement{ longitude: "82"; latitude: "68"; height: "119"; }
- ListElement{ longitude: "82"; latitude: "69"; height: "117"; }
- ListElement{ longitude: "82"; latitude: "70"; height: "113"; }
- ListElement{ longitude: "82"; latitude: "71"; height: "115"; }
- ListElement{ longitude: "82"; latitude: "72"; height: "122"; }
- ListElement{ longitude: "82"; latitude: "73"; height: "131"; }
- ListElement{ longitude: "82"; latitude: "74"; height: "132"; }
- ListElement{ longitude: "82"; latitude: "75"; height: "108"; }
- ListElement{ longitude: "82"; latitude: "76"; height: "114"; }
- ListElement{ longitude: "82"; latitude: "77"; height: "126"; }
- ListElement{ longitude: "82"; latitude: "78"; height: "100"; }
- ListElement{ longitude: "82"; latitude: "79"; height: "109"; }
- ListElement{ longitude: "82"; latitude: "80"; height: "133"; }
- ListElement{ longitude: "82"; latitude: "81"; height: "132"; }
- ListElement{ longitude: "82"; latitude: "82"; height: "135"; }
- ListElement{ longitude: "82"; latitude: "83"; height: "139"; }
- ListElement{ longitude: "82"; latitude: "84"; height: "139"; }
- ListElement{ longitude: "82"; latitude: "85"; height: "135"; }
- ListElement{ longitude: "82"; latitude: "86"; height: "131"; }
- ListElement{ longitude: "82"; latitude: "87"; height: "128"; }
- ListElement{ longitude: "82"; latitude: "88"; height: "123"; }
- ListElement{ longitude: "82"; latitude: "89"; height: "121"; }
- ListElement{ longitude: "82"; latitude: "90"; height: "122"; }
- ListElement{ longitude: "82"; latitude: "91"; height: "122"; }
- ListElement{ longitude: "82"; latitude: "92"; height: "122"; }
- ListElement{ longitude: "82"; latitude: "93"; height: "123"; }
- ListElement{ longitude: "82"; latitude: "94"; height: "120"; }
- ListElement{ longitude: "82"; latitude: "95"; height: "114"; }
- ListElement{ longitude: "82"; latitude: "96"; height: "106"; }
- ListElement{ longitude: "82"; latitude: "97"; height: "102"; }
- ListElement{ longitude: "82"; latitude: "98"; height: "105"; }
- ListElement{ longitude: "82"; latitude: "99"; height: "106"; }
- ListElement{ longitude: "83"; latitude: "0"; height: "110"; }
- ListElement{ longitude: "83"; latitude: "1"; height: "108"; }
- ListElement{ longitude: "83"; latitude: "2"; height: "110"; }
- ListElement{ longitude: "83"; latitude: "3"; height: "111"; }
- ListElement{ longitude: "83"; latitude: "4"; height: "111"; }
- ListElement{ longitude: "83"; latitude: "5"; height: "116"; }
- ListElement{ longitude: "83"; latitude: "6"; height: "120"; }
- ListElement{ longitude: "83"; latitude: "7"; height: "126"; }
- ListElement{ longitude: "83"; latitude: "8"; height: "131"; }
- ListElement{ longitude: "83"; latitude: "9"; height: "131"; }
- ListElement{ longitude: "83"; latitude: "10"; height: "121"; }
- ListElement{ longitude: "83"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "83"; latitude: "12"; height: "114"; }
- ListElement{ longitude: "83"; latitude: "13"; height: "109"; }
- ListElement{ longitude: "83"; latitude: "14"; height: "105"; }
- ListElement{ longitude: "83"; latitude: "15"; height: "102"; }
- ListElement{ longitude: "83"; latitude: "16"; height: "101"; }
- ListElement{ longitude: "83"; latitude: "17"; height: "102"; }
- ListElement{ longitude: "83"; latitude: "18"; height: "100"; }
- ListElement{ longitude: "83"; latitude: "19"; height: "97"; }
- ListElement{ longitude: "83"; latitude: "20"; height: "98"; }
- ListElement{ longitude: "83"; latitude: "21"; height: "97"; }
- ListElement{ longitude: "83"; latitude: "22"; height: "99"; }
- ListElement{ longitude: "83"; latitude: "23"; height: "105"; }
- ListElement{ longitude: "83"; latitude: "24"; height: "112"; }
- ListElement{ longitude: "83"; latitude: "25"; height: "116"; }
- ListElement{ longitude: "83"; latitude: "26"; height: "118"; }
- ListElement{ longitude: "83"; latitude: "27"; height: "117"; }
- ListElement{ longitude: "83"; latitude: "28"; height: "114"; }
- ListElement{ longitude: "83"; latitude: "29"; height: "109"; }
- ListElement{ longitude: "83"; latitude: "30"; height: "107"; }
- ListElement{ longitude: "83"; latitude: "31"; height: "102"; }
- ListElement{ longitude: "83"; latitude: "32"; height: "98"; }
- ListElement{ longitude: "83"; latitude: "33"; height: "96"; }
- ListElement{ longitude: "83"; latitude: "34"; height: "93"; }
- ListElement{ longitude: "83"; latitude: "35"; height: "93"; }
- ListElement{ longitude: "83"; latitude: "36"; height: "95"; }
- ListElement{ longitude: "83"; latitude: "37"; height: "100"; }
- ListElement{ longitude: "83"; latitude: "38"; height: "105"; }
- ListElement{ longitude: "83"; latitude: "39"; height: "111"; }
- ListElement{ longitude: "83"; latitude: "40"; height: "115"; }
- ListElement{ longitude: "83"; latitude: "41"; height: "118"; }
- ListElement{ longitude: "83"; latitude: "42"; height: "117"; }
- ListElement{ longitude: "83"; latitude: "43"; height: "117"; }
- ListElement{ longitude: "83"; latitude: "44"; height: "118"; }
- ListElement{ longitude: "83"; latitude: "45"; height: "121"; }
- ListElement{ longitude: "83"; latitude: "46"; height: "121"; }
- ListElement{ longitude: "83"; latitude: "47"; height: "123"; }
- ListElement{ longitude: "83"; latitude: "48"; height: "126"; }
- ListElement{ longitude: "83"; latitude: "49"; height: "127"; }
- ListElement{ longitude: "83"; latitude: "50"; height: "126"; }
- ListElement{ longitude: "83"; latitude: "51"; height: "126"; }
- ListElement{ longitude: "83"; latitude: "52"; height: "127"; }
- ListElement{ longitude: "83"; latitude: "53"; height: "128"; }
- ListElement{ longitude: "83"; latitude: "54"; height: "131"; }
- ListElement{ longitude: "83"; latitude: "55"; height: "131"; }
- ListElement{ longitude: "83"; latitude: "56"; height: "134"; }
- ListElement{ longitude: "83"; latitude: "57"; height: "133"; }
- ListElement{ longitude: "83"; latitude: "58"; height: "136"; }
- ListElement{ longitude: "83"; latitude: "59"; height: "133"; }
- ListElement{ longitude: "83"; latitude: "60"; height: "129"; }
- ListElement{ longitude: "83"; latitude: "61"; height: "129"; }
- ListElement{ longitude: "83"; latitude: "62"; height: "126"; }
- ListElement{ longitude: "83"; latitude: "63"; height: "128"; }
- ListElement{ longitude: "83"; latitude: "64"; height: "116"; }
- ListElement{ longitude: "83"; latitude: "65"; height: "118"; }
- ListElement{ longitude: "83"; latitude: "66"; height: "120"; }
- ListElement{ longitude: "83"; latitude: "67"; height: "124"; }
- ListElement{ longitude: "83"; latitude: "68"; height: "120"; }
- ListElement{ longitude: "83"; latitude: "69"; height: "120"; }
- ListElement{ longitude: "83"; latitude: "70"; height: "117"; }
- ListElement{ longitude: "83"; latitude: "71"; height: "118"; }
- ListElement{ longitude: "83"; latitude: "72"; height: "120"; }
- ListElement{ longitude: "83"; latitude: "73"; height: "129"; }
- ListElement{ longitude: "83"; latitude: "74"; height: "130"; }
- ListElement{ longitude: "83"; latitude: "75"; height: "94"; }
- ListElement{ longitude: "83"; latitude: "76"; height: "111"; }
- ListElement{ longitude: "83"; latitude: "77"; height: "131"; }
- ListElement{ longitude: "83"; latitude: "78"; height: "120"; }
- ListElement{ longitude: "83"; latitude: "79"; height: "128"; }
- ListElement{ longitude: "83"; latitude: "80"; height: "135"; }
- ListElement{ longitude: "83"; latitude: "81"; height: "140"; }
- ListElement{ longitude: "83"; latitude: "82"; height: "142"; }
- ListElement{ longitude: "83"; latitude: "83"; height: "143"; }
- ListElement{ longitude: "83"; latitude: "84"; height: "140"; }
- ListElement{ longitude: "83"; latitude: "85"; height: "137"; }
- ListElement{ longitude: "83"; latitude: "86"; height: "133"; }
- ListElement{ longitude: "83"; latitude: "87"; height: "127"; }
- ListElement{ longitude: "83"; latitude: "88"; height: "125"; }
- ListElement{ longitude: "83"; latitude: "89"; height: "121"; }
- ListElement{ longitude: "83"; latitude: "90"; height: "121"; }
- ListElement{ longitude: "83"; latitude: "91"; height: "121"; }
- ListElement{ longitude: "83"; latitude: "92"; height: "123"; }
- ListElement{ longitude: "83"; latitude: "93"; height: "124"; }
- ListElement{ longitude: "83"; latitude: "94"; height: "122"; }
- ListElement{ longitude: "83"; latitude: "95"; height: "117"; }
- ListElement{ longitude: "83"; latitude: "96"; height: "104"; }
- ListElement{ longitude: "83"; latitude: "97"; height: "97"; }
- ListElement{ longitude: "83"; latitude: "98"; height: "103"; }
- ListElement{ longitude: "83"; latitude: "99"; height: "104"; }
- ListElement{ longitude: "84"; latitude: "0"; height: "111"; }
- ListElement{ longitude: "84"; latitude: "1"; height: "108"; }
- ListElement{ longitude: "84"; latitude: "2"; height: "110"; }
- ListElement{ longitude: "84"; latitude: "3"; height: "111"; }
- ListElement{ longitude: "84"; latitude: "4"; height: "111"; }
- ListElement{ longitude: "84"; latitude: "5"; height: "116"; }
- ListElement{ longitude: "84"; latitude: "6"; height: "118"; }
- ListElement{ longitude: "84"; latitude: "7"; height: "124"; }
- ListElement{ longitude: "84"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "84"; latitude: "9"; height: "99"; }
- ListElement{ longitude: "84"; latitude: "10"; height: "115"; }
- ListElement{ longitude: "84"; latitude: "11"; height: "126"; }
- ListElement{ longitude: "84"; latitude: "12"; height: "116"; }
- ListElement{ longitude: "84"; latitude: "13"; height: "109"; }
- ListElement{ longitude: "84"; latitude: "14"; height: "104"; }
- ListElement{ longitude: "84"; latitude: "15"; height: "100"; }
- ListElement{ longitude: "84"; latitude: "16"; height: "97"; }
- ListElement{ longitude: "84"; latitude: "17"; height: "98"; }
- ListElement{ longitude: "84"; latitude: "18"; height: "99"; }
- ListElement{ longitude: "84"; latitude: "19"; height: "97"; }
- ListElement{ longitude: "84"; latitude: "20"; height: "98"; }
- ListElement{ longitude: "84"; latitude: "21"; height: "100"; }
- ListElement{ longitude: "84"; latitude: "22"; height: "103"; }
- ListElement{ longitude: "84"; latitude: "23"; height: "109"; }
- ListElement{ longitude: "84"; latitude: "24"; height: "114"; }
- ListElement{ longitude: "84"; latitude: "25"; height: "119"; }
- ListElement{ longitude: "84"; latitude: "26"; height: "120"; }
- ListElement{ longitude: "84"; latitude: "27"; height: "119"; }
- ListElement{ longitude: "84"; latitude: "28"; height: "116"; }
- ListElement{ longitude: "84"; latitude: "29"; height: "111"; }
- ListElement{ longitude: "84"; latitude: "30"; height: "109"; }
- ListElement{ longitude: "84"; latitude: "31"; height: "104"; }
- ListElement{ longitude: "84"; latitude: "32"; height: "100"; }
- ListElement{ longitude: "84"; latitude: "33"; height: "100"; }
- ListElement{ longitude: "84"; latitude: "34"; height: "97"; }
- ListElement{ longitude: "84"; latitude: "35"; height: "97"; }
- ListElement{ longitude: "84"; latitude: "36"; height: "99"; }
- ListElement{ longitude: "84"; latitude: "37"; height: "103"; }
- ListElement{ longitude: "84"; latitude: "38"; height: "109"; }
- ListElement{ longitude: "84"; latitude: "39"; height: "114"; }
- ListElement{ longitude: "84"; latitude: "40"; height: "118"; }
- ListElement{ longitude: "84"; latitude: "41"; height: "120"; }
- ListElement{ longitude: "84"; latitude: "42"; height: "121"; }
- ListElement{ longitude: "84"; latitude: "43"; height: "121"; }
- ListElement{ longitude: "84"; latitude: "44"; height: "120"; }
- ListElement{ longitude: "84"; latitude: "45"; height: "122"; }
- ListElement{ longitude: "84"; latitude: "46"; height: "124"; }
- ListElement{ longitude: "84"; latitude: "47"; height: "127"; }
- ListElement{ longitude: "84"; latitude: "48"; height: "129"; }
- ListElement{ longitude: "84"; latitude: "49"; height: "129"; }
- ListElement{ longitude: "84"; latitude: "50"; height: "129"; }
- ListElement{ longitude: "84"; latitude: "51"; height: "129"; }
- ListElement{ longitude: "84"; latitude: "52"; height: "130"; }
- ListElement{ longitude: "84"; latitude: "53"; height: "131"; }
- ListElement{ longitude: "84"; latitude: "54"; height: "131"; }
- ListElement{ longitude: "84"; latitude: "55"; height: "132"; }
- ListElement{ longitude: "84"; latitude: "56"; height: "135"; }
- ListElement{ longitude: "84"; latitude: "57"; height: "136"; }
- ListElement{ longitude: "84"; latitude: "58"; height: "135"; }
- ListElement{ longitude: "84"; latitude: "59"; height: "132"; }
- ListElement{ longitude: "84"; latitude: "60"; height: "132"; }
- ListElement{ longitude: "84"; latitude: "61"; height: "129"; }
- ListElement{ longitude: "84"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "84"; latitude: "63"; height: "128"; }
- ListElement{ longitude: "84"; latitude: "64"; height: "123"; }
- ListElement{ longitude: "84"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "84"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "84"; latitude: "67"; height: "126"; }
- ListElement{ longitude: "84"; latitude: "68"; height: "123"; }
- ListElement{ longitude: "84"; latitude: "69"; height: "123"; }
- ListElement{ longitude: "84"; latitude: "70"; height: "120"; }
- ListElement{ longitude: "84"; latitude: "71"; height: "120"; }
- ListElement{ longitude: "84"; latitude: "72"; height: "122"; }
- ListElement{ longitude: "84"; latitude: "73"; height: "126"; }
- ListElement{ longitude: "84"; latitude: "74"; height: "128"; }
- ListElement{ longitude: "84"; latitude: "75"; height: "114"; }
- ListElement{ longitude: "84"; latitude: "76"; height: "109"; }
- ListElement{ longitude: "84"; latitude: "77"; height: "111"; }
- ListElement{ longitude: "84"; latitude: "78"; height: "119"; }
- ListElement{ longitude: "84"; latitude: "79"; height: "129"; }
- ListElement{ longitude: "84"; latitude: "80"; height: "136"; }
- ListElement{ longitude: "84"; latitude: "81"; height: "142"; }
- ListElement{ longitude: "84"; latitude: "82"; height: "148"; }
- ListElement{ longitude: "84"; latitude: "83"; height: "149"; }
- ListElement{ longitude: "84"; latitude: "84"; height: "145"; }
- ListElement{ longitude: "84"; latitude: "85"; height: "142"; }
- ListElement{ longitude: "84"; latitude: "86"; height: "138"; }
- ListElement{ longitude: "84"; latitude: "87"; height: "132"; }
- ListElement{ longitude: "84"; latitude: "88"; height: "128"; }
- ListElement{ longitude: "84"; latitude: "89"; height: "123"; }
- ListElement{ longitude: "84"; latitude: "90"; height: "122"; }
- ListElement{ longitude: "84"; latitude: "91"; height: "121"; }
- ListElement{ longitude: "84"; latitude: "92"; height: "120"; }
- ListElement{ longitude: "84"; latitude: "93"; height: "121"; }
- ListElement{ longitude: "84"; latitude: "94"; height: "119"; }
- ListElement{ longitude: "84"; latitude: "95"; height: "115"; }
- ListElement{ longitude: "84"; latitude: "96"; height: "110"; }
- ListElement{ longitude: "84"; latitude: "97"; height: "107"; }
- ListElement{ longitude: "84"; latitude: "98"; height: "113"; }
- ListElement{ longitude: "84"; latitude: "99"; height: "111"; }
- ListElement{ longitude: "85"; latitude: "0"; height: "112"; }
- ListElement{ longitude: "85"; latitude: "1"; height: "110"; }
- ListElement{ longitude: "85"; latitude: "2"; height: "108"; }
- ListElement{ longitude: "85"; latitude: "3"; height: "110"; }
- ListElement{ longitude: "85"; latitude: "4"; height: "112"; }
- ListElement{ longitude: "85"; latitude: "5"; height: "115"; }
- ListElement{ longitude: "85"; latitude: "6"; height: "119"; }
- ListElement{ longitude: "85"; latitude: "7"; height: "122"; }
- ListElement{ longitude: "85"; latitude: "8"; height: "128"; }
- ListElement{ longitude: "85"; latitude: "9"; height: "117"; }
- ListElement{ longitude: "85"; latitude: "10"; height: "126"; }
- ListElement{ longitude: "85"; latitude: "11"; height: "124"; }
- ListElement{ longitude: "85"; latitude: "12"; height: "116"; }
- ListElement{ longitude: "85"; latitude: "13"; height: "108"; }
- ListElement{ longitude: "85"; latitude: "14"; height: "103"; }
- ListElement{ longitude: "85"; latitude: "15"; height: "98"; }
- ListElement{ longitude: "85"; latitude: "16"; height: "98"; }
- ListElement{ longitude: "85"; latitude: "17"; height: "98"; }
- ListElement{ longitude: "85"; latitude: "18"; height: "99"; }
- ListElement{ longitude: "85"; latitude: "19"; height: "101"; }
- ListElement{ longitude: "85"; latitude: "20"; height: "101"; }
- ListElement{ longitude: "85"; latitude: "21"; height: "107"; }
- ListElement{ longitude: "85"; latitude: "22"; height: "111"; }
- ListElement{ longitude: "85"; latitude: "23"; height: "117"; }
- ListElement{ longitude: "85"; latitude: "24"; height: "120"; }
- ListElement{ longitude: "85"; latitude: "25"; height: "122"; }
- ListElement{ longitude: "85"; latitude: "26"; height: "122"; }
- ListElement{ longitude: "85"; latitude: "27"; height: "121"; }
- ListElement{ longitude: "85"; latitude: "28"; height: "118"; }
- ListElement{ longitude: "85"; latitude: "29"; height: "113"; }
- ListElement{ longitude: "85"; latitude: "30"; height: "110"; }
- ListElement{ longitude: "85"; latitude: "31"; height: "106"; }
- ListElement{ longitude: "85"; latitude: "32"; height: "103"; }
- ListElement{ longitude: "85"; latitude: "33"; height: "101"; }
- ListElement{ longitude: "85"; latitude: "34"; height: "98"; }
- ListElement{ longitude: "85"; latitude: "35"; height: "100"; }
- ListElement{ longitude: "85"; latitude: "36"; height: "102"; }
- ListElement{ longitude: "85"; latitude: "37"; height: "106"; }
- ListElement{ longitude: "85"; latitude: "38"; height: "110"; }
- ListElement{ longitude: "85"; latitude: "39"; height: "115"; }
- ListElement{ longitude: "85"; latitude: "40"; height: "121"; }
- ListElement{ longitude: "85"; latitude: "41"; height: "121"; }
- ListElement{ longitude: "85"; latitude: "42"; height: "122"; }
- ListElement{ longitude: "85"; latitude: "43"; height: "122"; }
- ListElement{ longitude: "85"; latitude: "44"; height: "123"; }
- ListElement{ longitude: "85"; latitude: "45"; height: "127"; }
- ListElement{ longitude: "85"; latitude: "46"; height: "127"; }
- ListElement{ longitude: "85"; latitude: "47"; height: "130"; }
- ListElement{ longitude: "85"; latitude: "48"; height: "129"; }
- ListElement{ longitude: "85"; latitude: "49"; height: "131"; }
- ListElement{ longitude: "85"; latitude: "50"; height: "129"; }
- ListElement{ longitude: "85"; latitude: "51"; height: "129"; }
- ListElement{ longitude: "85"; latitude: "52"; height: "130"; }
- ListElement{ longitude: "85"; latitude: "53"; height: "131"; }
- ListElement{ longitude: "85"; latitude: "54"; height: "134"; }
- ListElement{ longitude: "85"; latitude: "55"; height: "134"; }
- ListElement{ longitude: "85"; latitude: "56"; height: "137"; }
- ListElement{ longitude: "85"; latitude: "57"; height: "137"; }
- ListElement{ longitude: "85"; latitude: "58"; height: "134"; }
- ListElement{ longitude: "85"; latitude: "59"; height: "133"; }
- ListElement{ longitude: "85"; latitude: "60"; height: "133"; }
- ListElement{ longitude: "85"; latitude: "61"; height: "130"; }
- ListElement{ longitude: "85"; latitude: "62"; height: "130"; }
- ListElement{ longitude: "85"; latitude: "63"; height: "129"; }
- ListElement{ longitude: "85"; latitude: "64"; height: "130"; }
- ListElement{ longitude: "85"; latitude: "65"; height: "131"; }
- ListElement{ longitude: "85"; latitude: "66"; height: "129"; }
- ListElement{ longitude: "85"; latitude: "67"; height: "127"; }
- ListElement{ longitude: "85"; latitude: "68"; height: "128"; }
- ListElement{ longitude: "85"; latitude: "69"; height: "125"; }
- ListElement{ longitude: "85"; latitude: "70"; height: "124"; }
- ListElement{ longitude: "85"; latitude: "71"; height: "123"; }
- ListElement{ longitude: "85"; latitude: "72"; height: "124"; }
- ListElement{ longitude: "85"; latitude: "73"; height: "127"; }
- ListElement{ longitude: "85"; latitude: "74"; height: "132"; }
- ListElement{ longitude: "85"; latitude: "75"; height: "126"; }
- ListElement{ longitude: "85"; latitude: "76"; height: "115"; }
- ListElement{ longitude: "85"; latitude: "77"; height: "113"; }
- ListElement{ longitude: "85"; latitude: "78"; height: "122"; }
- ListElement{ longitude: "85"; latitude: "79"; height: "130"; }
- ListElement{ longitude: "85"; latitude: "80"; height: "137"; }
- ListElement{ longitude: "85"; latitude: "81"; height: "146"; }
- ListElement{ longitude: "85"; latitude: "82"; height: "152"; }
- ListElement{ longitude: "85"; latitude: "83"; height: "154"; }
- ListElement{ longitude: "85"; latitude: "84"; height: "149"; }
- ListElement{ longitude: "85"; latitude: "85"; height: "148"; }
- ListElement{ longitude: "85"; latitude: "86"; height: "141"; }
- ListElement{ longitude: "85"; latitude: "87"; height: "137"; }
- ListElement{ longitude: "85"; latitude: "88"; height: "133"; }
- ListElement{ longitude: "85"; latitude: "89"; height: "131"; }
- ListElement{ longitude: "85"; latitude: "90"; height: "124"; }
- ListElement{ longitude: "85"; latitude: "91"; height: "122"; }
- ListElement{ longitude: "85"; latitude: "92"; height: "120"; }
- ListElement{ longitude: "85"; latitude: "93"; height: "120"; }
- ListElement{ longitude: "85"; latitude: "94"; height: "116"; }
- ListElement{ longitude: "85"; latitude: "95"; height: "112"; }
- ListElement{ longitude: "85"; latitude: "96"; height: "115"; }
- ListElement{ longitude: "85"; latitude: "97"; height: "116"; }
- ListElement{ longitude: "85"; latitude: "98"; height: "123"; }
- ListElement{ longitude: "85"; latitude: "99"; height: "119"; }
- ListElement{ longitude: "86"; latitude: "0"; height: "112"; }
- ListElement{ longitude: "86"; latitude: "1"; height: "110"; }
- ListElement{ longitude: "86"; latitude: "2"; height: "106"; }
- ListElement{ longitude: "86"; latitude: "3"; height: "108"; }
- ListElement{ longitude: "86"; latitude: "4"; height: "110"; }
- ListElement{ longitude: "86"; latitude: "5"; height: "113"; }
- ListElement{ longitude: "86"; latitude: "6"; height: "116"; }
- ListElement{ longitude: "86"; latitude: "7"; height: "119"; }
- ListElement{ longitude: "86"; latitude: "8"; height: "122"; }
- ListElement{ longitude: "86"; latitude: "9"; height: "124"; }
- ListElement{ longitude: "86"; latitude: "10"; height: "123"; }
- ListElement{ longitude: "86"; latitude: "11"; height: "119"; }
- ListElement{ longitude: "86"; latitude: "12"; height: "113"; }
- ListElement{ longitude: "86"; latitude: "13"; height: "107"; }
- ListElement{ longitude: "86"; latitude: "14"; height: "103"; }
- ListElement{ longitude: "86"; latitude: "15"; height: "100"; }
- ListElement{ longitude: "86"; latitude: "16"; height: "98"; }
- ListElement{ longitude: "86"; latitude: "17"; height: "99"; }
- ListElement{ longitude: "86"; latitude: "18"; height: "101"; }
- ListElement{ longitude: "86"; latitude: "19"; height: "103"; }
- ListElement{ longitude: "86"; latitude: "20"; height: "108"; }
- ListElement{ longitude: "86"; latitude: "21"; height: "113"; }
- ListElement{ longitude: "86"; latitude: "22"; height: "120"; }
- ListElement{ longitude: "86"; latitude: "23"; height: "124"; }
- ListElement{ longitude: "86"; latitude: "24"; height: "126"; }
- ListElement{ longitude: "86"; latitude: "25"; height: "126"; }
- ListElement{ longitude: "86"; latitude: "26"; height: "125"; }
- ListElement{ longitude: "86"; latitude: "27"; height: "122"; }
- ListElement{ longitude: "86"; latitude: "28"; height: "121"; }
- ListElement{ longitude: "86"; latitude: "29"; height: "116"; }
- ListElement{ longitude: "86"; latitude: "30"; height: "113"; }
- ListElement{ longitude: "86"; latitude: "31"; height: "110"; }
- ListElement{ longitude: "86"; latitude: "32"; height: "107"; }
- ListElement{ longitude: "86"; latitude: "33"; height: "104"; }
- ListElement{ longitude: "86"; latitude: "34"; height: "101"; }
- ListElement{ longitude: "86"; latitude: "35"; height: "103"; }
- ListElement{ longitude: "86"; latitude: "36"; height: "105"; }
- ListElement{ longitude: "86"; latitude: "37"; height: "111"; }
- ListElement{ longitude: "86"; latitude: "38"; height: "115"; }
- ListElement{ longitude: "86"; latitude: "39"; height: "120"; }
- ListElement{ longitude: "86"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "86"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "86"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "86"; latitude: "43"; height: "129"; }
- ListElement{ longitude: "86"; latitude: "44"; height: "127"; }
- ListElement{ longitude: "86"; latitude: "45"; height: "130"; }
- ListElement{ longitude: "86"; latitude: "46"; height: "130"; }
- ListElement{ longitude: "86"; latitude: "47"; height: "133"; }
- ListElement{ longitude: "86"; latitude: "48"; height: "133"; }
- ListElement{ longitude: "86"; latitude: "49"; height: "131"; }
- ListElement{ longitude: "86"; latitude: "50"; height: "130"; }
- ListElement{ longitude: "86"; latitude: "51"; height: "130"; }
- ListElement{ longitude: "86"; latitude: "52"; height: "133"; }
- ListElement{ longitude: "86"; latitude: "53"; height: "135"; }
- ListElement{ longitude: "86"; latitude: "54"; height: "138"; }
- ListElement{ longitude: "86"; latitude: "55"; height: "135"; }
- ListElement{ longitude: "86"; latitude: "56"; height: "138"; }
- ListElement{ longitude: "86"; latitude: "57"; height: "136"; }
- ListElement{ longitude: "86"; latitude: "58"; height: "137"; }
- ListElement{ longitude: "86"; latitude: "59"; height: "134"; }
- ListElement{ longitude: "86"; latitude: "60"; height: "135"; }
- ListElement{ longitude: "86"; latitude: "61"; height: "134"; }
- ListElement{ longitude: "86"; latitude: "62"; height: "135"; }
- ListElement{ longitude: "86"; latitude: "63"; height: "134"; }
- ListElement{ longitude: "86"; latitude: "64"; height: "131"; }
- ListElement{ longitude: "86"; latitude: "65"; height: "131"; }
- ListElement{ longitude: "86"; latitude: "66"; height: "129"; }
- ListElement{ longitude: "86"; latitude: "67"; height: "129"; }
- ListElement{ longitude: "86"; latitude: "68"; height: "129"; }
- ListElement{ longitude: "86"; latitude: "69"; height: "130"; }
- ListElement{ longitude: "86"; latitude: "70"; height: "129"; }
- ListElement{ longitude: "86"; latitude: "71"; height: "127"; }
- ListElement{ longitude: "86"; latitude: "72"; height: "128"; }
- ListElement{ longitude: "86"; latitude: "73"; height: "126"; }
- ListElement{ longitude: "86"; latitude: "74"; height: "127"; }
- ListElement{ longitude: "86"; latitude: "75"; height: "128"; }
- ListElement{ longitude: "86"; latitude: "76"; height: "127"; }
- ListElement{ longitude: "86"; latitude: "77"; height: "126"; }
- ListElement{ longitude: "86"; latitude: "78"; height: "126"; }
- ListElement{ longitude: "86"; latitude: "79"; height: "128"; }
- ListElement{ longitude: "86"; latitude: "80"; height: "137"; }
- ListElement{ longitude: "86"; latitude: "81"; height: "143"; }
- ListElement{ longitude: "86"; latitude: "82"; height: "150"; }
- ListElement{ longitude: "86"; latitude: "83"; height: "151"; }
- ListElement{ longitude: "86"; latitude: "84"; height: "153"; }
- ListElement{ longitude: "86"; latitude: "85"; height: "151"; }
- ListElement{ longitude: "86"; latitude: "86"; height: "147"; }
- ListElement{ longitude: "86"; latitude: "87"; height: "144"; }
- ListElement{ longitude: "86"; latitude: "88"; height: "141"; }
- ListElement{ longitude: "86"; latitude: "89"; height: "137"; }
- ListElement{ longitude: "86"; latitude: "90"; height: "132"; }
- ListElement{ longitude: "86"; latitude: "91"; height: "125"; }
- ListElement{ longitude: "86"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "86"; latitude: "93"; height: "117"; }
- ListElement{ longitude: "86"; latitude: "94"; height: "115"; }
- ListElement{ longitude: "86"; latitude: "95"; height: "112"; }
- ListElement{ longitude: "86"; latitude: "96"; height: "117"; }
- ListElement{ longitude: "86"; latitude: "97"; height: "117"; }
- ListElement{ longitude: "86"; latitude: "98"; height: "126"; }
- ListElement{ longitude: "86"; latitude: "99"; height: "120"; }
- ListElement{ longitude: "87"; latitude: "0"; height: "110"; }
- ListElement{ longitude: "87"; latitude: "1"; height: "108"; }
- ListElement{ longitude: "87"; latitude: "2"; height: "102"; }
- ListElement{ longitude: "87"; latitude: "3"; height: "102"; }
- ListElement{ longitude: "87"; latitude: "4"; height: "107"; }
- ListElement{ longitude: "87"; latitude: "5"; height: "106"; }
- ListElement{ longitude: "87"; latitude: "6"; height: "110"; }
- ListElement{ longitude: "87"; latitude: "7"; height: "116"; }
- ListElement{ longitude: "87"; latitude: "8"; height: "114"; }
- ListElement{ longitude: "87"; latitude: "9"; height: "116"; }
- ListElement{ longitude: "87"; latitude: "10"; height: "115"; }
- ListElement{ longitude: "87"; latitude: "11"; height: "111"; }
- ListElement{ longitude: "87"; latitude: "12"; height: "109"; }
- ListElement{ longitude: "87"; latitude: "13"; height: "106"; }
- ListElement{ longitude: "87"; latitude: "14"; height: "103"; }
- ListElement{ longitude: "87"; latitude: "15"; height: "100"; }
- ListElement{ longitude: "87"; latitude: "16"; height: "98"; }
- ListElement{ longitude: "87"; latitude: "17"; height: "101"; }
- ListElement{ longitude: "87"; latitude: "18"; height: "103"; }
- ListElement{ longitude: "87"; latitude: "19"; height: "107"; }
- ListElement{ longitude: "87"; latitude: "20"; height: "114"; }
- ListElement{ longitude: "87"; latitude: "21"; height: "121"; }
- ListElement{ longitude: "87"; latitude: "22"; height: "129"; }
- ListElement{ longitude: "87"; latitude: "23"; height: "134"; }
- ListElement{ longitude: "87"; latitude: "24"; height: "131"; }
- ListElement{ longitude: "87"; latitude: "25"; height: "130"; }
- ListElement{ longitude: "87"; latitude: "26"; height: "128"; }
- ListElement{ longitude: "87"; latitude: "27"; height: "126"; }
- ListElement{ longitude: "87"; latitude: "28"; height: "125"; }
- ListElement{ longitude: "87"; latitude: "29"; height: "121"; }
- ListElement{ longitude: "87"; latitude: "30"; height: "120"; }
- ListElement{ longitude: "87"; latitude: "31"; height: "117"; }
- ListElement{ longitude: "87"; latitude: "32"; height: "112"; }
- ListElement{ longitude: "87"; latitude: "33"; height: "109"; }
- ListElement{ longitude: "87"; latitude: "34"; height: "106"; }
- ListElement{ longitude: "87"; latitude: "35"; height: "108"; }
- ListElement{ longitude: "87"; latitude: "36"; height: "109"; }
- ListElement{ longitude: "87"; latitude: "37"; height: "114"; }
- ListElement{ longitude: "87"; latitude: "38"; height: "118"; }
- ListElement{ longitude: "87"; latitude: "39"; height: "122"; }
- ListElement{ longitude: "87"; latitude: "40"; height: "127"; }
- ListElement{ longitude: "87"; latitude: "41"; height: "127"; }
- ListElement{ longitude: "87"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "87"; latitude: "43"; height: "130"; }
- ListElement{ longitude: "87"; latitude: "44"; height: "131"; }
- ListElement{ longitude: "87"; latitude: "45"; height: "133"; }
- ListElement{ longitude: "87"; latitude: "46"; height: "135"; }
- ListElement{ longitude: "87"; latitude: "47"; height: "137"; }
- ListElement{ longitude: "87"; latitude: "48"; height: "135"; }
- ListElement{ longitude: "87"; latitude: "49"; height: "132"; }
- ListElement{ longitude: "87"; latitude: "50"; height: "134"; }
- ListElement{ longitude: "87"; latitude: "51"; height: "134"; }
- ListElement{ longitude: "87"; latitude: "52"; height: "133"; }
- ListElement{ longitude: "87"; latitude: "53"; height: "135"; }
- ListElement{ longitude: "87"; latitude: "54"; height: "138"; }
- ListElement{ longitude: "87"; latitude: "55"; height: "137"; }
- ListElement{ longitude: "87"; latitude: "56"; height: "139"; }
- ListElement{ longitude: "87"; latitude: "57"; height: "137"; }
- ListElement{ longitude: "87"; latitude: "58"; height: "138"; }
- ListElement{ longitude: "87"; latitude: "59"; height: "135"; }
- ListElement{ longitude: "87"; latitude: "60"; height: "134"; }
- ListElement{ longitude: "87"; latitude: "61"; height: "135"; }
- ListElement{ longitude: "87"; latitude: "62"; height: "135"; }
- ListElement{ longitude: "87"; latitude: "63"; height: "133"; }
- ListElement{ longitude: "87"; latitude: "64"; height: "127"; }
- ListElement{ longitude: "87"; latitude: "65"; height: "131"; }
- ListElement{ longitude: "87"; latitude: "66"; height: "134"; }
- ListElement{ longitude: "87"; latitude: "67"; height: "133"; }
- ListElement{ longitude: "87"; latitude: "68"; height: "133"; }
- ListElement{ longitude: "87"; latitude: "69"; height: "133"; }
- ListElement{ longitude: "87"; latitude: "70"; height: "133"; }
- ListElement{ longitude: "87"; latitude: "71"; height: "132"; }
- ListElement{ longitude: "87"; latitude: "72"; height: "130"; }
- ListElement{ longitude: "87"; latitude: "73"; height: "127"; }
- ListElement{ longitude: "87"; latitude: "74"; height: "126"; }
- ListElement{ longitude: "87"; latitude: "75"; height: "125"; }
- ListElement{ longitude: "87"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "87"; latitude: "77"; height: "126"; }
- ListElement{ longitude: "87"; latitude: "78"; height: "125"; }
- ListElement{ longitude: "87"; latitude: "79"; height: "128"; }
- ListElement{ longitude: "87"; latitude: "80"; height: "133"; }
- ListElement{ longitude: "87"; latitude: "81"; height: "140"; }
- ListElement{ longitude: "87"; latitude: "82"; height: "147"; }
- ListElement{ longitude: "87"; latitude: "83"; height: "151"; }
- ListElement{ longitude: "87"; latitude: "84"; height: "153"; }
- ListElement{ longitude: "87"; latitude: "85"; height: "152"; }
- ListElement{ longitude: "87"; latitude: "86"; height: "151"; }
- ListElement{ longitude: "87"; latitude: "87"; height: "149"; }
- ListElement{ longitude: "87"; latitude: "88"; height: "147"; }
- ListElement{ longitude: "87"; latitude: "89"; height: "143"; }
- ListElement{ longitude: "87"; latitude: "90"; height: "136"; }
- ListElement{ longitude: "87"; latitude: "91"; height: "128"; }
- ListElement{ longitude: "87"; latitude: "92"; height: "124"; }
- ListElement{ longitude: "87"; latitude: "93"; height: "118"; }
- ListElement{ longitude: "87"; latitude: "94"; height: "113"; }
- ListElement{ longitude: "87"; latitude: "95"; height: "113"; }
- ListElement{ longitude: "87"; latitude: "96"; height: "116"; }
- ListElement{ longitude: "87"; latitude: "97"; height: "118"; }
- ListElement{ longitude: "87"; latitude: "98"; height: "122"; }
- ListElement{ longitude: "87"; latitude: "99"; height: "117"; }
- ListElement{ longitude: "88"; latitude: "0"; height: "108"; }
- ListElement{ longitude: "88"; latitude: "1"; height: "105"; }
- ListElement{ longitude: "88"; latitude: "2"; height: "101"; }
- ListElement{ longitude: "88"; latitude: "3"; height: "101"; }
- ListElement{ longitude: "88"; latitude: "4"; height: "103"; }
- ListElement{ longitude: "88"; latitude: "5"; height: "107"; }
- ListElement{ longitude: "88"; latitude: "6"; height: "107"; }
- ListElement{ longitude: "88"; latitude: "7"; height: "112"; }
- ListElement{ longitude: "88"; latitude: "8"; height: "105"; }
- ListElement{ longitude: "88"; latitude: "9"; height: "113"; }
- ListElement{ longitude: "88"; latitude: "10"; height: "109"; }
- ListElement{ longitude: "88"; latitude: "11"; height: "106"; }
- ListElement{ longitude: "88"; latitude: "12"; height: "110"; }
- ListElement{ longitude: "88"; latitude: "13"; height: "105"; }
- ListElement{ longitude: "88"; latitude: "14"; height: "103"; }
- ListElement{ longitude: "88"; latitude: "15"; height: "102"; }
- ListElement{ longitude: "88"; latitude: "16"; height: "101"; }
- ListElement{ longitude: "88"; latitude: "17"; height: "102"; }
- ListElement{ longitude: "88"; latitude: "18"; height: "106"; }
- ListElement{ longitude: "88"; latitude: "19"; height: "112"; }
- ListElement{ longitude: "88"; latitude: "20"; height: "117"; }
- ListElement{ longitude: "88"; latitude: "21"; height: "126"; }
- ListElement{ longitude: "88"; latitude: "22"; height: "134"; }
- ListElement{ longitude: "88"; latitude: "23"; height: "139"; }
- ListElement{ longitude: "88"; latitude: "24"; height: "137"; }
- ListElement{ longitude: "88"; latitude: "25"; height: "133"; }
- ListElement{ longitude: "88"; latitude: "26"; height: "129"; }
- ListElement{ longitude: "88"; latitude: "27"; height: "128"; }
- ListElement{ longitude: "88"; latitude: "28"; height: "119"; }
- ListElement{ longitude: "88"; latitude: "29"; height: "123"; }
- ListElement{ longitude: "88"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "88"; latitude: "31"; height: "116"; }
- ListElement{ longitude: "88"; latitude: "32"; height: "114"; }
- ListElement{ longitude: "88"; latitude: "33"; height: "110"; }
- ListElement{ longitude: "88"; latitude: "34"; height: "108"; }
- ListElement{ longitude: "88"; latitude: "35"; height: "109"; }
- ListElement{ longitude: "88"; latitude: "36"; height: "111"; }
- ListElement{ longitude: "88"; latitude: "37"; height: "116"; }
- ListElement{ longitude: "88"; latitude: "38"; height: "120"; }
- ListElement{ longitude: "88"; latitude: "39"; height: "123"; }
- ListElement{ longitude: "88"; latitude: "40"; height: "126"; }
- ListElement{ longitude: "88"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "88"; latitude: "42"; height: "130"; }
- ListElement{ longitude: "88"; latitude: "43"; height: "131"; }
- ListElement{ longitude: "88"; latitude: "44"; height: "133"; }
- ListElement{ longitude: "88"; latitude: "45"; height: "135"; }
- ListElement{ longitude: "88"; latitude: "46"; height: "137"; }
- ListElement{ longitude: "88"; latitude: "47"; height: "137"; }
- ListElement{ longitude: "88"; latitude: "48"; height: "134"; }
- ListElement{ longitude: "88"; latitude: "49"; height: "133"; }
- ListElement{ longitude: "88"; latitude: "50"; height: "133"; }
- ListElement{ longitude: "88"; latitude: "51"; height: "133"; }
- ListElement{ longitude: "88"; latitude: "52"; height: "136"; }
- ListElement{ longitude: "88"; latitude: "53"; height: "137"; }
- ListElement{ longitude: "88"; latitude: "54"; height: "140"; }
- ListElement{ longitude: "88"; latitude: "55"; height: "139"; }
- ListElement{ longitude: "88"; latitude: "56"; height: "139"; }
- ListElement{ longitude: "88"; latitude: "57"; height: "139"; }
- ListElement{ longitude: "88"; latitude: "58"; height: "138"; }
- ListElement{ longitude: "88"; latitude: "59"; height: "135"; }
- ListElement{ longitude: "88"; latitude: "60"; height: "134"; }
- ListElement{ longitude: "88"; latitude: "61"; height: "137"; }
- ListElement{ longitude: "88"; latitude: "62"; height: "138"; }
- ListElement{ longitude: "88"; latitude: "63"; height: "130"; }
- ListElement{ longitude: "88"; latitude: "64"; height: "122"; }
- ListElement{ longitude: "88"; latitude: "65"; height: "126"; }
- ListElement{ longitude: "88"; latitude: "66"; height: "136"; }
- ListElement{ longitude: "88"; latitude: "67"; height: "132"; }
- ListElement{ longitude: "88"; latitude: "68"; height: "136"; }
- ListElement{ longitude: "88"; latitude: "69"; height: "135"; }
- ListElement{ longitude: "88"; latitude: "70"; height: "136"; }
- ListElement{ longitude: "88"; latitude: "71"; height: "133"; }
- ListElement{ longitude: "88"; latitude: "72"; height: "130"; }
- ListElement{ longitude: "88"; latitude: "73"; height: "128"; }
- ListElement{ longitude: "88"; latitude: "74"; height: "128"; }
- ListElement{ longitude: "88"; latitude: "75"; height: "125"; }
- ListElement{ longitude: "88"; latitude: "76"; height: "125"; }
- ListElement{ longitude: "88"; latitude: "77"; height: "125"; }
- ListElement{ longitude: "88"; latitude: "78"; height: "126"; }
- ListElement{ longitude: "88"; latitude: "79"; height: "128"; }
- ListElement{ longitude: "88"; latitude: "80"; height: "131"; }
- ListElement{ longitude: "88"; latitude: "81"; height: "136"; }
- ListElement{ longitude: "88"; latitude: "82"; height: "142"; }
- ListElement{ longitude: "88"; latitude: "83"; height: "146"; }
- ListElement{ longitude: "88"; latitude: "84"; height: "150"; }
- ListElement{ longitude: "88"; latitude: "85"; height: "149"; }
- ListElement{ longitude: "88"; latitude: "86"; height: "149"; }
- ListElement{ longitude: "88"; latitude: "87"; height: "150"; }
- ListElement{ longitude: "88"; latitude: "88"; height: "148"; }
- ListElement{ longitude: "88"; latitude: "89"; height: "147"; }
- ListElement{ longitude: "88"; latitude: "90"; height: "140"; }
- ListElement{ longitude: "88"; latitude: "91"; height: "130"; }
- ListElement{ longitude: "88"; latitude: "92"; height: "124"; }
- ListElement{ longitude: "88"; latitude: "93"; height: "118"; }
- ListElement{ longitude: "88"; latitude: "94"; height: "116"; }
- ListElement{ longitude: "88"; latitude: "95"; height: "117"; }
- ListElement{ longitude: "88"; latitude: "96"; height: "119"; }
- ListElement{ longitude: "88"; latitude: "97"; height: "119"; }
- ListElement{ longitude: "88"; latitude: "98"; height: "125"; }
- ListElement{ longitude: "88"; latitude: "99"; height: "113"; }
- ListElement{ longitude: "89"; latitude: "0"; height: "106"; }
- ListElement{ longitude: "89"; latitude: "1"; height: "101"; }
- ListElement{ longitude: "89"; latitude: "2"; height: "97"; }
- ListElement{ longitude: "89"; latitude: "3"; height: "99"; }
- ListElement{ longitude: "89"; latitude: "4"; height: "101"; }
- ListElement{ longitude: "89"; latitude: "5"; height: "104"; }
- ListElement{ longitude: "89"; latitude: "6"; height: "104"; }
- ListElement{ longitude: "89"; latitude: "7"; height: "108"; }
- ListElement{ longitude: "89"; latitude: "8"; height: "101"; }
- ListElement{ longitude: "89"; latitude: "9"; height: "108"; }
- ListElement{ longitude: "89"; latitude: "10"; height: "108"; }
- ListElement{ longitude: "89"; latitude: "11"; height: "107"; }
- ListElement{ longitude: "89"; latitude: "12"; height: "105"; }
- ListElement{ longitude: "89"; latitude: "13"; height: "106"; }
- ListElement{ longitude: "89"; latitude: "14"; height: "106"; }
- ListElement{ longitude: "89"; latitude: "15"; height: "103"; }
- ListElement{ longitude: "89"; latitude: "16"; height: "103"; }
- ListElement{ longitude: "89"; latitude: "17"; height: "105"; }
- ListElement{ longitude: "89"; latitude: "18"; height: "108"; }
- ListElement{ longitude: "89"; latitude: "19"; height: "113"; }
- ListElement{ longitude: "89"; latitude: "20"; height: "123"; }
- ListElement{ longitude: "89"; latitude: "21"; height: "130"; }
- ListElement{ longitude: "89"; latitude: "22"; height: "137"; }
- ListElement{ longitude: "89"; latitude: "23"; height: "140"; }
- ListElement{ longitude: "89"; latitude: "24"; height: "139"; }
- ListElement{ longitude: "89"; latitude: "25"; height: "137"; }
- ListElement{ longitude: "89"; latitude: "26"; height: "131"; }
- ListElement{ longitude: "89"; latitude: "27"; height: "130"; }
- ListElement{ longitude: "89"; latitude: "28"; height: "123"; }
- ListElement{ longitude: "89"; latitude: "29"; height: "125"; }
- ListElement{ longitude: "89"; latitude: "30"; height: "125"; }
- ListElement{ longitude: "89"; latitude: "31"; height: "119"; }
- ListElement{ longitude: "89"; latitude: "32"; height: "115"; }
- ListElement{ longitude: "89"; latitude: "33"; height: "112"; }
- ListElement{ longitude: "89"; latitude: "34"; height: "111"; }
- ListElement{ longitude: "89"; latitude: "35"; height: "112"; }
- ListElement{ longitude: "89"; latitude: "36"; height: "114"; }
- ListElement{ longitude: "89"; latitude: "37"; height: "117"; }
- ListElement{ longitude: "89"; latitude: "38"; height: "119"; }
- ListElement{ longitude: "89"; latitude: "39"; height: "122"; }
- ListElement{ longitude: "89"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "89"; latitude: "41"; height: "128"; }
- ListElement{ longitude: "89"; latitude: "42"; height: "130"; }
- ListElement{ longitude: "89"; latitude: "43"; height: "130"; }
- ListElement{ longitude: "89"; latitude: "44"; height: "134"; }
- ListElement{ longitude: "89"; latitude: "45"; height: "136"; }
- ListElement{ longitude: "89"; latitude: "46"; height: "137"; }
- ListElement{ longitude: "89"; latitude: "47"; height: "138"; }
- ListElement{ longitude: "89"; latitude: "48"; height: "137"; }
- ListElement{ longitude: "89"; latitude: "49"; height: "135"; }
- ListElement{ longitude: "89"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "89"; latitude: "51"; height: "136"; }
- ListElement{ longitude: "89"; latitude: "52"; height: "135"; }
- ListElement{ longitude: "89"; latitude: "53"; height: "136"; }
- ListElement{ longitude: "89"; latitude: "54"; height: "138"; }
- ListElement{ longitude: "89"; latitude: "55"; height: "139"; }
- ListElement{ longitude: "89"; latitude: "56"; height: "139"; }
- ListElement{ longitude: "89"; latitude: "57"; height: "139"; }
- ListElement{ longitude: "89"; latitude: "58"; height: "138"; }
- ListElement{ longitude: "89"; latitude: "59"; height: "136"; }
- ListElement{ longitude: "89"; latitude: "60"; height: "134"; }
- ListElement{ longitude: "89"; latitude: "61"; height: "133"; }
- ListElement{ longitude: "89"; latitude: "62"; height: "134"; }
- ListElement{ longitude: "89"; latitude: "63"; height: "131"; }
- ListElement{ longitude: "89"; latitude: "64"; height: "127"; }
- ListElement{ longitude: "89"; latitude: "65"; height: "130"; }
- ListElement{ longitude: "89"; latitude: "66"; height: "133"; }
- ListElement{ longitude: "89"; latitude: "67"; height: "132"; }
- ListElement{ longitude: "89"; latitude: "68"; height: "135"; }
- ListElement{ longitude: "89"; latitude: "69"; height: "134"; }
- ListElement{ longitude: "89"; latitude: "70"; height: "136"; }
- ListElement{ longitude: "89"; latitude: "71"; height: "136"; }
- ListElement{ longitude: "89"; latitude: "72"; height: "133"; }
- ListElement{ longitude: "89"; latitude: "73"; height: "131"; }
- ListElement{ longitude: "89"; latitude: "74"; height: "130"; }
- ListElement{ longitude: "89"; latitude: "75"; height: "126"; }
- ListElement{ longitude: "89"; latitude: "76"; height: "125"; }
- ListElement{ longitude: "89"; latitude: "77"; height: "125"; }
- ListElement{ longitude: "89"; latitude: "78"; height: "126"; }
- ListElement{ longitude: "89"; latitude: "79"; height: "128"; }
- ListElement{ longitude: "89"; latitude: "80"; height: "130"; }
- ListElement{ longitude: "89"; latitude: "81"; height: "133"; }
- ListElement{ longitude: "89"; latitude: "82"; height: "137"; }
- ListElement{ longitude: "89"; latitude: "83"; height: "140"; }
- ListElement{ longitude: "89"; latitude: "84"; height: "143"; }
- ListElement{ longitude: "89"; latitude: "85"; height: "146"; }
- ListElement{ longitude: "89"; latitude: "86"; height: "146"; }
- ListElement{ longitude: "89"; latitude: "87"; height: "146"; }
- ListElement{ longitude: "89"; latitude: "88"; height: "147"; }
- ListElement{ longitude: "89"; latitude: "89"; height: "145"; }
- ListElement{ longitude: "89"; latitude: "90"; height: "140"; }
- ListElement{ longitude: "89"; latitude: "91"; height: "133"; }
- ListElement{ longitude: "89"; latitude: "92"; height: "128"; }
- ListElement{ longitude: "89"; latitude: "93"; height: "123"; }
- ListElement{ longitude: "89"; latitude: "94"; height: "123"; }
- ListElement{ longitude: "89"; latitude: "95"; height: "114"; }
- ListElement{ longitude: "89"; latitude: "96"; height: "120"; }
- ListElement{ longitude: "89"; latitude: "97"; height: "117"; }
- ListElement{ longitude: "89"; latitude: "98"; height: "119"; }
- ListElement{ longitude: "89"; latitude: "99"; height: "107"; }
- ListElement{ longitude: "90"; latitude: "0"; height: "102"; }
- ListElement{ longitude: "90"; latitude: "1"; height: "99"; }
- ListElement{ longitude: "90"; latitude: "2"; height: "98"; }
- ListElement{ longitude: "90"; latitude: "3"; height: "99"; }
- ListElement{ longitude: "90"; latitude: "4"; height: "102"; }
- ListElement{ longitude: "90"; latitude: "5"; height: "101"; }
- ListElement{ longitude: "90"; latitude: "6"; height: "101"; }
- ListElement{ longitude: "90"; latitude: "7"; height: "103"; }
- ListElement{ longitude: "90"; latitude: "8"; height: "106"; }
- ListElement{ longitude: "90"; latitude: "9"; height: "105"; }
- ListElement{ longitude: "90"; latitude: "10"; height: "103"; }
- ListElement{ longitude: "90"; latitude: "11"; height: "103"; }
- ListElement{ longitude: "90"; latitude: "12"; height: "103"; }
- ListElement{ longitude: "90"; latitude: "13"; height: "104"; }
- ListElement{ longitude: "90"; latitude: "14"; height: "108"; }
- ListElement{ longitude: "90"; latitude: "15"; height: "107"; }
- ListElement{ longitude: "90"; latitude: "16"; height: "108"; }
- ListElement{ longitude: "90"; latitude: "17"; height: "109"; }
- ListElement{ longitude: "90"; latitude: "18"; height: "112"; }
- ListElement{ longitude: "90"; latitude: "19"; height: "119"; }
- ListElement{ longitude: "90"; latitude: "20"; height: "122"; }
- ListElement{ longitude: "90"; latitude: "21"; height: "127"; }
- ListElement{ longitude: "90"; latitude: "22"; height: "133"; }
- ListElement{ longitude: "90"; latitude: "23"; height: "136"; }
- ListElement{ longitude: "90"; latitude: "24"; height: "136"; }
- ListElement{ longitude: "90"; latitude: "25"; height: "137"; }
- ListElement{ longitude: "90"; latitude: "26"; height: "134"; }
- ListElement{ longitude: "90"; latitude: "27"; height: "130"; }
- ListElement{ longitude: "90"; latitude: "28"; height: "131"; }
- ListElement{ longitude: "90"; latitude: "29"; height: "127"; }
- ListElement{ longitude: "90"; latitude: "30"; height: "123"; }
- ListElement{ longitude: "90"; latitude: "31"; height: "117"; }
- ListElement{ longitude: "90"; latitude: "32"; height: "113"; }
- ListElement{ longitude: "90"; latitude: "33"; height: "110"; }
- ListElement{ longitude: "90"; latitude: "34"; height: "110"; }
- ListElement{ longitude: "90"; latitude: "35"; height: "111"; }
- ListElement{ longitude: "90"; latitude: "36"; height: "113"; }
- ListElement{ longitude: "90"; latitude: "37"; height: "116"; }
- ListElement{ longitude: "90"; latitude: "38"; height: "117"; }
- ListElement{ longitude: "90"; latitude: "39"; height: "119"; }
- ListElement{ longitude: "90"; latitude: "40"; height: "122"; }
- ListElement{ longitude: "90"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "90"; latitude: "42"; height: "129"; }
- ListElement{ longitude: "90"; latitude: "43"; height: "131"; }
- ListElement{ longitude: "90"; latitude: "44"; height: "133"; }
- ListElement{ longitude: "90"; latitude: "45"; height: "136"; }
- ListElement{ longitude: "90"; latitude: "46"; height: "137"; }
- ListElement{ longitude: "90"; latitude: "47"; height: "139"; }
- ListElement{ longitude: "90"; latitude: "48"; height: "139"; }
- ListElement{ longitude: "90"; latitude: "49"; height: "138"; }
- ListElement{ longitude: "90"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "90"; latitude: "51"; height: "137"; }
- ListElement{ longitude: "90"; latitude: "52"; height: "137"; }
- ListElement{ longitude: "90"; latitude: "53"; height: "137"; }
- ListElement{ longitude: "90"; latitude: "54"; height: "136"; }
- ListElement{ longitude: "90"; latitude: "55"; height: "138"; }
- ListElement{ longitude: "90"; latitude: "56"; height: "139"; }
- ListElement{ longitude: "90"; latitude: "57"; height: "139"; }
- ListElement{ longitude: "90"; latitude: "58"; height: "138"; }
- ListElement{ longitude: "90"; latitude: "59"; height: "134"; }
- ListElement{ longitude: "90"; latitude: "60"; height: "130"; }
- ListElement{ longitude: "90"; latitude: "61"; height: "129"; }
- ListElement{ longitude: "90"; latitude: "62"; height: "128"; }
- ListElement{ longitude: "90"; latitude: "63"; height: "128"; }
- ListElement{ longitude: "90"; latitude: "64"; height: "128"; }
- ListElement{ longitude: "90"; latitude: "65"; height: "128"; }
- ListElement{ longitude: "90"; latitude: "66"; height: "129"; }
- ListElement{ longitude: "90"; latitude: "67"; height: "129"; }
- ListElement{ longitude: "90"; latitude: "68"; height: "130"; }
- ListElement{ longitude: "90"; latitude: "69"; height: "131"; }
- ListElement{ longitude: "90"; latitude: "70"; height: "133"; }
- ListElement{ longitude: "90"; latitude: "71"; height: "135"; }
- ListElement{ longitude: "90"; latitude: "72"; height: "135"; }
- ListElement{ longitude: "90"; latitude: "73"; height: "132"; }
- ListElement{ longitude: "90"; latitude: "74"; height: "130"; }
- ListElement{ longitude: "90"; latitude: "75"; height: "128"; }
- ListElement{ longitude: "90"; latitude: "76"; height: "125"; }
- ListElement{ longitude: "90"; latitude: "77"; height: "127"; }
- ListElement{ longitude: "90"; latitude: "78"; height: "126"; }
- ListElement{ longitude: "90"; latitude: "79"; height: "128"; }
- ListElement{ longitude: "90"; latitude: "80"; height: "130"; }
- ListElement{ longitude: "90"; latitude: "81"; height: "132"; }
- ListElement{ longitude: "90"; latitude: "82"; height: "135"; }
- ListElement{ longitude: "90"; latitude: "83"; height: "138"; }
- ListElement{ longitude: "90"; latitude: "84"; height: "140"; }
- ListElement{ longitude: "90"; latitude: "85"; height: "141"; }
- ListElement{ longitude: "90"; latitude: "86"; height: "143"; }
- ListElement{ longitude: "90"; latitude: "87"; height: "143"; }
- ListElement{ longitude: "90"; latitude: "88"; height: "142"; }
- ListElement{ longitude: "90"; latitude: "89"; height: "140"; }
- ListElement{ longitude: "90"; latitude: "90"; height: "137"; }
- ListElement{ longitude: "90"; latitude: "91"; height: "131"; }
- ListElement{ longitude: "90"; latitude: "92"; height: "127"; }
- ListElement{ longitude: "90"; latitude: "93"; height: "129"; }
- ListElement{ longitude: "90"; latitude: "94"; height: "112"; }
- ListElement{ longitude: "90"; latitude: "95"; height: "86"; }
- ListElement{ longitude: "90"; latitude: "96"; height: "103"; }
- ListElement{ longitude: "90"; latitude: "97"; height: "110"; }
- ListElement{ longitude: "90"; latitude: "98"; height: "108"; }
- ListElement{ longitude: "90"; latitude: "99"; height: "99"; }
- ListElement{ longitude: "91"; latitude: "0"; height: "97"; }
- ListElement{ longitude: "91"; latitude: "1"; height: "97"; }
- ListElement{ longitude: "91"; latitude: "2"; height: "100"; }
- ListElement{ longitude: "91"; latitude: "3"; height: "101"; }
- ListElement{ longitude: "91"; latitude: "4"; height: "102"; }
- ListElement{ longitude: "91"; latitude: "5"; height: "101"; }
- ListElement{ longitude: "91"; latitude: "6"; height: "99"; }
- ListElement{ longitude: "91"; latitude: "7"; height: "99"; }
- ListElement{ longitude: "91"; latitude: "8"; height: "99"; }
- ListElement{ longitude: "91"; latitude: "9"; height: "101"; }
- ListElement{ longitude: "91"; latitude: "10"; height: "100"; }
- ListElement{ longitude: "91"; latitude: "11"; height: "102"; }
- ListElement{ longitude: "91"; latitude: "12"; height: "101"; }
- ListElement{ longitude: "91"; latitude: "13"; height: "104"; }
- ListElement{ longitude: "91"; latitude: "14"; height: "106"; }
- ListElement{ longitude: "91"; latitude: "15"; height: "109"; }
- ListElement{ longitude: "91"; latitude: "16"; height: "109"; }
- ListElement{ longitude: "91"; latitude: "17"; height: "112"; }
- ListElement{ longitude: "91"; latitude: "18"; height: "111"; }
- ListElement{ longitude: "91"; latitude: "19"; height: "116"; }
- ListElement{ longitude: "91"; latitude: "20"; height: "120"; }
- ListElement{ longitude: "91"; latitude: "21"; height: "122"; }
- ListElement{ longitude: "91"; latitude: "22"; height: "127"; }
- ListElement{ longitude: "91"; latitude: "23"; height: "130"; }
- ListElement{ longitude: "91"; latitude: "24"; height: "133"; }
- ListElement{ longitude: "91"; latitude: "25"; height: "132"; }
- ListElement{ longitude: "91"; latitude: "26"; height: "134"; }
- ListElement{ longitude: "91"; latitude: "27"; height: "133"; }
- ListElement{ longitude: "91"; latitude: "28"; height: "132"; }
- ListElement{ longitude: "91"; latitude: "29"; height: "129"; }
- ListElement{ longitude: "91"; latitude: "30"; height: "122"; }
- ListElement{ longitude: "91"; latitude: "31"; height: "116"; }
- ListElement{ longitude: "91"; latitude: "32"; height: "112"; }
- ListElement{ longitude: "91"; latitude: "33"; height: "110"; }
- ListElement{ longitude: "91"; latitude: "34"; height: "109"; }
- ListElement{ longitude: "91"; latitude: "35"; height: "112"; }
- ListElement{ longitude: "91"; latitude: "36"; height: "113"; }
- ListElement{ longitude: "91"; latitude: "37"; height: "114"; }
- ListElement{ longitude: "91"; latitude: "38"; height: "116"; }
- ListElement{ longitude: "91"; latitude: "39"; height: "118"; }
- ListElement{ longitude: "91"; latitude: "40"; height: "121"; }
- ListElement{ longitude: "91"; latitude: "41"; height: "126"; }
- ListElement{ longitude: "91"; latitude: "42"; height: "128"; }
- ListElement{ longitude: "91"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "91"; latitude: "44"; height: "130"; }
- ListElement{ longitude: "91"; latitude: "45"; height: "134"; }
- ListElement{ longitude: "91"; latitude: "46"; height: "138"; }
- ListElement{ longitude: "91"; latitude: "47"; height: "140"; }
- ListElement{ longitude: "91"; latitude: "48"; height: "141"; }
- ListElement{ longitude: "91"; latitude: "49"; height: "141"; }
- ListElement{ longitude: "91"; latitude: "50"; height: "137"; }
- ListElement{ longitude: "91"; latitude: "51"; height: "138"; }
- ListElement{ longitude: "91"; latitude: "52"; height: "136"; }
- ListElement{ longitude: "91"; latitude: "53"; height: "137"; }
- ListElement{ longitude: "91"; latitude: "54"; height: "137"; }
- ListElement{ longitude: "91"; latitude: "55"; height: "137"; }
- ListElement{ longitude: "91"; latitude: "56"; height: "133"; }
- ListElement{ longitude: "91"; latitude: "57"; height: "125"; }
- ListElement{ longitude: "91"; latitude: "58"; height: "132"; }
- ListElement{ longitude: "91"; latitude: "59"; height: "132"; }
- ListElement{ longitude: "91"; latitude: "60"; height: "129"; }
- ListElement{ longitude: "91"; latitude: "61"; height: "129"; }
- ListElement{ longitude: "91"; latitude: "62"; height: "127"; }
- ListElement{ longitude: "91"; latitude: "63"; height: "125"; }
- ListElement{ longitude: "91"; latitude: "64"; height: "122"; }
- ListElement{ longitude: "91"; latitude: "65"; height: "122"; }
- ListElement{ longitude: "91"; latitude: "66"; height: "123"; }
- ListElement{ longitude: "91"; latitude: "67"; height: "124"; }
- ListElement{ longitude: "91"; latitude: "68"; height: "125"; }
- ListElement{ longitude: "91"; latitude: "69"; height: "126"; }
- ListElement{ longitude: "91"; latitude: "70"; height: "129"; }
- ListElement{ longitude: "91"; latitude: "71"; height: "129"; }
- ListElement{ longitude: "91"; latitude: "72"; height: "131"; }
- ListElement{ longitude: "91"; latitude: "73"; height: "131"; }
- ListElement{ longitude: "91"; latitude: "74"; height: "130"; }
- ListElement{ longitude: "91"; latitude: "75"; height: "128"; }
- ListElement{ longitude: "91"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "91"; latitude: "77"; height: "128"; }
- ListElement{ longitude: "91"; latitude: "78"; height: "127"; }
- ListElement{ longitude: "91"; latitude: "79"; height: "128"; }
- ListElement{ longitude: "91"; latitude: "80"; height: "130"; }
- ListElement{ longitude: "91"; latitude: "81"; height: "132"; }
- ListElement{ longitude: "91"; latitude: "82"; height: "136"; }
- ListElement{ longitude: "91"; latitude: "83"; height: "138"; }
- ListElement{ longitude: "91"; latitude: "84"; height: "139"; }
- ListElement{ longitude: "91"; latitude: "85"; height: "140"; }
- ListElement{ longitude: "91"; latitude: "86"; height: "141"; }
- ListElement{ longitude: "91"; latitude: "87"; height: "138"; }
- ListElement{ longitude: "91"; latitude: "88"; height: "137"; }
- ListElement{ longitude: "91"; latitude: "89"; height: "137"; }
- ListElement{ longitude: "91"; latitude: "90"; height: "134"; }
- ListElement{ longitude: "91"; latitude: "91"; height: "132"; }
- ListElement{ longitude: "91"; latitude: "92"; height: "130"; }
- ListElement{ longitude: "91"; latitude: "93"; height: "131"; }
- ListElement{ longitude: "91"; latitude: "94"; height: "120"; }
- ListElement{ longitude: "91"; latitude: "95"; height: "95"; }
- ListElement{ longitude: "91"; latitude: "96"; height: "105"; }
- ListElement{ longitude: "91"; latitude: "97"; height: "106"; }
- ListElement{ longitude: "91"; latitude: "98"; height: "97"; }
- ListElement{ longitude: "91"; latitude: "99"; height: "91"; }
- ListElement{ longitude: "92"; latitude: "0"; height: "96"; }
- ListElement{ longitude: "92"; latitude: "1"; height: "97"; }
- ListElement{ longitude: "92"; latitude: "2"; height: "101"; }
- ListElement{ longitude: "92"; latitude: "3"; height: "102"; }
- ListElement{ longitude: "92"; latitude: "4"; height: "102"; }
- ListElement{ longitude: "92"; latitude: "5"; height: "99"; }
- ListElement{ longitude: "92"; latitude: "6"; height: "95"; }
- ListElement{ longitude: "92"; latitude: "7"; height: "98"; }
- ListElement{ longitude: "92"; latitude: "8"; height: "96"; }
- ListElement{ longitude: "92"; latitude: "9"; height: "98"; }
- ListElement{ longitude: "92"; latitude: "10"; height: "97"; }
- ListElement{ longitude: "92"; latitude: "11"; height: "99"; }
- ListElement{ longitude: "92"; latitude: "12"; height: "99"; }
- ListElement{ longitude: "92"; latitude: "13"; height: "102"; }
- ListElement{ longitude: "92"; latitude: "14"; height: "102"; }
- ListElement{ longitude: "92"; latitude: "15"; height: "105"; }
- ListElement{ longitude: "92"; latitude: "16"; height: "107"; }
- ListElement{ longitude: "92"; latitude: "17"; height: "108"; }
- ListElement{ longitude: "92"; latitude: "18"; height: "109"; }
- ListElement{ longitude: "92"; latitude: "19"; height: "112"; }
- ListElement{ longitude: "92"; latitude: "20"; height: "115"; }
- ListElement{ longitude: "92"; latitude: "21"; height: "118"; }
- ListElement{ longitude: "92"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "92"; latitude: "23"; height: "126"; }
- ListElement{ longitude: "92"; latitude: "24"; height: "129"; }
- ListElement{ longitude: "92"; latitude: "25"; height: "131"; }
- ListElement{ longitude: "92"; latitude: "26"; height: "133"; }
- ListElement{ longitude: "92"; latitude: "27"; height: "134"; }
- ListElement{ longitude: "92"; latitude: "28"; height: "130"; }
- ListElement{ longitude: "92"; latitude: "29"; height: "126"; }
- ListElement{ longitude: "92"; latitude: "30"; height: "121"; }
- ListElement{ longitude: "92"; latitude: "31"; height: "113"; }
- ListElement{ longitude: "92"; latitude: "32"; height: "110"; }
- ListElement{ longitude: "92"; latitude: "33"; height: "113"; }
- ListElement{ longitude: "92"; latitude: "34"; height: "112"; }
- ListElement{ longitude: "92"; latitude: "35"; height: "115"; }
- ListElement{ longitude: "92"; latitude: "36"; height: "116"; }
- ListElement{ longitude: "92"; latitude: "37"; height: "115"; }
- ListElement{ longitude: "92"; latitude: "38"; height: "116"; }
- ListElement{ longitude: "92"; latitude: "39"; height: "118"; }
- ListElement{ longitude: "92"; latitude: "40"; height: "121"; }
- ListElement{ longitude: "92"; latitude: "41"; height: "126"; }
- ListElement{ longitude: "92"; latitude: "42"; height: "127"; }
- ListElement{ longitude: "92"; latitude: "43"; height: "128"; }
- ListElement{ longitude: "92"; latitude: "44"; height: "128"; }
- ListElement{ longitude: "92"; latitude: "45"; height: "131"; }
- ListElement{ longitude: "92"; latitude: "46"; height: "135"; }
- ListElement{ longitude: "92"; latitude: "47"; height: "130"; }
- ListElement{ longitude: "92"; latitude: "48"; height: "129"; }
- ListElement{ longitude: "92"; latitude: "49"; height: "141"; }
- ListElement{ longitude: "92"; latitude: "50"; height: "140"; }
- ListElement{ longitude: "92"; latitude: "51"; height: "139"; }
- ListElement{ longitude: "92"; latitude: "52"; height: "136"; }
- ListElement{ longitude: "92"; latitude: "53"; height: "136"; }
- ListElement{ longitude: "92"; latitude: "54"; height: "136"; }
- ListElement{ longitude: "92"; latitude: "55"; height: "136"; }
- ListElement{ longitude: "92"; latitude: "56"; height: "129"; }
- ListElement{ longitude: "92"; latitude: "57"; height: "121"; }
- ListElement{ longitude: "92"; latitude: "58"; height: "128"; }
- ListElement{ longitude: "92"; latitude: "59"; height: "131"; }
- ListElement{ longitude: "92"; latitude: "60"; height: "129"; }
- ListElement{ longitude: "92"; latitude: "61"; height: "127"; }
- ListElement{ longitude: "92"; latitude: "62"; height: "123"; }
- ListElement{ longitude: "92"; latitude: "63"; height: "119"; }
- ListElement{ longitude: "92"; latitude: "64"; height: "117"; }
- ListElement{ longitude: "92"; latitude: "65"; height: "117"; }
- ListElement{ longitude: "92"; latitude: "66"; height: "118"; }
- ListElement{ longitude: "92"; latitude: "67"; height: "121"; }
- ListElement{ longitude: "92"; latitude: "68"; height: "122"; }
- ListElement{ longitude: "92"; latitude: "69"; height: "121"; }
- ListElement{ longitude: "92"; latitude: "70"; height: "124"; }
- ListElement{ longitude: "92"; latitude: "71"; height: "125"; }
- ListElement{ longitude: "92"; latitude: "72"; height: "130"; }
- ListElement{ longitude: "92"; latitude: "73"; height: "129"; }
- ListElement{ longitude: "92"; latitude: "74"; height: "128"; }
- ListElement{ longitude: "92"; latitude: "75"; height: "125"; }
- ListElement{ longitude: "92"; latitude: "76"; height: "125"; }
- ListElement{ longitude: "92"; latitude: "77"; height: "128"; }
- ListElement{ longitude: "92"; latitude: "78"; height: "128"; }
- ListElement{ longitude: "92"; latitude: "79"; height: "131"; }
- ListElement{ longitude: "92"; latitude: "80"; height: "130"; }
- ListElement{ longitude: "92"; latitude: "81"; height: "132"; }
- ListElement{ longitude: "92"; latitude: "82"; height: "136"; }
- ListElement{ longitude: "92"; latitude: "83"; height: "134"; }
- ListElement{ longitude: "92"; latitude: "84"; height: "131"; }
- ListElement{ longitude: "92"; latitude: "85"; height: "137"; }
- ListElement{ longitude: "92"; latitude: "86"; height: "142"; }
- ListElement{ longitude: "92"; latitude: "87"; height: "137"; }
- ListElement{ longitude: "92"; latitude: "88"; height: "136"; }
- ListElement{ longitude: "92"; latitude: "89"; height: "133"; }
- ListElement{ longitude: "92"; latitude: "90"; height: "129"; }
- ListElement{ longitude: "92"; latitude: "91"; height: "130"; }
- ListElement{ longitude: "92"; latitude: "92"; height: "132"; }
- ListElement{ longitude: "92"; latitude: "93"; height: "124"; }
- ListElement{ longitude: "92"; latitude: "94"; height: "119"; }
- ListElement{ longitude: "92"; latitude: "95"; height: "114"; }
- ListElement{ longitude: "92"; latitude: "96"; height: "109"; }
- ListElement{ longitude: "92"; latitude: "97"; height: "109"; }
- ListElement{ longitude: "92"; latitude: "98"; height: "96"; }
- ListElement{ longitude: "92"; latitude: "99"; height: "87"; }
- ListElement{ longitude: "93"; latitude: "0"; height: "96"; }
- ListElement{ longitude: "93"; latitude: "1"; height: "100"; }
- ListElement{ longitude: "93"; latitude: "2"; height: "103"; }
- ListElement{ longitude: "93"; latitude: "3"; height: "105"; }
- ListElement{ longitude: "93"; latitude: "4"; height: "105"; }
- ListElement{ longitude: "93"; latitude: "5"; height: "96"; }
- ListElement{ longitude: "93"; latitude: "6"; height: "97"; }
- ListElement{ longitude: "93"; latitude: "7"; height: "97"; }
- ListElement{ longitude: "93"; latitude: "8"; height: "93"; }
- ListElement{ longitude: "93"; latitude: "9"; height: "94"; }
- ListElement{ longitude: "93"; latitude: "10"; height: "94"; }
- ListElement{ longitude: "93"; latitude: "11"; height: "95"; }
- ListElement{ longitude: "93"; latitude: "12"; height: "98"; }
- ListElement{ longitude: "93"; latitude: "13"; height: "99"; }
- ListElement{ longitude: "93"; latitude: "14"; height: "99"; }
- ListElement{ longitude: "93"; latitude: "15"; height: "102"; }
- ListElement{ longitude: "93"; latitude: "16"; height: "100"; }
- ListElement{ longitude: "93"; latitude: "17"; height: "104"; }
- ListElement{ longitude: "93"; latitude: "18"; height: "107"; }
- ListElement{ longitude: "93"; latitude: "19"; height: "110"; }
- ListElement{ longitude: "93"; latitude: "20"; height: "113"; }
- ListElement{ longitude: "93"; latitude: "21"; height: "118"; }
- ListElement{ longitude: "93"; latitude: "22"; height: "119"; }
- ListElement{ longitude: "93"; latitude: "23"; height: "121"; }
- ListElement{ longitude: "93"; latitude: "24"; height: "124"; }
- ListElement{ longitude: "93"; latitude: "25"; height: "129"; }
- ListElement{ longitude: "93"; latitude: "26"; height: "132"; }
- ListElement{ longitude: "93"; latitude: "27"; height: "132"; }
- ListElement{ longitude: "93"; latitude: "28"; height: "128"; }
- ListElement{ longitude: "93"; latitude: "29"; height: "125"; }
- ListElement{ longitude: "93"; latitude: "30"; height: "120"; }
- ListElement{ longitude: "93"; latitude: "31"; height: "113"; }
- ListElement{ longitude: "93"; latitude: "32"; height: "111"; }
- ListElement{ longitude: "93"; latitude: "33"; height: "114"; }
- ListElement{ longitude: "93"; latitude: "34"; height: "117"; }
- ListElement{ longitude: "93"; latitude: "35"; height: "117"; }
- ListElement{ longitude: "93"; latitude: "36"; height: "118"; }
- ListElement{ longitude: "93"; latitude: "37"; height: "117"; }
- ListElement{ longitude: "93"; latitude: "38"; height: "117"; }
- ListElement{ longitude: "93"; latitude: "39"; height: "119"; }
- ListElement{ longitude: "93"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "93"; latitude: "41"; height: "125"; }
- ListElement{ longitude: "93"; latitude: "42"; height: "126"; }
- ListElement{ longitude: "93"; latitude: "43"; height: "126"; }
- ListElement{ longitude: "93"; latitude: "44"; height: "126"; }
- ListElement{ longitude: "93"; latitude: "45"; height: "129"; }
- ListElement{ longitude: "93"; latitude: "46"; height: "134"; }
- ListElement{ longitude: "93"; latitude: "47"; height: "129"; }
- ListElement{ longitude: "93"; latitude: "48"; height: "132"; }
- ListElement{ longitude: "93"; latitude: "49"; height: "142"; }
- ListElement{ longitude: "93"; latitude: "50"; height: "140"; }
- ListElement{ longitude: "93"; latitude: "51"; height: "137"; }
- ListElement{ longitude: "93"; latitude: "52"; height: "138"; }
- ListElement{ longitude: "93"; latitude: "53"; height: "137"; }
- ListElement{ longitude: "93"; latitude: "54"; height: "138"; }
- ListElement{ longitude: "93"; latitude: "55"; height: "138"; }
- ListElement{ longitude: "93"; latitude: "56"; height: "137"; }
- ListElement{ longitude: "93"; latitude: "57"; height: "131"; }
- ListElement{ longitude: "93"; latitude: "58"; height: "132"; }
- ListElement{ longitude: "93"; latitude: "59"; height: "129"; }
- ListElement{ longitude: "93"; latitude: "60"; height: "128"; }
- ListElement{ longitude: "93"; latitude: "61"; height: "125"; }
- ListElement{ longitude: "93"; latitude: "62"; height: "121"; }
- ListElement{ longitude: "93"; latitude: "63"; height: "119"; }
- ListElement{ longitude: "93"; latitude: "64"; height: "117"; }
- ListElement{ longitude: "93"; latitude: "65"; height: "117"; }
- ListElement{ longitude: "93"; latitude: "66"; height: "120"; }
- ListElement{ longitude: "93"; latitude: "67"; height: "123"; }
- ListElement{ longitude: "93"; latitude: "68"; height: "122"; }
- ListElement{ longitude: "93"; latitude: "69"; height: "122"; }
- ListElement{ longitude: "93"; latitude: "70"; height: "122"; }
- ListElement{ longitude: "93"; latitude: "71"; height: "123"; }
- ListElement{ longitude: "93"; latitude: "72"; height: "124"; }
- ListElement{ longitude: "93"; latitude: "73"; height: "124"; }
- ListElement{ longitude: "93"; latitude: "74"; height: "126"; }
- ListElement{ longitude: "93"; latitude: "75"; height: "124"; }
- ListElement{ longitude: "93"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "93"; latitude: "77"; height: "128"; }
- ListElement{ longitude: "93"; latitude: "78"; height: "130"; }
- ListElement{ longitude: "93"; latitude: "79"; height: "132"; }
- ListElement{ longitude: "93"; latitude: "80"; height: "133"; }
- ListElement{ longitude: "93"; latitude: "81"; height: "133"; }
- ListElement{ longitude: "93"; latitude: "82"; height: "138"; }
- ListElement{ longitude: "93"; latitude: "83"; height: "135"; }
- ListElement{ longitude: "93"; latitude: "84"; height: "130"; }
- ListElement{ longitude: "93"; latitude: "85"; height: "136"; }
- ListElement{ longitude: "93"; latitude: "86"; height: "144"; }
- ListElement{ longitude: "93"; latitude: "87"; height: "139"; }
- ListElement{ longitude: "93"; latitude: "88"; height: "132"; }
- ListElement{ longitude: "93"; latitude: "89"; height: "126"; }
- ListElement{ longitude: "93"; latitude: "90"; height: "126"; }
- ListElement{ longitude: "93"; latitude: "91"; height: "128"; }
- ListElement{ longitude: "93"; latitude: "92"; height: "128"; }
- ListElement{ longitude: "93"; latitude: "93"; height: "118"; }
- ListElement{ longitude: "93"; latitude: "94"; height: "112"; }
- ListElement{ longitude: "93"; latitude: "95"; height: "111"; }
- ListElement{ longitude: "93"; latitude: "96"; height: "110"; }
- ListElement{ longitude: "93"; latitude: "97"; height: "109"; }
- ListElement{ longitude: "93"; latitude: "98"; height: "98"; }
- ListElement{ longitude: "93"; latitude: "99"; height: "85"; }
- ListElement{ longitude: "94"; latitude: "0"; height: "91"; }
- ListElement{ longitude: "94"; latitude: "1"; height: "93"; }
- ListElement{ longitude: "94"; latitude: "2"; height: "98"; }
- ListElement{ longitude: "94"; latitude: "3"; height: "101"; }
- ListElement{ longitude: "94"; latitude: "4"; height: "106"; }
- ListElement{ longitude: "94"; latitude: "5"; height: "106"; }
- ListElement{ longitude: "94"; latitude: "6"; height: "89"; }
- ListElement{ longitude: "94"; latitude: "7"; height: "98"; }
- ListElement{ longitude: "94"; latitude: "8"; height: "95"; }
- ListElement{ longitude: "94"; latitude: "9"; height: "91"; }
- ListElement{ longitude: "94"; latitude: "10"; height: "90"; }
- ListElement{ longitude: "94"; latitude: "11"; height: "92"; }
- ListElement{ longitude: "94"; latitude: "12"; height: "94"; }
- ListElement{ longitude: "94"; latitude: "13"; height: "95"; }
- ListElement{ longitude: "94"; latitude: "14"; height: "98"; }
- ListElement{ longitude: "94"; latitude: "15"; height: "99"; }
- ListElement{ longitude: "94"; latitude: "16"; height: "97"; }
- ListElement{ longitude: "94"; latitude: "17"; height: "101"; }
- ListElement{ longitude: "94"; latitude: "18"; height: "105"; }
- ListElement{ longitude: "94"; latitude: "19"; height: "109"; }
- ListElement{ longitude: "94"; latitude: "20"; height: "113"; }
- ListElement{ longitude: "94"; latitude: "21"; height: "118"; }
- ListElement{ longitude: "94"; latitude: "22"; height: "120"; }
- ListElement{ longitude: "94"; latitude: "23"; height: "120"; }
- ListElement{ longitude: "94"; latitude: "24"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "25"; height: "124"; }
- ListElement{ longitude: "94"; latitude: "26"; height: "128"; }
- ListElement{ longitude: "94"; latitude: "27"; height: "128"; }
- ListElement{ longitude: "94"; latitude: "28"; height: "128"; }
- ListElement{ longitude: "94"; latitude: "29"; height: "121"; }
- ListElement{ longitude: "94"; latitude: "30"; height: "119"; }
- ListElement{ longitude: "94"; latitude: "31"; height: "116"; }
- ListElement{ longitude: "94"; latitude: "32"; height: "114"; }
- ListElement{ longitude: "94"; latitude: "33"; height: "118"; }
- ListElement{ longitude: "94"; latitude: "34"; height: "110"; }
- ListElement{ longitude: "94"; latitude: "35"; height: "113"; }
- ListElement{ longitude: "94"; latitude: "36"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "37"; height: "121"; }
- ListElement{ longitude: "94"; latitude: "38"; height: "121"; }
- ListElement{ longitude: "94"; latitude: "39"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "94"; latitude: "41"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "42"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "43"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "44"; height: "124"; }
- ListElement{ longitude: "94"; latitude: "45"; height: "130"; }
- ListElement{ longitude: "94"; latitude: "46"; height: "136"; }
- ListElement{ longitude: "94"; latitude: "47"; height: "141"; }
- ListElement{ longitude: "94"; latitude: "48"; height: "145"; }
- ListElement{ longitude: "94"; latitude: "49"; height: "145"; }
- ListElement{ longitude: "94"; latitude: "50"; height: "136"; }
- ListElement{ longitude: "94"; latitude: "51"; height: "129"; }
- ListElement{ longitude: "94"; latitude: "52"; height: "138"; }
- ListElement{ longitude: "94"; latitude: "53"; height: "140"; }
- ListElement{ longitude: "94"; latitude: "54"; height: "138"; }
- ListElement{ longitude: "94"; latitude: "55"; height: "139"; }
- ListElement{ longitude: "94"; latitude: "56"; height: "131"; }
- ListElement{ longitude: "94"; latitude: "57"; height: "124"; }
- ListElement{ longitude: "94"; latitude: "58"; height: "129"; }
- ListElement{ longitude: "94"; latitude: "59"; height: "125"; }
- ListElement{ longitude: "94"; latitude: "60"; height: "124"; }
- ListElement{ longitude: "94"; latitude: "61"; height: "125"; }
- ListElement{ longitude: "94"; latitude: "62"; height: "126"; }
- ListElement{ longitude: "94"; latitude: "63"; height: "123"; }
- ListElement{ longitude: "94"; latitude: "64"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "65"; height: "121"; }
- ListElement{ longitude: "94"; latitude: "66"; height: "123"; }
- ListElement{ longitude: "94"; latitude: "67"; height: "124"; }
- ListElement{ longitude: "94"; latitude: "68"; height: "125"; }
- ListElement{ longitude: "94"; latitude: "69"; height: "123"; }
- ListElement{ longitude: "94"; latitude: "70"; height: "123"; }
- ListElement{ longitude: "94"; latitude: "71"; height: "121"; }
- ListElement{ longitude: "94"; latitude: "72"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "73"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "74"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "75"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "76"; height: "120"; }
- ListElement{ longitude: "94"; latitude: "77"; height: "128"; }
- ListElement{ longitude: "94"; latitude: "78"; height: "129"; }
- ListElement{ longitude: "94"; latitude: "79"; height: "133"; }
- ListElement{ longitude: "94"; latitude: "80"; height: "134"; }
- ListElement{ longitude: "94"; latitude: "81"; height: "133"; }
- ListElement{ longitude: "94"; latitude: "82"; height: "137"; }
- ListElement{ longitude: "94"; latitude: "83"; height: "137"; }
- ListElement{ longitude: "94"; latitude: "84"; height: "142"; }
- ListElement{ longitude: "94"; latitude: "85"; height: "148"; }
- ListElement{ longitude: "94"; latitude: "86"; height: "146"; }
- ListElement{ longitude: "94"; latitude: "87"; height: "137"; }
- ListElement{ longitude: "94"; latitude: "88"; height: "124"; }
- ListElement{ longitude: "94"; latitude: "89"; height: "117"; }
- ListElement{ longitude: "94"; latitude: "90"; height: "120"; }
- ListElement{ longitude: "94"; latitude: "91"; height: "121"; }
- ListElement{ longitude: "94"; latitude: "92"; height: "122"; }
- ListElement{ longitude: "94"; latitude: "93"; height: "115"; }
- ListElement{ longitude: "94"; latitude: "94"; height: "112"; }
- ListElement{ longitude: "94"; latitude: "95"; height: "115"; }
- ListElement{ longitude: "94"; latitude: "96"; height: "111"; }
- ListElement{ longitude: "94"; latitude: "97"; height: "106"; }
- ListElement{ longitude: "94"; latitude: "98"; height: "94"; }
- ListElement{ longitude: "94"; latitude: "99"; height: "84"; }
- ListElement{ longitude: "95"; latitude: "0"; height: "87"; }
- ListElement{ longitude: "95"; latitude: "1"; height: "89"; }
- ListElement{ longitude: "95"; latitude: "2"; height: "92"; }
- ListElement{ longitude: "95"; latitude: "3"; height: "96"; }
- ListElement{ longitude: "95"; latitude: "4"; height: "100"; }
- ListElement{ longitude: "95"; latitude: "5"; height: "107"; }
- ListElement{ longitude: "95"; latitude: "6"; height: "101"; }
- ListElement{ longitude: "95"; latitude: "7"; height: "102"; }
- ListElement{ longitude: "95"; latitude: "8"; height: "96"; }
- ListElement{ longitude: "95"; latitude: "9"; height: "93"; }
- ListElement{ longitude: "95"; latitude: "10"; height: "91"; }
- ListElement{ longitude: "95"; latitude: "11"; height: "91"; }
- ListElement{ longitude: "95"; latitude: "12"; height: "92"; }
- ListElement{ longitude: "95"; latitude: "13"; height: "93"; }
- ListElement{ longitude: "95"; latitude: "14"; height: "94"; }
- ListElement{ longitude: "95"; latitude: "15"; height: "95"; }
- ListElement{ longitude: "95"; latitude: "16"; height: "99"; }
- ListElement{ longitude: "95"; latitude: "17"; height: "99"; }
- ListElement{ longitude: "95"; latitude: "18"; height: "103"; }
- ListElement{ longitude: "95"; latitude: "19"; height: "111"; }
- ListElement{ longitude: "95"; latitude: "20"; height: "115"; }
- ListElement{ longitude: "95"; latitude: "21"; height: "118"; }
- ListElement{ longitude: "95"; latitude: "22"; height: "122"; }
- ListElement{ longitude: "95"; latitude: "23"; height: "121"; }
- ListElement{ longitude: "95"; latitude: "24"; height: "120"; }
- ListElement{ longitude: "95"; latitude: "25"; height: "121"; }
- ListElement{ longitude: "95"; latitude: "26"; height: "125"; }
- ListElement{ longitude: "95"; latitude: "27"; height: "126"; }
- ListElement{ longitude: "95"; latitude: "28"; height: "126"; }
- ListElement{ longitude: "95"; latitude: "29"; height: "119"; }
- ListElement{ longitude: "95"; latitude: "30"; height: "116"; }
- ListElement{ longitude: "95"; latitude: "31"; height: "111"; }
- ListElement{ longitude: "95"; latitude: "32"; height: "113"; }
- ListElement{ longitude: "95"; latitude: "33"; height: "118"; }
- ListElement{ longitude: "95"; latitude: "34"; height: "110"; }
- ListElement{ longitude: "95"; latitude: "35"; height: "112"; }
- ListElement{ longitude: "95"; latitude: "36"; height: "126"; }
- ListElement{ longitude: "95"; latitude: "37"; height: "125"; }
- ListElement{ longitude: "95"; latitude: "38"; height: "123"; }
- ListElement{ longitude: "95"; latitude: "39"; height: "121"; }
- ListElement{ longitude: "95"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "95"; latitude: "41"; height: "119"; }
- ListElement{ longitude: "95"; latitude: "42"; height: "120"; }
- ListElement{ longitude: "95"; latitude: "43"; height: "120"; }
- ListElement{ longitude: "95"; latitude: "44"; height: "122"; }
- ListElement{ longitude: "95"; latitude: "45"; height: "128"; }
- ListElement{ longitude: "95"; latitude: "46"; height: "132"; }
- ListElement{ longitude: "95"; latitude: "47"; height: "141"; }
- ListElement{ longitude: "95"; latitude: "48"; height: "139"; }
- ListElement{ longitude: "95"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "95"; latitude: "50"; height: "143"; }
- ListElement{ longitude: "95"; latitude: "51"; height: "138"; }
- ListElement{ longitude: "95"; latitude: "52"; height: "145"; }
- ListElement{ longitude: "95"; latitude: "53"; height: "143"; }
- ListElement{ longitude: "95"; latitude: "54"; height: "140"; }
- ListElement{ longitude: "95"; latitude: "55"; height: "140"; }
- ListElement{ longitude: "95"; latitude: "56"; height: "125"; }
- ListElement{ longitude: "95"; latitude: "57"; height: "120"; }
- ListElement{ longitude: "95"; latitude: "58"; height: "128"; }
- ListElement{ longitude: "95"; latitude: "59"; height: "128"; }
- ListElement{ longitude: "95"; latitude: "60"; height: "128"; }
- ListElement{ longitude: "95"; latitude: "61"; height: "126"; }
- ListElement{ longitude: "95"; latitude: "62"; height: "129"; }
- ListElement{ longitude: "95"; latitude: "63"; height: "129"; }
- ListElement{ longitude: "95"; latitude: "64"; height: "129"; }
- ListElement{ longitude: "95"; latitude: "65"; height: "130"; }
- ListElement{ longitude: "95"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "95"; latitude: "67"; height: "127"; }
- ListElement{ longitude: "95"; latitude: "68"; height: "126"; }
- ListElement{ longitude: "95"; latitude: "69"; height: "126"; }
- ListElement{ longitude: "95"; latitude: "70"; height: "129"; }
- ListElement{ longitude: "95"; latitude: "71"; height: "126"; }
- ListElement{ longitude: "95"; latitude: "72"; height: "121"; }
- ListElement{ longitude: "95"; latitude: "73"; height: "122"; }
- ListElement{ longitude: "95"; latitude: "74"; height: "120"; }
- ListElement{ longitude: "95"; latitude: "75"; height: "122"; }
- ListElement{ longitude: "95"; latitude: "76"; height: "124"; }
- ListElement{ longitude: "95"; latitude: "77"; height: "128"; }
- ListElement{ longitude: "95"; latitude: "78"; height: "129"; }
- ListElement{ longitude: "95"; latitude: "79"; height: "133"; }
- ListElement{ longitude: "95"; latitude: "80"; height: "134"; }
- ListElement{ longitude: "95"; latitude: "81"; height: "133"; }
- ListElement{ longitude: "95"; latitude: "82"; height: "137"; }
- ListElement{ longitude: "95"; latitude: "83"; height: "139"; }
- ListElement{ longitude: "95"; latitude: "84"; height: "146"; }
- ListElement{ longitude: "95"; latitude: "85"; height: "146"; }
- ListElement{ longitude: "95"; latitude: "86"; height: "139"; }
- ListElement{ longitude: "95"; latitude: "87"; height: "124"; }
- ListElement{ longitude: "95"; latitude: "88"; height: "112"; }
- ListElement{ longitude: "95"; latitude: "89"; height: "105"; }
- ListElement{ longitude: "95"; latitude: "90"; height: "110"; }
- ListElement{ longitude: "95"; latitude: "91"; height: "116"; }
- ListElement{ longitude: "95"; latitude: "92"; height: "116"; }
- ListElement{ longitude: "95"; latitude: "93"; height: "114"; }
- ListElement{ longitude: "95"; latitude: "94"; height: "112"; }
- ListElement{ longitude: "95"; latitude: "95"; height: "107"; }
- ListElement{ longitude: "95"; latitude: "96"; height: "103"; }
- ListElement{ longitude: "95"; latitude: "97"; height: "101"; }
- ListElement{ longitude: "95"; latitude: "98"; height: "91"; }
- ListElement{ longitude: "95"; latitude: "99"; height: "83"; }
- ListElement{ longitude: "96"; latitude: "0"; height: "87"; }
- ListElement{ longitude: "96"; latitude: "1"; height: "84"; }
- ListElement{ longitude: "96"; latitude: "2"; height: "87"; }
- ListElement{ longitude: "96"; latitude: "3"; height: "91"; }
- ListElement{ longitude: "96"; latitude: "4"; height: "91"; }
- ListElement{ longitude: "96"; latitude: "5"; height: "102"; }
- ListElement{ longitude: "96"; latitude: "6"; height: "107"; }
- ListElement{ longitude: "96"; latitude: "7"; height: "107"; }
- ListElement{ longitude: "96"; latitude: "8"; height: "101"; }
- ListElement{ longitude: "96"; latitude: "9"; height: "95"; }
- ListElement{ longitude: "96"; latitude: "10"; height: "91"; }
- ListElement{ longitude: "96"; latitude: "11"; height: "91"; }
- ListElement{ longitude: "96"; latitude: "12"; height: "92"; }
- ListElement{ longitude: "96"; latitude: "13"; height: "92"; }
- ListElement{ longitude: "96"; latitude: "14"; height: "93"; }
- ListElement{ longitude: "96"; latitude: "15"; height: "96"; }
- ListElement{ longitude: "96"; latitude: "16"; height: "97"; }
- ListElement{ longitude: "96"; latitude: "17"; height: "97"; }
- ListElement{ longitude: "96"; latitude: "18"; height: "93"; }
- ListElement{ longitude: "96"; latitude: "19"; height: "109"; }
- ListElement{ longitude: "96"; latitude: "20"; height: "114"; }
- ListElement{ longitude: "96"; latitude: "21"; height: "119"; }
- ListElement{ longitude: "96"; latitude: "22"; height: "121"; }
- ListElement{ longitude: "96"; latitude: "23"; height: "120"; }
- ListElement{ longitude: "96"; latitude: "24"; height: "120"; }
- ListElement{ longitude: "96"; latitude: "25"; height: "121"; }
- ListElement{ longitude: "96"; latitude: "26"; height: "124"; }
- ListElement{ longitude: "96"; latitude: "27"; height: "125"; }
- ListElement{ longitude: "96"; latitude: "28"; height: "124"; }
- ListElement{ longitude: "96"; latitude: "29"; height: "119"; }
- ListElement{ longitude: "96"; latitude: "30"; height: "117"; }
- ListElement{ longitude: "96"; latitude: "31"; height: "115"; }
- ListElement{ longitude: "96"; latitude: "32"; height: "119"; }
- ListElement{ longitude: "96"; latitude: "33"; height: "123"; }
- ListElement{ longitude: "96"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "96"; latitude: "35"; height: "128"; }
- ListElement{ longitude: "96"; latitude: "36"; height: "128"; }
- ListElement{ longitude: "96"; latitude: "37"; height: "124"; }
- ListElement{ longitude: "96"; latitude: "38"; height: "124"; }
- ListElement{ longitude: "96"; latitude: "39"; height: "124"; }
- ListElement{ longitude: "96"; latitude: "40"; height: "125"; }
- ListElement{ longitude: "96"; latitude: "41"; height: "123"; }
- ListElement{ longitude: "96"; latitude: "42"; height: "122"; }
- ListElement{ longitude: "96"; latitude: "43"; height: "122"; }
- ListElement{ longitude: "96"; latitude: "44"; height: "120"; }
- ListElement{ longitude: "96"; latitude: "45"; height: "125"; }
- ListElement{ longitude: "96"; latitude: "46"; height: "133"; }
- ListElement{ longitude: "96"; latitude: "47"; height: "139"; }
- ListElement{ longitude: "96"; latitude: "48"; height: "134"; }
- ListElement{ longitude: "96"; latitude: "49"; height: "136"; }
- ListElement{ longitude: "96"; latitude: "50"; height: "147"; }
- ListElement{ longitude: "96"; latitude: "51"; height: "149"; }
- ListElement{ longitude: "96"; latitude: "52"; height: "148"; }
- ListElement{ longitude: "96"; latitude: "53"; height: "149"; }
- ListElement{ longitude: "96"; latitude: "54"; height: "146"; }
- ListElement{ longitude: "96"; latitude: "55"; height: "144"; }
- ListElement{ longitude: "96"; latitude: "56"; height: "137"; }
- ListElement{ longitude: "96"; latitude: "57"; height: "133"; }
- ListElement{ longitude: "96"; latitude: "58"; height: "133"; }
- ListElement{ longitude: "96"; latitude: "59"; height: "128"; }
- ListElement{ longitude: "96"; latitude: "60"; height: "128"; }
- ListElement{ longitude: "96"; latitude: "61"; height: "130"; }
- ListElement{ longitude: "96"; latitude: "62"; height: "132"; }
- ListElement{ longitude: "96"; latitude: "63"; height: "132"; }
- ListElement{ longitude: "96"; latitude: "64"; height: "133"; }
- ListElement{ longitude: "96"; latitude: "65"; height: "134"; }
- ListElement{ longitude: "96"; latitude: "66"; height: "136"; }
- ListElement{ longitude: "96"; latitude: "67"; height: "131"; }
- ListElement{ longitude: "96"; latitude: "68"; height: "129"; }
- ListElement{ longitude: "96"; latitude: "69"; height: "130"; }
- ListElement{ longitude: "96"; latitude: "70"; height: "130"; }
- ListElement{ longitude: "96"; latitude: "71"; height: "130"; }
- ListElement{ longitude: "96"; latitude: "72"; height: "123"; }
- ListElement{ longitude: "96"; latitude: "73"; height: "127"; }
- ListElement{ longitude: "96"; latitude: "74"; height: "122"; }
- ListElement{ longitude: "96"; latitude: "75"; height: "124"; }
- ListElement{ longitude: "96"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "96"; latitude: "77"; height: "130"; }
- ListElement{ longitude: "96"; latitude: "78"; height: "132"; }
- ListElement{ longitude: "96"; latitude: "79"; height: "135"; }
- ListElement{ longitude: "96"; latitude: "80"; height: "135"; }
- ListElement{ longitude: "96"; latitude: "81"; height: "132"; }
- ListElement{ longitude: "96"; latitude: "82"; height: "136"; }
- ListElement{ longitude: "96"; latitude: "83"; height: "138"; }
- ListElement{ longitude: "96"; latitude: "84"; height: "144"; }
- ListElement{ longitude: "96"; latitude: "85"; height: "143"; }
- ListElement{ longitude: "96"; latitude: "86"; height: "135"; }
- ListElement{ longitude: "96"; latitude: "87"; height: "122"; }
- ListElement{ longitude: "96"; latitude: "88"; height: "113"; }
- ListElement{ longitude: "96"; latitude: "89"; height: "107"; }
- ListElement{ longitude: "96"; latitude: "90"; height: "106"; }
- ListElement{ longitude: "96"; latitude: "91"; height: "112"; }
- ListElement{ longitude: "96"; latitude: "92"; height: "119"; }
- ListElement{ longitude: "96"; latitude: "93"; height: "117"; }
- ListElement{ longitude: "96"; latitude: "94"; height: "106"; }
- ListElement{ longitude: "96"; latitude: "95"; height: "95"; }
- ListElement{ longitude: "96"; latitude: "96"; height: "87"; }
- ListElement{ longitude: "96"; latitude: "97"; height: "85"; }
- ListElement{ longitude: "96"; latitude: "98"; height: "81"; }
- ListElement{ longitude: "96"; latitude: "99"; height: "75"; }
- ListElement{ longitude: "97"; latitude: "0"; height: "92"; }
- ListElement{ longitude: "97"; latitude: "1"; height: "92"; }
- ListElement{ longitude: "97"; latitude: "2"; height: "90"; }
- ListElement{ longitude: "97"; latitude: "3"; height: "86"; }
- ListElement{ longitude: "97"; latitude: "4"; height: "78"; }
- ListElement{ longitude: "97"; latitude: "5"; height: "86"; }
- ListElement{ longitude: "97"; latitude: "6"; height: "94"; }
- ListElement{ longitude: "97"; latitude: "7"; height: "93"; }
- ListElement{ longitude: "97"; latitude: "8"; height: "92"; }
- ListElement{ longitude: "97"; latitude: "9"; height: "90"; }
- ListElement{ longitude: "97"; latitude: "10"; height: "86"; }
- ListElement{ longitude: "97"; latitude: "11"; height: "86"; }
- ListElement{ longitude: "97"; latitude: "12"; height: "90"; }
- ListElement{ longitude: "97"; latitude: "13"; height: "94"; }
- ListElement{ longitude: "97"; latitude: "14"; height: "95"; }
- ListElement{ longitude: "97"; latitude: "15"; height: "94"; }
- ListElement{ longitude: "97"; latitude: "16"; height: "95"; }
- ListElement{ longitude: "97"; latitude: "17"; height: "99"; }
- ListElement{ longitude: "97"; latitude: "18"; height: "104"; }
- ListElement{ longitude: "97"; latitude: "19"; height: "108"; }
- ListElement{ longitude: "97"; latitude: "20"; height: "115"; }
- ListElement{ longitude: "97"; latitude: "21"; height: "118"; }
- ListElement{ longitude: "97"; latitude: "22"; height: "118"; }
- ListElement{ longitude: "97"; latitude: "23"; height: "118"; }
- ListElement{ longitude: "97"; latitude: "24"; height: "118"; }
- ListElement{ longitude: "97"; latitude: "25"; height: "117"; }
- ListElement{ longitude: "97"; latitude: "26"; height: "117"; }
- ListElement{ longitude: "97"; latitude: "27"; height: "118"; }
- ListElement{ longitude: "97"; latitude: "28"; height: "117"; }
- ListElement{ longitude: "97"; latitude: "29"; height: "116"; }
- ListElement{ longitude: "97"; latitude: "30"; height: "116"; }
- ListElement{ longitude: "97"; latitude: "31"; height: "118"; }
- ListElement{ longitude: "97"; latitude: "32"; height: "122"; }
- ListElement{ longitude: "97"; latitude: "33"; height: "124"; }
- ListElement{ longitude: "97"; latitude: "34"; height: "126"; }
- ListElement{ longitude: "97"; latitude: "35"; height: "125"; }
- ListElement{ longitude: "97"; latitude: "36"; height: "119"; }
- ListElement{ longitude: "97"; latitude: "37"; height: "115"; }
- ListElement{ longitude: "97"; latitude: "38"; height: "117"; }
- ListElement{ longitude: "97"; latitude: "39"; height: "116"; }
- ListElement{ longitude: "97"; latitude: "40"; height: "116"; }
- ListElement{ longitude: "97"; latitude: "41"; height: "114"; }
- ListElement{ longitude: "97"; latitude: "42"; height: "114"; }
- ListElement{ longitude: "97"; latitude: "43"; height: "114"; }
- ListElement{ longitude: "97"; latitude: "44"; height: "114"; }
- ListElement{ longitude: "97"; latitude: "45"; height: "119"; }
- ListElement{ longitude: "97"; latitude: "46"; height: "126"; }
- ListElement{ longitude: "97"; latitude: "47"; height: "132"; }
- ListElement{ longitude: "97"; latitude: "48"; height: "134"; }
- ListElement{ longitude: "97"; latitude: "49"; height: "137"; }
- ListElement{ longitude: "97"; latitude: "50"; height: "141"; }
- ListElement{ longitude: "97"; latitude: "51"; height: "143"; }
- ListElement{ longitude: "97"; latitude: "52"; height: "143"; }
- ListElement{ longitude: "97"; latitude: "53"; height: "143"; }
- ListElement{ longitude: "97"; latitude: "54"; height: "139"; }
- ListElement{ longitude: "97"; latitude: "55"; height: "136"; }
- ListElement{ longitude: "97"; latitude: "56"; height: "132"; }
- ListElement{ longitude: "97"; latitude: "57"; height: "127"; }
- ListElement{ longitude: "97"; latitude: "58"; height: "122"; }
- ListElement{ longitude: "97"; latitude: "59"; height: "117"; }
- ListElement{ longitude: "97"; latitude: "60"; height: "117"; }
- ListElement{ longitude: "97"; latitude: "61"; height: "124"; }
- ListElement{ longitude: "97"; latitude: "62"; height: "130"; }
- ListElement{ longitude: "97"; latitude: "63"; height: "134"; }
- ListElement{ longitude: "97"; latitude: "64"; height: "137"; }
- ListElement{ longitude: "97"; latitude: "65"; height: "139"; }
- ListElement{ longitude: "97"; latitude: "66"; height: "139"; }
- ListElement{ longitude: "97"; latitude: "67"; height: "137"; }
- ListElement{ longitude: "97"; latitude: "68"; height: "133"; }
- ListElement{ longitude: "97"; latitude: "69"; height: "136"; }
- ListElement{ longitude: "97"; latitude: "70"; height: "131"; }
- ListElement{ longitude: "97"; latitude: "71"; height: "130"; }
- ListElement{ longitude: "97"; latitude: "72"; height: "129"; }
- ListElement{ longitude: "97"; latitude: "73"; height: "129"; }
- ListElement{ longitude: "97"; latitude: "74"; height: "126"; }
- ListElement{ longitude: "97"; latitude: "75"; height: "123"; }
- ListElement{ longitude: "97"; latitude: "76"; height: "126"; }
- ListElement{ longitude: "97"; latitude: "77"; height: "127"; }
- ListElement{ longitude: "97"; latitude: "78"; height: "128"; }
- ListElement{ longitude: "97"; latitude: "79"; height: "123"; }
- ListElement{ longitude: "97"; latitude: "80"; height: "123"; }
- ListElement{ longitude: "97"; latitude: "81"; height: "126"; }
- ListElement{ longitude: "97"; latitude: "82"; height: "129"; }
- ListElement{ longitude: "97"; latitude: "83"; height: "137"; }
- ListElement{ longitude: "97"; latitude: "84"; height: "140"; }
- ListElement{ longitude: "97"; latitude: "85"; height: "138"; }
- ListElement{ longitude: "97"; latitude: "86"; height: "132"; }
- ListElement{ longitude: "97"; latitude: "87"; height: "124"; }
- ListElement{ longitude: "97"; latitude: "88"; height: "111"; }
- ListElement{ longitude: "97"; latitude: "89"; height: "102"; }
- ListElement{ longitude: "97"; latitude: "90"; height: "99"; }
- ListElement{ longitude: "97"; latitude: "91"; height: "109"; }
- ListElement{ longitude: "97"; latitude: "92"; height: "110"; }
- ListElement{ longitude: "97"; latitude: "93"; height: "96"; }
- ListElement{ longitude: "97"; latitude: "94"; height: "76"; }
- ListElement{ longitude: "97"; latitude: "95"; height: "68"; }
- ListElement{ longitude: "97"; latitude: "96"; height: "68"; }
- ListElement{ longitude: "97"; latitude: "97"; height: "72"; }
- ListElement{ longitude: "97"; latitude: "98"; height: "70"; }
- ListElement{ longitude: "97"; latitude: "99"; height: "65"; }
- ListElement{ longitude: "98"; latitude: "0"; height: "93"; }
- ListElement{ longitude: "98"; latitude: "1"; height: "90"; }
- ListElement{ longitude: "98"; latitude: "2"; height: "85"; }
- ListElement{ longitude: "98"; latitude: "3"; height: "78"; }
- ListElement{ longitude: "98"; latitude: "4"; height: "74"; }
- ListElement{ longitude: "98"; latitude: "5"; height: "71"; }
- ListElement{ longitude: "98"; latitude: "6"; height: "80"; }
- ListElement{ longitude: "98"; latitude: "7"; height: "78"; }
- ListElement{ longitude: "98"; latitude: "8"; height: "83"; }
- ListElement{ longitude: "98"; latitude: "9"; height: "85"; }
- ListElement{ longitude: "98"; latitude: "10"; height: "81"; }
- ListElement{ longitude: "98"; latitude: "11"; height: "82"; }
- ListElement{ longitude: "98"; latitude: "12"; height: "87"; }
- ListElement{ longitude: "98"; latitude: "13"; height: "90"; }
- ListElement{ longitude: "98"; latitude: "14"; height: "91"; }
- ListElement{ longitude: "98"; latitude: "15"; height: "86"; }
- ListElement{ longitude: "98"; latitude: "16"; height: "88"; }
- ListElement{ longitude: "98"; latitude: "17"; height: "91"; }
- ListElement{ longitude: "98"; latitude: "18"; height: "94"; }
- ListElement{ longitude: "98"; latitude: "19"; height: "97"; }
- ListElement{ longitude: "98"; latitude: "20"; height: "108"; }
- ListElement{ longitude: "98"; latitude: "21"; height: "111"; }
- ListElement{ longitude: "98"; latitude: "22"; height: "108"; }
- ListElement{ longitude: "98"; latitude: "23"; height: "108"; }
- ListElement{ longitude: "98"; latitude: "24"; height: "107"; }
- ListElement{ longitude: "98"; latitude: "25"; height: "104"; }
- ListElement{ longitude: "98"; latitude: "26"; height: "110"; }
- ListElement{ longitude: "98"; latitude: "27"; height: "111"; }
- ListElement{ longitude: "98"; latitude: "28"; height: "109"; }
- ListElement{ longitude: "98"; latitude: "29"; height: "106"; }
- ListElement{ longitude: "98"; latitude: "30"; height: "110"; }
- ListElement{ longitude: "98"; latitude: "31"; height: "115"; }
- ListElement{ longitude: "98"; latitude: "32"; height: "119"; }
- ListElement{ longitude: "98"; latitude: "33"; height: "116"; }
- ListElement{ longitude: "98"; latitude: "34"; height: "117"; }
- ListElement{ longitude: "98"; latitude: "35"; height: "114"; }
- ListElement{ longitude: "98"; latitude: "36"; height: "109"; }
- ListElement{ longitude: "98"; latitude: "37"; height: "105"; }
- ListElement{ longitude: "98"; latitude: "38"; height: "106"; }
- ListElement{ longitude: "98"; latitude: "39"; height: "111"; }
- ListElement{ longitude: "98"; latitude: "40"; height: "112"; }
- ListElement{ longitude: "98"; latitude: "41"; height: "110"; }
- ListElement{ longitude: "98"; latitude: "42"; height: "114"; }
- ListElement{ longitude: "98"; latitude: "43"; height: "114"; }
- ListElement{ longitude: "98"; latitude: "44"; height: "111"; }
- ListElement{ longitude: "98"; latitude: "45"; height: "112"; }
- ListElement{ longitude: "98"; latitude: "46"; height: "116"; }
- ListElement{ longitude: "98"; latitude: "47"; height: "121"; }
- ListElement{ longitude: "98"; latitude: "48"; height: "124"; }
- ListElement{ longitude: "98"; latitude: "49"; height: "125"; }
- ListElement{ longitude: "98"; latitude: "50"; height: "125"; }
- ListElement{ longitude: "98"; latitude: "51"; height: "127"; }
- ListElement{ longitude: "98"; latitude: "52"; height: "126"; }
- ListElement{ longitude: "98"; latitude: "53"; height: "127"; }
- ListElement{ longitude: "98"; latitude: "54"; height: "126"; }
- ListElement{ longitude: "98"; latitude: "55"; height: "122"; }
- ListElement{ longitude: "98"; latitude: "56"; height: "121"; }
- ListElement{ longitude: "98"; latitude: "57"; height: "119"; }
- ListElement{ longitude: "98"; latitude: "58"; height: "114"; }
- ListElement{ longitude: "98"; latitude: "59"; height: "111"; }
- ListElement{ longitude: "98"; latitude: "60"; height: "110"; }
- ListElement{ longitude: "98"; latitude: "61"; height: "115"; }
- ListElement{ longitude: "98"; latitude: "62"; height: "123"; }
- ListElement{ longitude: "98"; latitude: "63"; height: "131"; }
- ListElement{ longitude: "98"; latitude: "64"; height: "138"; }
- ListElement{ longitude: "98"; latitude: "65"; height: "140"; }
- ListElement{ longitude: "98"; latitude: "66"; height: "139"; }
- ListElement{ longitude: "98"; latitude: "67"; height: "136"; }
- ListElement{ longitude: "98"; latitude: "68"; height: "134"; }
- ListElement{ longitude: "98"; latitude: "69"; height: "133"; }
- ListElement{ longitude: "98"; latitude: "70"; height: "129"; }
- ListElement{ longitude: "98"; latitude: "71"; height: "127"; }
- ListElement{ longitude: "98"; latitude: "72"; height: "122"; }
- ListElement{ longitude: "98"; latitude: "73"; height: "119"; }
- ListElement{ longitude: "98"; latitude: "74"; height: "116"; }
- ListElement{ longitude: "98"; latitude: "75"; height: "115"; }
- ListElement{ longitude: "98"; latitude: "76"; height: "116"; }
- ListElement{ longitude: "98"; latitude: "77"; height: "116"; }
- ListElement{ longitude: "98"; latitude: "78"; height: "117"; }
- ListElement{ longitude: "98"; latitude: "79"; height: "114"; }
- ListElement{ longitude: "98"; latitude: "80"; height: "113"; }
- ListElement{ longitude: "98"; latitude: "81"; height: "115"; }
- ListElement{ longitude: "98"; latitude: "82"; height: "119"; }
- ListElement{ longitude: "98"; latitude: "83"; height: "127"; }
- ListElement{ longitude: "98"; latitude: "84"; height: "130"; }
- ListElement{ longitude: "98"; latitude: "85"; height: "125"; }
- ListElement{ longitude: "98"; latitude: "86"; height: "116"; }
- ListElement{ longitude: "98"; latitude: "87"; height: "103"; }
- ListElement{ longitude: "98"; latitude: "88"; height: "89"; }
- ListElement{ longitude: "98"; latitude: "89"; height: "81"; }
- ListElement{ longitude: "98"; latitude: "90"; height: "79"; }
- ListElement{ longitude: "98"; latitude: "91"; height: "84"; }
- ListElement{ longitude: "98"; latitude: "92"; height: "86"; }
- ListElement{ longitude: "98"; latitude: "93"; height: "79"; }
- ListElement{ longitude: "98"; latitude: "94"; height: "69"; }
- ListElement{ longitude: "98"; latitude: "95"; height: "66"; }
- ListElement{ longitude: "98"; latitude: "96"; height: "73"; }
- ListElement{ longitude: "98"; latitude: "97"; height: "80"; }
- ListElement{ longitude: "98"; latitude: "98"; height: "71"; }
- ListElement{ longitude: "98"; latitude: "99"; height: "64"; }
- ListElement{ longitude: "99"; latitude: "0"; height: "93"; }
- ListElement{ longitude: "99"; latitude: "1"; height: "90"; }
- ListElement{ longitude: "99"; latitude: "2"; height: "86"; }
- ListElement{ longitude: "99"; latitude: "3"; height: "80"; }
- ListElement{ longitude: "99"; latitude: "4"; height: "74"; }
- ListElement{ longitude: "99"; latitude: "5"; height: "74"; }
- ListElement{ longitude: "99"; latitude: "6"; height: "80"; }
- ListElement{ longitude: "99"; latitude: "7"; height: "85"; }
- ListElement{ longitude: "99"; latitude: "8"; height: "85"; }
- ListElement{ longitude: "99"; latitude: "9"; height: "84"; }
- ListElement{ longitude: "99"; latitude: "10"; height: "83"; }
- ListElement{ longitude: "99"; latitude: "11"; height: "79"; }
- ListElement{ longitude: "99"; latitude: "12"; height: "77"; }
- ListElement{ longitude: "99"; latitude: "13"; height: "80"; }
- ListElement{ longitude: "99"; latitude: "14"; height: "86"; }
- ListElement{ longitude: "99"; latitude: "15"; height: "86"; }
- ListElement{ longitude: "99"; latitude: "16"; height: "84"; }
- ListElement{ longitude: "99"; latitude: "17"; height: "85"; }
- ListElement{ longitude: "99"; latitude: "18"; height: "90"; }
- ListElement{ longitude: "99"; latitude: "19"; height: "95"; }
- ListElement{ longitude: "99"; latitude: "20"; height: "99"; }
- ListElement{ longitude: "99"; latitude: "21"; height: "101"; }
- ListElement{ longitude: "99"; latitude: "22"; height: "102"; }
- ListElement{ longitude: "99"; latitude: "23"; height: "103"; }
- ListElement{ longitude: "99"; latitude: "24"; height: "106"; }
- ListElement{ longitude: "99"; latitude: "25"; height: "110"; }
- ListElement{ longitude: "99"; latitude: "26"; height: "113"; }
- ListElement{ longitude: "99"; latitude: "27"; height: "115"; }
- ListElement{ longitude: "99"; latitude: "28"; height: "115"; }
- ListElement{ longitude: "99"; latitude: "29"; height: "113"; }
- ListElement{ longitude: "99"; latitude: "30"; height: "112"; }
- ListElement{ longitude: "99"; latitude: "31"; height: "115"; }
- ListElement{ longitude: "99"; latitude: "32"; height: "117"; }
- ListElement{ longitude: "99"; latitude: "33"; height: "118"; }
- ListElement{ longitude: "99"; latitude: "34"; height: "117"; }
- ListElement{ longitude: "99"; latitude: "35"; height: "115"; }
- ListElement{ longitude: "99"; latitude: "36"; height: "112"; }
- ListElement{ longitude: "99"; latitude: "37"; height: "110"; }
- ListElement{ longitude: "99"; latitude: "38"; height: "114"; }
- ListElement{ longitude: "99"; latitude: "39"; height: "120"; }
- ListElement{ longitude: "99"; latitude: "40"; height: "123"; }
- ListElement{ longitude: "99"; latitude: "41"; height: "124"; }
- ListElement{ longitude: "99"; latitude: "42"; height: "122"; }
- ListElement{ longitude: "99"; latitude: "43"; height: "121"; }
- ListElement{ longitude: "99"; latitude: "44"; height: "118"; }
- ListElement{ longitude: "99"; latitude: "45"; height: "117"; }
- ListElement{ longitude: "99"; latitude: "46"; height: "119"; }
- ListElement{ longitude: "99"; latitude: "47"; height: "123"; }
- ListElement{ longitude: "99"; latitude: "48"; height: "125"; }
- ListElement{ longitude: "99"; latitude: "49"; height: "125"; }
- ListElement{ longitude: "99"; latitude: "50"; height: "124"; }
- ListElement{ longitude: "99"; latitude: "51"; height: "124"; }
- ListElement{ longitude: "99"; latitude: "52"; height: "124"; }
- ListElement{ longitude: "99"; latitude: "53"; height: "124"; }
- ListElement{ longitude: "99"; latitude: "54"; height: "124"; }
- ListElement{ longitude: "99"; latitude: "55"; height: "122"; }
- ListElement{ longitude: "99"; latitude: "56"; height: "122"; }
- ListElement{ longitude: "99"; latitude: "57"; height: "121"; }
- ListElement{ longitude: "99"; latitude: "58"; height: "120"; }
- ListElement{ longitude: "99"; latitude: "59"; height: "116"; }
- ListElement{ longitude: "99"; latitude: "60"; height: "112"; }
- ListElement{ longitude: "99"; latitude: "61"; height: "113"; }
- ListElement{ longitude: "99"; latitude: "62"; height: "121"; }
- ListElement{ longitude: "99"; latitude: "63"; height: "128"; }
- ListElement{ longitude: "99"; latitude: "64"; height: "132"; }
- ListElement{ longitude: "99"; latitude: "65"; height: "130"; }
- ListElement{ longitude: "99"; latitude: "66"; height: "130"; }
- ListElement{ longitude: "99"; latitude: "67"; height: "128"; }
- ListElement{ longitude: "99"; latitude: "68"; height: "126"; }
- ListElement{ longitude: "99"; latitude: "69"; height: "127"; }
- ListElement{ longitude: "99"; latitude: "70"; height: "126"; }
- ListElement{ longitude: "99"; latitude: "71"; height: "122"; }
- ListElement{ longitude: "99"; latitude: "72"; height: "120"; }
- ListElement{ longitude: "99"; latitude: "73"; height: "120"; }
- ListElement{ longitude: "99"; latitude: "74"; height: "121"; }
- ListElement{ longitude: "99"; latitude: "75"; height: "121"; }
- ListElement{ longitude: "99"; latitude: "76"; height: "121"; }
- ListElement{ longitude: "99"; latitude: "77"; height: "120"; }
- ListElement{ longitude: "99"; latitude: "78"; height: "120"; }
- ListElement{ longitude: "99"; latitude: "79"; height: "119"; }
- ListElement{ longitude: "99"; latitude: "80"; height: "116"; }
- ListElement{ longitude: "99"; latitude: "81"; height: "113"; }
- ListElement{ longitude: "99"; latitude: "82"; height: "111"; }
- ListElement{ longitude: "99"; latitude: "83"; height: "107"; }
- ListElement{ longitude: "99"; latitude: "84"; height: "109"; }
- ListElement{ longitude: "99"; latitude: "85"; height: "107"; }
- ListElement{ longitude: "99"; latitude: "86"; height: "98"; }
- ListElement{ longitude: "99"; latitude: "87"; height: "87"; }
- ListElement{ longitude: "99"; latitude: "88"; height: "75"; }
- ListElement{ longitude: "99"; latitude: "89"; height: "68"; }
- ListElement{ longitude: "99"; latitude: "90"; height: "70"; }
- ListElement{ longitude: "99"; latitude: "91"; height: "81"; }
- ListElement{ longitude: "99"; latitude: "92"; height: "88"; }
- ListElement{ longitude: "99"; latitude: "93"; height: "89"; }
- ListElement{ longitude: "99"; latitude: "94"; height: "87"; }
- ListElement{ longitude: "99"; latitude: "95"; height: "87"; }
- ListElement{ longitude: "99"; latitude: "96"; height: "88"; }
- ListElement{ longitude: "99"; latitude: "97"; height: "84"; }
- ListElement{ longitude: "99"; latitude: "98"; height: "75"; }
- ListElement{ longitude: "99"; latitude: "99"; height: "67"; }
- }
-}
diff --git a/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml b/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml
deleted file mode 100644
index f128ac45..00000000
--- a/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml
+++ /dev/null
@@ -1,284 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import QtDataVisualization 1.2
-import "."
-
-Rectangle {
- id: mainview
- width: 1024
- height: 768
- color: surfacePlot.theme.windowColor
-
- Data {
- id: surfaceData
- }
-
- Item {
- id: surfaceView
- width: mainview.width
- height: mainview.height
- anchors.top: mainview.top
- anchors.left: mainview.left
-
- //! [0]
- ColorGradient {
- id: surfaceGradient
- ColorGradientStop { position: 0.0; color: "darkslategray" }
- ColorGradientStop { id: middleGradient; position: 0.25; color: "peru" }
- ColorGradientStop { position: 1.0; color: "red" }
- }
- //! [0]
-
- Surface3D {
- id: surfacePlot
- width: surfaceView.width
- height: surfaceView.height
- //! [7]
- theme: Theme3D {
- type: Theme3D.ThemeStoneMoss
- font.family: "STCaiyun"
- font.pointSize: 35
- colorStyle: Theme3D.ColorStyleRangeGradient
- baseGradients: [surfaceGradient]
- }
- //! [7]
- shadowQuality: AbstractGraph3D.ShadowQualityMedium
- selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndRow
- scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeft
- axisY.min: 0.0
- axisY.max: 500.0
- axisX.segmentCount: 10
- axisX.subSegmentCount: 2
- axisX.labelFormat: "%i"
- axisZ.segmentCount: 10
- axisZ.subSegmentCount: 2
- axisZ.labelFormat: "%i"
- axisY.segmentCount: 5
- axisY.subSegmentCount: 2
- axisY.labelFormat: "%i"
- axisY.title: "Height"
- axisX.title: "Latitude"
- axisZ.title: "Longitude"
-
- //! [5]
- Surface3DSeries {
- id: surfaceSeries
- flatShadingEnabled: false
- drawMode: Surface3DSeries.DrawSurface
-
- ItemModelSurfaceDataProxy {
- //! [5]
- //! [6]
- itemModel: surfaceData.model
- rowRole: "longitude"
- columnRole: "latitude"
- yPosRole: "height"
- }
- //! [6]
- onDrawModeChanged: checkState()
- }
- //! [4]
- Surface3DSeries {
- id: heightSeries
- flatShadingEnabled: false
- drawMode: Surface3DSeries.DrawSurface
- visible: false
-
- HeightMapSurfaceDataProxy {
- heightMapFile: ":/heightmaps/image"
- // We don't want the default data values set by heightmap proxy.
- minZValue: 30
- maxZValue: 60
- minXValue: 67
- maxXValue: 97
- }
-
- onDrawModeChanged: checkState()
- }
- //! [4]
- }
- }
-
- RowLayout {
- id: buttonLayout
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- opacity: 0.5
-
- Button {
- id: surfaceGridToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Show Surface Grid"
- //! [1]
- onClicked: {
- if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe) {
- surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
- heightSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
- } else {
- surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
- heightSeries.drawMode |= Surface3DSeries.DrawWireframe;
- }
- }
- //! [1]
- }
-
- Button {
- id: surfaceGridColor
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Red surface grid color"
- onClicked: {
- if (Qt.colorEqual(surfaceSeries.wireFrameColor, "#000000")
- && Qt.colorEqual(heightSeries.wireFrameColor, "#000000")) {
- surfaceSeries.wireFrameColor = "red"
- heightSeries.wireFrameColor = "red"
- text = "Black surface grid color"
- }
- else {
- surfaceSeries.wireFrameColor = "black"
- heightSeries.wireFrameColor = "black"
- text = "Red surface grid color"
- }
- }
- }
-
- Button {
- id: surfaceToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Hide Surface"
- //! [8]
- onClicked: {
- if (surfaceSeries.drawMode & Surface3DSeries.DrawSurface) {
- surfaceSeries.drawMode &= ~Surface3DSeries.DrawSurface;
- heightSeries.drawMode &= ~Surface3DSeries.DrawSurface;
- } else {
- surfaceSeries.drawMode |= Surface3DSeries.DrawSurface;
- heightSeries.drawMode |= Surface3DSeries.DrawSurface;
- }
- }
- //! [8]
- }
-
- Button {
- id: flatShadingToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: surfaceSeries.flatShadingSupported ? "Show Flat" : "Flat not supported"
- enabled: surfaceSeries.flatShadingSupported
- //! [2]
- onClicked: {
- if (surfaceSeries.flatShadingEnabled === true) {
- surfaceSeries.flatShadingEnabled = false;
- heightSeries.flatShadingEnabled = false;
- text = "Show Flat"
- } else {
- surfaceSeries.flatShadingEnabled = true;
- heightSeries.flatShadingEnabled = true;
- text = "Show Smooth"
- }
- }
- //! [2]
- }
-
- Button {
- id: backgroundToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Hide Background"
- onClicked: {
- if (surfacePlot.theme.backgroundEnabled === true) {
- surfacePlot.theme.backgroundEnabled = false;
- text = "Show Background"
- } else {
- surfacePlot.theme.backgroundEnabled = true;
- text = "Hide Background"
- }
- }
- }
-
- Button {
- id: gridToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Hide Grid"
- onClicked: {
- if (surfacePlot.theme.gridEnabled === true) {
- surfacePlot.theme.gridEnabled = false;
- text = "Show Grid"
- } else {
- surfacePlot.theme.gridEnabled = true;
- text = "Hide Grid"
- }
- }
- }
-
- Button {
- id: seriesToggle
- Layout.fillWidth: true
- Layout.fillHeight: true
- text: "Switch to Height Map Series"
- //! [3]
- onClicked: {
- if (surfaceSeries.visible === false) {
- surfacePlot.axisY.max = 500.0
- surfaceSeries.visible = true
- heightSeries.visible = false
- middleGradient.position = 0.25
- text = "Switch to Height Map Series"
- } else {
- surfacePlot.axisY.max = 250.0
- surfaceSeries.visible = false
- heightSeries.visible = true
- middleGradient.position = 0.50
- text = "Switch to Item Model Series"
- }
- }
- //! [3]
- }
- }
-
- function checkState() {
- if (surfaceSeries.drawMode & Surface3DSeries.DrawSurface)
- surfaceToggle.text = "Hide Surface"
- else
- surfaceToggle.text = "Show Surface"
-
- if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe)
- surfaceGridToggle.text = "Hide Surface Grid"
- else
- surfaceGridToggle.text = "Show Surface Grid"
- }
-}
diff --git a/examples/datavisualization/qmlsurface/qmlsurface.pro b/examples/datavisualization/qmlsurface/qmlsurface.pro
deleted file mode 100644
index 401d59a7..00000000
--- a/examples/datavisualization/qmlsurface/qmlsurface.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-# The .cpp file which was generated for your project. Feel free to hack it.
-SOURCES += main.cpp
-
-RESOURCES += qmlsurface.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- qml/qmlsurface/*
diff --git a/examples/datavisualization/qmlsurface/qmlsurface.qrc b/examples/datavisualization/qmlsurface/qmlsurface.qrc
deleted file mode 100644
index e32f1534..00000000
--- a/examples/datavisualization/qmlsurface/qmlsurface.qrc
+++ /dev/null
@@ -1,9 +0,0 @@
-<RCC>
- <qresource prefix="/qml">
- <file>qml/qmlsurface/main.qml</file>
- <file>qml/qmlsurface/Data.qml</file>
- </qresource>
- <qresource prefix="/heightmaps">
- <file alias="image">heightmap.png</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/qmlsurfacegallery/CMakeLists.txt b/examples/datavisualization/qmlsurfacegallery/CMakeLists.txt
new file mode 100644
index 00000000..ab4dd77d
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/CMakeLists.txt
@@ -0,0 +1,60 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+cmake_minimum_required(VERSION 3.16)
+project(qmlsurfacegallery LANGUAGES CXX)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+set(CMAKE_AUTOUIC ON)
+
+if(NOT DEFINED INSTALL_EXAMPLESDIR)
+ set(INSTALL_EXAMPLESDIR "examples")
+endif()
+
+set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
+
+find_package(Qt6 COMPONENTS Core)
+find_package(Qt6 COMPONENTS Gui)
+find_package(Qt6 COMPONENTS Qml)
+find_package(Qt6 COMPONENTS Quick)
+find_package(Qt6 COMPONENTS DataVisualization)
+
+qt_add_executable(qmlsurfacegallery
+ main.cpp
+)
+set_target_properties(qmlsurfacegallery PROPERTIES
+ WIN32_EXECUTABLE TRUE
+ MACOSX_BUNDLE TRUE
+)
+target_link_libraries(qmlsurfacegallery PUBLIC
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+ Qt::DataVisualization
+)
+
+qt6_add_qml_module(qmlsurfacegallery
+ URI SurfaceGallery
+ VERSION 1.0
+ NO_RESOURCE_TARGET_PATH
+ SOURCES
+ datasource.cpp datasource.h
+ QML_FILES
+ qml/qmlsurfacegallery/main.qml
+ qml/qmlsurfacegallery/SpectrogramData.qml
+ qml/qmlsurfacegallery/SurfaceHeightMap.qml
+ qml/qmlsurfacegallery/SurfaceOscilloscope.qml
+ qml/qmlsurfacegallery/SurfaceSpectrogram.qml
+ RESOURCES
+ qml/qmlsurfacegallery/heightmap.png
+)
+
+install(TARGETS qmlsurfacegallery
+ RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
+ BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
+ LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
+)
diff --git a/examples/datavisualization/qml3doscilloscope/datasource.cpp b/examples/datavisualization/qmlsurfacegallery/datasource.cpp
index 336458a8..7aeea178 100644
--- a/examples/datavisualization/qml3doscilloscope/datasource.cpp
+++ b/examples/datavisualization/qmlsurfacegallery/datasource.cpp
@@ -1,48 +1,18 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "datasource.h"
#include <QtCore/qmath.h>
#include <QtCore/qrandom.h>
-//! [3]
-Q_DECLARE_METATYPE(QSurface3DSeries *)
-//! [3]
+#include <algorithm>
DataSource::DataSource(QObject *parent) :
- QObject(parent),
- m_index(-1),
- m_resetArray(nullptr)
+ QObject(parent)
{
- //! [4]
+ //! [3]
qRegisterMetaType<QSurface3DSeries *>();
- //! [4]
+ //! [3]
}
DataSource::~DataSource()
@@ -50,21 +20,22 @@ DataSource::~DataSource()
clearData();
}
-//! [0]
void DataSource::generateData(int cacheCount, int rowCount, int columnCount,
- float xMin, float xMax, float yMin, float yMax,
+ float xMin, float xMax,
+ float yMin, float yMax,
float zMin, float zMax)
{
if (!cacheCount || !rowCount || !columnCount)
return;
clearData();
+
// Re-create the cache array
m_data.resize(cacheCount);
- for (int i(0); i < cacheCount; i++) {
+ for (int i = 0; i < cacheCount; ++i) {
QSurfaceDataArray &array = m_data[i];
array.reserve(rowCount);
- for (int j(0); j < rowCount; j++)
+ for (int j = 0; j < rowCount; ++j)
array.append(new QSurfaceDataRow(columnCount));
}
@@ -74,12 +45,14 @@ void DataSource::generateData(int cacheCount, int rowCount, int columnCount,
int cacheIndexStep = columnCount / cacheCount;
float cacheStep = float(cacheIndexStep) * xRange / float(columnCount);
+ //! [0]
// Populate caches
- for (int i(0); i < cacheCount; i++) {
+ auto *generator = QRandomGenerator::global();
+ for (int i = 0; i < cacheCount; ++i) {
QSurfaceDataArray &cache = m_data[i];
float cacheXAdjustment = cacheStep * i;
float cacheIndexAdjustment = cacheIndexStep * i;
- for (int j(0); j < rowCount; j++) {
+ for (int j = 0; j < rowCount; ++j) {
QSurfaceDataRow &row = *(cache[j]);
float rowMod = (float(j)) / float(rowCount);
float yRangeMod = yRange * rowMod;
@@ -87,14 +60,14 @@ void DataSource::generateData(int cacheCount, int rowCount, int columnCount,
float z = zRangeMod + zMin;
qreal rowColWaveAngleMul = M_PI * M_PI * rowMod;
float rowColWaveMul = yRangeMod * 0.2f;
- for (int k(0); k < columnCount; k++) {
+ for (int k = 0; k < columnCount; k++) {
float colMod = (float(k)) / float(columnCount);
float xRangeMod = xRange * colMod;
float x = xRangeMod + xMin + cacheXAdjustment;
float colWave = float(qSin((2.0 * M_PI * colMod) - (1.0 / 2.0 * M_PI)) + 1.0);
float y = (colWave * ((float(qSin(rowColWaveAngleMul * colMod) + 1.0))))
* rowColWaveMul
- + QRandomGenerator::global()->bounded(0.15f) * yRangeMod;
+ + generator->bounded(0.15f) * yRangeMod;
int index = k + cacheIndexAdjustment;
if (index >= columnCount) {
@@ -106,19 +79,18 @@ void DataSource::generateData(int cacheCount, int rowCount, int columnCount,
}
}
}
+ //! [0]
}
-//! [0]
-//! [1]
void DataSource::update(QSurface3DSeries *series)
{
- if (series && m_data.size()) {
+ if (series && !m_data.isEmpty()) {
+ //! [1]
// Each iteration uses data from a different cached array
- m_index++;
- if (m_index > m_data.count() - 1)
+ if (++m_index >= m_data.size())
m_index = 0;
- QSurfaceDataArray array = m_data.at(m_index);
+ const QSurfaceDataArray &array = m_data.at(m_index);
int newRowCount = array.size();
int newColumnCount = array.at(0)->size();
@@ -128,30 +100,26 @@ void DataSource::update(QSurface3DSeries *series)
|| series->dataProxy()->columnCount() != newColumnCount) {
m_resetArray = new QSurfaceDataArray();
m_resetArray->reserve(newRowCount);
- for (int i(0); i < newRowCount; i++)
+ for (int i = 0; i < newRowCount; ++i)
m_resetArray->append(new QSurfaceDataRow(newColumnCount));
}
// Copy items from our cache to the reset array
- for (int i(0); i < newRowCount; i++) {
+ for (int i = 0; i < newRowCount; ++i) {
const QSurfaceDataRow &sourceRow = *(array.at(i));
QSurfaceDataRow &row = *(*m_resetArray)[i];
- for (int j(0); j < newColumnCount; j++)
- row[j].setPosition(sourceRow.at(j).position());
+ std::copy(sourceRow.cbegin(), sourceRow.cend(), row.begin());
}
// Notify the proxy that data has changed
series->dataProxy()->resetArray(m_resetArray);
+ //! [1]
}
}
-//! [1]
void DataSource::clearData()
{
- for (int i(0); i < m_data.size(); i++) {
- QSurfaceDataArray &array = m_data[i];
- for (int j(0); j < array.size(); j++)
- delete array[j];
- array.clear();
- }
+ for (auto &array : std::as_const(m_data))
+ qDeleteAll(array);
+ m_data.clear();
}
diff --git a/examples/datavisualization/qmlsurfacegallery/datasource.h b/examples/datavisualization/qmlsurfacegallery/datasource.h
new file mode 100644
index 00000000..bac5eeb2
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/datasource.h
@@ -0,0 +1,38 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef DATASOURCE_H
+#define DATASOURCE_H
+
+#include <QtDataVisualization/qsurface3dseries.h>
+#include <QtQml/qqmlregistration.h>
+
+//! [0]
+//! [2]
+class DataSource : public QObject
+{
+ Q_OBJECT
+ //! [0]
+ QML_ELEMENT
+ //! [2]
+public:
+ explicit DataSource(QObject *parent = nullptr);
+ virtual ~DataSource();
+
+ //! [1]
+ Q_INVOKABLE void generateData(int cacheCount, int rowCount, int columnCount,
+ float xMin, float xMax,
+ float yMin, float yMax,
+ float zMin, float zMax);
+
+ Q_INVOKABLE void update(QSurface3DSeries *series);
+ //! [1]
+private:
+ void clearData();
+
+ QList<QSurfaceDataArray> m_data;
+ int m_index = -1;
+ QSurfaceDataArray *m_resetArray = nullptr;
+};
+
+#endif
diff --git a/examples/datavisualization/qmlsurfacegallery/doc/images/qmlsurfacegallery-example.png b/examples/datavisualization/qmlsurfacegallery/doc/images/qmlsurfacegallery-example.png
new file mode 100644
index 00000000..c7023160
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/doc/images/qmlsurfacegallery-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacegallery/doc/src/qmlsurfacegallery.qdoc b/examples/datavisualization/qmlsurfacegallery/doc/src/qmlsurfacegallery.qdoc
new file mode 100644
index 00000000..3b33177c
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/doc/src/qmlsurfacegallery.qdoc
@@ -0,0 +1,238 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
+
+/*!
+ \example qmlsurfacegallery
+ \meta tags {DataVisualization, Surface3D, Dynamic Data, Surface Graph, Height Map, Polar Graph}
+ \title Surface Graph Gallery
+ \ingroup qtdatavisualization_qmlexamples
+ \brief Gallery with three different ways to use a Surface3D graph.
+
+ \e {Surface Graph Gallery} demonstrates three different custom features with Surface3D graphs.
+ The features have their own tabs in the application.
+
+ The following sections concentrate on those features only and skip explaining the basic
+ functionality - for more detailed QML example documentation, see \l{Simple Scatter Graph}.
+
+ \image qmlsurfacegallery-example.png
+
+ \include examples-run.qdocinc
+
+ \section1 Height Map
+
+ In the \uicontrol {Height Map} tab, generate a surface graph from height data. The data used is
+ a height map of Mount Ruapehu and Mount Ngauruhoe in New Zealand.
+
+ \section2 Adding Data to the Graph
+
+ The data is set using HeightMapSurfaceDataProxy, which reads height information from a height
+ map image. The proxy itself is contained in a Surface3DSeries. Inside the
+ HeightMapSurfaceDataProxy the \c heightMapFile property specifies the image file containing the
+ height data. The value properties in the proxy define the minimum and maximum values for surface
+ area width, depth, and height. The \c z and \c x values are in latitude and longitude,
+ approximately at the real-world position, and the \c y is in meters.
+ \note The aspect ratio of the graph is not set to real-life scale, but the height is exaggerated
+ instead.
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml 0
+
+ \section2 Displaying the Data
+
+ In \c main.qml, set up the Surface3D element to display the data.
+
+ First, define the custom gradient to be used for the surface. Set the colors from position
+ 0.0 to 1.0 with ColorGradient, with two extra stops to make the graph more vivid:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml 1
+
+ Set this element into the \c baseGradients property in the \c theme used in Surface3D:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml 2
+
+ Use the buttons to control other Surface3D features.
+
+ The first button toggles on and off the surface grid. The draw mode cannot
+ be cleared completely, so unless the surface itself is visible, the surface grid cannot be
+ hidden:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml 3
+
+ The second one sets the surface grid color:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml 4
+
+ The third one toggles the surface on or off in the surface draw mode. The draw mode cannot
+ be cleared completely, so unless the surface grid is visible, the surface itself cannot be
+ hidden:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml 5
+
+ The fourth sets the for shading mode. If you are running the example on OpenGL ES system, flat
+ shading is not available:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml 6
+
+ The remaining buttons control the graph background features.
+
+ \section1 Spectrogram
+
+ In the \uicontrol {Spectrogram} tab, display polar and cartesian spectrograms and use
+ orthographic projection to show them in 2D.
+
+ A spectrogram is a surface graph with a range gradient used to emphasize the different
+ values. Typically, spectrograms are shown with two-dimensional surfaces, which is simulated
+ with a top-down orthographic view of the graph. To enforce the 2D effect, disable the
+ graph rotation via mouse or touch when in the orthographic mode.
+
+ \section2 Creating a Spectrogram
+
+ To create a 2D spectrogram, define a Surface3D item with the data given in the Surface3DSeries
+ with an ItemModelSurfaceDataProxy:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml 0
+
+ The key properties for enabling the 2D effect are
+ \l{AbstractGraph3D::orthoProjection}{orthoProjection} and
+ \l{Camera3D::cameraPreset}{scene.activeCamera.cameraPreset}. Remove the perspective by
+ enabling orthographic projection for the graph, and the Y-dimension by viewing the graph
+ directly from above:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml 1
+
+ Since this viewpoint causes the horizontal axis grid to be mostly obscured by the surface,
+ flip the horizontal grid to be drawn on top of the graph:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml 2
+
+ \section2 Polar Spectrogram
+
+ Depending on the data, it is sometimes more natural to use a polar graph instead of a cartesian
+ one. This is supported via the \l{AbstractGraph3D::polar}{polar} property.
+
+ Add a button to switch between polar and cartesian modes:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml 3
+
+ In the polar mode, X-axis is converted into the angular polar axis, and Z-axis is converted into
+ a radial polar axis. The surface points are recalculated according to the new axes.
+
+ The radial axis labels are drawn outside the graph by default. To draw them right next to the 0
+ degree angular axis inside the graph, define only a small offset for them:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml 4
+
+ To enforce the 2D effect, disable graph rotation in orthographic mode by overriding the default
+ input handler with a custom one, which automatically toggles the
+ \l{InputHandler3D::rotationEnabled}{rotationEnabled} property based on the projection mode:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml 5
+
+ \section1 Oscilloscope
+
+ In the \uicontrol {Oscilloscope} tab, combine C++ and QML in an application, and show data that
+ dynamically changes.
+
+ \section2 Data Source in C++
+
+ The item model based proxies are good for simple or static graphs, but use basic proxies to
+ achieve the best performance when displaying data changing in realtime.
+ These are not supported in QML, as the data items they store do not inherit \l{QObject} and
+ cannot therefore be directly manipulated from QML code.
+ To overcome this limitation, implement a simple \c DataSource class in C++ to populate the
+ data proxy of the series.
+
+ Create a \c DataSource class to provide two methods that can be invoked from QML:
+
+ \snippet qmlsurfacegallery/datasource.h 0
+ \dots 4
+ \snippet qmlsurfacegallery/datasource.h 1
+
+ The first method, \c generateData(), creates a cache of simulated oscilloscope data to display.
+ The data is cached in a format that QSurfaceDataProxy accepts:
+
+ \snippet qmlsurfacegallery/datasource.cpp 0
+
+ The second method, \c update(), copies one set of the cached data into another array, which is
+ set to the data proxy of the series by calling QSurfaceDataProxy::resetArray().
+ To minimize overhead, reuse the same array if the array dimensions have not changed:
+
+ \snippet qmlsurfacegallery/datasource.cpp 1
+
+ Even though we are operating on the array pointer previously set to the proxy,
+ QSurfaceDataProxy::resetArray() still needs to be called after changing the data in it to prompt
+ the graph to render the data.
+
+ To be able to access the \c DataSource methods from QML, expose the data source by
+ making the DataSource a QML_ELEMENT:
+
+ \snippet qmlsurfacegallery/datasource.h 2
+
+ Further, declare it as a QML module in the CMakeLists.txt:
+
+ \badcode
+ qt6_add_qml_module(qmlsurfacegallery
+ URI SurfaceGallery
+ VERSION 1.0
+ NO_RESOURCE_TARGET_PATH
+ SOURCES
+ datasource.cpp datasource.h
+ ...
+ )
+ \endcode
+
+ To use QSurface3DSeries pointers as parameters for the \c DataSource class methods on all
+ environments and builds, make sure the meta type is registered:
+
+ \snippet qmlsurfacegallery/datasource.cpp 3
+
+ \section2 QML Application
+
+ To use the \c{DataSource}, import the QML module and create an instance of \c DataSource to be
+ used:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml 0
+ \dots 0
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml 1
+
+ Define a Surface3D graph and give it a Surface3DSeries:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml 2
+
+ Don't specify a proxy for the Surface3DSeries that you attach to the graph. This makes the
+ series utilize the default QSurfaceDataProxy.
+
+ Hide the item label with \l{Abstract3DSeries::itemLabelVisible}{itemLabelVisible}. With dynamic,
+ fast-changing data, a floating selection label would be distracting and difficult to read.
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml 3
+
+ You can display the selected item information in a \c Text element instead of the default
+ floating label above the selection pointer:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml 4
+
+ Initialize the \c DataSource cache when the graph is complete by calling a helper function
+ \c generateData(), which calls the method with the same name in \c DataSource:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml 5
+ \dots 0
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml 6
+
+ To trigger the updates in data, define a \c{Timer}, which calls the \c update() method in
+ \c DataSource at requested intervals:
+
+ \snippet qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml 7
+
+ \section2 Enabling Direct Rendering
+
+ Since this application potentially deals with a lot of rapidly changing data, it uses direct
+ rendering mode for performance. To enable antialiasing in this mode, change the surface format
+ of the application window. The default format used by QQuickView doesn't support antialiasing.
+ Use the utility function provided to change the surface format in \c main.cpp:
+
+ \snippet qmlsurfacegallery/main.cpp 0
+ \dots 0
+ \snippet qmlsurfacegallery/main.cpp 1
+
+ \section1 Example Contents
+*/
diff --git a/examples/datavisualization/qmlsurfacegallery/main.cpp b/examples/datavisualization/qmlsurfacegallery/main.cpp
new file mode 100644
index 00000000..cbd831b6
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/main.cpp
@@ -0,0 +1,52 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+//! [0]
+#include <QtDataVisualization/qutils.h>
+//! [0]
+
+#include <QtGui/qguiapplication.h>
+#include <QtQuick/qquickview.h>
+#include <QtQml/qqmlengine.h>
+
+#ifdef QMAKE_BUILD
+#include "datasource.h"
+#endif
+
+using namespace Qt::StringLiterals;
+
+int main(int argc, char *argv[])
+{
+ qputenv("QSG_RHI_BACKEND", "opengl");
+ QGuiApplication app(argc, argv);
+
+#ifdef QMAKE_BUILD
+ qmlRegisterType<DataSource>("SurfaceGallery", 1, 0, "DataSource");
+#endif
+
+ QQuickView viewer;
+
+ //! [1]
+ // Enable antialiasing in direct rendering mode
+ viewer.setFormat(qDefaultSurfaceFormat(true));
+ //! [1]
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(u"%1/../../../../%2"_s);
+#else
+ QString extraImportPath(u"%1/../../../%2"_s);
+#endif
+ viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ u"qml"_s));
+ QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
+
+ viewer.setTitle(u"Surface Graph Gallery"_s);
+
+ viewer.setSource(QUrl(u"qrc:/qml/qmlsurfacegallery/main.qml"_s));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/Data.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SpectrogramData.qml
index 75fcee6a..6e1b5722 100644
--- a/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/Data.qml
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SpectrogramData.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml
new file mode 100644
index 00000000..6f65e17c
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml
@@ -0,0 +1,227 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtDataVisualization
+
+Rectangle {
+ id: heightMapView
+ color: surfacePlot.theme.windowColor
+
+ required property bool portraitMode
+
+ property real buttonWidth: heightMapView.portraitMode ? (heightMapView.width - 35) / 2
+ : (heightMapView.width - 40) / 3
+
+ Item {
+ id: surfaceView
+ anchors.top: buttons.bottom
+ anchors.bottom: heightMapView.bottom
+ anchors.left: heightMapView.left
+ anchors.right: heightMapView.right
+
+ //! [1]
+ ColorGradient {
+ id: surfaceGradient
+ ColorGradientStop { position: 0.0; color: "darkgreen"}
+ ColorGradientStop { position: 0.15; color: "darkslategray" }
+ ColorGradientStop { position: 0.7; color: "peru" }
+ ColorGradientStop { position: 1.0; color: "white" }
+ }
+ //! [1]
+
+ Surface3D {
+ id: surfacePlot
+ width: surfaceView.width
+ height: surfaceView.height
+ aspectRatio: 3.0
+ //! [2]
+ theme: Theme3D {
+ type: Theme3D.ThemeStoneMoss
+ font.family: "STCaiyun"
+ font.pointSize: 35
+ colorStyle: Theme3D.ColorStyleRangeGradient
+ baseGradients: [surfaceGradient] // Use the custom gradient
+ }
+ //! [2]
+ shadowQuality: AbstractGraph3D.ShadowQualityMedium
+ selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndRow
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeft
+ axisX.segmentCount: 3
+ axisX.subSegmentCount: 3
+ axisX.labelFormat: "%i"
+ axisZ.segmentCount: 3
+ axisZ.subSegmentCount: 3
+ axisZ.labelFormat: "%i"
+ axisY.segmentCount: 2
+ axisY.subSegmentCount: 2
+ axisY.labelFormat: "%i"
+ axisY.title: "Height (m)"
+ axisX.title: "Longitude 175.x\"E"
+ axisZ.title: "Latitude -39.x\"N"
+ axisY.titleVisible: true
+ axisX.titleVisible: true
+ axisZ.titleVisible: true
+
+ //! [0]
+ Surface3DSeries {
+ id: heightSeries
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+
+ HeightMapSurfaceDataProxy {
+ heightMapFile: "://qml/qmlsurfacegallery/heightmap.png"
+ // We don't want the default data values set by heightmap proxy, but use
+ // actual coordinate and height values instead
+ autoScaleY: true
+ minYValue: 740
+ maxYValue: 2787
+ minZValue: -374 // ~ -39.374411"N
+ maxZValue: -116 // ~ -39.115971"N
+ minXValue: 472 // ~ 175.471767"E
+ maxXValue: 781 // ~ 175.780758"E
+ }
+
+ onDrawModeChanged: heightMapView.checkState()
+ }
+ //! [0]
+ }
+ }
+
+ Item {
+ id: buttons
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: 10
+ height: heightMapView.portraitMode ? surfaceGridToggle.implicitHeight * 3 + 20
+ : surfaceGridToggle.implicitHeight * 2 + 15
+ opacity: 0.5
+
+ Button {
+ id: surfaceGridToggle
+ anchors.margins: 5
+ anchors.left: parent.left
+ anchors.top: parent.top
+ width: heightMapView.buttonWidth // Calculated elsewhere based on screen orientation
+ text: "Show Surface\nGrid"
+ //! [3]
+ onClicked: {
+ if (heightSeries.drawMode & Surface3DSeries.DrawWireframe)
+ heightSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ else
+ heightSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ }
+ //! [3]
+ }
+
+ Button {
+ id: surfaceGridColor
+ anchors.margins: 5
+ anchors.left: surfaceGridToggle.right
+ anchors.top: parent.top
+ width: heightMapView.buttonWidth
+ text: "Red surface\ngrid color"
+ //! [4]
+ onClicked: {
+ if (Qt.colorEqual(heightSeries.wireframeColor, "#000000")) {
+ heightSeries.wireframeColor = "red";
+ text = "Black surface\ngrid color";
+ } else {
+ heightSeries.wireframeColor = "black";
+ text = "Red surface\ngrid color";
+ }
+ }
+ //! [4]
+ }
+
+ Button {
+ id: surfaceToggle
+ anchors.margins: 5
+ anchors.left: heightMapView.portraitMode ? parent.left : surfaceGridColor.right
+ anchors.top: heightMapView.portraitMode ? surfaceGridColor.bottom : parent.top
+ width: heightMapView.buttonWidth
+ text: "Hide\nSurface"
+ //! [5]
+ onClicked: {
+ if (heightSeries.drawMode & Surface3DSeries.DrawSurface)
+ heightSeries.drawMode &= ~Surface3DSeries.DrawSurface;
+ else
+ heightSeries.drawMode |= Surface3DSeries.DrawSurface;
+ }
+ //! [5]
+ }
+
+ Button {
+ id: flatShadingToggle
+ anchors.margins: 5
+ anchors.left: heightMapView.portraitMode ? surfaceToggle.right : parent.left
+ anchors.top: heightMapView.portraitMode ? surfaceGridColor.bottom : surfaceToggle.bottom
+ width: heightMapView.buttonWidth
+ text: heightSeries.flatShadingSupported ? "Show\nFlat" : "Flat not\nsupported"
+ enabled: heightSeries.flatShadingSupported
+ //! [6]
+ onClicked: {
+ if (heightSeries.flatShadingEnabled) {
+ heightSeries.flatShadingEnabled = false;
+ text = "Show\nFlat"
+ } else {
+ heightSeries.flatShadingEnabled = true;
+ text = "Show\nSmooth"
+ }
+ }
+ //! [6]
+ }
+
+ Button {
+ id: backgroundToggle
+ anchors.margins: 5
+ anchors.left: heightMapView.portraitMode ? parent.left : flatShadingToggle.right
+ anchors.top: heightMapView.portraitMode ? flatShadingToggle.bottom
+ : surfaceToggle.bottom
+ width: heightMapView.buttonWidth
+ text: "Hide\nBackground"
+ onClicked: {
+ if (surfacePlot.theme.backgroundEnabled) {
+ surfacePlot.theme.backgroundEnabled = false;
+ text = "Show\nBackground";
+ } else {
+ surfacePlot.theme.backgroundEnabled = true;
+ text = "Hide\nBackground";
+ }
+ }
+ }
+
+ Button {
+ id: gridToggle
+ anchors.margins: 5
+ anchors.left: backgroundToggle.right
+ anchors.top: heightMapView.portraitMode ? flatShadingToggle.bottom
+ : surfaceToggle.bottom
+ width: heightMapView.buttonWidth
+ text: "Hide\nGrid"
+ onClicked: {
+ if (surfacePlot.theme.gridEnabled) {
+ surfacePlot.theme.gridEnabled = false;
+ text = "Show\nGrid";
+ } else {
+ surfacePlot.theme.gridEnabled = true;
+ text = "Hide\nGrid";
+ }
+ }
+ }
+ }
+
+ function checkState() {
+ if (heightSeries.drawMode & Surface3DSeries.DrawSurface)
+ surfaceToggle.text = "Hide\nSurface";
+ else
+ surfaceToggle.text = "Show\nSurface";
+
+ if (heightSeries.drawMode & Surface3DSeries.DrawWireframe)
+ surfaceGridToggle.text = "Hide Surface\nGrid";
+ else
+ surfaceGridToggle.text = "Show Surface\nGrid";
+ }
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml
new file mode 100644
index 00000000..a5ff8acd
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml
@@ -0,0 +1,430 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtDataVisualization
+//! [0]
+import SurfaceGallery
+//! [0]
+
+Item {
+ id: oscilloscopeView
+
+ property int sampleColumns: sampleSlider.value
+ property int sampleRows: sampleColumns / 2
+ property int sampleCache: 24
+
+ required property bool portraitMode
+
+ property real controlWidth: oscilloscopeView.portraitMode ? oscilloscopeView.width - 10
+ : oscilloscopeView.width / 4 - 6.66
+
+ property real buttonWidth: oscilloscopeView.portraitMode ? oscilloscopeView.width - 10
+ : oscilloscopeView.width / 3 - 7.5
+
+ onSampleRowsChanged: {
+ surfaceSeries.selectedPoint = surfaceSeries.invalidSelectionPosition
+ generateData()
+ }
+
+ //![1]
+ DataSource {
+ id: dataSource
+ }
+ //![1]
+
+ Item {
+ id: dataView
+ anchors.bottom: parent.bottom
+ width: parent.width
+ height: parent.height - controlArea.height
+
+ //! [2]
+ Surface3D {
+ id: surfaceGraph
+ anchors.fill: parent
+
+ Surface3DSeries {
+ id: surfaceSeries
+ drawMode: Surface3DSeries.DrawSurfaceAndWireframe
+ itemLabelFormat: "@xLabel, @zLabel: @yLabel"
+ //! [2]
+ //! [3]
+ itemLabelVisible: false
+ //! [3]
+
+ //! [4]
+ onItemLabelChanged: {
+ if (surfaceSeries.selectedPoint == surfaceSeries.invalidSelectionPosition)
+ selectionText.text = "No selection";
+ else
+ selectionText.text = surfaceSeries.itemLabel;
+ }
+ //! [4]
+ }
+
+ shadowQuality: AbstractGraph3D.ShadowQualityNone
+ selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndColumn
+ theme: Theme3D {
+ type: Theme3D.ThemeIsabelle
+ backgroundEnabled: false
+ }
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetFrontHigh
+
+ axisX.labelFormat: "%d ms"
+ axisY.labelFormat: "%d W"
+ axisZ.labelFormat: "%d mV"
+ axisX.min: 0
+ axisY.min: 0
+ axisZ.min: 0
+ axisX.max: 1000
+ axisY.max: 100
+ axisZ.max: 800
+ axisX.segmentCount: 4
+ axisY.segmentCount: 4
+ axisZ.segmentCount: 4
+ measureFps: true
+ renderingMode: AbstractGraph3D.RenderDirectToBackground
+
+ onCurrentFpsChanged: (fps)=> {
+ if (fps > 10)
+ fpsText.text = "FPS: " + Math.round(surfaceGraph.currentFps);
+ else
+ fpsText.text = "FPS: " + Math.round(surfaceGraph.currentFps * 10.0) / 10.0;
+ }
+
+ //! [5]
+ Component.onCompleted: oscilloscopeView.generateData();
+ //! [5]
+ }
+ }
+
+ //! [7]
+ Timer {
+ id: refreshTimer
+ interval: 1000 / frequencySlider.value
+ running: true
+ repeat: true
+ onTriggered: dataSource.update(surfaceSeries);
+ }
+ //! [7]
+
+ Rectangle {
+ id: controlArea
+ height: oscilloscopeView.portraitMode ? flatShadingToggle.implicitHeight * 7
+ : flatShadingToggle.implicitHeight * 2
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.right: parent.right
+ color: surfaceGraph.theme.backgroundColor
+
+ // Samples
+ Rectangle {
+ id: samples
+ width: oscilloscopeView.controlWidth
+ height: flatShadingToggle.implicitHeight
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.margins: 5
+
+ color: surfaceGraph.theme.windowColor
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 4
+
+ Row {
+ anchors.centerIn: parent
+ spacing: 10
+ padding: 5
+
+ Slider {
+ id: sampleSlider
+ from: oscilloscopeView.sampleCache * 2
+ to: from * 10
+ stepSize: oscilloscopeView.sampleCache
+
+ background: Rectangle {
+ x: sampleSlider.leftPadding
+ y: sampleSlider.topPadding + sampleSlider.availableHeight / 2
+ - height / 2
+ implicitWidth: 200
+ implicitHeight: 4
+ width: sampleSlider.availableWidth
+ height: implicitHeight
+ radius: 2
+ color: surfaceGraph.theme.gridLineColor
+
+ Rectangle {
+ width: sampleSlider.visualPosition * parent.width
+ height: parent.height
+ color: surfaceGraph.theme.labelTextColor
+ radius: 2
+ }
+ }
+
+ handle: Rectangle {
+ x: sampleSlider.leftPadding + sampleSlider.visualPosition
+ * (sampleSlider.availableWidth - width)
+ y: sampleSlider.topPadding + sampleSlider.availableHeight / 2
+ - height / 2
+ implicitWidth: 20
+ implicitHeight: 20
+ radius: 10
+ color: sampleSlider.pressed ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: sampleSlider.pressed ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ }
+
+ Component.onCompleted: value = from;
+ }
+
+ Text {
+ id: samplesText
+ text: "Samples: " + (oscilloscopeView.sampleRows * oscilloscopeView.sampleColumns)
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ color: surfaceGraph.theme.labelTextColor
+ }
+ }
+ }
+
+ // Frequency
+ Rectangle {
+ id: frequency
+ width: oscilloscopeView.controlWidth
+ height: flatShadingToggle.implicitHeight
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : samples.right
+ anchors.top: oscilloscopeView.portraitMode ? samples.bottom : parent.top
+ anchors.margins: 5
+
+ color: surfaceGraph.theme.windowColor
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 4
+
+ Row {
+ anchors.centerIn: parent
+ spacing: 10
+ padding: 5
+
+ Slider {
+ id: frequencySlider
+ from: 2
+ to: 60
+ stepSize: 2
+ value: 30
+
+ background: Rectangle {
+ x: frequencySlider.leftPadding
+ y: frequencySlider.topPadding + frequencySlider.availableHeight / 2
+ - height / 2
+ implicitWidth: 200
+ implicitHeight: 4
+ width: frequencySlider.availableWidth
+ height: implicitHeight
+ radius: 2
+ color: surfaceGraph.theme.gridLineColor
+
+ Rectangle {
+ width: frequencySlider.visualPosition * parent.width
+ height: parent.height
+ color: surfaceGraph.theme.labelTextColor
+ radius: 2
+ }
+ }
+
+ handle: Rectangle {
+ x: frequencySlider.leftPadding + frequencySlider.visualPosition
+ * (frequencySlider.availableWidth - width)
+ y: frequencySlider.topPadding + frequencySlider.availableHeight / 2
+ - height / 2
+ implicitWidth: 20
+ implicitHeight: 20
+ radius: 10
+ color: frequencySlider.pressed ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: frequencySlider.pressed ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ }
+ }
+
+ Text {
+ id: frequencyText
+ text: "Freq: " + frequencySlider.value + " Hz"
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ color: surfaceGraph.theme.labelTextColor
+ }
+ }
+ }
+
+ // FPS
+ Rectangle {
+ id: fpsindicator
+ width: oscilloscopeView.controlWidth
+ height: flatShadingToggle.implicitHeight
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : frequency.right
+ anchors.top: oscilloscopeView.portraitMode ? frequency.bottom : parent.top
+ anchors.margins: 5
+
+ color: surfaceGraph.theme.windowColor
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 4
+
+ Text {
+ id: fpsText
+ anchors.fill: parent
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ color: surfaceGraph.theme.labelTextColor
+ }
+ }
+
+ // Selection
+ Rectangle {
+ id: selection
+ width: oscilloscopeView.controlWidth
+ height: flatShadingToggle.implicitHeight
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : fpsindicator.right
+ anchors.top: oscilloscopeView.portraitMode ? fpsindicator.bottom : parent.top
+ anchors.margins: 5
+
+ color: surfaceGraph.theme.windowColor
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 4
+
+ Text {
+ id: selectionText
+ anchors.fill: parent
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ text: "No selection"
+ color: surfaceGraph.theme.labelTextColor
+ }
+ }
+
+ // Flat shading
+ Button {
+ id: flatShadingToggle
+ width: oscilloscopeView.buttonWidth
+ anchors.left: parent.left
+ anchors.top: selection.bottom
+ anchors.margins: 5
+
+ text: surfaceSeries.flatShadingSupported ? "Show\nSmooth" : "Flat\nnot supported"
+ enabled: surfaceSeries.flatShadingSupported
+
+ onClicked: {
+ if (surfaceSeries.flatShadingEnabled) {
+ surfaceSeries.flatShadingEnabled = false;
+ text = "Show\nFlat"
+ } else {
+ surfaceSeries.flatShadingEnabled = true;
+ text = "Show\nSmooth"
+ }
+ }
+
+ contentItem: Text {
+ text: flatShadingToggle.text
+ opacity: flatShadingToggle.enabled ? 1.0 : 0.3
+ color: surfaceGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ opacity: flatShadingToggle.enabled ? 1 : 0.3
+ color: flatShadingToggle.down ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: flatShadingToggle.down ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
+ }
+
+ // Surface grid
+ Button {
+ id: surfaceGridToggle
+ width: oscilloscopeView.buttonWidth
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : flatShadingToggle.right
+ anchors.top: oscilloscopeView.portraitMode ? flatShadingToggle.bottom : selection.bottom
+ anchors.margins: 5
+
+ text: "Hide\nSurface Grid"
+
+ onClicked: {
+ if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe) {
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ text = "Show\nSurface Grid";
+ } else {
+ surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ text = "Hid\nSurface Grid";
+ }
+ }
+
+ contentItem: Text {
+ text: surfaceGridToggle.text
+ color: surfaceGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ color: surfaceGridToggle.down ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: surfaceGridToggle.down ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
+ }
+
+ // Exit
+ Button {
+ id: exitButton
+ width: oscilloscopeView.buttonWidth
+ height: surfaceGridToggle.height
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : surfaceGridToggle.right
+ anchors.top: oscilloscopeView.portraitMode ? surfaceGridToggle.bottom : selection.bottom
+ anchors.margins: 5
+
+ text: "Quit"
+
+ onClicked: Qt.quit();
+
+ contentItem: Text {
+ text: exitButton.text
+ color: surfaceGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ color: exitButton.down ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: exitButton.down ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
+ }
+ }
+
+ //! [6]
+ function generateData() {
+ dataSource.generateData(oscilloscopeView.sampleCache, oscilloscopeView.sampleRows,
+ oscilloscopeView.sampleColumns,
+ surfaceGraph.axisX.min, surfaceGraph.axisX.max,
+ surfaceGraph.axisY.min, surfaceGraph.axisY.max,
+ surfaceGraph.axisZ.min, surfaceGraph.axisZ.max);
+ }
+ //! [6]
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml
new file mode 100644
index 00000000..cedb9850
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml
@@ -0,0 +1,272 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtDataVisualization
+
+Rectangle {
+ id: spectrogramView
+ color: surfaceGraph.theme.windowColor
+
+ required property bool portraitMode
+
+ property real buttonWidth: spectrogramView.portraitMode ? (spectrogramView.width - 35) / 2
+ : (spectrogramView.width - 50) / 5
+
+ SpectrogramData {
+ id: surfaceData
+ }
+
+ Item {
+ id: surfaceView
+ anchors.top: buttons.bottom
+ anchors.left: parent.left
+ anchors.right: legend.left
+ anchors.bottom: parent.bottom
+
+ ColorGradient {
+ id: surfaceGradient
+ ColorGradientStop { position: 0.0; color: "black" }
+ ColorGradientStop { position: 0.2; color: "red" }
+ ColorGradientStop { position: 0.5; color: "blue" }
+ ColorGradientStop { position: 0.8; color: "yellow" }
+ ColorGradientStop { position: 1.0; color: "white" }
+ }
+
+ ValueAxis3D {
+ id: xAxis
+ segmentCount: 8
+ labelFormat: "%i\u00B0"
+ title: "Angle"
+ titleVisible: true
+ titleFixed: false
+ }
+
+ ValueAxis3D {
+ id: yAxis
+ segmentCount: 8
+ labelFormat: "%i \%"
+ title: "Value"
+ titleVisible: true
+ labelAutoRotation: 0
+ titleFixed: false
+ }
+
+ ValueAxis3D {
+ id: zAxis
+ segmentCount: 5
+ labelFormat: "%i nm"
+ title: "Radius"
+ titleVisible: true
+ titleFixed: false
+ }
+
+ Theme3D {
+ id: customTheme
+ type: Theme3D.ThemeQt
+ // Don't show specular spotlight as we don't want it to distort the colors
+ lightStrength: 0.0
+ ambientLightStrength: 1.0
+ backgroundEnabled: false
+ gridLineColor: "#AAAAAA"
+ windowColor: "#EEEEEE"
+ }
+
+ //! [0]
+ Surface3D {
+ id: surfaceGraph
+ anchors.fill: parent
+
+ Surface3DSeries {
+ id: surfaceSeries
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+ baseGradient: surfaceGradient
+ colorStyle: Theme3D.ColorStyleRangeGradient
+ itemLabelFormat: "(@xLabel, @zLabel): @yLabel"
+
+ ItemModelSurfaceDataProxy {
+ itemModel: surfaceData.model
+ rowRole: "radius"
+ columnRole: "angle"
+ yPosRole: "value"
+ }
+ }
+ //! [0]
+
+ //! [1]
+ // Remove the perspective and view the graph from top down to achieve 2D effect
+ orthoProjection: true
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetDirectlyAbove
+ //! [1]
+
+ //! [2]
+ flipHorizontalGrid: true
+ //! [2]
+
+ //! [4]
+ radialLabelOffset: 0.01
+ //! [4]
+
+ //! [5]
+ inputHandler: TouchInputHandler3D {
+ rotationEnabled: !surfaceGraph.orthoProjection
+ }
+ //! [5]
+
+ theme: customTheme
+ shadowQuality: AbstractGraph3D.ShadowQualityNone
+ selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndColumn
+ axisX: xAxis
+ axisY: yAxis
+ axisZ: zAxis
+
+ aspectRatio: 1.0
+ horizontalAspectRatio: 1.0
+ scene.activeCamera.zoomLevel: 140
+ }
+ }
+
+ Item {
+ id: buttons
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ height: spectrogramView.portraitMode ? (polarToggle.height + 10) * 3
+ : polarToggle.height + 30
+ anchors.margins: 10
+
+ //! [3]
+ Button {
+ id: polarToggle
+ anchors.margins: 5
+ anchors.left: parent.left
+ anchors.top: parent.top
+ width: spectrogramView.buttonWidth // Calculated elsewhere based on screen orientation
+ text: "Switch to\n" + (surfaceGraph.polar ? "cartesian" : "polar")
+ onClicked: surfaceGraph.polar = !surfaceGraph.polar;
+ }
+ //! [3]
+
+ Button {
+ id: orthoToggle
+ anchors.margins: 5
+ anchors.left: polarToggle.right
+ anchors.top: parent.top
+ width: spectrogramView.buttonWidth
+ text: "Switch to\n" + (surfaceGraph.orthoProjection ? "perspective" : "orthographic")
+ onClicked: {
+ if (surfaceGraph.orthoProjection) {
+ surfaceGraph.orthoProjection = false;
+ xAxis.labelAutoRotation = 30;
+ yAxis.labelAutoRotation = 30;
+ zAxis.labelAutoRotation = 30;
+ } else {
+ surfaceGraph.orthoProjection = true;
+ surfaceGraph.scene.activeCamera.cameraPreset
+ = Camera3D.CameraPresetDirectlyAbove;
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ xAxis.labelAutoRotation = 0;
+ yAxis.labelAutoRotation = 0;
+ zAxis.labelAutoRotation = 0;
+ }
+ }
+ }
+
+ Button {
+ id: flipGridToggle
+ anchors.margins: 5
+ anchors.left: spectrogramView.portraitMode ? parent.left : orthoToggle.right
+ anchors.top: spectrogramView.portraitMode ? orthoToggle.bottom : parent.top
+ width: spectrogramView.buttonWidth
+ text: "Toggle axis\ngrid on top"
+ onClicked: surfaceGraph.flipHorizontalGrid = !surfaceGraph.flipHorizontalGrid;
+ }
+
+ Button {
+ id: labelOffsetToggle
+ anchors.margins: 5
+ anchors.left: flipGridToggle.right
+ anchors.top: spectrogramView.portraitMode ? orthoToggle.bottom : parent.top
+ width: spectrogramView.buttonWidth
+ text: "Toggle radial\nlabel position"
+ visible: surfaceGraph.polar
+ onClicked: {
+ if (surfaceGraph.radialLabelOffset >= 1.0)
+ surfaceGraph.radialLabelOffset = 0.01;
+ else
+ surfaceGraph.radialLabelOffset = 1.0;
+ }
+ }
+
+ Button {
+ id: surfaceGridToggle
+ anchors.margins: 5
+ anchors.left: spectrogramView.portraitMode ? (labelOffsetToggle.visible ? parent.left
+ : flipGridToggle.right)
+ : (labelOffsetToggle.visible ? labelOffsetToggle.right
+ : flipGridToggle.right)
+ anchors.top: spectrogramView.portraitMode ? (labelOffsetToggle.visible ? labelOffsetToggle.bottom
+ : orthoToggle.bottom)
+ : parent.top
+ width: spectrogramView.buttonWidth
+ text: "Toggle\nsurface grid"
+ visible: !surfaceGraph.orthoProjection
+ onClicked: {
+ if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe)
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ else
+ surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ }
+ }
+ }
+
+ Item {
+ id: legend
+ anchors.bottom: parent.bottom
+ anchors.top: buttons.bottom
+ anchors.right: parent.right
+ width: spectrogramView.portraitMode ? 100 : 125
+
+ Rectangle {
+ id: gradient
+ anchors.margins: 20
+ anchors.bottom: legend.bottom
+ anchors.top: legend.top
+ anchors.right: legend.right
+ border.color: "black"
+ border.width: 1
+ width: spectrogramView.portraitMode ? 25 : 50
+ rotation: 180
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "black" }
+ GradientStop { position: 0.2; color: "red" }
+ GradientStop { position: 0.5; color: "blue" }
+ GradientStop { position: 0.8; color: "yellow" }
+ GradientStop { position: 1.0; color: "white" }
+ }
+ }
+
+ Text {
+ anchors.verticalCenter: gradient.bottom
+ anchors.right: gradient.left
+ anchors.margins: 2
+ text: surfaceGraph.axisY.min + "%"
+ }
+
+ Text {
+ anchors.verticalCenter: gradient.verticalCenter
+ anchors.right: gradient.left
+ anchors.margins: 2
+ text: (surfaceGraph.axisY.max + surfaceGraph.axisY.min) / 2 + "%"
+ }
+
+ Text {
+ anchors.verticalCenter: gradient.top
+ anchors.right: gradient.left
+ anchors.margins: 2
+ text: surfaceGraph.axisY.max + "%"
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.png b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.png
new file mode 100644
index 00000000..02f41230
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.readme b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.readme
new file mode 100644
index 00000000..505fee85
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.readme
@@ -0,0 +1,25 @@
+Heightmap of Mt Ruapehu & Mt Ngauruhoe
+
+Authored on: 22 July 2018
+Source: University of Otago (https://koordinates.com/layer/3736-09-taumarunui-15m-dem-nzsosdem-v10/)
+
+Creative Commons Attribution - CC BY-SA 4.0
+https://creativecommons.org/licenses/by-sa/4.0/
+
+You are free to:
+
+ Share — copy and redistribute the material in any medium or format
+ Adapt — remix, transform, and build upon the material for any purpose, even commercially.
+
+This license is acceptable for Free Cultural Works.
+
+ The licensor cannot revoke these freedoms as long as you follow the license terms.
+
+Under the following terms:
+
+ Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
+
+ ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
+
+ No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
+
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/main.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/main.qml
new file mode 100644
index 00000000..2d0b82db
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/main.qml
@@ -0,0 +1,57 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ id: mainView
+ width: 1280
+ height: 1024
+ visible: true
+
+ property bool portraitMode: width < height
+
+ TabBar {
+ id: tabBar
+ width: parent.width
+
+ TabButton {
+ text: "Height Map"
+ }
+
+ TabButton {
+ text: "Spectrogram"
+ }
+
+ TabButton {
+ text: "Oscilloscope"
+ }
+ }
+
+ StackLayout {
+ anchors.top: tabBar.bottom
+ anchors.bottom: parent.bottom
+ width: parent.width
+ currentIndex: tabBar.currentIndex
+
+ SurfaceHeightMap {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ portraitMode: mainView.portraitMode
+ }
+
+ SurfaceSpectrogram {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ portraitMode: mainView.portraitMode
+ }
+
+ SurfaceOscilloscope {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ portraitMode: mainView.portraitMode
+ }
+ }
+}
diff --git a/examples/datavisualization/qml3doscilloscope/qml3doscilloscope.pro b/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.pro
index 07ee9838..c79366ba 100644
--- a/examples/datavisualization/qml3doscilloscope/qml3doscilloscope.pro
+++ b/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.pro
@@ -2,15 +2,16 @@
error( "Couldn't find the examples.pri file!" )
}
+DEFINES += QMAKE_BUILD
+
QT += datavisualization
-# The .cpp file which was generated for your project. Feel free to hack it.
SOURCES += main.cpp \
datasource.cpp
HEADERS += datasource.h
-RESOURCES += qml3doscilloscope.qrc
+RESOURCES += qmlsurfacegallery.qrc
OTHER_FILES += doc/src/* \
doc/images/* \
- qml/qml3doscilloscope/*
+ qml/qmlsurfacegallery/*
diff --git a/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.qrc b/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.qrc
new file mode 100644
index 00000000..191c5cc4
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.qrc
@@ -0,0 +1,10 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmlsurfacegallery/heightmap.png</file>
+ <file>qml/qmlsurfacegallery/main.qml</file>
+ <file>qml/qmlsurfacegallery/SpectrogramData.qml</file>
+ <file>qml/qmlsurfacegallery/SurfaceHeightMap.qml</file>
+ <file>qml/qmlsurfacegallery/SurfaceOscilloscope.qml</file>
+ <file>qml/qmlsurfacegallery/SurfaceSpectrogram.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmlsurfacelayers/CMakeLists.txt b/examples/datavisualization/qmlsurfacelayers/CMakeLists.txt
deleted file mode 100644
index d011aa03..00000000
--- a/examples/datavisualization/qmlsurfacelayers/CMakeLists.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(qmlsurfacelayers LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Qml)
-find_package(Qt6 COMPONENTS Quick)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(qmlsurfacelayers
- main.cpp
-)
-set_target_properties(qmlsurfacelayers PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(qmlsurfacelayers PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Qml
- Qt::Quick
- Qt::DataVisualization
-)
-
-set(qmlsurfacelayers_resource_files
- "qml/qmlsurfacelayers/main.qml"
-)
-
-qt6_add_resources(qmlsurfacelayers "qmlsurfacelayers"
- PREFIX
- "/"
- FILES
- ${qmlsurfacelayers_resource_files}
-)
-set(qmlsurfacelayers1_resource_files
- "layer_1.png"
- "layer_2.png"
- "layer_3.png"
-)
-
-qt6_add_resources(qmlsurfacelayers "qmlsurfacelayers1"
- PREFIX
- "/heightmaps"
- FILES
- ${qmlsurfacelayers1_resource_files}
-)
-
-install(TARGETS qmlsurfacelayers
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/qmlsurfacelayers/doc/images/qmlsurfacelayers-example.png b/examples/datavisualization/qmlsurfacelayers/doc/images/qmlsurfacelayers-example.png
deleted file mode 100644
index c5a48fcb..00000000
--- a/examples/datavisualization/qmlsurfacelayers/doc/images/qmlsurfacelayers-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc b/examples/datavisualization/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc
deleted file mode 100644
index f2cbd2c9..00000000
--- a/examples/datavisualization/qmlsurfacelayers/doc/src/qmlsurfacelayers.qdoc
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qmlsurfacelayers
- \title Qt Quick 2 Surface Multiseries Example
- \ingroup qtdatavisualization_examples
- \brief Using multiple series with Surface3D in a QML application.
-
- The Qt Quick 2 surface example shows how to make a 3D surface plot displaying 3 layers using
- Surface3D with Qt Quick 2.
-
- \image qmlsurfacelayers-example.png
-
- The focus in this example is on generating a multiseries surface plot from 3 different height
- map images, so in this section we skip explaining the application creation. For a more detailed
- QML example documentation, see \l{Qt Quick 2 Scatter Example}.
-
- \include examples-run.qdocinc
-
- \section1 Adding Data to the Graph
-
- This example shows how to add several surface series to one graph using using
- HeightMapSurfaceDataProxies and how to control their visibilities individually.
-
- Let's start by creating a specific gradient for each layer:
-
- \snippet qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 0
-
- Then we'll create the series themselves. It happens simply by adding 3 separate Surface3DSeries
- to the Surface3D graph as children:
-
- \dots 0
- \snippet qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 1
- \dots 0
-
- You'll notice we added the created gradients to the \c baseGradient properties of the series.
- We could have added them to the \c baseGradients property of the Theme3D in Surface3D instead,
- but doing it this way ensures each gradient is applied to a correct series:
-
- \snippet qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 2
- \dots
-
- \section1 Controlling the Graph
-
- Let's add some checkboxes to control the visibility of layers:
-
- \snippet qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 3
-
- We don't need to do anything on the \c onCheckedChanged as we bound the \c checked state to
- the \c visible property of the series directly:
-
- \dots 0
- \snippet qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 4
- \dots 0
-
- Let's add some more checkboxes to control how the layers are displayed, when visible:
-
- \snippet qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 5
-
- In addition to these we have three buttons, one of which is of special interest to us. It is
- used to control whether we want to slice into only one layer, or all of them:
-
- \snippet qmlsurfacelayers/qml/qmlsurfacelayers/main.qml 6
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/qmlsurfacelayers/layer_1.png b/examples/datavisualization/qmlsurfacelayers/layer_1.png
deleted file mode 100644
index 9138c710..00000000
--- a/examples/datavisualization/qmlsurfacelayers/layer_1.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/layer_2.png b/examples/datavisualization/qmlsurfacelayers/layer_2.png
deleted file mode 100644
index 3af154e2..00000000
--- a/examples/datavisualization/qmlsurfacelayers/layer_2.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/layer_3.png b/examples/datavisualization/qmlsurfacelayers/layer_3.png
deleted file mode 100644
index 796df64d..00000000
--- a/examples/datavisualization/qmlsurfacelayers/layer_3.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacelayers/main.cpp b/examples/datavisualization/qmlsurfacelayers/main.cpp
deleted file mode 100644
index 383e68ef..00000000
--- a/examples/datavisualization/qmlsurfacelayers/main.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtDataVisualization/qutils.h>
-
-#include <QtGui/QGuiApplication>
-#include <QtCore/QDir>
-#include <QtQuick/QQuickView>
-#include <QtQml/QQmlEngine>
-
-int main(int argc, char *argv[])
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QGuiApplication app(argc, argv);
-
- QQuickView viewer;
-
- // Enable antialiasing in direct rendering mode
- viewer.setFormat(qDefaultSurfaceFormat(true));
-
- // The following are needed to make examples run without having to install the module
- // in desktop environments.
-#ifdef Q_OS_WIN
- QString extraImportPath(QStringLiteral("%1/../../../../%2"));
-#else
- QString extraImportPath(QStringLiteral("%1/../../../%2"));
-#endif
- viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
- QString::fromLatin1("qml")));
-
- viewer.setSource(QUrl("qrc:/qml/qmlsurfacelayers/main.qml"));
-
- viewer.setTitle(QStringLiteral("3-layered Terrain"));
- viewer.setResizeMode(QQuickView::SizeRootObjectToView);
- viewer.show();
-
- return app.exec();
-}
diff --git a/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml b/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml
deleted file mode 100644
index b6595bf6..00000000
--- a/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml
+++ /dev/null
@@ -1,309 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import QtDataVisualization 1.2
-import "."
-
-Item {
- id: mainview
- width: 1280
- height: 720
-
- property real fontSize: 12
-
- Item {
- id: surfaceView
- width: mainview.width - buttonLayout.width
- height: mainview.height
- anchors.right: mainview.right;
-
- //! [0]
- ColorGradient {
- id: layerOneGradient
- ColorGradientStop { position: 0.0; color: "black" }
- ColorGradientStop { position: 0.31; color: "tan" }
- ColorGradientStop { position: 0.32; color: "green" }
- ColorGradientStop { position: 0.40; color: "darkslategray" }
- ColorGradientStop { position: 1.0; color: "white" }
- }
-
- ColorGradient {
- id: layerTwoGradient
- ColorGradientStop { position: 0.315; color: "blue" }
- ColorGradientStop { position: 0.33; color: "white" }
- }
-
- ColorGradient {
- id: layerThreeGradient
- ColorGradientStop { position: 0.0; color: "red" }
- ColorGradientStop { position: 0.15; color: "black" }
- }
- //! [0]
-
- Surface3D {
- id: surfaceLayers
- width: surfaceView.width
- height: surfaceView.height
- theme: Theme3D {
- type: Theme3D.ThemeEbony
- font.pointSize: 35
- colorStyle: Theme3D.ColorStyleRangeGradient
- }
- shadowQuality: AbstractGraph3D.ShadowQualityNone
- selectionMode: AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice
- scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeft
- axisY.min: 20
- axisY.max: 200
- axisX.segmentCount: 5
- axisX.subSegmentCount: 2
- axisX.labelFormat: "%i"
- axisZ.segmentCount: 5
- axisZ.subSegmentCount: 2
- axisZ.labelFormat: "%i"
- axisY.segmentCount: 5
- axisY.subSegmentCount: 2
- axisY.labelFormat: "%i"
-
- //! [1]
- //! [2]
- Surface3DSeries {
- id: layerOneSeries
- baseGradient: layerOneGradient
- //! [2]
- HeightMapSurfaceDataProxy {
- heightMapFile: ":/heightmaps/layer_1.png"
- }
- flatShadingEnabled: false
- drawMode: Surface3DSeries.DrawSurface
- //! [4]
- visible: layerOneToggle.checked // bind to checkbox state
- //! [4]
- }
-
- Surface3DSeries {
- id: layerTwoSeries
- baseGradient: layerTwoGradient
- HeightMapSurfaceDataProxy {
- heightMapFile: ":/heightmaps/layer_2.png"
- }
- flatShadingEnabled: false
- drawMode: Surface3DSeries.DrawSurface
- visible: layerTwoToggle.checked // bind to checkbox state
- }
-
- Surface3DSeries {
- id: layerThreeSeries
- baseGradient: layerThreeGradient
- HeightMapSurfaceDataProxy {
- heightMapFile: ":/heightmaps/layer_3.png"
- }
- flatShadingEnabled: false
- drawMode: Surface3DSeries.DrawSurface
- visible: layerThreeToggle.checked // bind to checkbox state
- }
- //! [1]
- }
- }
-
- ColumnLayout {
- id: buttonLayout
- anchors.top: parent.top
- anchors.left: parent.left
- spacing: 0
-
- //! [3]
- GroupBox {
- Layout.fillWidth: true
- Column {
- spacing: 10
-
- Label {
- font.pointSize: fontSize
- font.bold: true
- text: "Layer Selection"
- }
-
- CheckBox {
- id: layerOneToggle
- checked: true
- text: "Show Ground Layer"
- }
-
- CheckBox {
- id: layerTwoToggle
- checked: true
- text: "Show Sea Layer"
- }
-
- CheckBox {
- id: layerThreeToggle
- checked: true
- text: "Show Tectonic Layer"
- }
- }
- }
- //! [3]
-
- //! [5]
- GroupBox {
- Layout.fillWidth: true
- Column {
- spacing: 10
-
- Label {
- font.pointSize: fontSize
- font.bold: true
- text: "Layer Style"
- }
-
- CheckBox {
- id: layerOneGrid
- text: "Show Ground as Grid"
- onCheckedChanged: {
- if (checked)
- layerOneSeries.drawMode = Surface3DSeries.DrawWireframe
- else
- layerOneSeries.drawMode = Surface3DSeries.DrawSurface
- }
- }
-
- CheckBox {
- id: layerTwoGrid
- text: "Show Sea as Grid"
-
- onCheckedChanged: {
- if (checked)
- layerTwoSeries.drawMode = Surface3DSeries.DrawWireframe
- else
- layerTwoSeries.drawMode = Surface3DSeries.DrawSurface
- }
- }
-
- CheckBox {
- id: layerThreeGrid
- text: "Show Tectonic as Grid"
- onCheckedChanged: {
- if (checked)
- layerThreeSeries.drawMode = Surface3DSeries.DrawWireframe
- else
- layerThreeSeries.drawMode = Surface3DSeries.DrawSurface
- }
- }
- }
- }
- //! [5]
-
- //! [6]
- Button {
- id: sliceButton
- text: "Slice All Layers"
- Layout.fillWidth: true
- Layout.minimumHeight: 40
- onClicked: {
- if (surfaceLayers.selectionMode & AbstractGraph3D.SelectionMultiSeries) {
- surfaceLayers.selectionMode = AbstractGraph3D.SelectionRow
- | AbstractGraph3D.SelectionSlice
- text = "Slice All Layers"
- } else {
- surfaceLayers.selectionMode = AbstractGraph3D.SelectionRow
- | AbstractGraph3D.SelectionSlice
- | AbstractGraph3D.SelectionMultiSeries
- text = "Slice One Layer"
- }
- }
- }
- //! [6]
-
- Button {
- id: shadowButton
- Layout.fillWidth: true
- Layout.minimumHeight: 40
- text: surfaceLayers.shadowsSupported ? "Show Shadows" : "Shadows not supported"
- enabled: surfaceLayers.shadowsSupported
- onClicked: {
- if (surfaceLayers.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
- surfaceLayers.shadowQuality = AbstractGraph3D.ShadowQualityLow
- text = "Hide Shadows"
- } else {
- surfaceLayers.shadowQuality = AbstractGraph3D.ShadowQualityNone
- text = "Show Shadows"
- }
- }
- }
-
- Button {
- id: renderModeButton
- text: "Switch Render Mode"
- Layout.fillWidth: true
- Layout.minimumHeight: 40
- onClicked: {
- var modeText = "Indirect "
- var aaText
- if (surfaceLayers.renderingMode === AbstractGraph3D.RenderIndirect &&
- surfaceLayers.msaaSamples === 0) {
- surfaceLayers.renderingMode = AbstractGraph3D.RenderDirectToBackground
- modeText = "BackGround "
- } else if (surfaceLayers.renderingMode === AbstractGraph3D.RenderIndirect &&
- surfaceLayers.msaaSamples === 4) {
- surfaceLayers.renderingMode = AbstractGraph3D.RenderIndirect
- surfaceLayers.msaaSamples = 0
- } else if (surfaceLayers.renderingMode === AbstractGraph3D.RenderIndirect &&
- surfaceLayers.msaaSamples === 8) {
- surfaceLayers.renderingMode = AbstractGraph3D.RenderIndirect
- surfaceLayers.msaaSamples = 4
- } else {
- surfaceLayers.renderingMode = AbstractGraph3D.RenderIndirect
- surfaceLayers.msaaSamples = 8
- }
-
- if (surfaceLayers.msaaSamples <= 0) {
- aaText = "No AA"
- } else {
- aaText = surfaceLayers.msaaSamples + "xMSAA"
- }
-
- renderLabel.text = modeText + aaText
- }
- }
-
- TextField {
- id: renderLabel
- font.pointSize: fontSize
- Layout.fillWidth: true
- Layout.minimumHeight: 40
- color: "gray"
- enabled: false
- horizontalAlignment: TextInput.AlignHCenter
- text: "Indirect, " + surfaceLayers.msaaSamples + "xMSAA"
- }
- }
-}
diff --git a/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.pro b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.pro
deleted file mode 100644
index 2bfa904d..00000000
--- a/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-# The .cpp file which was generated for your project. Feel free to hack it.
-SOURCES += main.cpp
-
-RESOURCES += qmlsurfacelayers.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/* \
- qml/qmlsurfacelayers/*
diff --git a/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.qrc b/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.qrc
deleted file mode 100644
index 71c2ea33..00000000
--- a/examples/datavisualization/qmlsurfacelayers/qmlsurfacelayers.qrc
+++ /dev/null
@@ -1,10 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>qml/qmlsurfacelayers/main.qml</file>
- </qresource>
- <qresource prefix="/heightmaps">
- <file>layer_1.png</file>
- <file>layer_2.png</file>
- <file>layer_3.png</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/rotations/CMakeLists.txt b/examples/datavisualization/rotations/CMakeLists.txt
deleted file mode 100644
index 620d34b3..00000000
--- a/examples/datavisualization/rotations/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(rotations LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(rotations
- main.cpp
- scatterdatamodifier.cpp scatterdatamodifier.h
-)
-set_target_properties(rotations PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(rotations PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-set(rotations_resource_files
- "mesh/largesphere.obj"
- "mesh/narrowarrow.obj"
-)
-
-qt6_add_resources(rotations "rotations"
- PREFIX
- "/"
- FILES
- ${rotations_resource_files}
-)
-
-install(TARGETS rotations
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/rotations/doc/images/rotations-example.png b/examples/datavisualization/rotations/doc/images/rotations-example.png
deleted file mode 100644
index 74bebbf7..00000000
--- a/examples/datavisualization/rotations/doc/images/rotations-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/rotations/doc/src/rotations.qdoc b/examples/datavisualization/rotations/doc/src/rotations.qdoc
deleted file mode 100644
index 5f1b8887..00000000
--- a/examples/datavisualization/rotations/doc/src/rotations.qdoc
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example rotations
- \title Rotations Example
- \ingroup qtdatavisualization_examples
- \brief Using rotated scatter items.
-
- This example shows how to do the following:
-
- \list
- \li Use item rotations
- \li Use custom item meshes
- \li Use range gradient to color the series
- \endlist
-
- For more basic example about using Qt Data Visualization graphs, see \l{Bars Example}.
-
- \image rotations-example.png
-
- \include examples-run.qdocinc
-
- \section1 Using Rotations
-
- In this example we want to orient the arrow items tangentially to the origin. This requires
- rotating them, which can be achieved by specifying rotation quaternion to each item:
-
- \snippet rotations/scatterdatamodifier.cpp 0
- \snippet rotations/scatterdatamodifier.cpp 1
- \snippet rotations/scatterdatamodifier.cpp 2
-
- Since the items need to be rotated along two axes, we define two rotation quaternions, one
- for Y-axis and one for Z-axis, and then multiply these together to get the total rotation,
- which we set to the data item.
-
- \section1 Using Custom Item Meshes
-
- The narrow arrow mesh we use for magnetic field arrow items is not a standard mesh. Instead
- we supply our own \c{narrowarrow.obj} file which contains the object definition for the mesh
- in \c Wavefront obj format:
-
- \snippet rotations/scatterdatamodifier.cpp 3
-
- \section1 Using Range Gradient
-
- Setting the color style to range gradient in a series means that the item is colored according
- to its relative Y-value on the visible Y-coordinate range. We want the arrows on the bottom
- part of the graph to be darker and gradually get lighter higher they are, so we define a
- range gradient with black color at the position 0.0 and white color at the position 1.0:
-
- \snippet rotations/scatterdatamodifier.cpp 4
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/rotations/main.cpp b/examples/datavisualization/rotations/main.cpp
deleted file mode 100644
index 1f225bab..00000000
--- a/examples/datavisualization/rotations/main.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "scatterdatamodifier.h"
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QPushButton>
-#include <QtWidgets/QSlider>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QMessageBox>
-#include <QtGui/QScreen>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QApplication app(argc, argv);
- Q3DScatter *graph = new Q3DScatter();
- QWidget *container = QWidget::createWindowContainer(graph);
-
- if (!graph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- QSize screenSize = graph->screen()->size();
- container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
- container->setMaximumSize(screenSize);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- QWidget *widget = new QWidget;
- QHBoxLayout *hLayout = new QHBoxLayout(widget);
- QVBoxLayout *vLayout = new QVBoxLayout();
- hLayout->addWidget(container, 1);
- hLayout->addLayout(vLayout);
-
- widget->setWindowTitle(QStringLiteral("Item rotations example - Magnetic field of the sun"));
-
- QPushButton *toggleRotationButton = new QPushButton(widget);
- toggleRotationButton->setText(QStringLiteral("Toggle animation"));
- QPushButton *toggleSunButton = new QPushButton(widget);
- toggleSunButton->setText(QStringLiteral("Toggle Sun"));
-
- QSlider *fieldLinesSlider = new QSlider(Qt::Horizontal, widget);
- fieldLinesSlider->setTickInterval(1);
- fieldLinesSlider->setMinimum(1);
- fieldLinesSlider->setValue(12);
- fieldLinesSlider->setMaximum(128);
-
- QSlider *arrowsSlider = new QSlider(Qt::Horizontal, widget);
- arrowsSlider->setTickInterval(1);
- arrowsSlider->setMinimum(8);
- arrowsSlider->setValue(16);
- arrowsSlider->setMaximum(32);
-
- vLayout->addWidget(toggleRotationButton);
- vLayout->addWidget(toggleSunButton);
- vLayout->addWidget(new QLabel(QStringLiteral("Field Lines (1 - 128):")));
- vLayout->addWidget(fieldLinesSlider);
- vLayout->addWidget(new QLabel(QStringLiteral("Arrows per line (8 - 32):")));
- vLayout->addWidget(arrowsSlider, 1, Qt::AlignTop);
-
- ScatterDataModifier *modifier = new ScatterDataModifier(graph);
-
- QObject::connect(toggleRotationButton, &QPushButton::clicked, modifier,
- &ScatterDataModifier::toggleRotation);
- QObject::connect(toggleSunButton, &QPushButton::clicked, modifier,
- &ScatterDataModifier::toggleSun);
- QObject::connect(fieldLinesSlider, &QSlider::valueChanged, modifier,
- &ScatterDataModifier::setFieldLines);
- QObject::connect(arrowsSlider, &QSlider::valueChanged, modifier,
- &ScatterDataModifier::setArrowsPerLine);
-
- widget->show();
- return app.exec();
-}
diff --git a/examples/datavisualization/rotations/mesh/largesphere.obj b/examples/datavisualization/rotations/mesh/largesphere.obj
deleted file mode 100644
index 63101413..00000000
--- a/examples/datavisualization/rotations/mesh/largesphere.obj
+++ /dev/null
@@ -1,1938 +0,0 @@
-# Blender v2.66 (sub 0) OBJ File: ''
-# www.blender.org
-o Sphere_Sphere.001
-v -1.251476 7.901507 0.000000
-v -2.472136 7.608452 0.000000
-v -3.631924 7.128052 0.000000
-v -4.702282 6.472136 0.000000
-v -5.656854 5.656854 0.000000
-v -6.472136 4.702282 0.000000
-v -7.128052 3.631924 0.000000
-v -7.608452 2.472136 0.000000
-v -7.901507 1.251475 0.000000
-v -8.000000 -0.000001 0.000000
-v -7.901506 -1.251477 0.000000
-v -7.608451 -2.472138 0.000000
-v -7.128051 -3.631927 0.000000
-v -6.472134 -4.702285 0.000000
-v -5.656851 -5.656857 0.000000
-v -4.702279 -6.472138 0.000000
-v -3.631920 -7.128055 0.000000
-v -2.472131 -7.608454 0.000000
-v -1.251470 -7.901508 0.000000
-v -1.190224 7.901506 -0.386729
-v -2.351141 7.608452 -0.763934
-v -3.454165 7.128052 -1.122328
-v -4.472136 6.472136 -1.453087
-v -5.379988 5.656855 -1.748066
-v -6.155366 4.702282 -2.000002
-v -6.779180 3.631924 -2.202692
-v -7.236068 2.472136 -2.351143
-v -7.514779 1.251475 -2.441702
-v -7.608452 -0.000001 -2.472138
-v -7.514779 -1.251477 -2.441702
-v -7.236067 -2.472138 -2.351143
-v -6.779179 -3.631927 -2.202691
-v -6.155365 -4.702285 -2.000002
-v -5.379985 -5.656857 -1.748065
-v -4.472132 -6.472138 -1.453086
-v -3.454160 -7.128055 -1.122327
-v -2.351136 -7.608454 -0.763933
-v -1.190218 -7.901508 -0.386727
-v 0.000006 -8.000000 0.000000
-v -1.012464 7.901506 -0.735603
-v -1.999999 7.608452 -1.453089
-v -2.938287 7.128052 -2.134795
-v -3.804224 6.472136 -2.763936
-v -4.576490 5.656855 -3.325019
-v -5.236066 4.702282 -3.804230
-v -5.766714 3.631924 -4.189768
-v -6.155365 2.472136 -4.472140
-v -6.392451 1.251475 -4.644393
-v -6.472135 -0.000001 -4.702287
-v -6.392451 -1.251477 -4.644393
-v -6.155365 -2.472138 -4.472139
-v -5.766713 -3.631927 -4.189767
-v -5.236064 -4.702285 -3.804229
-v -4.576487 -5.656857 -3.325018
-v -3.804221 -6.472138 -2.763934
-v -2.938283 -7.128055 -2.134793
-v -1.999994 -7.608454 -1.453086
-v -1.012459 -7.901508 -0.735599
-v -0.735596 7.901506 -1.012470
-v -1.453082 7.608452 -2.000005
-v -2.134788 7.128052 -2.938294
-v -2.763928 6.472136 -3.804231
-v -3.325012 5.656855 -4.576497
-v -3.804222 4.702282 -5.236073
-v -4.189760 3.631924 -5.766721
-v -4.472132 2.472136 -6.155373
-v -4.644385 1.251475 -6.392459
-v -4.702279 -0.000001 -6.472142
-v -4.644385 -1.251477 -6.392458
-v -4.472132 -2.472138 -6.155372
-v -4.189760 -3.631927 -5.766720
-v -3.804221 -4.702285 -5.236072
-v -3.325010 -5.656857 -4.576494
-v -2.763927 -6.472138 -3.804229
-v -2.134786 -7.128055 -2.938290
-v -1.453079 -7.608454 -2.000001
-v -0.735593 -7.901508 -1.012466
-v -0.386723 7.901506 -1.190230
-v -0.763927 7.608452 -2.351147
-v -1.122321 7.128052 -3.454171
-v -1.453079 6.472136 -4.472141
-v -1.748058 5.656855 -5.379994
-v -1.999994 4.702282 -6.155373
-v -2.202683 3.631924 -6.779186
-v -2.351135 2.472136 -7.236074
-v -2.441693 1.251475 -7.514785
-v -2.472130 -0.000001 -7.608459
-v -2.441693 -1.251477 -7.514784
-v -2.351135 -2.472138 -7.236073
-v -2.202683 -3.631927 -6.779185
-v -1.999993 -4.702285 -6.155371
-v -1.748057 -5.656857 -5.379991
-v -1.453079 -6.472138 -4.472138
-v -1.122320 -7.128055 -3.454167
-v -0.763926 -7.608454 -2.351142
-v -0.386721 -7.901508 -1.190225
-v 0.000007 7.901506 -1.251482
-v 0.000007 7.608452 -2.472142
-v 0.000007 7.128052 -3.631930
-v 0.000008 6.472136 -4.702287
-v 0.000008 5.656855 -5.656860
-v 0.000008 4.702282 -6.472141
-v 0.000008 3.631924 -7.128057
-v 0.000008 2.472136 -7.608458
-v 0.000009 1.251475 -7.901512
-v 0.000009 -0.000001 -8.000006
-v 0.000009 -1.251477 -7.901511
-v 0.000008 -2.472138 -7.608456
-v 0.000008 -3.631927 -7.128057
-v 0.000008 -4.702285 -6.472139
-v 0.000008 -5.656857 -5.656857
-v 0.000007 -6.472138 -4.702284
-v 0.000007 -7.128055 -3.631926
-v 0.000007 -7.608454 -2.472137
-v 0.000007 -7.901508 -1.251476
-v 0.386736 7.901506 -1.190230
-v 0.763941 7.608452 -2.351147
-v 1.122336 7.128052 -3.454170
-v 1.453094 6.472136 -4.472140
-v 1.748074 5.656855 -5.379993
-v 2.000010 4.702282 -6.155371
-v 2.202699 3.631924 -6.779185
-v 2.351151 2.472136 -7.236073
-v 2.441710 1.251475 -7.514783
-v 2.472147 -0.000001 -7.608457
-v 2.441710 -1.251477 -7.514783
-v 2.351151 -2.472138 -7.236071
-v 2.202699 -3.631927 -6.779184
-v 2.000009 -4.702285 -6.155369
-v 1.748073 -5.656857 -5.379990
-v 1.453093 -6.472138 -4.472137
-v 1.122334 -7.128055 -3.454166
-v 0.763939 -7.608454 -2.351141
-v 0.386734 -7.901508 -1.190225
-v 0.735610 7.901506 -1.012470
-v 1.453096 7.608452 -2.000005
-v 2.134803 7.128052 -2.938292
-v 2.763942 6.472136 -3.804229
-v 3.325027 5.656855 -4.576495
-v 3.804237 4.702282 -5.236070
-v 4.189775 3.631924 -5.766718
-v 4.472148 2.472136 -6.155370
-v 4.644401 1.251475 -6.392455
-v 4.702294 -0.000001 -6.472139
-v 4.644400 -1.251477 -6.392455
-v 4.472147 -2.472138 -6.155369
-v 4.189774 -3.631927 -5.766717
-v 3.804236 -4.702285 -5.236069
-v 3.325025 -5.656857 -4.576492
-v 2.763941 -6.472138 -3.804227
-v 2.134800 -7.128055 -2.938289
-v 1.453092 -7.608454 -2.000000
-v 0.735606 -7.901508 -1.012465
-v 1.012477 7.901506 -0.735602
-v 2.000012 7.608452 -1.453088
-v 2.938301 7.128052 -2.134794
-v 3.804237 6.472136 -2.763933
-v 4.576503 5.656855 -3.325017
-v 5.236080 4.702282 -3.804226
-v 5.766727 3.631924 -4.189765
-v 6.155380 2.472136 -4.472136
-v 6.392465 1.251475 -4.644389
-v 6.472148 -0.000001 -4.702283
-v 6.392465 -1.251477 -4.644389
-v 6.155378 -2.472138 -4.472136
-v 5.766726 -3.631927 -4.189764
-v 5.236078 -4.702285 -3.804225
-v 4.576500 -5.656857 -3.325016
-v 3.804235 -6.472138 -2.763932
-v 2.938297 -7.128055 -2.134791
-v 2.000007 -7.608454 -1.453085
-v 1.012472 -7.901508 -0.735599
-v 1.190237 7.901506 -0.386729
-v 2.351154 7.608452 -0.763933
-v 3.454178 7.128052 -1.122326
-v 4.472147 6.472136 -1.453085
-v 5.380000 5.656855 -1.748063
-v 6.155379 4.702282 -1.999998
-v 6.779192 3.631924 -2.202688
-v 7.236081 2.472136 -2.351139
-v 7.514791 1.251475 -2.441698
-v 7.608464 -0.000001 -2.472134
-v 7.514791 -1.251477 -2.441698
-v 7.236079 -2.472138 -2.351139
-v 6.779191 -3.631927 -2.202688
-v 6.155377 -4.702285 -1.999998
-v 5.379997 -5.656857 -1.748063
-v 4.472144 -6.472138 -1.453084
-v 3.454173 -7.128055 -1.122325
-v 2.351148 -7.608454 -0.763931
-v 1.190231 -7.901508 -0.386727
-v 1.251488 7.901506 0.000001
-v 2.472148 7.608452 0.000001
-v 3.631936 7.128052 0.000002
-v 4.702293 6.472136 0.000002
-v 5.656866 5.656855 0.000003
-v 6.472147 4.702282 0.000004
-v 7.128063 3.631924 0.000003
-v 7.608464 2.472136 0.000004
-v 7.901517 1.251475 0.000004
-v 8.000011 -0.000001 0.000004
-v 7.901517 -1.251477 0.000004
-v 7.608462 -2.472138 0.000004
-v 7.128062 -3.631927 0.000003
-v 6.472145 -4.702285 0.000004
-v 5.656862 -5.656857 0.000002
-v 4.702290 -6.472138 0.000002
-v 3.631932 -7.128055 0.000002
-v 2.472143 -7.608454 0.000001
-v 1.251483 -7.901508 0.000001
-v 1.190236 7.901506 0.386730
-v 2.351153 7.608452 0.763935
-v 3.454176 7.128052 1.122330
-v 4.472146 6.472136 1.453089
-v 5.379998 5.656855 1.748069
-v 6.155376 4.702282 2.000005
-v 6.779190 3.631924 2.202694
-v 7.236078 2.472136 2.351147
-v 7.514788 1.251475 2.441705
-v 7.608462 -0.000001 2.472141
-v 7.514788 -1.251477 2.441705
-v 7.236076 -2.472138 2.351146
-v 6.779189 -3.631927 2.202693
-v 6.155375 -4.702285 2.000004
-v 5.379995 -5.656857 1.748067
-v 4.472143 -6.472138 1.453088
-v 3.454172 -7.128055 1.122328
-v 2.351147 -7.608454 0.763933
-v 1.190231 -7.901508 0.386728
-v 1.012476 7.901506 0.735603
-v 2.000010 7.608452 1.453090
-v 2.938298 7.128052 2.134796
-v 3.804235 6.472136 2.763937
-v 4.576499 5.656855 3.325021
-v 5.236075 4.702282 3.804232
-v 5.766723 3.631924 4.189770
-v 6.155375 2.472136 4.472143
-v 6.392460 1.251475 4.644395
-v 6.472144 -0.000001 4.702289
-v 6.392460 -1.251477 4.644395
-v 6.155374 -2.472138 4.472141
-v 5.766722 -3.631927 4.189769
-v 5.236074 -4.702285 3.804231
-v 4.576497 -5.656857 3.325018
-v 3.804232 -6.472138 2.763935
-v 2.938295 -7.128055 2.134794
-v 2.000006 -7.608454 1.453086
-v 1.012471 -7.901508 0.735600
-v 0.735608 7.901506 1.012471
-v 1.453094 7.608452 2.000006
-v 2.134799 7.128052 2.938294
-v 2.763939 6.472136 3.804232
-v 3.325022 5.656855 4.576497
-v 3.804231 4.702282 5.236074
-v 4.189770 3.631924 5.766721
-v 4.472141 2.472136 6.155374
-v 4.644393 1.251475 6.392459
-v 4.702287 -0.000001 6.472143
-v 4.644393 -1.251477 6.392459
-v 4.472141 -2.472138 6.155372
-v 4.189768 -3.631927 5.766720
-v 3.804231 -4.702285 5.236073
-v 3.325021 -5.656857 4.576494
-v 2.763937 -6.472138 3.804228
-v 2.134797 -7.128055 2.938291
-v 1.453090 -7.608454 2.000001
-v 0.735605 -7.901508 1.012466
-v 0.386735 7.901506 1.190230
-v 0.763939 7.608452 2.351147
-v 1.122332 7.128052 3.454171
-v 1.453090 6.472136 4.472141
-v 1.748069 5.656855 5.379993
-v 2.000002 4.702282 6.155373
-v 2.202693 3.631924 6.779186
-v 2.351144 2.472136 7.236073
-v 2.441703 1.251475 7.514784
-v 2.472139 -0.000001 7.608459
-v 2.441703 -1.251477 7.514784
-v 2.351144 -2.472138 7.236072
-v 2.202692 -3.631927 6.779184
-v 2.000003 -4.702285 6.155371
-v 1.748068 -5.656857 5.379990
-v 1.453089 -6.472138 4.472137
-v 1.122331 -7.128055 3.454167
-v 0.763937 -7.608454 2.351141
-v 0.386733 -7.901508 1.190225
-v 0.000005 7.901506 1.251482
-v 0.000005 7.608452 2.472142
-v 0.000004 7.128052 3.631929
-v 0.000003 6.472136 4.702286
-v 0.000003 5.656855 5.656859
-v 0.000001 4.702282 6.472140
-v 0.000002 3.631924 7.128057
-v 0.000001 2.472136 7.608456
-v 0.000001 1.251475 7.901510
-v 0.000000 -0.000001 8.000005
-v 0.000001 -1.251477 7.901510
-v 0.000002 -2.472138 7.608455
-v 0.000001 -3.631927 7.128055
-v 0.000002 -4.702285 6.472138
-v 0.000003 -5.656857 5.656855
-v 0.000004 -6.472138 4.702283
-v 0.000004 -7.128055 3.631925
-v 0.000005 -7.608454 2.472136
-v 0.000006 -7.901508 1.251476
-v -0.386724 7.901506 1.190230
-v -0.763929 7.608452 2.351146
-v -1.122324 7.128052 3.454169
-v -1.453083 6.472136 4.472139
-v -1.748063 5.656855 5.379992
-v -2.000000 4.702282 6.155369
-v -2.202688 3.631924 6.779183
-v -2.351142 2.472136 7.236070
-v -2.441700 1.251475 7.514781
-v -2.472137 -0.000001 7.608455
-v -2.441700 -1.251477 7.514781
-v -2.351140 -2.472138 7.236069
-v -2.202689 -3.631927 6.779181
-v -1.999999 -4.702285 6.155367
-v -1.748061 -5.656857 5.379988
-v -1.453082 -6.472138 4.472136
-v -1.122323 -7.128055 3.454165
-v -0.763927 -7.608454 2.351140
-v -0.386722 -7.901508 1.190224
-v -0.735597 7.901506 1.012470
-v -1.453084 7.608452 2.000003
-v -2.134790 7.128052 2.938291
-v -2.763931 6.472136 3.804227
-v -3.325015 5.656855 4.576493
-v -3.804227 4.702282 5.236067
-v -4.189764 3.631924 5.766716
-v -4.472137 2.472136 6.155366
-v -4.644390 1.251475 6.392452
-v -4.702284 -0.000001 6.472136
-v -4.644390 -1.251477 6.392452
-v -4.472136 -2.472138 6.155365
-v -4.189764 -3.631927 5.766714
-v -3.804225 -4.702285 5.236066
-v -3.325012 -5.656857 4.576489
-v -2.763929 -6.472138 3.804224
-v -2.134788 -7.128055 2.938287
-v -1.453080 -7.608454 1.999999
-v -0.735594 -7.901508 1.012465
-v 0.000001 8.000000 0.000004
-v -1.012464 7.901506 0.735602
-v -1.999999 7.608452 1.453087
-v -2.938287 7.128052 2.134792
-v -3.804225 6.472136 2.763931
-v -4.576491 5.656855 3.325015
-v -5.236069 4.702282 3.804223
-v -5.766715 3.631924 4.189762
-v -6.155367 2.472136 4.472132
-v -6.392453 1.251475 4.644385
-v -6.472137 -0.000001 4.702279
-v -6.392453 -1.251477 4.644385
-v -6.155365 -2.472138 4.472132
-v -5.766714 -3.631927 4.189760
-v -5.236066 -4.702285 3.804223
-v -4.576488 -5.656857 3.325012
-v -3.804222 -6.472138 2.763929
-v -2.938284 -7.128055 2.134789
-v -1.999995 -7.608454 1.453083
-v -1.012460 -7.901508 0.735598
-v -1.190224 7.901506 0.386728
-v -2.351140 7.608452 0.763932
-v -3.454164 7.128052 1.122325
-v -4.472135 6.472136 1.453082
-v -5.379988 5.656855 1.748062
-v -6.155366 4.702282 1.999995
-v -6.779179 3.631924 2.202685
-v -7.236067 2.472136 2.351135
-v -7.514778 1.251475 2.441694
-v -7.608452 -0.000001 2.472130
-v -7.514778 -1.251477 2.441694
-v -7.236065 -2.472138 2.351135
-v -6.779178 -3.631927 2.202684
-v -6.155364 -4.702285 1.999995
-v -5.379983 -5.656857 1.748060
-v -4.472131 -6.472138 1.453082
-v -3.454160 -7.128055 1.122324
-v -2.351135 -7.608454 0.763930
-v -1.190218 -7.901508 0.386726
-vt 0.035483 0.289114
-vt 0.042491 0.337738
-vt 0.007397 0.296413
-vt 0.063422 0.533643
-vt 0.068439 0.582662
-vt 0.015908 0.545902
-vt 0.097669 0.776914
-vt 0.111929 0.824070
-vt 0.027296 0.795217
-vt 0.391159 0.929226
-vt 0.461397 0.895775
-vt 0.452242 0.950225
-vt 0.026572 0.240871
-vt 0.004734 0.246573
-vt 0.058567 0.484592
-vt 0.014398 0.495993
-vt 0.087726 0.728878
-vt 0.023823 0.745426
-vt 0.270350 0.936037
-vt 0.231553 0.980467
-vt 0.014254 0.193317
-vt 0.001048 0.196795
-vt 0.053639 0.435556
-vt 0.012882 0.446084
-vt 0.080129 0.680372
-vt 0.021272 0.695580
-vt 0.178869 0.909944
-vt 0.068145 0.942733
-vt 0.048386 0.386583
-vt 0.011281 0.396180
-vt 0.073887 0.631595
-vt 0.019234 0.645702
-vt 0.135028 0.869370
-vt 0.042415 0.894305
-vt 0.009500 0.346287
-vt 0.017489 0.595807
-vt 0.032618 0.844897
-vt 0.484179 0.902186
-vt 0.550590 0.948315
-vt 1.004734 0.246573
-vt 1.007397 0.296413
-vt 0.982704 0.246140
-vt 1.014398 0.495993
-vt 1.015908 0.545902
-vt 0.969883 0.495119
-vt 1.023823 0.745426
-vt 1.027296 0.795217
-vt 0.957447 0.744128
-vt 1.231553 0.980467
-vt 0.750122 0.974207
-vt 1.001048 0.196795
-vt 0.987598 0.196530
-vt 1.012882 0.446084
-vt 0.971892 0.445278
-vt 1.021272 0.695580
-vt 0.960802 0.694395
-vt 1.068145 0.942733
-vt 0.901563 0.939596
-vt 1.011281 0.396180
-vt 0.974014 0.395447
-vt 1.019234 0.645702
-vt 0.963490 0.644610
-vt 1.042415 0.894305
-vt 0.933349 0.892198
-vt 1.009500 0.346287
-vt 0.976377 0.345635
-vt 1.017489 0.595807
-vt 0.965794 0.594793
-vt 1.032618 0.844897
-vt 0.945957 0.843211
-vt 0.979169 0.295858
-vt 0.967884 0.544959
-vt 0.952893 0.793765
-vt 0.960930 0.239587
-vt 0.925822 0.482052
-vt 0.894284 0.725297
-vt 0.716363 0.929856
-vt 0.974473 0.192535
-vt 0.931207 0.433203
-vt 0.902436 0.677050
-vt 0.801451 0.904132
-vt 0.936960 0.384433
-vt 0.909171 0.628493
-vt 0.844888 0.864413
-vt 0.943427 0.335818
-vt 0.915075 0.579756
-vt 0.868695 0.819731
-vt 0.951128 0.287472
-vt 0.920529 0.530922
-vt 0.883697 0.773009
-vt 0.509882 0.901680
-vt 0.603672 0.925341
-vt 0.939868 0.227168
-vt 0.882765 0.457977
-vt 0.837646 0.692981
-vt 0.690972 0.886830
-vt 0.962264 0.185007
-vt 0.891191 0.410771
-vt 0.848554 0.646630
-vt 0.746350 0.860374
-vt 0.900372 0.363822
-vt 0.857974 0.599764
-vt 0.782623 0.823943
-vt 0.910879 0.317332
-vt 0.866529 0.552601
-vt 0.806908 0.782514
-vt 0.923572 0.271605
-vt 0.874667 0.505296
-vt 0.824298 0.738476
-vt 0.531785 0.894399
-vt 0.616896 0.895419
-vt 0.840708 0.424882
-vt 0.787319 0.652419
-vt 0.666434 0.846117
-vt 0.951650 0.174333
-vt 0.851788 0.379552
-vt 0.799275 0.607479
-vt 0.706276 0.816232
-vt 0.864196 0.334814
-vt 0.810089 0.562030
-vt 0.735147 0.779653
-vt 0.878757 0.291055
-vt 0.820304 0.516318
-vt 0.756661 0.739218
-vt 0.896714 0.248885
-vt 0.830369 0.470540
-vt 0.773481 0.696510
-vt 0.545835 0.882162
-vt 0.613251 0.864748
-vt 0.920019 0.209353
-vt 0.601814 0.835743
-vt 0.902011 0.186799
-vt 0.798974 0.385208
-vt 0.741339 0.608286
-vt 0.641659 0.808678
-vt 0.812374 0.341530
-vt 0.753261 0.563866
-vt 0.671741 0.774500
-vt 0.827915 0.298950
-vt 0.764518 0.519117
-vt 0.694750 0.736000
-vt 0.846764 0.258126
-vt 0.775586 0.474273
-vt 0.713019 0.694862
-vt 0.551827 0.867272
-vt 0.551336 0.851697
-vt 0.870653 0.220135
-vt 0.786910 0.429557
-vt 0.728181 0.652086
-vt 0.943465 0.161100
-vt 0.886800 0.160336
-vt 0.756203 0.341667
-vt 0.697515 0.564418
-vt 0.616262 0.775491
-vt 0.771631 0.298973
-vt 0.708699 0.519594
-vt 0.639253 0.736889
-vt 0.790354 0.258010
-vt 0.719689 0.474675
-vt 0.657473 0.695657
-vt 0.814109 0.219846
-vt 0.730930 0.429879
-vt 0.672573 0.652794
-vt 0.546100 0.836912
-vt 0.845356 0.186292
-vt 0.742904 0.385443
-vt 0.685664 0.608914
-vt 0.586129 0.809772
-vt 0.938802 0.146131
-vt 0.876174 0.131001
-vt 0.710309 0.297343
-vt 0.654008 0.524127
-vt 0.590087 0.747535
-vt 0.727302 0.254538
-vt 0.663845 0.478153
-vt 0.607276 0.704820
-vt 0.749262 0.214082
-vt 0.673880 0.432264
-vt 0.621259 0.660654
-vt 0.779077 0.177660
-vt 0.684564 0.386653
-vt 0.643951 0.570007
-vt 0.537514 0.823995
-vt 0.820645 0.148333
-vt 0.696450 0.341564
-vt 0.567816 0.787838
-vt 0.658464 0.256085
-vt 0.609517 0.490486
-vt 0.563122 0.725732
-vt 0.700288 0.169995
-vt 0.617324 0.442954
-vt 0.575103 0.679574
-vt 0.625569 0.395564
-vt 0.633223 0.615598
-vt 0.585045 0.632740
-vt 0.737701 0.133357
-vt 0.634697 0.348462
-vt 0.601779 0.538040
-vt 0.526630 0.813733
-vt 0.796084 0.107238
-vt 0.645335 0.301858
-vt 0.547763 0.770746
-vt 0.939113 0.130553
-vt 0.874144 0.100247
-vt 0.563421 0.466357
-vt 0.535483 0.710885
-vt 0.675759 0.211740
-vt 0.635028 0.130630
-vt 0.568439 0.417338
-vt 0.542491 0.662261
-vt 0.573887 0.368405
-vt 0.593757 0.585502
-vt 0.548386 0.613416
-vt 0.678869 0.090056
-vt 0.580129 0.319628
-vt 0.558567 0.515408
-vt 0.514254 0.806683
-vt 0.770350 0.063964
-vt 0.587726 0.271122
-vt 0.526572 0.759129
-vt 0.946160 0.115905
-vt 0.891158 0.070774
-vt 0.597669 0.223086
-vt 0.611929 0.175930
-vt 0.542415 0.105695
-vt 0.517489 0.404193
-vt 0.509500 0.653713
-vt 0.519234 0.354298
-vt 0.553639 0.564444
-vt 0.511281 0.603820
-vt 0.568145 0.057267
-vt 0.521272 0.304420
-vt 0.514398 0.504007
-vt 0.501048 0.803204
-vt 0.731552 0.019533
-vt 0.523822 0.254574
-vt 0.504734 0.753426
-vt 0.961397 0.104224
-vt 0.952242 0.049775
-vt 0.527296 0.204783
-vt 0.515908 0.454098
-vt 0.507397 0.703586
-vt 0.532618 0.155103
-vt 0.433350 0.107802
-vt 0.465794 0.405207
-vt 0.476377 0.654364
-vt 0.463490 0.355390
-vt 0.512882 0.553916
-vt 0.474014 0.604552
-vt 0.401564 0.060404
-vt 0.460802 0.305605
-vt 0.469884 0.504881
-vt 0.487599 0.803469
-vt 1.250123 0.025793
-vt 0.457447 0.255872
-vt 0.482704 0.753860
-vt 0.984179 0.097813
-vt 1.050589 0.051685
-vt 0.452893 0.206235
-vt 0.467885 0.455040
-vt 0.479169 0.704142
-vt 0.445957 0.156790
-vt 0.344888 0.135587
-vt 0.415075 0.420244
-vt 0.443428 0.664182
-vt 0.409171 0.371507
-vt 0.471892 0.554721
-vt 0.436960 0.615567
-vt 0.250123 0.025793
-vt 0.301452 0.095868
-vt 0.402437 0.322950
-vt 0.425822 0.517948
-vt 0.474473 0.807464
-vt 0.050589 0.051685
-vt 0.216363 0.070144
-vt 0.394284 0.274702
-vt 0.460930 0.760413
-vt 0.009882 0.098319
-vt 0.103671 0.074658
-vt 0.383698 0.226991
-vt 0.420529 0.469078
-vt 0.451128 0.712528
-vt 0.366529 0.447399
-vt 0.410880 0.682668
-vt 0.282623 0.176056
-vt 0.357975 0.400236
-vt 0.431207 0.566797
-vt 0.400372 0.636177
-vt 0.246351 0.139626
-vt 0.348554 0.353370
-vt 0.382765 0.542022
-vt 0.462264 0.814992
-vt 0.190972 0.113170
-vt 0.337646 0.307019
-vt 0.439868 0.772831
-vt 0.031785 0.105600
-vt 0.116896 0.104580
-vt 0.368695 0.180269
-vt 0.324298 0.261524
-vt 0.374667 0.494704
-vt 0.423573 0.728394
-vt 0.306908 0.217486
-vt 0.378757 0.708945
-vt 0.235147 0.220346
-vt 0.310089 0.437969
-vt 0.391191 0.589229
-vt 0.364196 0.665186
-vt 0.206276 0.183767
-vt 0.299275 0.392521
-vt 0.340709 0.575117
-vt 0.451650 0.825666
-vt 0.166434 0.153882
-vt 0.287319 0.347580
-vt 0.420019 0.790647
-vt 0.045835 0.117837
-vt 0.113250 0.135252
-vt 0.273481 0.303490
-vt 0.330370 0.529459
-vt 0.396715 0.751114
-vt 0.256661 0.260781
-vt 0.320304 0.483681
-vt 0.171741 0.225499
-vt 0.253261 0.436134
-vt 0.351788 0.620448
-vt 0.312374 0.658470
-vt 0.141659 0.191322
-vt 0.241339 0.391714
-vt 0.402011 0.813201
-vt 0.101814 0.164257
-vt 0.228181 0.347914
-vt 0.286910 0.570443
-vt 0.370653 0.779864
-vt 0.051826 0.132727
-vt 0.051336 0.148303
-vt 0.213019 0.305137
-vt 0.275586 0.525726
-vt 0.346765 0.741874
-vt 0.194750 0.264000
-vt 0.264518 0.480883
-vt 0.327915 0.701050
-vt 0.139253 0.263111
-vt 0.208699 0.480406
-vt 0.271631 0.701027
-vt 0.116262 0.224508
-vt 0.197515 0.435582
-vt 0.298975 0.614792
-vt 0.443465 0.838899
-vt 0.386800 0.839664
-vt 0.086129 0.190228
-vt 0.185664 0.391086
-vt 0.242904 0.614557
-vt 0.345357 0.813708
-vt 0.046099 0.163088
-vt 0.172573 0.347205
-vt 0.230930 0.570121
-vt 0.314109 0.780154
-vt 0.157473 0.304343
-vt 0.219689 0.525325
-vt 0.290354 0.741990
-vt 0.107276 0.295180
-vt 0.163845 0.521847
-vt 0.227302 0.745462
-vt 0.090087 0.252465
-vt 0.154008 0.475873
-vt 0.256203 0.658333
-vt 0.438803 0.853868
-vt 0.376175 0.868999
-vt 0.067816 0.212161
-vt 0.143951 0.429993
-vt 0.196450 0.658436
-vt 0.320646 0.851667
-vt 0.037514 0.176004
-vt 0.133223 0.384401
-vt 0.184564 0.613347
-vt 0.279077 0.822340
-vt 0.121259 0.339345
-vt 0.173881 0.567736
-vt 0.249262 0.785918
-vt 0.175759 0.788260
-vt 0.063122 0.274267
-vt 0.109517 0.509514
-vt 0.210309 0.702657
-vt 0.439113 0.869447
-vt 0.374144 0.899752
-vt 0.047763 0.229253
-vt 0.101779 0.461959
-vt 0.145335 0.698142
-vt 0.296085 0.892762
-vt 0.026630 0.186267
-vt 0.093757 0.414497
-vt 0.134697 0.651538
-vt 0.237701 0.866643
-vt 0.085045 0.367260
-vt 0.125569 0.604436
-vt 0.200288 0.830006
-vt 0.075103 0.320425
-vt 0.117324 0.557046
-vt 0.995265 0.147143
-vt 1.014254 0.193317
-vt 0.495265 0.852856
-vt 1.009882 0.098319
-vt 1.031785 0.105600
-vt 1.045835 0.117837
-vt 1.051826 0.132727
-vt 1.051336 0.148303
-vt 1.046099 0.163088
-vt 1.037514 0.176004
-vt 0.446160 0.884095
-vt 1.026630 0.186267
-vt 0.158464 0.743915
-vn -0.460158 -0.887814 0.000000
-vn -0.592853 -0.805292 0.000000
-vn -0.437635 -0.887814 -0.142186
-vn -0.951781 -0.306742 0.000000
-vn -0.987854 -0.155217 0.000000
-vn -0.905179 -0.306742 -0.294107
-vn -0.892575 0.450850 0.000000
-vn -0.811670 0.584063 0.000000
-vn -0.848903 0.450850 -0.275826
-vn -0.316050 0.948729 0.000000
-vn -0.164068 0.986419 0.000000
-vn -0.300577 0.948729 -0.097659
-vn -0.316050 -0.948729 0.000000
-vn -0.300577 -0.948729 -0.097659
-vn -0.892575 -0.450850 0.000000
-vn -0.848903 -0.450850 -0.275826
-vn -0.951781 0.306742 0.000000
-vn -0.905179 0.306742 -0.294107
-vn -0.460158 0.887814 0.000000
-vn -0.437635 0.887814 -0.142186
-vn -0.164068 -0.986419 0.000000
-vn -0.156011 -0.986419 -0.050691
-vn -0.811670 -0.584063 0.000000
-vn -0.771935 -0.584063 -0.250801
-vn -0.987854 0.155217 0.000000
-vn -0.939512 0.155217 -0.305246
-vn -0.592853 0.805292 0.000000
-vn -0.563829 0.805292 -0.183203
-vn -0.710959 -0.703207 0.000000
-vn -0.676168 -0.703207 -0.219703
-vn -1.000000 0.000000 0.000000
-vn -0.951048 0.000000 -0.309000
-vn -0.710959 0.703207 0.000000
-vn -0.676168 0.703207 -0.219703
-vn -0.563829 -0.805292 -0.183203
-vn -0.939512 -0.155217 -0.305246
-vn -0.771935 0.584063 -0.250801
-vn -0.156011 0.986419 -0.050691
-vn -0.255684 0.948729 -0.185766
-vn -0.255684 -0.948729 -0.185766
-vn -0.722098 -0.450850 -0.524644
-vn -0.770012 0.306742 -0.559435
-vn -0.372265 0.887814 -0.270455
-vn -0.132725 -0.986419 -0.096408
-vn -0.656667 -0.584063 -0.477096
-vn -0.799188 0.155217 -0.580645
-vn -0.479629 0.805292 -0.348460
-vn -0.575182 -0.703207 -0.417890
-vn -0.809015 0.000000 -0.587756
-vn -0.575182 0.703207 -0.417890
-vn -0.479629 -0.805292 -0.348460
-vn -0.799188 -0.155217 -0.580645
-vn -0.656667 0.584063 -0.477096
-vn -0.372265 -0.887814 -0.270455
-vn -0.770012 -0.306742 -0.559435
-vn -0.722098 0.450850 -0.524644
-vn -0.185766 -0.948729 -0.255684
-vn -0.524644 -0.450850 -0.722098
-vn -0.559435 0.306742 -0.770012
-vn -0.270455 0.887814 -0.372265
-vn -0.096408 -0.986419 -0.132725
-vn -0.477096 -0.584063 -0.656667
-vn -0.580645 0.155217 -0.799188
-vn -0.348460 0.805292 -0.479629
-vn -0.417890 -0.703207 -0.575182
-vn -0.587756 0.000000 -0.809015
-vn -0.417890 0.703207 -0.575182
-vn -0.348460 -0.805292 -0.479629
-vn -0.580645 -0.155217 -0.799188
-vn -0.477096 0.584063 -0.656667
-vn -0.270455 -0.887814 -0.372265
-vn -0.559435 -0.306742 -0.770012
-vn -0.524644 0.450850 -0.722098
-vn -0.132725 0.986419 -0.096408
-vn -0.185766 0.948729 -0.255684
-vn -0.097659 -0.948729 -0.300577
-vn -0.275826 -0.450850 -0.848903
-vn -0.294107 0.306742 -0.905179
-vn -0.142186 0.887814 -0.437635
-vn -0.050691 -0.986419 -0.156011
-vn -0.250801 -0.584063 -0.771935
-vn -0.305246 0.155217 -0.939512
-vn -0.183203 0.805292 -0.563829
-vn -0.219703 -0.703207 -0.676168
-vn -0.309000 0.000000 -0.951048
-vn -0.219703 0.703207 -0.676168
-vn -0.183203 -0.805292 -0.563829
-vn -0.305246 -0.155217 -0.939512
-vn -0.250801 0.584063 -0.771935
-vn -0.142186 -0.887814 -0.437635
-vn -0.294107 -0.306742 -0.905179
-vn -0.275826 0.450850 -0.848903
-vn -0.096408 0.986419 -0.132725
-vn -0.097659 0.948729 -0.300577
-vn 0.000000 -0.450850 -0.892575
-vn 0.000000 0.306742 -0.951781
-vn 0.000000 0.887814 -0.460158
-vn 0.000000 -0.986419 -0.164068
-vn 0.000000 -0.584063 -0.811670
-vn 0.000000 0.155217 -0.987854
-vn 0.000000 0.805292 -0.592853
-vn 0.000000 -0.703207 -0.710959
-vn 0.000000 0.000000 -1.000000
-vn 0.000000 0.703207 -0.710959
-vn 0.000000 -0.805292 -0.592853
-vn 0.000000 -0.155217 -0.987854
-vn 0.000000 0.584063 -0.811670
-vn 0.000000 -0.887814 -0.460158
-vn 0.000000 -0.306742 -0.951781
-vn 0.000000 0.450850 -0.892575
-vn -0.050691 0.986419 -0.156011
-vn 0.000000 0.948729 -0.316050
-vn 0.000000 -0.948729 -0.316050
-vn 0.097659 0.948729 -0.300577
-vn 0.097659 -0.948729 -0.300577
-vn 0.275826 -0.450850 -0.848903
-vn 0.294107 0.306742 -0.905179
-vn 0.142186 0.887814 -0.437635
-vn 0.250801 -0.584063 -0.771935
-vn 0.305246 0.155217 -0.939512
-vn 0.183203 0.805292 -0.563829
-vn 0.219703 -0.703207 -0.676168
-vn 0.309000 0.000000 -0.951048
-vn 0.219703 0.703207 -0.676168
-vn 0.183203 -0.805292 -0.563829
-vn 0.305246 -0.155217 -0.939512
-vn 0.250801 0.584063 -0.771935
-vn 0.000000 0.986419 -0.164068
-vn 0.050691 0.986419 -0.156011
-vn 0.142186 -0.887814 -0.437635
-vn 0.294107 -0.306742 -0.905179
-vn 0.275826 0.450850 -0.848903
-vn 0.050691 -0.986419 -0.156011
-vn 0.185766 -0.948729 -0.255684
-vn 0.524644 -0.450850 -0.722098
-vn 0.559435 0.306742 -0.770012
-vn 0.270455 0.887814 -0.372265
-vn 0.477096 -0.584063 -0.656667
-vn 0.580645 0.155217 -0.799188
-vn 0.348460 0.805292 -0.479629
-vn 0.417890 -0.703207 -0.575182
-vn 0.587756 0.000000 -0.809015
-vn 0.417890 0.703207 -0.575182
-vn 0.348460 -0.805292 -0.479629
-vn 0.580645 -0.155217 -0.799188
-vn 0.477096 0.584063 -0.656667
-vn 0.096408 0.986419 -0.132725
-vn 0.270455 -0.887814 -0.372265
-vn 0.559435 -0.306742 -0.770012
-vn 0.524644 0.450850 -0.722098
-vn 0.185766 0.948729 -0.255684
-vn 0.096408 -0.986419 -0.132725
-vn 0.255684 -0.948729 -0.185766
-vn 0.722098 -0.450850 -0.524644
-vn 0.770012 0.306742 -0.559435
-vn 0.372265 0.887814 -0.270455
-vn 0.656667 -0.584063 -0.477096
-vn 0.799188 0.155217 -0.580645
-vn 0.479629 0.805292 -0.348460
-vn 0.575182 -0.703207 -0.417890
-vn 0.809015 0.000000 -0.587756
-vn 0.575182 0.703207 -0.417890
-vn 0.479629 -0.805292 -0.348460
-vn 0.799188 -0.155217 -0.580645
-vn 0.722098 0.450850 -0.524644
-vn 0.132725 0.986419 -0.096408
-vn 0.372265 -0.887814 -0.270455
-vn 0.770012 -0.306742 -0.559435
-vn 0.255684 0.948729 -0.185766
-vn 0.848903 -0.450850 -0.275826
-vn 0.905179 0.306742 -0.294107
-vn 0.437635 0.887814 -0.142186
-vn 0.676168 -0.703207 -0.219703
-vn 0.939512 0.155217 -0.305246
-vn 0.563829 0.805292 -0.183203
-vn 0.951048 0.000000 -0.309000
-vn 0.656667 0.584063 -0.477096
-vn 0.676168 0.703207 -0.219703
-vn 0.563829 -0.805292 -0.183203
-vn 0.939512 -0.155217 -0.305246
-vn 0.848903 0.450850 -0.275826
-vn 0.156011 0.986419 -0.050691
-vn 0.437635 -0.887814 -0.142186
-vn 0.905179 -0.306742 -0.294107
-vn 0.300577 0.948729 -0.097659
-vn 0.132725 -0.986419 -0.096408
-vn 0.300577 -0.948729 -0.097659
-vn 0.951781 0.306742 0.000000
-vn 0.460158 0.887814 0.000000
-vn 0.771935 -0.584063 -0.250801
-vn 0.710959 -0.703207 0.000000
-vn 0.987854 0.155217 0.000000
-vn 0.592853 0.805292 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.771935 0.584063 -0.250801
-vn 0.710959 0.703207 0.000000
-vn 0.592853 -0.805292 0.000000
-vn 0.987854 -0.155217 0.000000
-vn 0.892575 0.450850 0.000000
-vn 0.164068 0.986419 0.000000
-vn 0.460158 -0.887814 0.000000
-vn 0.951781 -0.306742 0.000000
-vn 0.316050 0.948729 0.000000
-vn 0.156011 -0.986419 -0.050691
-vn 0.316050 -0.948729 0.000000
-vn 0.892575 -0.450850 0.000000
-vn 0.811670 -0.584063 0.000000
-vn 0.676168 -0.703207 0.219703
-vn 0.939512 0.155217 0.305246
-vn 0.563829 0.805292 0.183203
-vn 0.951048 0.000000 0.309000
-vn 0.811670 0.584063 0.000000
-vn 0.676168 0.703207 0.219703
-vn 0.563829 -0.805292 0.183203
-vn 0.939512 -0.155217 0.305246
-vn 0.848903 0.450850 0.275826
-vn 0.156011 0.986419 0.050691
-vn 0.437635 -0.887814 0.142186
-vn 0.905179 -0.306742 0.294107
-vn 0.300577 0.948729 0.097659
-vn 0.164068 -0.986419 0.000000
-vn 0.300577 -0.948729 0.097659
-vn 0.848903 -0.450850 0.275826
-vn 0.905179 0.306742 0.294107
-vn 0.437635 0.887814 0.142186
-vn 0.771935 -0.584063 0.250801
-vn 0.575182 -0.703207 0.417890
-vn 0.799188 0.155217 0.580645
-vn 0.479629 0.805292 0.348460
-vn 0.809015 0.000000 0.587756
-vn 0.771935 0.584063 0.250801
-vn 0.575182 0.703207 0.417890
-vn 0.479629 -0.805292 0.348460
-vn 0.799188 -0.155217 0.580645
-vn 0.722098 0.450850 0.524644
-vn 0.132725 0.986419 0.096408
-vn 0.372265 -0.887814 0.270455
-vn 0.770012 -0.306742 0.559435
-vn 0.255684 0.948729 0.185766
-vn 0.156011 -0.986419 0.050691
-vn 0.255684 -0.948729 0.185766
-vn 0.722098 -0.450850 0.524644
-vn 0.770012 0.306742 0.559435
-vn 0.372265 0.887814 0.270455
-vn 0.656667 -0.584063 0.477096
-vn 0.417890 -0.703207 0.575182
-vn 0.580645 0.155217 0.799188
-vn 0.348460 0.805292 0.479629
-vn 0.587756 0.000000 0.809015
-vn 0.656667 0.584063 0.477096
-vn 0.417890 0.703207 0.575182
-vn 0.348460 -0.805292 0.479629
-vn 0.580645 -0.155217 0.799188
-vn 0.524644 0.450850 0.722098
-vn 0.096408 0.986419 0.132725
-vn 0.270455 -0.887814 0.372265
-vn 0.559435 -0.306742 0.770012
-vn 0.185766 0.948729 0.255684
-vn 0.132725 -0.986419 0.096408
-vn 0.185766 -0.948729 0.255684
-vn 0.524644 -0.450850 0.722098
-vn 0.559435 0.306742 0.770012
-vn 0.270455 0.887814 0.372265
-vn 0.305246 0.155217 0.939512
-vn 0.183203 0.805292 0.563829
-vn 0.219703 -0.703207 0.676168
-vn 0.309000 0.000000 0.951048
-vn 0.477096 0.584063 0.656667
-vn 0.219703 0.703207 0.676168
-vn 0.183203 -0.805292 0.563829
-vn 0.305246 -0.155217 0.939512
-vn 0.275826 0.450850 0.848903
-vn 0.050691 0.986419 0.156011
-vn 0.142186 -0.887814 0.437635
-vn 0.294107 -0.306742 0.905179
-vn 0.097659 0.948729 0.300577
-vn 0.096408 -0.986419 0.132725
-vn 0.097659 -0.948729 0.300577
-vn 0.477096 -0.584063 0.656667
-vn 0.275826 -0.450850 0.848903
-vn 0.294107 0.306742 0.905179
-vn 0.142186 0.887814 0.437635
-vn 0.250801 -0.584063 0.771935
-vn 0.000000 0.805292 0.592853
-vn 0.000000 -0.703207 0.710959
-vn 0.000000 0.000000 1.000000
-vn 0.250801 0.584063 0.771935
-vn 0.000000 0.703207 0.710959
-vn 0.000000 -0.805292 0.592853
-vn 0.000000 -0.155217 0.987854
-vn 0.000000 0.450850 0.892575
-vn 0.000000 0.986419 0.164068
-vn 0.000000 -0.887814 0.460158
-vn 0.000000 -0.306742 0.951781
-vn 0.000000 0.948729 0.316050
-vn 0.050691 -0.986419 0.156011
-vn 0.000000 -0.948729 0.316050
-vn 0.000000 -0.450850 0.892575
-vn 0.000000 0.306742 0.951781
-vn 0.000000 0.887814 0.460158
-vn 0.000000 -0.584063 0.811670
-vn 0.000000 0.155217 0.987854
-vn -0.183203 -0.805292 0.563829
-vn -0.305246 -0.155217 0.939512
-vn 0.000000 0.584063 0.811670
-vn -0.250801 0.584063 0.771935
-vn -0.142186 -0.887814 0.437635
-vn -0.294107 -0.306742 0.905179
-vn -0.097659 0.948729 0.300577
-vn -0.097659 -0.948729 0.300577
-vn -0.275826 -0.450850 0.848903
-vn -0.294107 0.306742 0.905179
-vn -0.142186 0.887814 0.437635
-vn 0.000000 -0.986419 0.164068
-vn -0.050691 -0.986419 0.156011
-vn -0.250801 -0.584063 0.771935
-vn -0.305246 0.155217 0.939512
-vn -0.183203 0.805292 0.563829
-vn -0.219703 -0.703207 0.676168
-vn -0.309000 0.000000 0.951048
-vn -0.219703 0.703207 0.676168
-vn -0.348460 -0.805292 0.479629
-vn -0.580645 -0.155217 0.799188
-vn -0.477096 0.584063 0.656667
-vn -0.270455 -0.887814 0.372265
-vn -0.559435 -0.306742 0.770012
-vn -0.275826 0.450850 0.848903
-vn -0.050691 0.986419 0.156011
-vn -0.185766 0.948729 0.255684
-vn -0.185766 -0.948729 0.255684
-vn -0.524644 -0.450850 0.722098
-vn -0.559435 0.306742 0.770012
-vn -0.270455 0.887814 0.372265
-vn -0.096408 -0.986419 0.132725
-vn -0.477096 -0.584063 0.656667
-vn -0.580645 0.155217 0.799188
-vn -0.348460 0.805292 0.479629
-vn -0.417890 -0.703207 0.575182
-vn -0.587756 0.000000 0.809015
-vn -0.417890 0.703207 0.575182
-vn -0.479629 -0.805292 0.348460
-vn -0.799188 -0.155217 0.580645
-vn -0.656667 0.584063 0.477096
-vn -0.372265 -0.887814 0.270455
-vn -0.770012 -0.306742 0.559435
-vn -0.524644 0.450850 0.722098
-vn -0.096408 0.986419 0.132725
-vn -0.255684 0.948729 0.185766
-vn -0.255684 -0.948729 0.185766
-vn -0.722098 -0.450850 0.524644
-vn -0.770012 0.306742 0.559435
-vn -0.372265 0.887814 0.270455
-vn -0.132725 -0.986419 0.096408
-vn -0.656667 -0.584063 0.477096
-vn -0.799188 0.155217 0.580645
-vn -0.479629 0.805292 0.348460
-vn -0.575182 -0.703207 0.417890
-vn -0.809015 0.000000 0.587756
-vn -0.575182 0.703207 0.417890
-vn -0.771935 0.584063 0.250801
-vn -0.437635 -0.887814 0.142186
-vn -0.905179 -0.306742 0.294107
-vn -0.722098 0.450850 0.524644
-vn -0.132725 0.986419 0.096408
-vn -0.300577 0.948729 0.097659
-vn -0.300577 -0.948729 0.097659
-vn -0.848903 -0.450850 0.275826
-vn -0.905179 0.306742 0.294107
-vn -0.437635 0.887814 0.142186
-vn -0.156011 -0.986419 0.050691
-vn -0.771935 -0.584063 0.250801
-vn -0.939512 0.155217 0.305246
-vn -0.563829 0.805292 0.183203
-vn -0.676168 -0.703207 0.219703
-vn -0.951048 0.000000 0.309000
-vn -0.676168 0.703207 0.219703
-vn -0.563829 -0.805292 0.183203
-vn -0.939512 -0.155217 0.305246
-vn 0.000000 -0.999969 0.000000
-vn 0.000000 1.000000 0.000000
-vn -0.156011 0.986419 0.050691
-vn -0.848903 0.450850 0.275826
-s 1
-f 17/1/1 16/2/2 36/3/3
-f 12/4/4 11/5/5 31/6/6
-f 7/7/7 6/8/8 26/9/9
-f 2/10/10 1/11/11 21/12/12
-f 18/13/13 17/1/1 37/14/14
-f 13/15/15 12/4/4 32/16/16
-f 8/17/17 7/7/7 27/18/18
-f 3/19/19 2/10/10 22/20/20
-f 19/21/21 18/13/13 38/22/22
-f 14/23/23 13/15/15 33/24/24
-f 9/25/25 8/17/17 28/26/26
-f 4/27/27 3/19/19 23/28/28
-f 15/29/29 14/23/23 34/30/30
-f 10/31/31 9/25/25 29/32/32
-f 5/33/33 4/27/27 24/34/34
-f 16/2/2 15/29/29 35/35/35
-f 11/5/5 10/31/31 30/36/36
-f 6/8/8 5/33/33 25/37/37
-f 21/12/12 20/38/38 41/39/39
-f 37/40/14 36/41/3 57/42/40
-f 32/43/16 31/44/6 52/45/41
-f 27/46/18 26/47/9 47/48/42
-f 22/49/20 21/12/12 42/50/43
-f 38/51/22 37/40/14 58/52/44
-f 33/53/24 32/43/16 53/54/45
-f 28/55/26 27/46/18 48/56/46
-f 23/57/28 22/49/20 43/58/47
-f 34/59/30 33/53/24 54/60/48
-f 29/61/32 28/55/26 49/62/49
-f 24/63/34 23/57/28 44/64/50
-f 35/65/35 34/59/30 55/66/51
-f 30/67/36 29/61/32 50/68/52
-f 25/69/37 24/63/34 45/70/53
-f 36/41/3 35/65/35 56/71/54
-f 31/44/6 30/67/36 51/72/55
-f 26/47/9 25/69/37 46/73/56
-f 57/42/40 56/71/54 76/74/57
-f 52/45/41 51/72/55 71/75/58
-f 47/48/42 46/73/56 66/76/59
-f 42/50/43 41/39/39 61/77/60
-f 58/52/44 57/42/40 77/78/61
-f 53/54/45 52/45/41 72/79/62
-f 48/56/46 47/48/42 67/80/63
-f 43/58/47 42/50/43 62/81/64
-f 54/60/48 53/54/45 73/82/65
-f 49/62/49 48/56/46 68/83/66
-f 44/64/50 43/58/47 63/84/67
-f 55/66/51 54/60/48 74/85/68
-f 50/68/52 49/62/49 69/86/69
-f 45/70/53 44/64/50 64/87/70
-f 56/71/54 55/66/51 75/88/71
-f 51/72/55 50/68/52 70/89/72
-f 46/73/56 45/70/53 65/90/73
-f 41/39/39 40/91/74 60/92/75
-f 76/74/57 75/88/71 95/93/76
-f 71/75/58 70/89/72 90/94/77
-f 66/76/59 65/90/73 85/95/78
-f 61/77/60 60/92/75 80/96/79
-f 77/78/61 76/74/57 96/97/80
-f 72/79/62 71/75/58 91/98/81
-f 67/80/63 66/76/59 86/99/82
-f 62/81/64 61/77/60 81/100/83
-f 73/82/65 72/79/62 92/101/84
-f 68/83/66 67/80/63 87/102/85
-f 63/84/67 62/81/64 82/103/86
-f 74/85/68 73/82/65 93/104/87
-f 69/86/69 68/83/66 88/105/88
-f 64/87/70 63/84/67 83/106/89
-f 75/88/71 74/85/68 94/107/90
-f 70/89/72 69/86/69 89/108/91
-f 65/90/73 64/87/70 84/109/92
-f 60/92/75 59/110/93 79/111/94
-f 90/94/77 89/108/91 109/112/95
-f 85/95/78 84/109/92 104/113/96
-f 80/96/79 79/111/94 99/114/97
-f 96/97/80 95/93/76 115/115/98
-f 91/98/81 90/94/77 110/116/99
-f 86/99/82 85/95/78 105/117/100
-f 81/100/83 80/96/79 100/118/101
-f 92/101/84 91/98/81 111/119/102
-f 87/102/85 86/99/82 106/120/103
-f 82/103/86 81/100/83 101/121/104
-f 93/104/87 92/101/84 112/122/105
-f 88/105/88 87/102/85 107/123/106
-f 83/106/89 82/103/86 102/124/107
-f 94/107/90 93/104/87 113/125/108
-f 89/108/91 88/105/88 108/126/109
-f 84/109/92 83/106/89 103/127/110
-f 79/111/94 78/128/111 98/129/112
-f 95/93/76 94/107/90 114/130/113
-f 99/114/97 98/129/112 117/131/114
-f 115/115/98 114/130/113 133/132/115
-f 110/116/99 109/112/95 128/133/116
-f 105/117/100 104/113/96 123/134/117
-f 100/118/101 99/114/97 118/135/118
-f 111/119/102 110/116/99 129/136/119
-f 106/120/103 105/117/100 124/137/120
-f 101/121/104 100/118/101 119/138/121
-f 112/122/105 111/119/102 130/139/122
-f 107/123/106 106/120/103 125/140/123
-f 102/124/107 101/121/104 120/141/124
-f 113/125/108 112/122/105 131/142/125
-f 108/126/109 107/123/106 126/143/126
-f 103/127/110 102/124/107 121/144/127
-f 98/129/112 97/145/128 116/146/129
-f 114/130/113 113/125/108 132/147/130
-f 109/112/95 108/126/109 127/148/131
-f 104/113/96 103/127/110 122/149/132
-f 134/150/133 133/132/115 152/151/134
-f 129/136/119 128/133/116 147/152/135
-f 124/137/120 123/134/117 142/153/136
-f 119/138/121 118/135/118 137/154/137
-f 130/139/122 129/136/119 148/155/138
-f 125/140/123 124/137/120 143/156/139
-f 120/141/124 119/138/121 138/157/140
-f 131/142/125 130/139/122 149/158/141
-f 126/143/126 125/140/123 144/159/142
-f 121/144/127 120/141/124 139/160/143
-f 132/147/130 131/142/125 150/161/144
-f 127/148/131 126/143/126 145/162/145
-f 122/149/132 121/144/127 140/163/146
-f 117/131/114 116/146/129 135/164/147
-f 133/132/115 132/147/130 151/165/148
-f 128/133/116 127/148/131 146/166/149
-f 123/134/117 122/149/132 141/167/150
-f 118/135/118 117/131/114 136/168/151
-f 153/169/152 152/151/134 171/170/153
-f 148/155/138 147/152/135 166/171/154
-f 143/156/139 142/153/136 161/172/155
-f 138/157/140 137/154/137 156/173/156
-f 149/158/141 148/155/138 167/174/157
-f 144/159/142 143/156/139 162/175/158
-f 139/160/143 138/157/140 157/176/159
-f 150/161/144 149/158/141 168/177/160
-f 145/162/145 144/159/142 163/178/161
-f 140/163/146 139/160/143 158/179/162
-f 151/165/148 150/161/144 169/180/163
-f 146/166/149 145/162/145 164/181/164
-f 141/167/150 140/163/146 160/182/165
-f 136/168/151 135/164/147 154/183/166
-f 152/151/134 151/165/148 170/184/167
-f 147/152/135 146/166/149 165/185/168
-f 142/153/136 141/167/150 160/182/165
-f 137/154/137 136/168/151 155/186/169
-f 167/174/157 166/171/154 185/187/170
-f 162/175/158 161/172/155 180/188/171
-f 157/176/159 156/173/156 175/189/172
-f 168/177/160 167/174/157 187/190/173
-f 163/178/161 162/175/158 181/191/174
-f 158/179/162 157/176/159 176/192/175
-f 169/180/163 168/177/160 187/190/173
-f 164/181/164 163/178/161 182/193/176
-f 159/194/177 158/179/162 177/195/178
-f 170/184/167 169/180/163 188/196/179
-f 165/185/168 164/181/164 183/197/180
-f 160/182/165 159/194/177 179/198/181
-f 155/186/169 154/183/166 173/199/182
-f 171/170/153 170/184/167 189/200/183
-f 166/171/154 165/185/168 184/201/184
-f 161/172/155 160/182/165 179/198/181
-f 156/173/156 155/186/169 174/202/185
-f 172/203/186 171/170/153 190/204/187
-f 181/191/174 180/188/171 199/205/188
-f 176/192/175 175/189/172 194/206/189
-f 187/190/173 186/207/190 206/208/191
-f 182/193/176 181/191/174 200/209/192
-f 177/195/178 176/192/175 195/210/193
-f 188/196/179 187/190/173 206/208/191
-f 183/197/180 182/193/176 201/211/194
-f 178/212/195 177/195/178 196/213/196
-f 189/200/183 188/196/179 207/214/197
-f 184/201/184 183/197/180 202/215/198
-f 179/198/181 178/212/195 198/216/199
-f 174/202/185 173/199/182 192/217/200
-f 190/204/187 189/200/183 208/218/201
-f 185/187/170 184/201/184 203/219/202
-f 180/188/171 179/198/181 198/216/199
-f 175/189/172 174/202/185 193/220/203
-f 191/221/204 190/204/187 209/222/205
-f 186/207/190 185/187/170 204/223/206
-f 206/208/191 205/224/207 225/225/208
-f 201/211/194 200/209/192 219/226/209
-f 196/213/196 195/210/193 214/227/210
-f 207/214/197 206/208/191 225/225/208
-f 202/215/198 201/211/194 220/228/211
-f 197/229/212 196/213/196 215/230/213
-f 208/218/201 207/214/197 226/231/214
-f 203/219/202 202/215/198 221/232/215
-f 198/216/199 197/229/212 217/233/216
-f 193/220/203 192/217/200 211/234/217
-f 209/222/205 208/218/201 227/235/218
-f 204/223/206 203/219/202 222/236/219
-f 199/205/188 198/216/199 217/233/216
-f 194/206/189 193/220/203 212/237/220
-f 210/238/221 209/222/205 228/239/222
-f 205/224/207 204/223/206 223/240/223
-f 200/209/192 199/205/188 218/241/224
-f 195/210/193 194/206/189 213/242/225
-f 225/225/208 224/243/226 244/244/227
-f 220/228/211 219/226/209 238/245/228
-f 215/230/213 214/227/210 233/246/229
-f 226/231/214 225/225/208 244/244/227
-f 221/232/215 220/228/211 239/247/230
-f 216/248/231 215/230/213 234/249/232
-f 227/235/218 226/231/214 245/250/233
-f 222/236/219 221/232/215 240/251/234
-f 217/233/216 216/248/231 236/252/235
-f 212/237/220 211/234/217 230/253/236
-f 228/239/222 227/235/218 246/254/237
-f 223/240/223 222/236/219 241/255/238
-f 218/241/224 217/233/216 236/252/235
-f 213/242/225 212/237/220 231/256/239
-f 229/257/240 228/239/222 247/258/241
-f 224/243/226 223/240/223 242/259/242
-f 219/226/209 218/241/224 237/260/243
-f 214/227/210 213/242/225 232/261/244
-f 244/244/227 243/262/245 263/263/246
-f 239/247/230 238/245/228 257/264/247
-f 234/249/232 233/246/229 252/265/248
-f 245/250/233 244/244/227 263/263/246
-f 240/251/234 239/247/230 258/266/249
-f 235/267/250 234/249/232 253/268/251
-f 246/269/237 245/250/233 264/270/252
-f 241/255/238 240/251/234 259/271/253
-f 236/252/235 235/267/250 255/272/254
-f 231/256/239 230/253/236 249/273/255
-f 247/274/241 246/269/237 265/275/256
-f 242/259/242 241/255/238 260/276/257
-f 237/260/243 236/252/235 255/272/254
-f 232/261/244 231/256/239 250/277/258
-f 248/278/259 247/274/241 266/279/260
-f 243/262/245 242/259/242 261/280/261
-f 238/245/228 237/260/243 256/281/262
-f 233/246/229 232/261/244 251/282/263
-f 258/266/249 257/264/247 276/283/264
-f 253/268/251 252/265/248 271/284/265
-f 264/270/252 263/263/246 282/285/266
-f 259/271/253 258/266/249 277/286/267
-f 254/287/268 253/268/251 272/288/269
-f 265/275/256 264/270/252 283/289/270
-f 260/276/257 259/271/253 278/290/271
-f 255/272/254 254/287/268 274/291/272
-f 250/277/258 249/273/255 268/292/273
-f 266/279/260 265/275/256 284/293/274
-f 261/280/261 260/276/257 279/294/275
-f 256/281/262 255/272/254 274/291/272
-f 251/282/263 250/277/258 269/295/276
-f 267/296/277 266/279/260 285/297/278
-f 262/298/279 261/280/261 280/299/280
-f 257/264/247 256/281/262 275/300/281
-f 252/265/248 251/282/263 270/301/282
-f 263/263/246 262/298/279 281/302/283
-f 272/288/269 271/284/265 290/303/284
-f 283/289/270 282/285/266 301/304/285
-f 278/290/271 277/286/267 296/305/286
-f 273/306/287 272/288/269 291/307/288
-f 284/293/274 283/289/270 302/308/289
-f 279/294/275 278/290/271 297/309/290
-f 274/291/272 273/306/287 293/310/291
-f 269/295/276 268/292/273 287/311/292
-f 285/297/278 284/293/274 303/312/293
-f 280/299/280 279/294/275 298/313/294
-f 275/300/281 274/291/272 293/310/291
-f 270/301/282 269/295/276 288/314/295
-f 286/315/296 285/297/278 304/316/297
-f 281/302/283 280/299/280 299/317/298
-f 276/283/264 275/300/281 294/318/299
-f 271/284/265 270/301/282 289/319/300
-f 282/285/266 281/302/283 300/320/301
-f 277/286/267 276/283/264 295/321/302
-f 302/308/289 301/304/285 321/322/303
-f 297/309/290 296/305/286 316/323/304
-f 292/324/305 291/307/288 311/325/306
-f 303/312/293 302/308/289 322/326/307
-f 298/313/294 297/309/290 317/327/308
-f 293/310/291 292/324/305 311/325/306
-f 288/314/295 287/311/292 307/328/309
-f 304/316/297 303/312/293 323/329/310
-f 299/317/298 298/313/294 318/330/311
-f 294/318/299 293/310/291 313/331/312
-f 289/319/300 288/314/295 308/332/313
-f 305/333/314 304/316/297 324/334/315
-f 300/320/301 299/317/298 319/335/316
-f 295/321/302 294/318/299 314/336/317
-f 290/303/284 289/319/300 309/337/318
-f 301/304/285 300/320/301 320/338/319
-f 296/305/286 295/321/302 315/339/320
-f 291/307/288 290/303/284 310/340/321
-f 321/322/303 320/338/319 340/341/322
-f 316/323/304 315/339/320 335/342/323
-f 311/325/306 310/340/321 330/343/324
-f 322/326/307 321/322/303 341/344/325
-f 317/327/308 316/323/304 336/345/326
-f 312/346/327 311/325/306 330/343/324
-f 307/328/309 306/347/328 326/348/329
-f 323/329/310 322/326/307 342/349/330
-f 318/330/311 317/327/308 337/350/331
-f 313/331/312 312/346/327 332/351/332
-f 308/332/313 307/328/309 327/352/333
-f 324/334/315 323/329/310 343/353/334
-f 319/335/316 318/330/311 338/354/335
-f 314/336/317 313/331/312 333/355/336
-f 309/337/318 308/332/313 328/356/337
-f 320/338/319 319/335/316 339/357/338
-f 315/339/320 314/336/317 334/358/339
-f 310/340/321 309/337/318 329/359/340
-f 340/341/322 339/357/338 360/360/341
-f 335/342/323 334/358/339 355/361/342
-f 330/343/324 329/359/340 350/362/343
-f 341/344/325 340/341/322 361/363/344
-f 336/345/326 335/342/323 356/364/345
-f 331/365/346 330/343/324 350/362/343
-f 326/348/329 325/366/347 346/367/348
-f 342/349/330 341/344/325 362/368/349
-f 337/350/331 336/345/326 357/369/350
-f 332/351/332 331/365/346 352/370/351
-f 327/352/333 326/348/329 347/371/352
-f 343/353/334 342/349/330 363/372/353
-f 338/354/335 337/350/331 358/373/354
-f 333/355/336 332/351/332 353/374/355
-f 328/356/337 327/352/333 348/375/356
-f 339/357/338 338/354/335 359/376/357
-f 334/358/339 333/355/336 354/377/358
-f 329/359/340 328/356/337 349/378/359
-f 350/362/343 349/378/359 369/379/360
-f 361/363/344 360/360/341 380/380/361
-f 356/364/345 355/361/342 375/381/362
-f 351/382/363 350/362/343 369/379/360
-f 346/367/348 345/383/364 365/384/365
-f 362/368/349 361/363/344 381/385/366
-f 357/369/350 356/364/345 376/386/367
-f 352/370/351 351/382/363 371/387/368
-f 347/371/352 346/367/348 366/388/369
-f 363/372/353 362/368/349 382/389/370
-f 358/373/354 357/369/350 377/390/371
-f 353/374/355 352/370/351 372/391/372
-f 348/375/356 347/371/352 367/392/373
-f 359/376/357 358/373/354 378/393/374
-f 354/377/358 353/374/355 373/394/375
-f 349/378/359 348/375/356 368/395/376
-f 360/360/341 359/376/357 379/396/377
-f 355/361/342 354/377/358 374/397/378
-f 39/398/379 19/399/21 38/51/22
-f 1/11/11 344/400/380 20/38/38
-f 39/398/379 38/51/22 58/52/44
-f 20/38/38 344/400/380 40/91/74
-f 39/398/379 58/52/44 77/78/61
-f 40/91/74 344/400/380 59/110/93
-f 39/398/379 77/78/61 96/97/80
-f 59/110/93 344/400/380 78/128/111
-f 39/398/379 96/97/80 115/115/98
-f 78/128/111 344/400/380 97/145/128
-f 39/398/379 115/115/98 134/150/133
-f 97/145/128 344/400/380 116/146/129
-f 39/398/379 134/150/133 153/169/152
-f 116/146/129 344/400/380 135/164/147
-f 39/398/379 153/169/152 172/203/186
-f 135/164/147 344/400/380 154/183/166
-f 39/398/379 172/203/186 191/221/204
-f 154/183/166 344/400/380 173/199/182
-f 39/398/379 191/221/204 210/238/221
-f 173/199/182 344/400/380 192/217/200
-f 39/398/379 210/238/221 229/257/240
-f 192/217/200 344/400/380 211/234/217
-f 39/398/379 229/257/240 248/401/259
-f 211/234/217 344/400/380 230/253/236
-f 39/398/379 248/401/259 267/402/277
-f 230/253/236 344/400/380 249/273/255
-f 249/273/255 344/400/380 268/292/273
-f 39/398/379 267/402/277 286/403/296
-f 268/292/273 344/400/380 287/311/292
-f 39/398/379 286/403/296 305/404/314
-f 287/311/292 344/400/380 306/347/328
-f 39/398/379 305/404/314 324/405/315
-f 306/347/328 344/400/380 325/366/347
-f 39/398/379 324/405/315 343/406/334
-f 325/366/347 344/400/380 345/383/364
-f 39/398/379 343/406/334 363/407/353
-f 345/383/364 344/400/380 364/408/381
-f 39/398/379 363/407/353 382/409/370
-f 364/408/381 344/400/380 1/11/11
-f 380/380/361 379/396/377 16/2/2
-f 375/381/362 374/397/378 12/4/4
-f 370/410/382 369/379/360 7/7/7
-f 365/384/365 364/408/381 2/10/10
-f 381/385/366 380/380/361 17/1/1
-f 376/386/367 375/381/362 13/15/15
-f 371/387/368 370/410/382 8/17/17
-f 366/388/369 365/384/365 3/19/19
-f 382/389/370 381/385/366 18/13/13
-f 377/390/371 376/386/367 13/15/15
-f 372/391/372 371/387/368 9/25/25
-f 367/392/373 366/388/369 4/27/27
-f 39/398/379 382/409/370 19/399/21
-f 378/393/374 377/390/371 14/23/23
-f 373/394/375 372/391/372 10/31/31
-f 368/395/376 367/392/373 5/33/33
-f 379/396/377 378/393/374 15/29/29
-f 374/397/378 373/394/375 11/5/5
-f 369/379/360 368/395/376 6/8/8
-f 16/2/2 35/35/35 36/3/3
-f 11/5/5 30/36/36 31/6/6
-f 6/8/8 25/37/37 26/9/9
-f 1/11/11 20/38/38 21/12/12
-f 17/1/1 36/3/3 37/14/14
-f 12/4/4 31/6/6 32/16/16
-f 7/7/7 26/9/9 27/18/18
-f 2/10/10 21/12/12 22/20/20
-f 18/13/13 37/14/14 38/22/22
-f 13/15/15 32/16/16 33/24/24
-f 8/17/17 27/18/18 28/26/26
-f 3/19/19 22/20/20 23/28/28
-f 14/23/23 33/24/24 34/30/30
-f 9/25/25 28/26/26 29/32/32
-f 4/27/27 23/28/28 24/34/34
-f 15/29/29 34/30/30 35/35/35
-f 10/31/31 29/32/32 30/36/36
-f 5/33/33 24/34/34 25/37/37
-f 20/38/38 40/91/74 41/39/39
-f 36/41/3 56/71/54 57/42/40
-f 31/44/6 51/72/55 52/45/41
-f 26/47/9 46/73/56 47/48/42
-f 21/12/12 41/39/39 42/50/43
-f 37/40/14 57/42/40 58/52/44
-f 32/43/16 52/45/41 53/54/45
-f 27/46/18 47/48/42 48/56/46
-f 22/49/20 42/50/43 43/58/47
-f 33/53/24 53/54/45 54/60/48
-f 28/55/26 48/56/46 49/62/49
-f 23/57/28 43/58/47 44/64/50
-f 34/59/30 54/60/48 55/66/51
-f 29/61/32 49/62/49 50/68/52
-f 24/63/34 44/64/50 45/70/53
-f 35/65/35 55/66/51 56/71/54
-f 30/67/36 50/68/52 51/72/55
-f 25/69/37 45/70/53 46/73/56
-f 56/71/54 75/88/71 76/74/57
-f 51/72/55 70/89/72 71/75/58
-f 46/73/56 65/90/73 66/76/59
-f 41/39/39 60/92/75 61/77/60
-f 57/42/40 76/74/57 77/78/61
-f 52/45/41 71/75/58 72/79/62
-f 47/48/42 66/76/59 67/80/63
-f 42/50/43 61/77/60 62/81/64
-f 53/54/45 72/79/62 73/82/65
-f 48/56/46 67/80/63 68/83/66
-f 43/58/47 62/81/64 63/84/67
-f 54/60/48 73/82/65 74/85/68
-f 49/62/49 68/83/66 69/86/69
-f 44/64/50 63/84/67 64/87/70
-f 55/66/51 74/85/68 75/88/71
-f 50/68/52 69/86/69 70/89/72
-f 45/70/53 64/87/70 65/90/73
-f 40/91/74 59/110/93 60/92/75
-f 75/88/71 94/107/90 95/93/76
-f 70/89/72 89/108/91 90/94/77
-f 65/90/73 84/109/92 85/95/78
-f 60/92/75 79/111/94 80/96/79
-f 76/74/57 95/93/76 96/97/80
-f 71/75/58 90/94/77 91/98/81
-f 66/76/59 85/95/78 86/99/82
-f 61/77/60 80/96/79 81/100/83
-f 72/79/62 91/98/81 92/101/84
-f 67/80/63 86/99/82 87/102/85
-f 62/81/64 81/100/83 82/103/86
-f 73/82/65 92/101/84 93/104/87
-f 68/83/66 87/102/85 88/105/88
-f 63/84/67 82/103/86 83/106/89
-f 74/85/68 93/104/87 94/107/90
-f 69/86/69 88/105/88 89/108/91
-f 64/87/70 83/106/89 84/109/92
-f 59/110/93 78/128/111 79/111/94
-f 89/108/91 108/126/109 109/112/95
-f 84/109/92 103/127/110 104/113/96
-f 79/111/94 98/129/112 99/114/97
-f 95/93/76 114/130/113 115/115/98
-f 90/94/77 109/112/95 110/116/99
-f 85/95/78 104/113/96 105/117/100
-f 80/96/79 99/114/97 100/118/101
-f 91/98/81 110/116/99 111/119/102
-f 86/99/82 105/117/100 106/120/103
-f 81/100/83 100/118/101 101/121/104
-f 92/101/84 111/119/102 112/122/105
-f 87/102/85 106/120/103 107/123/106
-f 82/103/86 101/121/104 102/124/107
-f 93/104/87 112/122/105 113/125/108
-f 88/105/88 107/123/106 108/126/109
-f 83/106/89 102/124/107 103/127/110
-f 78/128/111 97/145/128 98/129/112
-f 94/107/90 113/125/108 114/130/113
-f 118/135/118 99/114/97 117/131/114
-f 134/150/133 115/115/98 133/132/115
-f 129/136/119 110/116/99 128/133/116
-f 124/137/120 105/117/100 123/134/117
-f 119/138/121 100/118/101 118/135/118
-f 130/139/122 111/119/102 129/136/119
-f 125/140/123 106/120/103 124/137/120
-f 120/141/124 101/121/104 119/138/121
-f 131/142/125 112/122/105 130/139/122
-f 126/143/126 107/123/106 125/140/123
-f 121/144/127 102/124/107 120/141/124
-f 132/147/130 113/125/108 131/142/125
-f 127/148/131 108/126/109 126/143/126
-f 122/149/132 103/127/110 121/144/127
-f 117/131/114 98/129/112 116/146/129
-f 133/132/115 114/130/113 132/147/130
-f 128/133/116 109/112/95 127/148/131
-f 123/134/117 104/113/96 122/149/132
-f 153/169/152 134/150/133 152/151/134
-f 148/155/138 129/136/119 147/152/135
-f 143/156/139 124/137/120 142/153/136
-f 138/157/140 119/138/121 137/154/137
-f 149/158/141 130/139/122 148/155/138
-f 144/159/142 125/140/123 143/156/139
-f 139/160/143 120/141/124 138/157/140
-f 150/161/144 131/142/125 149/158/141
-f 145/162/145 126/143/126 144/159/142
-f 140/163/146 121/144/127 139/160/143
-f 151/165/148 132/147/130 150/161/144
-f 146/166/149 127/148/131 145/162/145
-f 141/167/150 122/149/132 140/163/146
-f 136/168/151 117/131/114 135/164/147
-f 152/151/134 133/132/115 151/165/148
-f 147/152/135 128/133/116 146/166/149
-f 142/153/136 123/134/117 141/167/150
-f 137/154/137 118/135/118 136/168/151
-f 172/203/186 153/169/152 171/170/153
-f 167/174/157 148/155/138 166/171/154
-f 162/175/158 143/156/139 161/172/155
-f 157/176/159 138/157/140 156/173/156
-f 168/177/160 149/158/141 167/174/157
-f 163/178/161 144/159/142 162/175/158
-f 158/179/162 139/160/143 157/176/159
-f 169/180/163 150/161/144 168/177/160
-f 164/181/164 145/162/145 163/178/161
-f 159/194/177 140/163/146 158/179/162
-f 170/184/167 151/165/148 169/180/163
-f 165/185/168 146/166/149 164/181/164
-f 140/163/146 159/194/177 160/182/165
-f 155/186/169 136/168/151 154/183/166
-f 171/170/153 152/151/134 170/184/167
-f 166/171/154 147/152/135 165/185/168
-f 161/172/155 142/153/136 160/182/165
-f 156/173/156 137/154/137 155/186/169
-f 186/207/190 167/174/157 185/187/170
-f 181/191/174 162/175/158 180/188/171
-f 176/192/175 157/176/159 175/189/172
-f 167/174/157 186/207/190 187/190/173
-f 182/193/176 163/178/161 181/191/174
-f 177/195/178 158/179/162 176/192/175
-f 188/196/179 169/180/163 187/190/173
-f 183/197/180 164/181/164 182/193/176
-f 178/212/195 159/194/177 177/195/178
-f 189/200/183 170/184/167 188/196/179
-f 184/201/184 165/185/168 183/197/180
-f 159/194/177 178/212/195 179/198/181
-f 174/202/185 155/186/169 173/199/182
-f 190/204/187 171/170/153 189/200/183
-f 185/187/170 166/171/154 184/201/184
-f 180/188/171 161/172/155 179/198/181
-f 175/189/172 156/173/156 174/202/185
-f 191/221/204 172/203/186 190/204/187
-f 200/209/192 181/191/174 199/205/188
-f 195/210/193 176/192/175 194/206/189
-f 186/207/190 205/224/207 206/208/191
-f 201/211/194 182/193/176 200/209/192
-f 196/213/196 177/195/178 195/210/193
-f 207/214/197 188/196/179 206/208/191
-f 202/215/198 183/197/180 201/211/194
-f 197/229/212 178/212/195 196/213/196
-f 208/218/201 189/200/183 207/214/197
-f 203/219/202 184/201/184 202/215/198
-f 178/212/195 197/229/212 198/216/199
-f 193/220/203 174/202/185 192/217/200
-f 209/222/205 190/204/187 208/218/201
-f 204/223/206 185/187/170 203/219/202
-f 199/205/188 180/188/171 198/216/199
-f 194/206/189 175/189/172 193/220/203
-f 210/238/221 191/221/204 209/222/205
-f 205/224/207 186/207/190 204/223/206
-f 205/224/207 224/243/226 225/225/208
-f 220/228/211 201/211/194 219/226/209
-f 215/230/213 196/213/196 214/227/210
-f 226/231/214 207/214/197 225/225/208
-f 221/232/215 202/215/198 220/228/211
-f 216/248/231 197/229/212 215/230/213
-f 227/235/218 208/218/201 226/231/214
-f 222/236/219 203/219/202 221/232/215
-f 197/229/212 216/248/231 217/233/216
-f 212/237/220 193/220/203 211/234/217
-f 228/239/222 209/222/205 227/235/218
-f 223/240/223 204/223/206 222/236/219
-f 218/241/224 199/205/188 217/233/216
-f 213/242/225 194/206/189 212/237/220
-f 229/257/240 210/238/221 228/239/222
-f 224/243/226 205/224/207 223/240/223
-f 219/226/209 200/209/192 218/241/224
-f 214/227/210 195/210/193 213/242/225
-f 224/243/226 243/262/245 244/244/227
-f 239/247/230 220/228/211 238/245/228
-f 234/249/232 215/230/213 233/246/229
-f 245/250/233 226/231/214 244/244/227
-f 240/251/234 221/232/215 239/247/230
-f 235/267/250 216/248/231 234/249/232
-f 246/269/237 227/235/218 245/250/233
-f 241/255/238 222/236/219 240/251/234
-f 216/248/231 235/267/250 236/252/235
-f 231/256/239 212/237/220 230/253/236
-f 247/258/241 228/239/222 246/254/237
-f 242/259/242 223/240/223 241/255/238
-f 237/260/243 218/241/224 236/252/235
-f 232/261/244 213/242/225 231/256/239
-f 248/401/259 229/257/240 247/258/241
-f 243/262/245 224/243/226 242/259/242
-f 238/245/228 219/226/209 237/260/243
-f 233/246/229 214/227/210 232/261/244
-f 243/262/245 262/298/279 263/263/246
-f 258/266/249 239/247/230 257/264/247
-f 253/268/251 234/249/232 252/265/248
-f 264/270/252 245/250/233 263/263/246
-f 259/271/253 240/251/234 258/266/249
-f 254/287/268 235/267/250 253/268/251
-f 265/275/256 246/269/237 264/270/252
-f 260/276/257 241/255/238 259/271/253
-f 235/267/250 254/287/268 255/272/254
-f 250/277/258 231/256/239 249/273/255
-f 266/279/260 247/274/241 265/275/256
-f 261/280/261 242/259/242 260/276/257
-f 256/281/262 237/260/243 255/272/254
-f 251/282/263 232/261/244 250/277/258
-f 267/296/277 248/278/259 266/279/260
-f 262/298/279 243/262/245 261/280/261
-f 257/264/247 238/245/228 256/281/262
-f 252/265/248 233/246/229 251/282/263
-f 277/286/267 258/266/249 276/283/264
-f 272/288/269 253/268/251 271/284/265
-f 283/289/270 264/270/252 282/285/266
-f 278/290/271 259/271/253 277/286/267
-f 273/306/287 254/287/268 272/288/269
-f 284/293/274 265/275/256 283/289/270
-f 279/294/275 260/276/257 278/290/271
-f 254/287/268 273/306/287 274/291/272
-f 269/295/276 250/277/258 268/292/273
-f 285/297/278 266/279/260 284/293/274
-f 280/299/280 261/280/261 279/294/275
-f 275/300/281 256/281/262 274/291/272
-f 270/301/282 251/282/263 269/295/276
-f 286/315/296 267/296/277 285/297/278
-f 281/302/283 262/298/279 280/299/280
-f 276/283/264 257/264/247 275/300/281
-f 271/284/265 252/265/248 270/301/282
-f 282/285/266 263/263/246 281/302/283
-f 291/307/288 272/288/269 290/303/284
-f 302/308/289 283/289/270 301/304/285
-f 297/309/290 278/290/271 296/305/286
-f 292/324/305 273/306/287 291/307/288
-f 303/312/293 284/293/274 302/308/289
-f 298/313/294 279/294/275 297/309/290
-f 273/306/287 292/324/305 293/310/291
-f 288/314/295 269/295/276 287/311/292
-f 304/316/297 285/297/278 303/312/293
-f 299/317/298 280/299/280 298/313/294
-f 294/318/299 275/300/281 293/310/291
-f 289/319/300 270/301/282 288/314/295
-f 305/333/314 286/315/296 304/316/297
-f 300/320/301 281/302/283 299/317/298
-f 295/321/302 276/283/264 294/318/299
-f 290/303/284 271/284/265 289/319/300
-f 301/304/285 282/285/266 300/320/301
-f 296/305/286 277/286/267 295/321/302
-f 301/304/285 320/338/319 321/322/303
-f 296/305/286 315/339/320 316/323/304
-f 291/307/288 310/340/321 311/325/306
-f 302/308/289 321/322/303 322/326/307
-f 297/309/290 316/323/304 317/327/308
-f 312/346/327 293/310/291 311/325/306
-f 287/311/292 306/347/328 307/328/309
-f 303/312/293 322/326/307 323/329/310
-f 298/313/294 317/327/308 318/330/311
-f 293/310/291 312/346/327 313/331/312
-f 288/314/295 307/328/309 308/332/313
-f 304/316/297 323/329/310 324/334/315
-f 299/317/298 318/330/311 319/335/316
-f 294/318/299 313/331/312 314/336/317
-f 289/319/300 308/332/313 309/337/318
-f 300/320/301 319/335/316 320/338/319
-f 295/321/302 314/336/317 315/339/320
-f 290/303/284 309/337/318 310/340/321
-f 320/338/319 339/357/338 340/341/322
-f 315/339/320 334/358/339 335/342/323
-f 310/340/321 329/359/340 330/343/324
-f 321/322/303 340/341/322 341/344/325
-f 316/323/304 335/342/323 336/345/326
-f 331/365/346 312/346/327 330/343/324
-f 306/347/328 325/366/347 326/348/329
-f 322/326/307 341/344/325 342/349/330
-f 317/327/308 336/345/326 337/350/331
-f 312/346/327 331/365/346 332/351/332
-f 307/328/309 326/348/329 327/352/333
-f 323/329/310 342/349/330 343/353/334
-f 318/330/311 337/350/331 338/354/335
-f 313/331/312 332/351/332 333/355/336
-f 308/332/313 327/352/333 328/356/337
-f 319/335/316 338/354/335 339/357/338
-f 314/336/317 333/355/336 334/358/339
-f 309/337/318 328/356/337 329/359/340
-f 339/357/338 359/376/357 360/360/341
-f 334/358/339 354/377/358 355/361/342
-f 329/359/340 349/378/359 350/362/343
-f 340/341/322 360/360/341 361/363/344
-f 335/342/323 355/361/342 356/364/345
-f 351/382/363 331/365/346 350/362/343
-f 325/366/347 345/383/364 346/367/348
-f 341/344/325 361/363/344 362/368/349
-f 336/345/326 356/364/345 357/369/350
-f 331/365/346 351/382/363 352/370/351
-f 326/348/329 346/367/348 347/371/352
-f 342/349/330 362/368/349 363/372/353
-f 337/350/331 357/369/350 358/373/354
-f 332/351/332 352/370/351 353/374/355
-f 327/352/333 347/371/352 348/375/356
-f 338/354/335 358/373/354 359/376/357
-f 333/355/336 353/374/355 354/377/358
-f 328/356/337 348/375/356 349/378/359
-f 349/378/359 368/395/376 369/379/360
-f 360/360/341 379/396/377 380/380/361
-f 355/361/342 374/397/378 375/381/362
-f 370/410/382 351/382/363 369/379/360
-f 345/383/364 364/408/381 365/384/365
-f 361/363/344 380/380/361 381/385/366
-f 356/364/345 375/381/362 376/386/367
-f 351/382/363 370/410/382 371/387/368
-f 346/367/348 365/384/365 366/388/369
-f 362/368/349 381/385/366 382/389/370
-f 357/369/350 376/386/367 377/390/371
-f 352/370/351 371/387/368 372/391/372
-f 347/371/352 366/388/369 367/392/373
-f 358/373/354 377/390/371 378/393/374
-f 353/374/355 372/391/372 373/394/375
-f 348/375/356 367/392/373 368/395/376
-f 359/376/357 378/393/374 379/396/377
-f 354/377/358 373/394/375 374/397/378
-f 17/1/1 380/380/361 16/2/2
-f 374/397/378 11/5/5 12/4/4
-f 369/379/360 6/8/8 7/7/7
-f 364/408/381 1/11/11 2/10/10
-f 18/13/13 381/385/366 17/1/1
-f 375/381/362 12/4/4 13/15/15
-f 370/410/382 7/7/7 8/17/17
-f 365/384/365 2/10/10 3/19/19
-f 19/21/21 382/389/370 18/13/13
-f 14/23/23 377/390/371 13/15/15
-f 371/387/368 8/17/17 9/25/25
-f 366/388/369 3/19/19 4/27/27
-f 15/29/29 378/393/374 14/23/23
-f 372/391/372 9/25/25 10/31/31
-f 367/392/373 4/27/27 5/33/33
-f 16/2/2 379/396/377 15/29/29
-f 373/394/375 10/31/31 11/5/5
-f 368/395/376 5/33/33 6/8/8
diff --git a/examples/datavisualization/rotations/mesh/narrowarrow.obj b/examples/datavisualization/rotations/mesh/narrowarrow.obj
deleted file mode 100644
index 481fc1d1..00000000
--- a/examples/datavisualization/rotations/mesh/narrowarrow.obj
+++ /dev/null
@@ -1,413 +0,0 @@
-# Blender v2.69 (sub 0) OBJ File: ''
-# www.blender.org
-v 0.000000 0.986570 0.000000
-v 0.000000 0.500000 -0.218399
-v -0.042608 0.500000 -0.214202
-v -0.083578 0.500000 -0.201774
-v -0.121336 0.500000 -0.181592
-v -0.154431 0.500000 -0.154431
-v -0.181592 0.500000 -0.121336
-v -0.201774 0.500000 -0.083578
-v -0.214202 0.500000 -0.042608
-v -0.218399 0.500000 -0.000000
-v -0.214202 0.500000 0.042607
-v -0.201774 0.500000 0.083578
-v -0.181592 0.500000 0.121336
-v -0.154431 0.500000 0.154431
-v -0.121336 0.500000 0.181592
-v -0.083578 0.500000 0.201774
-v -0.042607 0.500000 0.214202
-v 0.000000 0.500000 0.218399
-v 0.042608 0.500000 0.214202
-v 0.083578 0.500000 0.201774
-v 0.121336 0.500000 0.181592
-v 0.154431 0.500000 0.154431
-v 0.181592 0.500000 0.121336
-v 0.201774 0.500000 0.083577
-v 0.214202 0.500000 0.042607
-v 0.218399 0.500000 -0.000000
-v 0.214202 0.500000 -0.042608
-v 0.201774 0.500000 -0.083578
-v 0.181592 0.500000 -0.121336
-v 0.154431 0.500000 -0.154432
-v 0.121336 0.500000 -0.181592
-v 0.083577 0.500000 -0.201774
-v 0.042607 0.500000 -0.214202
-v 0.000000 0.000000 0.000000
-v 0.000000 0.000000 0.000000
-v -0.000000 0.500000 -0.126422
-v -0.024664 0.500000 -0.123993
-v -0.048380 0.500000 -0.116799
-v -0.070236 0.500000 -0.105116
-v -0.089394 0.500000 -0.089394
-v -0.105116 0.500000 -0.070236
-v -0.116799 0.500000 -0.048380
-v -0.123993 0.500000 -0.024664
-v -0.126422 0.500000 -0.000000
-v -0.123993 0.500000 0.024664
-v -0.116799 0.500000 0.048380
-v -0.105116 0.500000 0.070236
-v -0.089394 0.500000 0.089394
-v -0.070236 0.500000 0.105116
-v -0.048380 0.500000 0.116799
-v -0.024664 0.500000 0.123993
-v 0.000000 0.500000 0.126422
-v 0.024664 0.500000 0.123993
-v 0.048380 0.500000 0.116799
-v 0.070236 0.500000 0.105116
-v 0.089394 0.500000 0.089394
-v 0.105116 0.500000 0.070236
-v 0.116799 0.500000 0.048380
-v 0.123993 0.500000 0.024664
-v 0.126422 0.500000 -0.000000
-v 0.123993 0.500000 -0.024664
-v 0.116799 0.500000 -0.048380
-v 0.105116 0.500000 -0.070237
-v 0.089394 0.500000 -0.089394
-v 0.070236 0.500000 -0.105116
-v 0.048380 0.500000 -0.116799
-v 0.024664 0.500000 -0.123993
-v 0.126422 -0.983070 -0.000000
-v 0.123993 -0.983070 0.024664
-v -0.048380 -0.983070 -0.116799
-v -0.024664 -0.983070 -0.123993
-v -0.070236 -0.983070 0.105116
-v -0.089394 -0.983070 0.089394
-v 0.116799 -0.983070 0.048380
-v 0.105116 -0.983070 0.070236
-v -0.105116 -0.983070 0.070236
-v -0.116799 -0.983070 0.048380
-v 0.024664 -0.983070 -0.123993
-v 0.048380 -0.983070 -0.116799
-v 0.089394 -0.983070 0.089394
-v 0.070236 -0.983070 0.105116
-v -0.123993 -0.983070 0.024664
-v -0.126422 -0.983070 -0.000000
-v 0.070236 -0.983070 -0.105116
-v 0.089394 -0.983070 -0.089394
-v 0.048380 -0.983070 0.116799
-v 0.024664 -0.983070 0.123993
-v -0.123993 -0.983070 -0.024664
-v -0.116799 -0.983070 -0.048380
-v 0.105116 -0.983070 -0.070237
-v 0.116799 -0.983070 -0.048380
-v -0.105116 -0.983070 -0.070236
-v -0.089394 -0.983070 -0.089394
-v 0.000000 -0.983070 0.126422
-v -0.024664 -0.983070 0.123993
-v 0.123993 -0.983070 -0.024664
-v -0.070236 -0.983070 -0.105116
-v -0.048380 -0.983070 0.116799
-v -0.000000 -0.983070 -0.126422
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.500000 1.000000
-vt 0.597545 0.990393
-vt 0.402456 0.990393
-vt 0.691342 0.961940
-vt 0.777785 0.915735
-vt 0.853553 0.853553
-vt 0.915735 0.777785
-vt 0.961940 0.691342
-vt 0.990393 0.597545
-vt 1.000000 0.500000
-vt 0.990393 0.402455
-vt 0.961940 0.308658
-vt 0.915735 0.222215
-vt 0.853553 0.146447
-vt 0.777785 0.084265
-vt 0.691342 0.038060
-vt 0.597545 0.009607
-vt 0.308659 0.961940
-vt 0.222215 0.915735
-vt 0.146447 0.853554
-vt 0.308658 0.038060
-vt 0.500000 0.000000
-vt 0.402455 0.009607
-vt 0.222215 0.084265
-vt 0.146446 0.146447
-vt 0.084265 0.222215
-vt 0.009607 0.402455
-vt 0.038060 0.308659
-vt 0.009607 0.597546
-vt 0.000000 0.500000
-vt 0.038060 0.691342
-vt 0.084266 0.777786
-vn -0.089495 0.407852 -0.908651
-vn -0.265044 0.407852 -0.873733
-vn -0.430408 0.407852 -0.805236
-vn -0.579231 0.407852 -0.705796
-vn -0.705796 0.407852 -0.579232
-vn -0.805237 0.407852 -0.430408
-vn -0.873733 0.407852 -0.265043
-vn -0.908651 0.407852 -0.089495
-vn -0.908652 0.407852 0.089494
-vn -0.873732 0.407852 0.265044
-vn -0.805237 0.407852 0.430407
-vn -0.705796 0.407852 0.579232
-vn -0.579231 0.407852 0.705796
-vn -0.430408 0.407852 0.805237
-vn -0.265044 0.407852 0.873733
-vn -0.089494 0.407852 0.908652
-vn 0.089495 0.407852 0.908651
-vn 0.265044 0.407852 0.873732
-vn 0.430408 0.407852 0.805237
-vn 0.579232 0.407852 0.705796
-vn 0.705796 0.407852 0.579231
-vn 0.805237 0.407852 0.430406
-vn 0.873733 0.407852 0.265044
-vn 0.908652 0.407852 0.089493
-vn 0.908651 0.407852 -0.089496
-vn 0.873732 0.407852 -0.265045
-vn 0.805236 0.407852 -0.430409
-vn 0.705795 0.407852 -0.579232
-vn 0.579231 0.407852 -0.705796
-vn 0.430407 0.407852 -0.805237
-vn 0.265042 0.407852 -0.873733
-vn 0.089494 0.407852 -0.908652
-vn 0.000000 -1.000000 0.000000
-vn 0.000000 -1.000000 0.000062
-vn -0.290284 0.000000 0.956940
-vn -0.098017 0.000000 0.995185
-vn -0.634393 0.000000 -0.773010
-vn -0.773010 0.000000 -0.634393
-vn 0.956940 0.000000 -0.290286
-vn 0.881921 0.000000 -0.471398
-vn -0.881922 0.000000 -0.471396
-vn -0.956940 0.000000 -0.290285
-vn 0.098017 0.000000 0.995185
-vn 0.290285 0.000000 0.956940
-vn 0.773010 0.000000 -0.634394
-vn 0.634392 0.000000 -0.773011
-vn -0.995185 0.000000 -0.098017
-vn -0.995185 0.000000 0.098017
-vn 0.471397 0.000000 0.881921
-vn 0.634394 0.000000 0.773010
-vn 0.471395 0.000000 -0.881922
-vn 0.290283 0.000000 -0.956941
-vn 0.098016 0.000000 -0.995185
-vn -0.956940 0.000000 0.290285
-vn -0.881922 0.000000 0.471396
-vn 0.773011 0.000000 0.634393
-vn 0.881922 0.000000 0.471396
-vn -0.773010 0.000000 0.634393
-vn -0.634394 0.000000 0.773010
-vn -0.471397 0.000000 0.881921
-vn -0.098016 0.000000 -0.995185
-vn -0.290284 0.000000 -0.956940
-vn -0.471397 0.000000 -0.881921
-vn 0.956941 0.000000 0.290284
-vn 0.995185 0.000000 0.098016
-vn 0.995185 0.000000 -0.098018
-vn 0.000000 -1.000000 0.000001
-vn 0.000000 -1.000000 0.000018
-vn 0.000000 -1.000000 -0.000013
-vn 0.000000 -1.000000 0.000011
-vn 0.000000 -1.000000 0.000002
-vn 0.000000 -1.000000 -0.000031
-vn 0.000000 -1.000000 0.000031
-vn 0.000000 -1.000000 -0.000021
-vn 0.000000 -1.000000 -0.000016
-vn 0.000000 -1.000000 -0.000005
-vn 0.000000 -1.000000 0.000003
-vn -0.098015 0.000000 0.995185
-vn -0.773011 0.000000 -0.634393
-vn -0.881921 0.000000 -0.471396
-vn 0.773009 0.000000 -0.634394
-vn 0.098017 0.000000 -0.995185
-vn -0.634393 0.000000 0.773011
-vn -0.098018 0.000000 -0.995185
-vn -0.290285 0.000000 -0.956940
-s off
-f 1/1/1 2/2/1 3/3/1
-f 1/1/2 3/2/2 4/3/2
-f 1/1/3 4/2/3 5/3/3
-f 1/1/4 5/2/4 6/3/4
-f 1/1/5 6/2/5 7/3/5
-f 1/1/6 7/2/6 8/3/6
-f 1/1/7 8/2/7 9/3/7
-f 1/1/8 9/2/8 10/3/8
-f 1/1/9 10/2/9 11/3/9
-f 1/1/10 11/2/10 12/3/10
-f 1/1/11 12/2/11 13/3/11
-f 1/1/12 13/2/12 14/3/12
-f 1/1/13 14/2/13 15/3/13
-f 1/1/14 15/2/14 16/3/14
-f 1/1/15 16/2/15 17/3/15
-f 1/1/16 17/2/16 18/3/16
-f 1/1/17 18/2/17 19/3/17
-f 1/1/18 19/2/18 20/3/18
-f 1/1/19 20/2/19 21/3/19
-f 1/1/20 21/2/20 22/3/20
-f 1/1/21 22/2/21 23/3/21
-f 1/1/22 23/2/22 24/3/22
-f 1/1/23 24/2/23 25/3/23
-f 1/1/24 25/2/24 26/3/24
-f 1/1/25 26/2/25 27/3/25
-f 1/1/26 27/2/26 28/3/26
-f 1/1/27 28/2/27 29/3/27
-f 1/1/28 29/2/28 30/3/28
-f 1/1/29 30/2/29 31/3/29
-f 1/1/30 31/2/30 32/3/30
-f 1/1/31 32/2/31 33/3/31
-f 1/1/32 33/2/32 2/3/32
-f 24/1/33 23/2/33 58/4/33
-f 13/1/33 12/2/33 47/4/33
-f 2/1/33 33/2/33 36/4/33
-f 23/1/33 22/2/33 57/4/33
-f 12/1/33 11/2/33 46/4/33
-f 33/1/33 32/2/33 67/4/33
-f 22/1/33 21/2/33 56/4/33
-f 11/1/33 10/2/33 45/4/33
-f 32/1/33 31/2/33 66/4/33
-f 21/1/33 20/2/33 55/4/33
-f 10/1/33 9/2/33 44/4/33
-f 31/1/33 30/2/33 65/4/33
-f 20/1/33 19/2/33 54/4/33
-f 9/1/33 8/2/33 43/4/33
-f 30/1/33 29/2/33 64/4/33
-f 19/1/33 18/2/33 53/4/33
-f 3/1/33 2/2/33 37/4/33
-f 8/1/33 7/2/33 42/4/33
-f 29/1/33 28/2/33 63/4/33
-f 7/1/33 6/2/33 41/4/33
-f 18/1/33 17/2/33 52/4/33
-f 28/1/33 27/2/33 62/4/33
-f 6/1/33 5/2/33 40/4/33
-f 17/1/33 16/2/33 51/4/33
-f 27/1/33 26/2/33 61/4/33
-f 5/1/33 4/2/33 39/4/33
-f 16/1/33 15/2/33 50/4/33
-f 26/1/33 25/2/33 60/4/33
-f 4/1/33 3/2/33 38/4/33
-f 15/1/33 14/2/33 49/4/33
-f 25/1/33 24/2/33 59/4/33
-f 14/1/33 13/2/33 48/4/33
-f 81/5/34 86/6/34 80/7/34
-f 51/1/35 50/2/35 95/4/35
-f 52/1/36 51/2/36 94/4/36
-f 40/1/37 39/2/37 93/4/37
-f 41/1/38 40/2/38 92/4/38
-f 62/1/39 61/2/39 91/4/39
-f 63/1/40 62/2/40 90/4/40
-f 42/1/41 41/2/41 89/4/41
-f 43/1/42 42/2/42 88/4/42
-f 53/1/43 52/2/43 87/4/43
-f 54/1/44 53/2/44 86/4/44
-f 64/1/45 63/2/45 85/4/45
-f 65/1/46 64/2/46 84/4/46
-f 44/1/47 43/2/47 83/4/47
-f 45/1/48 44/2/48 82/4/48
-f 55/1/49 54/2/49 81/4/49
-f 56/1/50 55/2/50 80/4/50
-f 66/1/51 65/2/51 79/4/51
-f 67/1/52 66/2/52 78/4/52
-f 36/1/53 67/2/53 99/4/53
-f 46/1/54 45/2/54 77/4/54
-f 47/1/55 46/2/55 76/4/55
-f 57/1/56 56/2/56 75/4/56
-f 58/1/57 57/2/57 74/4/57
-f 48/1/58 47/2/58 73/4/58
-f 49/1/59 48/2/59 72/4/59
-f 50/1/60 49/2/60 98/4/60
-f 37/1/61 36/2/61 71/4/61
-f 38/1/62 37/2/62 70/4/62
-f 39/1/63 38/2/63 97/4/63
-f 59/1/64 58/2/64 69/4/64
-f 60/1/65 59/2/65 68/4/65
-f 61/1/66 60/2/66 96/4/66
-f 23/2/33 57/3/33 58/4/33
-f 12/2/33 46/3/33 47/4/33
-f 33/2/33 67/3/33 36/4/33
-f 22/2/33 56/3/33 57/4/33
-f 11/2/33 45/3/33 46/4/33
-f 32/2/67 66/3/67 67/4/67
-f 21/2/33 55/3/33 56/4/33
-f 10/2/33 44/3/33 45/4/33
-f 31/2/33 65/3/33 66/4/33
-f 20/2/33 54/3/33 55/4/33
-f 9/2/33 43/3/33 44/4/33
-f 30/2/33 64/3/33 65/4/33
-f 19/2/33 53/3/33 54/4/33
-f 8/2/33 42/3/33 43/4/33
-f 29/2/33 63/3/33 64/4/33
-f 18/2/33 52/3/33 53/4/33
-f 2/2/33 36/3/33 37/4/33
-f 7/2/33 41/3/33 42/4/33
-f 28/2/33 62/3/33 63/4/33
-f 6/2/33 40/3/33 41/4/33
-f 17/2/33 51/3/33 52/4/33
-f 27/2/33 61/3/33 62/4/33
-f 5/2/33 39/3/33 40/4/33
-f 16/2/67 50/3/67 51/4/67
-f 26/2/33 60/3/33 61/4/33
-f 4/2/33 38/3/33 39/4/33
-f 15/2/33 49/3/33 50/4/33
-f 25/2/33 59/3/33 60/4/33
-f 3/2/33 37/3/33 38/4/33
-f 14/2/33 48/3/33 49/4/33
-f 24/2/33 58/3/33 59/4/33
-f 13/2/33 47/3/33 48/4/33
-f 86/6/33 87/8/33 80/7/33
-f 87/8/33 94/9/33 80/7/33
-f 94/9/33 95/10/33 80/7/33
-f 95/10/68 98/11/68 80/7/68
-f 98/11/69 72/12/69 80/7/69
-f 72/12/70 73/13/70 80/7/70
-f 73/13/33 76/14/33 80/7/33
-f 76/14/33 77/15/33 80/7/33
-f 77/15/33 82/16/33 80/7/33
-f 82/16/33 83/17/33 80/7/33
-f 83/17/33 88/18/33 80/7/33
-f 88/18/33 89/19/33 80/7/33
-f 89/19/33 92/20/33 93/21/33
-f 80/7/71 89/19/71 93/21/71
-f 75/22/33 80/7/33 93/21/33
-f 74/23/33 75/22/33 93/21/33
-f 69/24/33 74/23/33 93/21/33
-f 71/25/72 97/26/72 70/27/72
-f 71/25/73 93/21/73 97/26/73
-f 99/28/74 93/21/74 71/25/74
-f 78/29/33 93/21/33 99/28/33
-f 79/30/33 93/21/33 78/29/33
-f 85/31/73 79/30/73 84/32/73
-f 85/31/33 93/21/33 79/30/33
-f 91/33/75 85/31/75 90/34/75
-f 91/33/33 93/21/33 85/31/33
-f 96/35/33 68/36/33 91/33/33
-f 68/36/76 69/24/76 93/21/76
-f 91/33/77 68/36/77 93/21/77
-f 50/2/35 98/3/35 95/4/35
-f 51/2/78 95/3/78 94/4/78
-f 39/2/37 97/3/37 93/4/37
-f 40/2/79 93/3/79 92/4/79
-f 61/2/39 96/3/39 91/4/39
-f 62/2/40 91/3/40 90/4/40
-f 41/2/80 92/3/80 89/4/80
-f 42/2/42 89/3/42 88/4/42
-f 52/2/43 94/3/43 87/4/43
-f 53/2/44 87/3/44 86/4/44
-f 63/2/81 90/3/81 85/4/81
-f 64/2/46 85/3/46 84/4/46
-f 43/2/47 88/3/47 83/4/47
-f 44/2/48 83/3/48 82/4/48
-f 54/2/49 86/3/49 81/4/49
-f 55/2/50 81/3/50 80/4/50
-f 65/2/51 84/3/51 79/4/51
-f 66/2/52 79/3/52 78/4/52
-f 67/2/82 78/3/82 99/4/82
-f 45/2/54 82/3/54 77/4/54
-f 46/2/55 77/3/55 76/4/55
-f 56/2/56 80/3/56 75/4/56
-f 57/2/57 75/3/57 74/4/57
-f 47/2/58 76/3/58 73/4/58
-f 48/2/83 73/3/83 72/4/83
-f 49/2/60 72/3/60 98/4/60
-f 36/2/84 99/3/84 71/4/84
-f 37/2/85 71/3/85 70/4/85
-f 38/2/63 70/3/63 97/4/63
-f 58/2/64 74/3/64 69/4/64
-f 59/2/65 69/3/65 68/4/65
-f 60/2/66 68/3/66 96/4/66
diff --git a/examples/datavisualization/rotations/rotations.pro b/examples/datavisualization/rotations/rotations.pro
deleted file mode 100644
index faabc5aa..00000000
--- a/examples/datavisualization/rotations/rotations.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp scatterdatamodifier.cpp
-HEADERS += scatterdatamodifier.h
-
-QT += widgets
-
-RESOURCES += rotations.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/rotations/rotations.qrc b/examples/datavisualization/rotations/rotations.qrc
deleted file mode 100644
index bf66ebeb..00000000
--- a/examples/datavisualization/rotations/rotations.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>mesh/narrowarrow.obj</file>
- <file>mesh/largesphere.obj</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/rotations/scatterdatamodifier.cpp b/examples/datavisualization/rotations/scatterdatamodifier.cpp
deleted file mode 100644
index 571761e8..00000000
--- a/examples/datavisualization/rotations/scatterdatamodifier.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "scatterdatamodifier.h"
-#include <QtDataVisualization/qscatterdataproxy.h>
-#include <QtDataVisualization/qvalue3daxis.h>
-#include <QtDataVisualization/q3dscene.h>
-#include <QtDataVisualization/q3dcamera.h>
-#include <QtDataVisualization/qscatter3dseries.h>
-#include <QtDataVisualization/q3dtheme.h>
-#include <QtDataVisualization/QCustom3DItem>
-#include <QtCore/qmath.h>
-
-static const float verticalRange = 8.0f;
-static const float horizontalRange = verticalRange;
-static const float ellipse_a = horizontalRange / 3.0f;
-static const float ellipse_b = verticalRange;
-static const float doublePi = float(M_PI) * 2.0f;
-static const float radiansToDegrees = 360.0f / doublePi;
-static const float animationFrames = 30.0f;
-
-ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
- : m_graph(scatter),
- m_fieldLines(12),
- m_arrowsPerLine(16),
- m_magneticField(new QScatter3DSeries),
- m_sun(new QCustom3DItem),
- m_magneticFieldArray(0),
- m_angleOffset(0.0f),
- m_angleStep(doublePi / m_arrowsPerLine / animationFrames)
-{
- m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
- m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
-
- // Magnetic field lines use custom narrow arrow
- m_magneticField->setItemSize(0.2f);
- //! [3]
- m_magneticField->setMesh(QAbstract3DSeries::MeshUserDefined);
- m_magneticField->setUserDefinedMesh(QStringLiteral(":/mesh/narrowarrow.obj"));
- //! [3]
- //! [4]
- QLinearGradient fieldGradient(0, 0, 16, 1024);
- fieldGradient.setColorAt(0.0, Qt::black);
- fieldGradient.setColorAt(1.0, Qt::white);
- m_magneticField->setBaseGradient(fieldGradient);
- m_magneticField->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
- //! [4]
-
- // For 'sun' we use a custom large sphere
- m_sun->setScaling(QVector3D(0.07f, 0.07f, 0.07f));
- m_sun->setMeshFile(QStringLiteral(":/mesh/largesphere.obj"));
- QImage sunColor = QImage(2, 2, QImage::Format_RGB32);
- sunColor.fill(QColor(0xff, 0xbb, 0x00));
- m_sun->setTextureImage(sunColor);
-
- m_graph->addSeries(m_magneticField);
- m_graph->addCustomItem(m_sun);
-
- // Configure the axes according to the data
- m_graph->axisX()->setRange(-horizontalRange, horizontalRange);
- m_graph->axisY()->setRange(-verticalRange, verticalRange);
- m_graph->axisZ()->setRange(-horizontalRange, horizontalRange);
- m_graph->axisX()->setSegmentCount(int(horizontalRange));
- m_graph->axisZ()->setSegmentCount(int(horizontalRange));
-
- QObject::connect(&m_rotationTimer, &QTimer::timeout, this,
- &ScatterDataModifier::triggerRotation);
-
- toggleRotation();
- generateData();
-}
-
-ScatterDataModifier::~ScatterDataModifier()
-{
- delete m_graph;
-}
-
-void ScatterDataModifier::generateData()
-{
- // Reusing existing array is computationally cheaper than always generating new array, even if
- // all data items change in the array, if the array size doesn't change.
- if (!m_magneticFieldArray)
- m_magneticFieldArray = new QScatterDataArray;
-
- int arraySize = m_fieldLines * m_arrowsPerLine;
- if (arraySize != m_magneticFieldArray->size())
- m_magneticFieldArray->resize(arraySize);
-
- QScatterDataItem *ptrToDataArray = &m_magneticFieldArray->first();
-
- for (float i = 0; i < m_fieldLines; i++) {
- float horizontalAngle = (doublePi * i) / m_fieldLines;
- float xCenter = ellipse_a * qCos(horizontalAngle);
- float zCenter = ellipse_a * qSin(horizontalAngle);
-
- // Rotate - arrow always tangential to origin
- //! [0]
- QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, horizontalAngle * radiansToDegrees);
- //! [0]
-
- for (float j = 0; j < m_arrowsPerLine; j++) {
- // Calculate point on ellipse centered on origin and parallel to x-axis
- float verticalAngle = ((doublePi * j) / m_arrowsPerLine) + m_angleOffset;
- float xUnrotated = ellipse_a * qCos(verticalAngle);
- float y = ellipse_b * qSin(verticalAngle);
-
- // Rotate the ellipse around y-axis
- float xRotated = xUnrotated * qCos(horizontalAngle);
- float zRotated = xUnrotated * qSin(horizontalAngle);
-
- // Add offset
- float x = xCenter + xRotated;
- float z = zCenter + zRotated;
-
- //! [1]
- QQuaternion zRotation = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, verticalAngle * radiansToDegrees);
- QQuaternion totalRotation = yRotation * zRotation;
- //! [1]
-
- ptrToDataArray->setPosition(QVector3D(x, y, z));
- //! [2]
- ptrToDataArray->setRotation(totalRotation);
- //! [2]
- ptrToDataArray++;
- }
- }
-
- if (m_graph->selectedSeries() == m_magneticField)
- m_graph->clearSelection();
-
- m_magneticField->dataProxy()->resetArray(m_magneticFieldArray);
-}
-
-void ScatterDataModifier::setFieldLines(int lines)
-{
- m_fieldLines = lines;
- generateData();
-}
-
-void ScatterDataModifier::setArrowsPerLine(int arrows)
-{
- m_angleOffset = 0.0f;
- m_angleStep = doublePi / m_arrowsPerLine / animationFrames;
- m_arrowsPerLine = arrows;
- generateData();
-}
-
-void ScatterDataModifier::triggerRotation()
-{
- m_angleOffset += m_angleStep;
- generateData();
-}
-
-void ScatterDataModifier::toggleSun()
-{
- m_sun->setVisible(!m_sun->isVisible());
-}
-
-void ScatterDataModifier::toggleRotation()
-{
- if (m_rotationTimer.isActive())
- m_rotationTimer.stop();
- else
- m_rotationTimer.start(15);
-}
diff --git a/examples/datavisualization/rotations/scatterdatamodifier.h b/examples/datavisualization/rotations/scatterdatamodifier.h
deleted file mode 100644
index 4d11b147..00000000
--- a/examples/datavisualization/rotations/scatterdatamodifier.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SCATTERDATAMODIFIER_H
-#define SCATTERDATAMODIFIER_H
-
-#include <QtDataVisualization/q3dscatter.h>
-#include <QtDataVisualization/qscatterdataproxy.h>
-#include <QtCore/QTimer>
-
-class ScatterDataModifier : public QObject
-{
- Q_OBJECT
-public:
- explicit ScatterDataModifier(Q3DScatter *scatter);
- ~ScatterDataModifier();
-
- void generateData();
-
-public Q_SLOTS:
- void setFieldLines(int lines);
- void setArrowsPerLine(int arrows);
- void toggleRotation();
- void triggerRotation();
- void toggleSun();
-
-private:
- Q3DScatter *m_graph;
- QTimer m_rotationTimer;
- int m_fieldLines;
- int m_arrowsPerLine;
- QScatter3DSeries *m_magneticField;
- QCustom3DItem *m_sun;
- QScatterDataArray *m_magneticFieldArray;
- float m_angleOffset;
- float m_angleStep;
-};
-
-#endif
diff --git a/examples/datavisualization/scatter/CMakeLists.txt b/examples/datavisualization/scatter/CMakeLists.txt
deleted file mode 100644
index 1b2e967f..00000000
--- a/examples/datavisualization/scatter/CMakeLists.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(scatter LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(scatter
- main.cpp
- scatterdatamodifier.cpp scatterdatamodifier.h
-)
-set_target_properties(scatter PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(scatter PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-install(TARGETS scatter
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/scatter/doc/images/scatter-example.png b/examples/datavisualization/scatter/doc/images/scatter-example.png
deleted file mode 100644
index 82c13855..00000000
--- a/examples/datavisualization/scatter/doc/images/scatter-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/scatter/doc/src/scatter.qdoc b/examples/datavisualization/scatter/doc/src/scatter.qdoc
deleted file mode 100644
index 36887592..00000000
--- a/examples/datavisualization/scatter/doc/src/scatter.qdoc
+++ /dev/null
@@ -1,157 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example scatter
- \title Scatter Example
- \ingroup qtdatavisualization_examples
- \brief Using Q3DScatter in a widget application.
-
- The scatter example shows how to make a simple 3D scatter graph using Q3DScatter and
- combining the use of widgets for adjusting several adjustable qualities. The example shows
- how to:
-
- \list
- \li Create an application with Q3DScatter and some widgets
- \li Use QScatterDataProxy to set data to the graph
- \li Adjust some graph properties using widget controls
- \endlist
-
- For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
-
- \image scatter-example.png
-
- \include examples-run.qdocinc
-
- \section1 Creating the Application
-
- First, in main.cpp, we create a QApplication, instantiate Q3DScatter, and a window container
- for it:
-
- \snippet scatter/main.cpp 0
-
- The call to QWidget::createWindowContainer is required, as all data visualization graph classes
- (Q3DBars, Q3DScatter, and Q3DSurface) inherit QWindow. Any class inheriting QWindow cannot be used
- as a widget any other way.
-
- Then we'll create horizontal and vertical layouts. We'll add the graph and the vertical
- layout into the horizontal one:
-
- \snippet scatter/main.cpp 1
-
- We're not using the vertical layout for anything yet, but we'll get back to it in
- \l {Using widgets to control the graph}
-
- Next, let's create another class to handle the data addition and other interaction with the
- graph. Let's call it \c ScatterDataModifier (See \l {Setting up the graph} and
- \l {Adding data to the graph} for details):
-
- \snippet scatter/main.cpp 2
-
- The application main is done. We can show the graph and start the event loop:
-
- \snippet scatter/main.cpp 3
-
- \section1 Setting up the Graph
-
- Let's set up some visual qualities for the graph in the constructor of the \c ScatterDataModifier
- class we instantiated in the application main:
-
- \snippet scatter/scatterdatamodifier.cpp 0
-
- None of these are required, but are used to override graph defaults. You can try how it looks
- with the preset defaults by commenting the block above out.
-
- Finally we create a QScatterDataProxy and the associated QScatter3DSeries. We set custom label format
- and mesh smoothing for the series and add it to the graph:
-
- \snippet scatter/scatterdatamodifier.cpp 2
-
- That concludes setting up the graph.
-
- \section1 Adding Data to the Graph
-
- The last thing we do in the \c ScatterDataModifier constructor is to add data to the graph:
-
- \snippet scatter/scatterdatamodifier.cpp 3
-
- The actual data addition is done in \c addData() method. First we configure the axes:
-
- \snippet scatter/scatterdatamodifier.cpp 4
-
- This could have been done in the constructor of \c {ScatterDataModifier}, but we added it here
- to keep the constructor simpler and the axes configuration near the data.
-
- Next we create a data array:
-
- \snippet scatter/scatterdatamodifier.cpp 5
-
- and populate it:
-
- \snippet scatter/scatterdatamodifier.cpp 6
-
- Finally we tell the proxy to start using the data we gave it:
-
- \snippet scatter/scatterdatamodifier.cpp 7
-
- Now our graph has the data and is ready to be used. There isn't much interaction yet, though,
- so let's continue by adding some widgets to play with.
-
- \section1 Using Widgets to Control the Graph
-
- First, back in the application main, we'll create some widgets:
-
- \snippet scatter/main.cpp 4
-
- And add them to the vertical layout we created earlier:
-
- \snippet scatter/main.cpp 5
-
- Now, let's connect them to methods in ScatterDataModifier:
-
- \snippet scatter/main.cpp 6
-
- Here are the methods in ScatterDataModifier the signals were connected to:
-
- \snippet scatter/scatterdatamodifier.cpp 8
-
- And so we have an application in which we can control:
-
- \list
- \li Label style
- \li Camera preset
- \li Background visibility
- \li Grid visibility
- \li Dot shading smoothness
- \li Dot style
- \li Theme
- \li Shadow quality
- \li Label font
- \endlist
-
- \section1 Example Contents
-*/
diff --git a/examples/datavisualization/scatter/main.cpp b/examples/datavisualization/scatter/main.cpp
deleted file mode 100644
index 52a4e397..00000000
--- a/examples/datavisualization/scatter/main.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "scatterdatamodifier.h"
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QPushButton>
-#include <QtWidgets/QCheckBox>
-#include <QtWidgets/QComboBox>
-#include <QtWidgets/QFontComboBox>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QMessageBox>
-#include <QtGui/QScreen>
-#include <QtGui/QFontDatabase>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- //! [0]
- QApplication app(argc, argv);
- Q3DScatter *graph = new Q3DScatter();
- QWidget *container = QWidget::createWindowContainer(graph);
- //! [0]
-
- if (!graph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- QSize screenSize = graph->screen()->size();
- container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
- container->setMaximumSize(screenSize);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- //! [1]
- QWidget *widget = new QWidget;
- QHBoxLayout *hLayout = new QHBoxLayout(widget);
- QVBoxLayout *vLayout = new QVBoxLayout();
- hLayout->addWidget(container, 1);
- hLayout->addLayout(vLayout);
- //! [1]
-
- widget->setWindowTitle(QStringLiteral("A Cosine Wave"));
-
- //! [4]
- QComboBox *themeList = new QComboBox(widget);
- themeList->addItem(QStringLiteral("Qt"));
- themeList->addItem(QStringLiteral("Primary Colors"));
- themeList->addItem(QStringLiteral("Digia"));
- themeList->addItem(QStringLiteral("Stone Moss"));
- themeList->addItem(QStringLiteral("Army Blue"));
- themeList->addItem(QStringLiteral("Retro"));
- themeList->addItem(QStringLiteral("Ebony"));
- themeList->addItem(QStringLiteral("Isabelle"));
- themeList->setCurrentIndex(6);
-
- QPushButton *labelButton = new QPushButton(widget);
- labelButton->setText(QStringLiteral("Change label style"));
-
- QCheckBox *smoothCheckBox = new QCheckBox(widget);
- smoothCheckBox->setText(QStringLiteral("Smooth dots"));
- smoothCheckBox->setChecked(true);
-
- QComboBox *itemStyleList = new QComboBox(widget);
- itemStyleList->addItem(QStringLiteral("Sphere"), int(QAbstract3DSeries::MeshSphere));
- itemStyleList->addItem(QStringLiteral("Cube"), int(QAbstract3DSeries::MeshCube));
- itemStyleList->addItem(QStringLiteral("Minimal"), int(QAbstract3DSeries::MeshMinimal));
- itemStyleList->addItem(QStringLiteral("Point"), int(QAbstract3DSeries::MeshPoint));
- itemStyleList->setCurrentIndex(0);
-
- QPushButton *cameraButton = new QPushButton(widget);
- cameraButton->setText(QStringLiteral("Change camera preset"));
-
- QPushButton *itemCountButton = new QPushButton(widget);
- itemCountButton->setText(QStringLiteral("Toggle item count"));
-
- QCheckBox *backgroundCheckBox = new QCheckBox(widget);
- backgroundCheckBox->setText(QStringLiteral("Show background"));
- backgroundCheckBox->setChecked(true);
-
- QCheckBox *gridCheckBox = new QCheckBox(widget);
- gridCheckBox->setText(QStringLiteral("Show grid"));
- gridCheckBox->setChecked(true);
-
- QComboBox *shadowQuality = new QComboBox(widget);
- shadowQuality->addItem(QStringLiteral("None"));
- shadowQuality->addItem(QStringLiteral("Low"));
- shadowQuality->addItem(QStringLiteral("Medium"));
- shadowQuality->addItem(QStringLiteral("High"));
- shadowQuality->addItem(QStringLiteral("Low Soft"));
- shadowQuality->addItem(QStringLiteral("Medium Soft"));
- shadowQuality->addItem(QStringLiteral("High Soft"));
- shadowQuality->setCurrentIndex(4);
-
- QFontComboBox *fontList = new QFontComboBox(widget);
- fontList->setCurrentFont(QFont("Arial"));
- //! [4]
-
- //! [5]
- vLayout->addWidget(labelButton, 0, Qt::AlignTop);
- vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
- vLayout->addWidget(itemCountButton, 0, Qt::AlignTop);
- vLayout->addWidget(backgroundCheckBox);
- vLayout->addWidget(gridCheckBox);
- vLayout->addWidget(smoothCheckBox, 0, Qt::AlignTop);
- vLayout->addWidget(new QLabel(QStringLiteral("Change dot style")));
- vLayout->addWidget(itemStyleList);
- vLayout->addWidget(new QLabel(QStringLiteral("Change theme")));
- vLayout->addWidget(themeList);
- vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")));
- vLayout->addWidget(shadowQuality);
- vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
- vLayout->addWidget(fontList, 1, Qt::AlignTop);
- //! [5]
-
- //! [2]
- ScatterDataModifier *modifier = new ScatterDataModifier(graph);
- //! [2]
-
- //! [6]
- QObject::connect(cameraButton, &QPushButton::clicked, modifier,
- &ScatterDataModifier::changePresetCamera);
- QObject::connect(labelButton, &QPushButton::clicked, modifier,
- &ScatterDataModifier::changeLabelStyle);
- QObject::connect(itemCountButton, &QPushButton::clicked, modifier,
- &ScatterDataModifier::toggleItemCount);
-
- QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier,
- &ScatterDataModifier::setBackgroundEnabled);
- QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier,
- &ScatterDataModifier::setGridEnabled);
- QObject::connect(smoothCheckBox, &QCheckBox::stateChanged, modifier,
- &ScatterDataModifier::setSmoothDots);
-
- QObject::connect(modifier, &ScatterDataModifier::backgroundEnabledChanged,
- backgroundCheckBox, &QCheckBox::setChecked);
- QObject::connect(modifier, &ScatterDataModifier::gridEnabledChanged,
- gridCheckBox, &QCheckBox::setChecked);
- QObject::connect(itemStyleList, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeStyle(int)));
-
- QObject::connect(themeList, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeTheme(int)));
-
- QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier,
- SLOT(changeShadowQuality(int)));
-
- QObject::connect(modifier, &ScatterDataModifier::shadowQualityChanged, shadowQuality,
- &QComboBox::setCurrentIndex);
- QObject::connect(graph, &Q3DScatter::shadowQualityChanged, modifier,
- &ScatterDataModifier::shadowQualityUpdatedByVisual);
-
- QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier,
- &ScatterDataModifier::changeFont);
-
- QObject::connect(modifier, &ScatterDataModifier::fontChanged, fontList,
- &QFontComboBox::setCurrentFont);
- //! [6]
-
- //! [3]
- widget->show();
- return app.exec();
- //! [3]
-}
diff --git a/examples/datavisualization/scatter/scatter.pro b/examples/datavisualization/scatter/scatter.pro
deleted file mode 100644
index b9f29f9c..00000000
--- a/examples/datavisualization/scatter/scatter.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp scatterdatamodifier.cpp
-HEADERS += scatterdatamodifier.h
-
-QT += widgets
-requires(qtConfig(combobox))
-requires(qtConfig(fontcombobox))
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/scatter/scatterdatamodifier.cpp b/examples/datavisualization/scatter/scatterdatamodifier.cpp
deleted file mode 100644
index d9e3c86b..00000000
--- a/examples/datavisualization/scatter/scatterdatamodifier.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "scatterdatamodifier.h"
-#include <QtDataVisualization/qscatterdataproxy.h>
-#include <QtDataVisualization/qvalue3daxis.h>
-#include <QtDataVisualization/q3dscene.h>
-#include <QtDataVisualization/q3dcamera.h>
-#include <QtDataVisualization/qscatter3dseries.h>
-#include <QtDataVisualization/q3dtheme.h>
-#include <QtCore/qmath.h>
-#include <QtCore/qrandom.h>
-#include <QtWidgets/QComboBox>
-
-//#define RANDOM_SCATTER // Uncomment this to switch to random scatter
-
-const int numberOfItems = 3600;
-const float curveDivider = 3.0f;
-const int lowerNumberOfItems = 900;
-const float lowerCurveDivider = 0.75f;
-
-ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
- : m_graph(scatter),
- m_fontSize(40.0f),
- m_style(QAbstract3DSeries::MeshSphere),
- m_smooth(true),
- m_itemCount(lowerNumberOfItems),
- m_curveDivider(lowerCurveDivider)
-{
- //! [0]
- m_graph->activeTheme()->setType(Q3DTheme::ThemeEbony);
- QFont font = m_graph->activeTheme()->font();
- font.setPointSize(m_fontSize);
- m_graph->activeTheme()->setFont(font);
- m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftLow);
- m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
- //! [0]
-
- //! [2]
- QScatterDataProxy *proxy = new QScatterDataProxy;
- QScatter3DSeries *series = new QScatter3DSeries(proxy);
- series->setItemLabelFormat(QStringLiteral("@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel"));
- series->setMeshSmooth(m_smooth);
- m_graph->addSeries(series);
- //! [2]
-
- //! [3]
- addData();
- //! [3]
-}
-
-ScatterDataModifier::~ScatterDataModifier()
-{
- delete m_graph;
-}
-
-void ScatterDataModifier::addData()
-{
- // Configure the axes according to the data
- //! [4]
- m_graph->axisX()->setTitle("X");
- m_graph->axisY()->setTitle("Y");
- m_graph->axisZ()->setTitle("Z");
- //! [4]
-
- //! [5]
- QScatterDataArray *dataArray = new QScatterDataArray;
- dataArray->resize(m_itemCount);
- QScatterDataItem *ptrToDataArray = &dataArray->first();
- //! [5]
-
-#ifdef RANDOM_SCATTER
- for (int i = 0; i < m_itemCount; i++) {
- ptrToDataArray->setPosition(randVector());
- ptrToDataArray++;
- }
-#else
- //! [6]
- float limit = qSqrt(m_itemCount) / 2.0f;
- for (float i = -limit; i < limit; i++) {
- for (float j = -limit; j < limit; j++) {
- ptrToDataArray->setPosition(QVector3D(i + 0.5f,
- qCos(qDegreesToRadians((i * j) / m_curveDivider)),
- j + 0.5f));
- ptrToDataArray++;
- }
- }
- //! [6]
-#endif
-
- //! [7]
- m_graph->seriesList().at(0)->dataProxy()->resetArray(dataArray);
- //! [7]
-}
-
-//! [8]
-void ScatterDataModifier::changeStyle(int style)
-{
- QComboBox *comboBox = qobject_cast<QComboBox *>(sender());
- if (comboBox) {
- m_style = QAbstract3DSeries::Mesh(comboBox->itemData(style).toInt());
- if (m_graph->seriesList().size())
- m_graph->seriesList().at(0)->setMesh(m_style);
- }
-}
-
-void ScatterDataModifier::setSmoothDots(int smooth)
-{
- m_smooth = bool(smooth);
- QScatter3DSeries *series = m_graph->seriesList().at(0);
- series->setMeshSmooth(m_smooth);
-}
-
-void ScatterDataModifier::changeTheme(int theme)
-{
- Q3DTheme *currentTheme = m_graph->activeTheme();
- currentTheme->setType(Q3DTheme::Theme(theme));
- emit backgroundEnabledChanged(currentTheme->isBackgroundEnabled());
- emit gridEnabledChanged(currentTheme->isGridEnabled());
- emit fontChanged(currentTheme->font());
-}
-
-void ScatterDataModifier::changePresetCamera()
-{
- static int preset = Q3DCamera::CameraPresetFrontLow;
-
- m_graph->scene()->activeCamera()->setCameraPreset((Q3DCamera::CameraPreset)preset);
-
- if (++preset > Q3DCamera::CameraPresetDirectlyBelow)
- preset = Q3DCamera::CameraPresetFrontLow;
-}
-
-void ScatterDataModifier::changeLabelStyle()
-{
- m_graph->activeTheme()->setLabelBackgroundEnabled(!m_graph->activeTheme()->isLabelBackgroundEnabled());
-}
-
-void ScatterDataModifier::changeFont(const QFont &font)
-{
- QFont newFont = font;
- newFont.setPointSizeF(m_fontSize);
- m_graph->activeTheme()->setFont(newFont);
-}
-
-void ScatterDataModifier::shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality sq)
-{
- int quality = int(sq);
- emit shadowQualityChanged(quality); // connected to a checkbox in main.cpp
-}
-
-void ScatterDataModifier::changeShadowQuality(int quality)
-{
- QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality);
- m_graph->setShadowQuality(sq);
-}
-
-void ScatterDataModifier::setBackgroundEnabled(int enabled)
-{
- m_graph->activeTheme()->setBackgroundEnabled((bool)enabled);
-}
-
-void ScatterDataModifier::setGridEnabled(int enabled)
-{
- m_graph->activeTheme()->setGridEnabled((bool)enabled);
-}
-//! [8]
-
-void ScatterDataModifier::toggleItemCount()
-{
- if (m_itemCount == numberOfItems) {
- m_itemCount = lowerNumberOfItems;
- m_curveDivider = lowerCurveDivider;
- } else {
- m_itemCount = numberOfItems;
- m_curveDivider = curveDivider;
- }
- m_graph->seriesList().at(0)->dataProxy()->resetArray(0);
- addData();
-}
-
-QVector3D ScatterDataModifier::randVector()
-{
- return QVector3D(
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f,
- (float)(QRandomGenerator::global()->bounded(100)) / 100.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 100.0f,
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f);
-}
diff --git a/examples/datavisualization/scatter/scatterdatamodifier.h b/examples/datavisualization/scatter/scatterdatamodifier.h
deleted file mode 100644
index f79a46e9..00000000
--- a/examples/datavisualization/scatter/scatterdatamodifier.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SCATTERDATAMODIFIER_H
-#define SCATTERDATAMODIFIER_H
-
-#include <QtDataVisualization/q3dscatter.h>
-#include <QtDataVisualization/qabstract3dseries.h>
-#include <QtGui/QFont>
-
-class ScatterDataModifier : public QObject
-{
- Q_OBJECT
-public:
- explicit ScatterDataModifier(Q3DScatter *scatter);
- ~ScatterDataModifier();
-
- void addData();
- void changeStyle();
- void changePresetCamera();
- void changeLabelStyle();
- void changeFont(const QFont &font);
- void changeFontSize(int fontsize);
- void setBackgroundEnabled(int enabled);
- void setGridEnabled(int enabled);
- void setSmoothDots(int smooth);
- void toggleItemCount();
- void start();
-
-public Q_SLOTS:
- void changeStyle(int style);
- void changeTheme(int theme);
- void changeShadowQuality(int quality);
- void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
-
-Q_SIGNALS:
- void backgroundEnabledChanged(bool enabled);
- void gridEnabledChanged(bool enabled);
- void shadowQualityChanged(int quality);
- void fontChanged(const QFont &font);
-
-private:
- QVector3D randVector();
- Q3DScatter *m_graph;
- int m_fontSize;
- QAbstract3DSeries::Mesh m_style;
- bool m_smooth;
- int m_itemCount;
- float m_curveDivider;
-};
-
-#endif
diff --git a/examples/datavisualization/surface/CMakeLists.txt b/examples/datavisualization/surface/CMakeLists.txt
deleted file mode 100644
index 8740d13e..00000000
--- a/examples/datavisualization/surface/CMakeLists.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(surface LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(surface
- main.cpp
- surfacegraph.cpp surfacegraph.h
-)
-set_target_properties(surface PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(surface PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-set_source_files_properties("mountain.png"
- PROPERTIES QT_RESOURCE_ALIAS "mountain"
-)
-set(surface_resource_files
- "mountain.png"
-)
-
-qt6_add_resources(surface "surface"
- PREFIX
- "/maps"
- FILES
- ${surface_resource_files}
-)
-
-install(TARGETS surface
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/surface/doc/images/surface-example.png b/examples/datavisualization/surface/doc/images/surface-example.png
deleted file mode 100644
index c323df78..00000000
--- a/examples/datavisualization/surface/doc/images/surface-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/surface/doc/src/surface.qdoc b/examples/datavisualization/surface/doc/src/surface.qdoc
deleted file mode 100644
index a81b760a..00000000
--- a/examples/datavisualization/surface/doc/src/surface.qdoc
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example surface
- \title Surface Example
- \ingroup qtdatavisualization_examples
- \brief Using Q3DSurface in a widget application.
-
- The surface example shows how to make a simple 3D surface graph using Q3DSurface and
- combining the use of widgets for adjusting several adjustable qualities. This example
- demonstrates the following features:
-
- \list
- \li How to set up a basic QSurfaceDataProxy and set data for it.
- \li How to use QHeightMapSurfaceDataProxy for showing 3D height maps.
- \li Three different selection modes for studying the graph.
- \li Axis range usage for displaying selected portions of the graph.
- \li Changing theme.
- \li How to set a custom surface gradient.
- \endlist
-
- For instructions about how to interact with the graph, see \l{Qt Data Visualization Interacting with Data}{this page}.
-
- \image surface-example.png
-
- \include examples-run.qdocinc
-
- \section1 Creating the Application
-
- First, in \c main.cpp, we create a QApplication, instantiate Q3DSurface, and a window container
- for it:
-
- \snippet surface/main.cpp 0
-
- The call to QWidget::createWindowContainer is required, as all data visualization graph classes
- (Q3DBars, Q3DScatter, and Q3DSurface) inherit QWindow. Any class inheriting QWindow cannot be used
- as a widget any other way.
-
- Then we'll create horizontal and vertical layouts. We'll add the graph with the container and
- the vertical layout into the horizontal one:
-
- \snippet surface/main.cpp 1
-
- The rest of the code in \c main.cpp is creating control widgets for features in Q3DSurface. We
- have separated code for changing these features into \c surfacegraph.cpp and only connect
- signals from widgets into methods in \c surfacegraph.cpp. Next chapter explains more
- about using Q3DSurface.
-
- \section1 Setting up Proxies and Data
-
- First we instantiate a new QSurfaceDataProxy and attach it to a new QSurface3DSeries:
-
- \snippet surface/surfacegraph.cpp 0
-
- Then we fill the proxy with a simple square root and sine wave data. This is done by
- creating a new \c QSurfaceDataArray instance and adding \c QSurfaceDataRow elements to it.
- The created \c QSurfaceDataArray is set to be the data array for the QSurfaceDataProxy.
-
- \snippet surface/surfacegraph.cpp 1
-
- The height map is created by instantiating a QHeightMapSurfaceDataProxy with
- a QImage containing the height data. The method QHeightMapSurfaceDataProxy::setValueRanges() is
- used to define the value range of the map. In our example the map is from imaginary position of
- 34.0\unicode 0x00B0 N - 40.0\unicode 0x00B0 N and 18.0\unicode 0x00B0 E - 24.0\unicode 0x00B0 E.
- These values are used to show and position the map to the axis.
-
- \snippet surface/surfacegraph.cpp 2
-
- For demonstrating different proxies this example has two radio buttons which
- the user can use to switch between the series. When the user selects the
- \c {Sqrt & Sin} radio button, the selected series is activated with the following
- code. First we set the decorative issues like enable the grid for the surface and
- select the flat shading mode. Next lines define the axis label format and value
- ranges. Automatic label rotation is set to improve label readability at low camera angles.
- Finally we make sure the correct series is added to the graph:
-
- \snippet surface/surfacegraph.cpp 3
-
- When the \c{Height Map} radio button is activated, the following code sets the correct series active.
- The axis label format is set to show N and E letters and ranges are set to the imaginary coordinates.
- Auto adjusting Y-axis range is fine for our height map surface, so we ensure it is set.
-
- \snippet surface/surfacegraph.cpp 4
-
- \section1 Selection Modes
-
- Q3Dsurface supports three different selection modes. These are demonstrated in the
- example with radio buttons, which the user can use to activate a suitable selection mode.
- The following inline methods are connected to radio buttons to activate the selected mode.
-
- \snippet surface/surfacegraph.h 0
-
- \section1 Axis Ranges for Studying the Graph
-
- The example has four slider controls for adjusting the min and max values for X and Z
- axis. When selecting the proxy these sliders are adjusted so that one step on the slider
- moves the range by one segment step:
-
- \snippet surface/surfacegraph.cpp 8
-
- The ranges are set for the axes like this:
-
- \snippet surface/surfacegraph.cpp 5
-
- \section1 Themes
-
- Q3DSurface supports all the themes Qt Data Visualization has. The example has a pull
- down menu for selecting the theme. The following method is connected to the
- menu to activate the selected theme. The theme type is changed to another predefined theme,
- which overwrites all theme properties to predefined values:
-
- \snippet surface/surfacegraph.cpp 6
-
- \section1 Custom Surface Gradients
-
- The example demonstrates the custom surface gradients with two push buttons. The gradient
- can be defined with QLinearGradient where the desired colors are set to positions. The following
- code shows how to create an example gradient and set it to the series. Note that you also need
- to change the color style to Q3DTheme::ColorStyleRangeGradient to actually use the gradient.
-
- \snippet surface/surfacegraph.cpp 7
-*/
diff --git a/examples/datavisualization/surface/main.cpp b/examples/datavisualization/surface/main.cpp
deleted file mode 100644
index d8ac30c5..00000000
--- a/examples/datavisualization/surface/main.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "surfacegraph.h"
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QPushButton>
-#include <QtWidgets/QRadioButton>
-#include <QtWidgets/QSlider>
-#include <QtWidgets/QGroupBox>
-#include <QtWidgets/QComboBox>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QMessageBox>
-#include <QtGui/QPainter>
-#include <QtGui/QScreen>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- //! [0]
- QApplication app(argc, argv);
- Q3DSurface *graph = new Q3DSurface();
- QWidget *container = QWidget::createWindowContainer(graph);
- //! [0]
-
- if (!graph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- QSize screenSize = graph->screen()->size();
- container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.6));
- container->setMaximumSize(screenSize);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- //! [1]
- QWidget *widget = new QWidget;
- QHBoxLayout *hLayout = new QHBoxLayout(widget);
- QVBoxLayout *vLayout = new QVBoxLayout();
- hLayout->addWidget(container, 1);
- hLayout->addLayout(vLayout);
- vLayout->setAlignment(Qt::AlignTop);
- //! [1]
-
- widget->setWindowTitle(QStringLiteral("Surface example"));
-
- QGroupBox *modelGroupBox = new QGroupBox(QStringLiteral("Model"));
-
- QRadioButton *sqrtSinModelRB = new QRadioButton(widget);
- sqrtSinModelRB->setText(QStringLiteral("Sqrt && Sin"));
- sqrtSinModelRB->setChecked(false);
-
- QRadioButton *heightMapModelRB = new QRadioButton(widget);
- heightMapModelRB->setText(QStringLiteral("Height Map"));
- heightMapModelRB->setChecked(false);
-
- QVBoxLayout *modelVBox = new QVBoxLayout;
- modelVBox->addWidget(sqrtSinModelRB);
- modelVBox->addWidget(heightMapModelRB);
- modelGroupBox->setLayout(modelVBox);
-
- QGroupBox *selectionGroupBox = new QGroupBox(QStringLiteral("Selection Mode"));
-
- QRadioButton *modeNoneRB = new QRadioButton(widget);
- modeNoneRB->setText(QStringLiteral("No selection"));
- modeNoneRB->setChecked(false);
-
- QRadioButton *modeItemRB = new QRadioButton(widget);
- modeItemRB->setText(QStringLiteral("Item"));
- modeItemRB->setChecked(false);
-
- QRadioButton *modeSliceRowRB = new QRadioButton(widget);
- modeSliceRowRB->setText(QStringLiteral("Row Slice"));
- modeSliceRowRB->setChecked(false);
-
- QRadioButton *modeSliceColumnRB = new QRadioButton(widget);
- modeSliceColumnRB->setText(QStringLiteral("Column Slice"));
- modeSliceColumnRB->setChecked(false);
-
- QVBoxLayout *selectionVBox = new QVBoxLayout;
- selectionVBox->addWidget(modeNoneRB);
- selectionVBox->addWidget(modeItemRB);
- selectionVBox->addWidget(modeSliceRowRB);
- selectionVBox->addWidget(modeSliceColumnRB);
- selectionGroupBox->setLayout(selectionVBox);
-
- QSlider *axisMinSliderX = new QSlider(Qt::Horizontal, widget);
- axisMinSliderX->setMinimum(0);
- axisMinSliderX->setTickInterval(1);
- axisMinSliderX->setEnabled(true);
- QSlider *axisMaxSliderX = new QSlider(Qt::Horizontal, widget);
- axisMaxSliderX->setMinimum(1);
- axisMaxSliderX->setTickInterval(1);
- axisMaxSliderX->setEnabled(true);
- QSlider *axisMinSliderZ = new QSlider(Qt::Horizontal, widget);
- axisMinSliderZ->setMinimum(0);
- axisMinSliderZ->setTickInterval(1);
- axisMinSliderZ->setEnabled(true);
- QSlider *axisMaxSliderZ = new QSlider(Qt::Horizontal, widget);
- axisMaxSliderZ->setMinimum(1);
- axisMaxSliderZ->setTickInterval(1);
- axisMaxSliderZ->setEnabled(true);
-
- QComboBox *themeList = new QComboBox(widget);
- themeList->addItem(QStringLiteral("Qt"));
- themeList->addItem(QStringLiteral("Primary Colors"));
- themeList->addItem(QStringLiteral("Digia"));
- themeList->addItem(QStringLiteral("Stone Moss"));
- themeList->addItem(QStringLiteral("Army Blue"));
- themeList->addItem(QStringLiteral("Retro"));
- themeList->addItem(QStringLiteral("Ebony"));
- themeList->addItem(QStringLiteral("Isabelle"));
-
- QGroupBox *colorGroupBox = new QGroupBox(QStringLiteral("Custom gradient"));
-
- QLinearGradient grBtoY(0, 0, 1, 100);
- grBtoY.setColorAt(1.0, Qt::black);
- grBtoY.setColorAt(0.67, Qt::blue);
- grBtoY.setColorAt(0.33, Qt::red);
- grBtoY.setColorAt(0.0, Qt::yellow);
- QPixmap pm(24, 100);
- QPainter pmp(&pm);
- pmp.setBrush(QBrush(grBtoY));
- pmp.setPen(Qt::NoPen);
- pmp.drawRect(0, 0, 24, 100);
- QPushButton *gradientBtoYPB = new QPushButton(widget);
- gradientBtoYPB->setIcon(QIcon(pm));
- gradientBtoYPB->setIconSize(QSize(24, 100));
-
- QLinearGradient grGtoR(0, 0, 1, 100);
- grGtoR.setColorAt(1.0, Qt::darkGreen);
- grGtoR.setColorAt(0.5, Qt::yellow);
- grGtoR.setColorAt(0.2, Qt::red);
- grGtoR.setColorAt(0.0, Qt::darkRed);
- pmp.setBrush(QBrush(grGtoR));
- pmp.drawRect(0, 0, 24, 100);
- QPushButton *gradientGtoRPB = new QPushButton(widget);
- gradientGtoRPB->setIcon(QIcon(pm));
- gradientGtoRPB->setIconSize(QSize(24, 100));
-
- QHBoxLayout *colorHBox = new QHBoxLayout;
- colorHBox->addWidget(gradientBtoYPB);
- colorHBox->addWidget(gradientGtoRPB);
- colorGroupBox->setLayout(colorHBox);
-
- vLayout->addWidget(modelGroupBox);
- vLayout->addWidget(selectionGroupBox);
- vLayout->addWidget(new QLabel(QStringLiteral("Column range")));
- vLayout->addWidget(axisMinSliderX);
- vLayout->addWidget(axisMaxSliderX);
- vLayout->addWidget(new QLabel(QStringLiteral("Row range")));
- vLayout->addWidget(axisMinSliderZ);
- vLayout->addWidget(axisMaxSliderZ);
- vLayout->addWidget(new QLabel(QStringLiteral("Theme")));
- vLayout->addWidget(themeList);
- vLayout->addWidget(colorGroupBox);
-
- widget->show();
-
- SurfaceGraph *modifier = new SurfaceGraph(graph);
-
- QObject::connect(heightMapModelRB, &QRadioButton::toggled,
- modifier, &SurfaceGraph::enableHeightMapModel);
- QObject::connect(sqrtSinModelRB, &QRadioButton::toggled,
- modifier, &SurfaceGraph::enableSqrtSinModel);
- QObject::connect(modeNoneRB, &QRadioButton::toggled,
- modifier, &SurfaceGraph::toggleModeNone);
- QObject::connect(modeItemRB, &QRadioButton::toggled,
- modifier, &SurfaceGraph::toggleModeItem);
- QObject::connect(modeSliceRowRB, &QRadioButton::toggled,
- modifier, &SurfaceGraph::toggleModeSliceRow);
- QObject::connect(modeSliceColumnRB, &QRadioButton::toggled,
- modifier, &SurfaceGraph::toggleModeSliceColumn);
- QObject::connect(axisMinSliderX, &QSlider::valueChanged,
- modifier, &SurfaceGraph::adjustXMin);
- QObject::connect(axisMaxSliderX, &QSlider::valueChanged,
- modifier, &SurfaceGraph::adjustXMax);
- QObject::connect(axisMinSliderZ, &QSlider::valueChanged,
- modifier, &SurfaceGraph::adjustZMin);
- QObject::connect(axisMaxSliderZ, &QSlider::valueChanged,
- modifier, &SurfaceGraph::adjustZMax);
- QObject::connect(themeList, SIGNAL(currentIndexChanged(int)),
- modifier, SLOT(changeTheme(int)));
- QObject::connect(gradientBtoYPB, &QPushButton::pressed,
- modifier, &SurfaceGraph::setBlackToYellowGradient);
- QObject::connect(gradientGtoRPB, &QPushButton::pressed,
- modifier, &SurfaceGraph::setGreenToRedGradient);
-
- modifier->setAxisMinSliderX(axisMinSliderX);
- modifier->setAxisMaxSliderX(axisMaxSliderX);
- modifier->setAxisMinSliderZ(axisMinSliderZ);
- modifier->setAxisMaxSliderZ(axisMaxSliderZ);
-
- sqrtSinModelRB->setChecked(true);
- modeItemRB->setChecked(true);
- themeList->setCurrentIndex(2);
-
- return app.exec();
-}
diff --git a/examples/datavisualization/surface/mountain.png b/examples/datavisualization/surface/mountain.png
deleted file mode 100644
index 9138c710..00000000
--- a/examples/datavisualization/surface/mountain.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/surface/surface.pro b/examples/datavisualization/surface/surface.pro
deleted file mode 100644
index a49fa468..00000000
--- a/examples/datavisualization/surface/surface.pro
+++ /dev/null
@@ -1,20 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp \
- surfacegraph.cpp
-
-HEADERS += surfacegraph.h
-
-QT += widgets
-requires(qtConfig(combobox))
-
-RESOURCES += surface.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/surface/surface.qrc b/examples/datavisualization/surface/surface.qrc
deleted file mode 100644
index e4a7c38b..00000000
--- a/examples/datavisualization/surface/surface.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/maps">
- <file alias="mountain">mountain.png</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/surface/surfacegraph.cpp b/examples/datavisualization/surface/surfacegraph.cpp
deleted file mode 100644
index 08c35be7..00000000
--- a/examples/datavisualization/surface/surfacegraph.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "surfacegraph.h"
-
-#include <QtDataVisualization/QValue3DAxis>
-#include <QtDataVisualization/Q3DTheme>
-#include <QtGui/QImage>
-#include <QtCore/qmath.h>
-
-const int sampleCountX = 50;
-const int sampleCountZ = 50;
-const int heightMapGridStepX = 6;
-const int heightMapGridStepZ = 6;
-const float sampleMin = -8.0f;
-const float sampleMax = 8.0f;
-
-SurfaceGraph::SurfaceGraph(Q3DSurface *surface)
- : m_graph(surface)
-{
- m_graph->setAxisX(new QValue3DAxis);
- m_graph->setAxisY(new QValue3DAxis);
- m_graph->setAxisZ(new QValue3DAxis);
-
- //! [0]
- m_sqrtSinProxy = new QSurfaceDataProxy();
- m_sqrtSinSeries = new QSurface3DSeries(m_sqrtSinProxy);
- //! [0]
- fillSqrtSinProxy();
-
- //! [2]
- QImage heightMapImage(":/maps/mountain");
- m_heightMapProxy = new QHeightMapSurfaceDataProxy(heightMapImage);
- m_heightMapSeries = new QSurface3DSeries(m_heightMapProxy);
- m_heightMapSeries->setItemLabelFormat(QStringLiteral("(@xLabel, @zLabel): @yLabel"));
- m_heightMapProxy->setValueRanges(34.0f, 40.0f, 18.0f, 24.0f);
- //! [2]
- m_heightMapWidth = heightMapImage.width();
- m_heightMapHeight = heightMapImage.height();
-}
-
-SurfaceGraph::~SurfaceGraph()
-{
- delete m_graph;
-}
-
-//! [1]
-void SurfaceGraph::fillSqrtSinProxy()
-{
- float stepX = (sampleMax - sampleMin) / float(sampleCountX - 1);
- float stepZ = (sampleMax - sampleMin) / float(sampleCountZ - 1);
-
- QSurfaceDataArray *dataArray = new QSurfaceDataArray;
- dataArray->reserve(sampleCountZ);
- for (int i = 0 ; i < sampleCountZ ; i++) {
- QSurfaceDataRow *newRow = new QSurfaceDataRow(sampleCountX);
- // Keep values within range bounds, since just adding step can cause minor drift due
- // to the rounding errors.
- float z = qMin(sampleMax, (i * stepZ + sampleMin));
- int index = 0;
- for (int j = 0; j < sampleCountX; j++) {
- float x = qMin(sampleMax, (j * stepX + sampleMin));
- float R = qSqrt(z * z + x * x) + 0.01f;
- float y = (qSin(R) / R + 0.24f) * 1.61f;
- (*newRow)[index++].setPosition(QVector3D(x, y, z));
- }
- *dataArray << newRow;
- }
-
- m_sqrtSinProxy->resetArray(dataArray);
-}
-//! [1]
-
-void SurfaceGraph::enableSqrtSinModel(bool enable)
-{
- if (enable) {
- //! [3]
- m_sqrtSinSeries->setDrawMode(QSurface3DSeries::DrawSurfaceAndWireframe);
- m_sqrtSinSeries->setFlatShadingEnabled(true);
-
- m_graph->axisX()->setLabelFormat("%.2f");
- m_graph->axisZ()->setLabelFormat("%.2f");
- m_graph->axisX()->setRange(sampleMin, sampleMax);
- m_graph->axisY()->setRange(0.0f, 2.0f);
- m_graph->axisZ()->setRange(sampleMin, sampleMax);
- m_graph->axisX()->setLabelAutoRotation(30);
- m_graph->axisY()->setLabelAutoRotation(90);
- m_graph->axisZ()->setLabelAutoRotation(30);
-
- m_graph->removeSeries(m_heightMapSeries);
- m_graph->addSeries(m_sqrtSinSeries);
- //! [3]
-
- //! [8]
- // Reset range sliders for Sqrt&Sin
- m_rangeMinX = sampleMin;
- m_rangeMinZ = sampleMin;
- m_stepX = (sampleMax - sampleMin) / float(sampleCountX - 1);
- m_stepZ = (sampleMax - sampleMin) / float(sampleCountZ - 1);
- m_axisMinSliderX->setMaximum(sampleCountX - 2);
- m_axisMinSliderX->setValue(0);
- m_axisMaxSliderX->setMaximum(sampleCountX - 1);
- m_axisMaxSliderX->setValue(sampleCountX - 1);
- m_axisMinSliderZ->setMaximum(sampleCountZ - 2);
- m_axisMinSliderZ->setValue(0);
- m_axisMaxSliderZ->setMaximum(sampleCountZ - 1);
- m_axisMaxSliderZ->setValue(sampleCountZ - 1);
- //! [8]
- }
-}
-
-void SurfaceGraph::enableHeightMapModel(bool enable)
-{
- if (enable) {
- //! [4]
- m_heightMapSeries->setDrawMode(QSurface3DSeries::DrawSurface);
- m_heightMapSeries->setFlatShadingEnabled(false);
-
- m_graph->axisX()->setLabelFormat("%.1f N");
- m_graph->axisZ()->setLabelFormat("%.1f E");
- m_graph->axisX()->setRange(34.0f, 40.0f);
- m_graph->axisY()->setAutoAdjustRange(true);
- m_graph->axisZ()->setRange(18.0f, 24.0f);
-
- m_graph->axisX()->setTitle(QStringLiteral("Latitude"));
- m_graph->axisY()->setTitle(QStringLiteral("Height"));
- m_graph->axisZ()->setTitle(QStringLiteral("Longitude"));
-
- m_graph->removeSeries(m_sqrtSinSeries);
- m_graph->addSeries(m_heightMapSeries);
- //! [4]
-
- // Reset range sliders for height map
- int mapGridCountX = m_heightMapWidth / heightMapGridStepX;
- int mapGridCountZ = m_heightMapHeight / heightMapGridStepZ;
- m_rangeMinX = 34.0f;
- m_rangeMinZ = 18.0f;
- m_stepX = 6.0f / float(mapGridCountX - 1);
- m_stepZ = 6.0f / float(mapGridCountZ - 1);
- m_axisMinSliderX->setMaximum(mapGridCountX - 2);
- m_axisMinSliderX->setValue(0);
- m_axisMaxSliderX->setMaximum(mapGridCountX - 1);
- m_axisMaxSliderX->setValue(mapGridCountX - 1);
- m_axisMinSliderZ->setMaximum(mapGridCountZ - 2);
- m_axisMinSliderZ->setValue(0);
- m_axisMaxSliderZ->setMaximum(mapGridCountZ - 1);
- m_axisMaxSliderZ->setValue(mapGridCountZ - 1);
- }
-}
-
-void SurfaceGraph::adjustXMin(int min)
-{
- float minX = m_stepX * float(min) + m_rangeMinX;
-
- int max = m_axisMaxSliderX->value();
- if (min >= max) {
- max = min + 1;
- m_axisMaxSliderX->setValue(max);
- }
- float maxX = m_stepX * max + m_rangeMinX;
-
- setAxisXRange(minX, maxX);
-}
-
-void SurfaceGraph::adjustXMax(int max)
-{
- float maxX = m_stepX * float(max) + m_rangeMinX;
-
- int min = m_axisMinSliderX->value();
- if (max <= min) {
- min = max - 1;
- m_axisMinSliderX->setValue(min);
- }
- float minX = m_stepX * min + m_rangeMinX;
-
- setAxisXRange(minX, maxX);
-}
-
-void SurfaceGraph::adjustZMin(int min)
-{
- float minZ = m_stepZ * float(min) + m_rangeMinZ;
-
- int max = m_axisMaxSliderZ->value();
- if (min >= max) {
- max = min + 1;
- m_axisMaxSliderZ->setValue(max);
- }
- float maxZ = m_stepZ * max + m_rangeMinZ;
-
- setAxisZRange(minZ, maxZ);
-}
-
-void SurfaceGraph::adjustZMax(int max)
-{
- float maxX = m_stepZ * float(max) + m_rangeMinZ;
-
- int min = m_axisMinSliderZ->value();
- if (max <= min) {
- min = max - 1;
- m_axisMinSliderZ->setValue(min);
- }
- float minX = m_stepZ * min + m_rangeMinZ;
-
- setAxisZRange(minX, maxX);
-}
-
-//! [5]
-void SurfaceGraph::setAxisXRange(float min, float max)
-{
- m_graph->axisX()->setRange(min, max);
-}
-
-void SurfaceGraph::setAxisZRange(float min, float max)
-{
- m_graph->axisZ()->setRange(min, max);
-}
-//! [5]
-
-//! [6]
-void SurfaceGraph::changeTheme(int theme)
-{
- m_graph->activeTheme()->setType(Q3DTheme::Theme(theme));
-}
-//! [6]
-
-void SurfaceGraph::setBlackToYellowGradient()
-{
- //! [7]
- QLinearGradient gr;
- gr.setColorAt(0.0, Qt::black);
- gr.setColorAt(0.33, Qt::blue);
- gr.setColorAt(0.67, Qt::red);
- gr.setColorAt(1.0, Qt::yellow);
-
- m_graph->seriesList().at(0)->setBaseGradient(gr);
- m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
- //! [7]
-}
-
-void SurfaceGraph::setGreenToRedGradient()
-{
- QLinearGradient gr;
- gr.setColorAt(0.0, Qt::darkGreen);
- gr.setColorAt(0.5, Qt::yellow);
- gr.setColorAt(0.8, Qt::red);
- gr.setColorAt(1.0, Qt::darkRed);
-
- m_graph->seriesList().at(0)->setBaseGradient(gr);
- m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
-}
-
diff --git a/examples/datavisualization/surface/surfacegraph.h b/examples/datavisualization/surface/surfacegraph.h
deleted file mode 100644
index 3684fc9a..00000000
--- a/examples/datavisualization/surface/surfacegraph.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SURFACEGRAPH_H
-#define SURFACEGRAPH_H
-
-#include <QtDataVisualization/Q3DSurface>
-#include <QtDataVisualization/QSurfaceDataProxy>
-#include <QtDataVisualization/QHeightMapSurfaceDataProxy>
-#include <QtDataVisualization/QSurface3DSeries>
-#include <QtWidgets/QSlider>
-
-class SurfaceGraph : public QObject
-{
- Q_OBJECT
-public:
- explicit SurfaceGraph(Q3DSurface *surface);
- ~SurfaceGraph();
-
- void enableHeightMapModel(bool enable);
- void enableSqrtSinModel(bool enable);
-
- //! [0]
- void toggleModeNone() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionNone); }
- void toggleModeItem() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItem); }
- void toggleModeSliceRow() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndRow
- | QAbstract3DGraph::SelectionSlice); }
- void toggleModeSliceColumn() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemAndColumn
- | QAbstract3DGraph::SelectionSlice); }
- //! [0]
-
- void setBlackToYellowGradient();
- void setGreenToRedGradient();
-
- void setAxisMinSliderX(QSlider *slider) { m_axisMinSliderX = slider; }
- void setAxisMaxSliderX(QSlider *slider) { m_axisMaxSliderX = slider; }
- void setAxisMinSliderZ(QSlider *slider) { m_axisMinSliderZ = slider; }
- void setAxisMaxSliderZ(QSlider *slider) { m_axisMaxSliderZ = slider; }
-
- void adjustXMin(int min);
- void adjustXMax(int max);
- void adjustZMin(int min);
- void adjustZMax(int max);
-
-public Q_SLOTS:
- void changeTheme(int theme);
-
-private:
- Q3DSurface *m_graph;
- QHeightMapSurfaceDataProxy *m_heightMapProxy;
- QSurfaceDataProxy *m_sqrtSinProxy;
- QSurface3DSeries *m_heightMapSeries;
- QSurface3DSeries *m_sqrtSinSeries;
-
- QSlider *m_axisMinSliderX;
- QSlider *m_axisMaxSliderX;
- QSlider *m_axisMinSliderZ;
- QSlider *m_axisMaxSliderZ;
- float m_rangeMinX;
- float m_rangeMinZ;
- float m_stepX;
- float m_stepZ;
- int m_heightMapWidth;
- int m_heightMapHeight;
-
- void setAxisXRange(float min, float max);
- void setAxisZRange(float min, float max);
- void fillSqrtSinProxy();
-};
-
-#endif // SURFACEGRAPH_H
diff --git a/examples/datavisualization/texturesurface/CMakeLists.txt b/examples/datavisualization/texturesurface/CMakeLists.txt
deleted file mode 100644
index 5da2e03e..00000000
--- a/examples/datavisualization/texturesurface/CMakeLists.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-project(texturesurface LANGUAGES CXX)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
-
-if(NOT DEFINED INSTALL_EXAMPLESDIR)
- set(INSTALL_EXAMPLESDIR "examples")
-endif()
-
-set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")
-
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
-find_package(Qt6 COMPONENTS DataVisualization)
-
-qt_add_executable(texturesurface
- custominputhandler.cpp custominputhandler.h
- highlightseries.cpp highlightseries.h
- main.cpp
- surfacegraph.cpp surfacegraph.h
- topographicseries.cpp topographicseries.h
-)
-set_target_properties(texturesurface PROPERTIES
- WIN32_EXECUTABLE TRUE
- MACOSX_BUNDLE TRUE
-)
-target_link_libraries(texturesurface PUBLIC
- Qt::Core
- Qt::Gui
- Qt::Widgets
- Qt::DataVisualization
-)
-
-set_source_files_properties("maptexture.jpg"
- PROPERTIES QT_RESOURCE_ALIAS "maptexture"
-)
-set_source_files_properties("topography.png"
- PROPERTIES QT_RESOURCE_ALIAS "topography"
-)
-set(texturedsurface_resource_files
- "maptexture.jpg"
- "topography.png"
-)
-
-qt6_add_resources(texturesurface "texturedsurface"
- PREFIX
- "/maps"
- FILES
- ${texturedsurface_resource_files}
-)
-
-install(TARGETS texturesurface
- RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
- BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
- LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
-)
diff --git a/examples/datavisualization/texturesurface/custominputhandler.h b/examples/datavisualization/texturesurface/custominputhandler.h
deleted file mode 100644
index 0cb53102..00000000
--- a/examples/datavisualization/texturesurface/custominputhandler.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CUSTOMINPUTHANDLER_H
-#define CUSTOMINPUTHANDLER_H
-
-#include <QtDataVisualization/Q3DInputHandler>
-#include <QtDataVisualization/QAbstract3DGraph>
-#include <QtDataVisualization/QValue3DAxis>
-#include "highlightseries.h"
-
-class CustomInputHandler : public Q3DInputHandler
-{
- Q_OBJECT
-
- enum InputState {
- StateNormal = 0,
- StateDraggingX,
- StateDraggingZ,
- StateDraggingY
- };
-
-public:
- explicit CustomInputHandler(QAbstract3DGraph *graph, QObject *parent = 0);
-
- inline void setLimits(float min, float max, float minRange) {
- m_areaMinValue = min;
- m_areaMaxValue = max;
- m_axisXMinValue = m_areaMinValue;
- m_axisXMaxValue = m_areaMaxValue;
- m_axisZMinValue = m_areaMinValue;
- m_axisZMaxValue = m_areaMaxValue;
- m_axisXMinRange = minRange;
- m_axisZMinRange = minRange;
- }
- inline void setAxes(QValue3DAxis *axisX, QValue3DAxis *axisY, QValue3DAxis *axisZ) {
- m_axisX = axisX;
- m_axisY = axisY;
- m_axisZ = axisZ;
- }
- inline void setAspectRatio(float ratio) { m_aspectRatio = ratio; }
- inline void setHighlightSeries(HighlightSeries *series) { m_highlight = series; }
- inline void setDragSpeedModifier(float modifier) { m_speedModifier = modifier; }
-
- virtual void mousePressEvent(QMouseEvent *event, const QPoint &mousePos);
- virtual void mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos);
- virtual void mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos);
- virtual void wheelEvent(QWheelEvent *event);
-
-private:
- void handleElementSelected(QAbstract3DGraph::ElementType type);
- void handleAxisDragging();
- void checkConstraints();
-
-private:
- HighlightSeries *m_highlight;
- bool m_mousePressed;
- InputState m_state;
- QValue3DAxis *m_axisX;
- QValue3DAxis *m_axisY;
- QValue3DAxis *m_axisZ;
- float m_speedModifier;
- float m_aspectRatio;
- float m_axisXMinValue;
- float m_axisXMaxValue;
- float m_axisXMinRange;
- float m_axisZMinValue;
- float m_axisZMaxValue;
- float m_axisZMinRange;
- float m_areaMinValue;
- float m_areaMaxValue;
-};
-
-#endif
diff --git a/examples/datavisualization/texturesurface/doc/images/texturesurface-example.png b/examples/datavisualization/texturesurface/doc/images/texturesurface-example.png
deleted file mode 100644
index 76819607..00000000
--- a/examples/datavisualization/texturesurface/doc/images/texturesurface-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/datavisualization/texturesurface/doc/src/texturesurface.qdoc b/examples/datavisualization/texturesurface/doc/src/texturesurface.qdoc
deleted file mode 100644
index c1cdc208..00000000
--- a/examples/datavisualization/texturesurface/doc/src/texturesurface.qdoc
+++ /dev/null
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example texturesurface
- \title Textured Surface Example
- \ingroup qtdatavisualization_examples
- \brief Using texture with Q3DSurface.
- \since QtDataVisualization 1.2
-
- The textured surface example shows how to add an image as a texture for a surface. The example
- shows also how to:
-
- \list
- \li Create a surface series from an image
- \li Use custom input handler to enable zooming and panning
- \li Highlight an area of the surface
- \endlist
-
- \image texturesurface-example.png
-
- \include examples-run.qdocinc
-
- \section1 Texture to a Surface Series
-
- The image to be set as a texture to a surface can be set using QSurface3DSeries::setTextureFile().
- In this example we have added a check box to control if the texture is set or not. The
- following code extract is for reacting to the check box selections. The image in this
- example is read from the resource file where it is as a JPG file. Setting an empty file
- with the method clears the texture, and the surface uses the gradients or colors from the theme.
-
- \snippet texturesurface/surfacegraph.cpp 0
-
- \section1 Topographic Surface Series
-
- The topographic data for this example is obtained from National Land Survey of Finland. It
- provides a product called \c{Elevation Model 2 m}, which was suitable for our needs. We selected
- Levi fell to be shown. The accuracy of the data was well beyond our needs and therefore it
- is compressed and encoded into a PNG file. The height value from the original ASCII data is
- encoded into RGB format using a multiplier, which you will see later on a code extract.
- The multiplier is calculated simply by dividing the largest 24 bit value with the highest point
- in Finland.
-
- Qt Data Visualization has a special proxy for height map image files, but it converts
- only one byte values. So to utilize the bigger accuracy on the data from National Land
- Survey of Finland, we read the data from the PNG file and decode it into QSurface3DSeries.
- The following code samples show how this is done.
-
- First the encoding multiplier.
- \snippet texturesurface/topographicseries.cpp 0
-
- And then the actual decoding.
- \snippet texturesurface/topographicseries.cpp 1
-
- \section1 Use Custom Input Handler to Enable Zooming and Panning
-
- For the panning the implementation is similar to the \l{Axis Range Dragging With Labels Example}.
- The difference is that in this example we follow only dragging of X and Z axis and we don't
- allow dragging the surface outside the graph. The control for this is very simple and done as
- on the following example for the X axis.
-
- \snippet texturesurface/custominputhandler.cpp 0
-
- For the zooming we catch the \c wheelEvent and adjust the X and Y axis ranges according to delta
- value on QWheelEvent. The Y axis is also adjusted so that the aspect ratio between Y axis and
- XZ plane stays the same, and we don't get silly looking graph with height exaggerated too much.
-
- \snippet texturesurface/custominputhandler.cpp 1
-
- In this case we want to control the zoom level so that it won't get too near to or far from the
- surface. For instance, if the value for the X axis gets below the allowed, i.e. zooming gets too
- far, the value is set to the minimum allowed value. If the range is going to below the range
- minimum, both ends of the axis are adjusted so that the range stays at the limit.
-
- \snippet texturesurface/custominputhandler.cpp 2
-
- \section1 Highlight an Area of the Surface
-
- The main idea on creating a highlight on the surface is to create a copy of the series and add
- a bit of offset to the y value. On this example the class \c HighlightSeries implements the
- creation of the copy on its \c handlePositionChange method. Firstly the \c HighlightSeries
- needs to get the pointer to the original series and then it starts to listen the
- QSurface3DSeries::selectedPointChanged signal.
-
- \snippet texturesurface/highlightseries.cpp 0
-
- When the signal arrives, first thing is to check that the position is valid. Then the ranges
- for the copied area are calculated and checked that they stay within the bounds. Finally
- we simply fill the data array of the highlight series with the range from the data array of
- topography series.
-
- \snippet texturesurface/highlightseries.cpp 1
-
- \section1 A Gradient to the Highlight Series
-
- Since the \c HighlightSeries is QSurface3DSeries, we can use all the decoration methods series can
- have. In this example we added a gradient to emphasize the elevation. Because the suitable gradient
- style depends on the range of the Y axis and we change the range when zooming, we need to adjust
- the gradient color positions as the range change.
-
- For the gradient color positions we define proportional values.
-
- \snippet texturesurface/highlightseries.cpp 2
-
- The gradient modification is done on \c handleGradientChange method and we connect it to react to
- changes on Y axis.
-
- \snippet texturesurface/surfacegraph.cpp 1
-
- When a change on Y axis max value happens, we calculate the gradient color positions.
-
- \snippet texturesurface/highlightseries.cpp 3
-*/
diff --git a/examples/datavisualization/texturesurface/highlightseries.h b/examples/datavisualization/texturesurface/highlightseries.h
deleted file mode 100644
index c489e50c..00000000
--- a/examples/datavisualization/texturesurface/highlightseries.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef HIGHLIGHTSERIES_H
-#define HIGHLIGHTSERIES_H
-
-#include <QtDataVisualization/QSurface3DSeries>
-
-#include "topographicseries.h"
-
-class HighlightSeries : public QSurface3DSeries
-{
- Q_OBJECT
-public:
- explicit HighlightSeries();
- ~HighlightSeries();
-
- void setTopographicSeries(TopographicSeries *series);
- inline void setMinHeight(float height) { m_minHeight = height; }
-
-public Q_SLOTS:
- void handlePositionChange(const QPoint &position);
- void handleGradientChange(float value);
-
-private:
- int m_width;
- int m_height;
- int m_srcWidth;
- int m_srcHeight;
- QPoint m_position;
- TopographicSeries *m_topographicSeries;
- float m_minHeight;
-};
-
-#endif // HIGHLIGHTSERIES_H
diff --git a/examples/datavisualization/texturesurface/main.cpp b/examples/datavisualization/texturesurface/main.cpp
deleted file mode 100644
index fc45247f..00000000
--- a/examples/datavisualization/texturesurface/main.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "surfacegraph.h"
-
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QGroupBox>
-#include <QtWidgets/QCheckBox>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QMessageBox>
-#include <QtGui/QScreen>
-#include <QtGui/QPainter>
-
-int main(int argc, char **argv)
-{
- qputenv("QSG_RHI_BACKEND", "opengl");
- QApplication app(argc, argv);
- Q3DSurface *graph = new Q3DSurface();
- QWidget *container = QWidget::createWindowContainer(graph);
-
- if (!graph->hasContext()) {
- QMessageBox msgBox;
- msgBox.setText("Couldn't initialize the OpenGL context.");
- msgBox.exec();
- return -1;
- }
-
- QSize screenSize = graph->screen()->size();
- container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.6));
- container->setMaximumSize(screenSize);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- QWidget *widget = new QWidget;
- QHBoxLayout *hLayout = new QHBoxLayout(widget);
- QVBoxLayout *vLayout = new QVBoxLayout();
- hLayout->addWidget(container, 1);
- hLayout->addLayout(vLayout);
- vLayout->setAlignment(Qt::AlignTop);
-
- widget->setWindowTitle(QStringLiteral("Textured surface example"));
-
- QCheckBox *enableTexture = new QCheckBox(widget);
- enableTexture->setText(QStringLiteral("Surface texture"));
-
- int height = 400;
- int width = 100;
- int border = 10;
- QLinearGradient gr(0, 0, 1, height - 2 * border);
- gr.setColorAt(1.0f, Qt::black);
- gr.setColorAt(0.8f, Qt::darkGreen);
- gr.setColorAt(0.6f, Qt::green);
- gr.setColorAt(0.4f, Qt::yellow);
- gr.setColorAt(0.2f, Qt::red);
- gr.setColorAt(0.0f, Qt::darkRed);
-
- QPixmap pm(width, height);
- pm.fill(Qt::transparent);
- QPainter pmp(&pm);
- pmp.setBrush(QBrush(gr));
- pmp.setPen(Qt::NoPen);
- pmp.drawRect(border, border, 35, height - 2 * border);
- pmp.setPen(Qt::black);
- int step = (height - 2 * border) / 5;
- for (int i = 0; i < 6; i++) {
- int yPos = i * step + border;
- pmp.drawLine(border, yPos, 55, yPos);
- pmp.drawText(60, yPos + 2, QString("%1 m").arg(550 - (i * 110)));
- }
-
- QLabel *label = new QLabel(widget);
- label->setPixmap(pm);
-
- QGroupBox *heightMapGroupBox = new QGroupBox(QStringLiteral("Highlight color map"));
- QVBoxLayout *colorMapVBox = new QVBoxLayout;
- colorMapVBox->addWidget(label);
- heightMapGroupBox->setLayout(colorMapVBox);
-
- vLayout->addWidget(enableTexture);
- vLayout->addWidget(heightMapGroupBox);
-
- widget->show();
-
- SurfaceGraph *modifier = new SurfaceGraph(graph);
-
- QObject::connect(enableTexture, &QCheckBox::stateChanged,
- modifier, &SurfaceGraph::toggleSurfaceTexture);
-
- enableTexture->setChecked(true);
-
- return app.exec();
-}
diff --git a/examples/datavisualization/texturesurface/surfacegraph.cpp b/examples/datavisualization/texturesurface/surfacegraph.cpp
deleted file mode 100644
index 84999bc6..00000000
--- a/examples/datavisualization/texturesurface/surfacegraph.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "surfacegraph.h"
-#include "topographicseries.h"
-
-#include <QtDataVisualization/QValue3DAxis>
-#include <QtDataVisualization/Q3DTheme>
-
-const float areaWidth = 8000.0f;
-const float areaHeight = 8000.0f;
-const float aspectRatio = 0.1389f;
-const float minRange = areaWidth * 0.49f;
-
-SurfaceGraph::SurfaceGraph(Q3DSurface *surface)
- : m_graph(surface)
-{
- m_graph->setAxisX(new QValue3DAxis);
- m_graph->setAxisY(new QValue3DAxis);
- m_graph->setAxisZ(new QValue3DAxis);
- m_graph->axisX()->setLabelFormat("%i");
- m_graph->axisZ()->setLabelFormat("%i");
- m_graph->axisX()->setRange(0.0f, areaWidth);
- m_graph->axisY()->setRange(100.0f, areaWidth * aspectRatio);
- m_graph->axisZ()->setRange(0.0f, areaHeight);
- m_graph->axisX()->setLabelAutoRotation(30);
- m_graph->axisY()->setLabelAutoRotation(90);
- m_graph->axisZ()->setLabelAutoRotation(30);
- m_graph->activeTheme()->setType(Q3DTheme::ThemePrimaryColors);
-
- QFont font = m_graph->activeTheme()->font();
- font.setPointSize(20);
- m_graph->activeTheme()->setFont(font);
-
- m_topography = new TopographicSeries();
- m_topography->setTopographyFile(":/maps/topography", areaWidth, areaHeight);
- m_topography->setItemLabelFormat(QStringLiteral("@yLabel m"));
-
- m_highlight = new HighlightSeries();
- m_highlight->setTopographicSeries(m_topography);
- m_highlight->setMinHeight(minRange * aspectRatio);
- m_highlight->handleGradientChange(areaWidth * aspectRatio);
-//! [1]
- QObject::connect(m_graph->axisY(), &QValue3DAxis::maxChanged,
- m_highlight, &HighlightSeries::handleGradientChange);
-//! [1]
-
- m_graph->addSeries(m_topography);
- m_graph->addSeries(m_highlight);
-
- m_inputHandler = new CustomInputHandler(m_graph);
- m_inputHandler->setHighlightSeries(m_highlight);
- m_inputHandler->setAxes(m_graph->axisX(), m_graph->axisY(), m_graph->axisZ());
- m_inputHandler->setLimits(0.0f, areaWidth, minRange);
- m_inputHandler->setAspectRatio(aspectRatio);
-
- m_graph->setActiveInputHandler(m_inputHandler);
-}
-
-SurfaceGraph::~SurfaceGraph()
-{
- delete m_graph;
-}
-
-//! [0]
-void SurfaceGraph::toggleSurfaceTexture(bool enable)
-{
- if (enable)
- m_topography->setTextureFile(":/maps/maptexture");
- else
- m_topography->setTextureFile("");
-}
-//! [0]
diff --git a/examples/datavisualization/texturesurface/surfacegraph.h b/examples/datavisualization/texturesurface/surfacegraph.h
deleted file mode 100644
index 20a39f81..00000000
--- a/examples/datavisualization/texturesurface/surfacegraph.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SURFACEGRAPH_H
-#define SURFACEGRAPH_H
-
-#include <QtDataVisualization/Q3DSurface>
-#include <QtDataVisualization/QSurface3DSeries>
-#include <QtWidgets/QSlider>
-#include "topographicseries.h"
-#include "highlightseries.h"
-
-#include "custominputhandler.h"
-
-class SurfaceGraph : public QObject
-{
- Q_OBJECT
-public:
- explicit SurfaceGraph(Q3DSurface *surface);
- ~SurfaceGraph();
-
- void toggleSurfaceTexture(bool enable);
-
-private:
- Q3DSurface *m_graph;
-
- TopographicSeries *m_topography;
- HighlightSeries *m_highlight;
- int m_highlightWidth;
- int m_highlightHeight;
-
- CustomInputHandler *m_inputHandler;
-};
-
-#endif // SURFACEGRAPH_H
diff --git a/examples/datavisualization/texturesurface/texturedsurface.qrc b/examples/datavisualization/texturesurface/texturedsurface.qrc
deleted file mode 100644
index 94b96d24..00000000
--- a/examples/datavisualization/texturesurface/texturedsurface.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/maps">
- <file alias="topography">topography.png</file>
- <file alias="maptexture">maptexture.jpg</file>
- </qresource>
-</RCC>
diff --git a/examples/datavisualization/texturesurface/texturesurface.pro b/examples/datavisualization/texturesurface/texturesurface.pro
deleted file mode 100644
index efef1944..00000000
--- a/examples/datavisualization/texturesurface/texturesurface.pro
+++ /dev/null
@@ -1,25 +0,0 @@
-android|ios|winrt {
- error( "This example is not supported for android, ios, or winrt." )
-}
-
-!include( ../examples.pri ) {
- error( "Couldn't find the examples.pri file!" )
-}
-
-SOURCES += main.cpp \
- surfacegraph.cpp \
- topographicseries.cpp \
- highlightseries.cpp \
- custominputhandler.cpp
-
-HEADERS += surfacegraph.h \
- topographicseries.h \
- highlightseries.h \
- custominputhandler.h
-
-QT += widgets
-
-RESOURCES += texturedsurface.qrc
-
-OTHER_FILES += doc/src/* \
- doc/images/*
diff --git a/examples/datavisualization/texturesurface/topographicseries.cpp b/examples/datavisualization/texturesurface/topographicseries.cpp
deleted file mode 100644
index 01b6625b..00000000
--- a/examples/datavisualization/texturesurface/topographicseries.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "topographicseries.h"
-
-//! [0]
-// Value used to encode height data as RGB value on PNG file
-const float packingFactor = 11983.0f;
-//! [0]
-
-TopographicSeries::TopographicSeries()
-{
- setDrawMode(QSurface3DSeries::DrawSurface);
- setFlatShadingEnabled(true);
- setBaseColor(Qt::white);
-}
-
-TopographicSeries::~TopographicSeries()
-{
-}
-
-void TopographicSeries::setTopographyFile(const QString file, float width, float height)
-{
-//! [1]
- QImage heightMapImage(file);
- uchar *bits = heightMapImage.bits();
- int imageHeight = heightMapImage.height();
- int imageWidth = heightMapImage.width();
- int widthBits = imageWidth * 4;
- float stepX = width / float(imageWidth);
- float stepZ = height / float(imageHeight);
-
- QSurfaceDataArray *dataArray = new QSurfaceDataArray;
- dataArray->reserve(imageHeight);
- for (int i = 0; i < imageHeight; i++) {
- int p = i * widthBits;
- float z = height - float(i) * stepZ;
- QSurfaceDataRow *newRow = new QSurfaceDataRow(imageWidth);
- for (int j = 0; j < imageWidth; j++) {
- uchar aa = bits[p + 0];
- uchar rr = bits[p + 1];
- uchar gg = bits[p + 2];
- uint color = uint((gg << 16) + (rr << 8) + aa);
- float y = float(color) / packingFactor;
- (*newRow)[j].setPosition(QVector3D(float(j) * stepX, y, z));
- p = p + 4;
- }
- *dataArray << newRow;
- }
-
- dataProxy()->resetArray(dataArray);
-//! [1]
-
- m_sampleCountX = float(imageWidth);
- m_sampleCountZ = float(imageHeight);
-}
diff --git a/examples/datavisualization/texturesurface/topographicseries.h b/examples/datavisualization/texturesurface/topographicseries.h
deleted file mode 100644
index 7137a858..00000000
--- a/examples/datavisualization/texturesurface/topographicseries.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TOPOGRAPHICSERIES_H
-#define TOPOGRAPHICSERIES_H
-
-#include <QtDataVisualization/QSurface3DSeries>
-
-class TopographicSeries : public QSurface3DSeries
-{
- Q_OBJECT
-public:
- explicit TopographicSeries();
- ~TopographicSeries();
-
- void setTopographyFile(const QString file, float width, float height);
-
- float sampleCountX() { return m_sampleCountX; }
- float sampleCountZ() { return m_sampleCountZ; }
-
-public Q_SLOTS:
-
-private:
- float m_sampleCountX;
- float m_sampleCountZ;
-};
-
-#endif // TOPOGRAPHICSERIES_H
diff --git a/examples/datavisualization/volumetric/CMakeLists.txt b/examples/datavisualization/volumetric/CMakeLists.txt
index 577c1604..fcbf4e0f 100644
--- a/examples/datavisualization/volumetric/CMakeLists.txt
+++ b/examples/datavisualization/volumetric/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
cmake_minimum_required(VERSION 3.16)
project(volumetric LANGUAGES CXX)
diff --git a/examples/datavisualization/volumetric/doc/images/volumetric-example.png b/examples/datavisualization/volumetric/doc/images/volumetric-example.png
index 277d4fe4..6cc231d9 100644
--- a/examples/datavisualization/volumetric/doc/images/volumetric-example.png
+++ b/examples/datavisualization/volumetric/doc/images/volumetric-example.png
Binary files differ
diff --git a/examples/datavisualization/volumetric/doc/src/volumetric.qdoc b/examples/datavisualization/volumetric/doc/src/volumetric.qdoc
index b362fd59..54ac6b86 100644
--- a/examples/datavisualization/volumetric/doc/src/volumetric.qdoc
+++ b/examples/datavisualization/volumetric/doc/src/volumetric.qdoc
@@ -1,38 +1,15 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\example volumetric
- \title Volumetric rendering Example
+ \meta tags {DataVisualization, QCustom3DVolume, Custom Item}
+ \title Volumetric Rendering
\ingroup qtdatavisualization_examples
\brief Rendering volumetric objects.
\since QtDataVisualization 1.2
- This example shows how to use QCustom3DVolume items to display volumetric data.
+ \e {Volumetric Rendering} shows how to use QCustom3DVolume to display volumetric data.
\image volumetric-example.png
@@ -42,41 +19,41 @@
The QCustom3DVolume items are special custom items (see QCustom3DItem), which can be used
to display volumetric data. The volume items are only supported with orthographic projection,
- so first we make sure the graph is using it:
-
- \snippet volumetric/volumetric.cpp 6
-
- The following code shows how to create a volumetric item tied to the data ranges of the axes:
+ so first make sure the graph is using it:
\snippet volumetric/volumetric.cpp 0
- By setting the QCustom3DItem::scalingAbsolute property to \c{false}, we indicate that the
- scaling of the volume should follow the changes in the data ranges. Next we define the
- internal contents of the volume:
+ Create a volumetric item tied to the data ranges of the axes:
\snippet volumetric/volumetric.cpp 1
- We use eight bit indexed color for our texture, as it is compact and makes it easy to adjust the
- colors without needing to reset the whole texture. For the texture data we use the data we
- created earlier based on some height maps.
- Typically the data for volume items comes pregenerated in a form of a stack of images, so we are
- not going to explain the data generation in detail. Please refer to the example code if you
- are interested in the actual data generation process.
-
- Since we are using eight bit indexed colors, we need a color table to map the eight bit color
- indexes to actual colors. We use one we populated on our own, but in a typical use case you
- would get the color table from the source images:
+ Indicate that the scaling of the volume should follow the changes in the data ranges by setting
+ the QCustom3DItem::scalingAbsolute property to \c{false}. Next, define the internal contents of
+ the volume:
\snippet volumetric/volumetric.cpp 2
- We want to optionally show slice frames around the volume, so we initialize their properties.
+ Use eight bit indexed color for the texture, as it is compact and makes it easy to adjust the
+ colors without needing to reset the whole texture. For the texture data, use the data created
+ earlier based on height maps.
+ Typically, the data for volume items comes pregenerated in the form of a stack of images, so
+ the data generation details can be skipped. For more information about the actual data
+ generation process, see the example code.
+
+ Since eight bit indexed colors are used, a color table is needed to map the eight bit color
+ indexes to actual colors. In a typical use case, you would get the color table from the source
+ images instead of using one manually defined:
+
+ \snippet volumetric/volumetric.cpp 3
+
+ To have an option to show slice frames around the volume, initialize their properties.
Initially, the frames will be hidden:
- \snippet volumetric/volumetric.cpp 5
+ \snippet volumetric/volumetric.cpp 4
- Finally we add the volume as a custom item to the graph to display it:
+ Finally, add the volume as a custom item to the graph to display it:
- \snippet volumetric/volumetric.cpp 3
+ \snippet volumetric/volumetric.cpp 5
\section1 Slicing into the Volume
@@ -84,28 +61,27 @@
not very helpful. One way to inspect the internal structure of the volume is to view the slices
of the volume. QCustom3DVolume provides two ways to display the slices. The first is to show
the selected slices in place of the volume. For example, to specify a slice perpendicular to
- the X-axis, you can use the following method:
+ the X-axis, use the following method:
- \snippet volumetric/volumetric.cpp 7
+ \snippet volumetric/volumetric.cpp 6
- To actually draw the slice specified above, the QCustom3DVolume::drawSlices property must be
- also set:
+ To display the slice specified above, the QCustom3DVolume::drawSlices property must also be set:
- \snippet volumetric/volumetric.cpp 8
+ \snippet volumetric/volumetric.cpp 7
The second way to view slices is to use QCustom3DVolume::renderSlice() method, which produces
a QImage from the specified slice. This image can then be displayed on another widget, such
- as a QLabel here:
+ as a QLabel:
- \snippet volumetric/volumetric.cpp 9
+ \snippet volumetric/volumetric.cpp 8
\section1 Adjusting Volume Transparency
- Sometimes viewing just the slices doesn't give you a good understanding of the volume's internal
- structure. QCustom3DVolume provides two properties that can be used to adjust the volume
- transparency:
+ Sometimes, viewing just the slices doesn't give you a good understanding of the volume's
+ internal structure. QCustom3DVolume provides two properties that can be used to adjust the
+ volume transparency:
- \snippet volumetric/volumetric.cpp 11
+ \snippet volumetric/volumetric.cpp 9
\dots
\snippet volumetric/volumetric.cpp 10
@@ -115,26 +91,25 @@
doesn't affect colors that are fully opaque, unless the QCustom3DVolume::preserveOpacity
property is set to \c{false}.
- An alternative way to adjust the transparency of the volume is adjust the alpha values of the
- voxels directly. For eight bit indexed textures, this is done simply by modifying and
- resetting the color table:
+ An alternative way to adjust the transparency of the volume is to adjust the alpha values of the
+ voxels directly. For eight bit indexed textures, this is done simply by modifying and resetting
+ the color table:
- \snippet volumetric/volumetric.cpp 12
+ \snippet volumetric/volumetric.cpp 11
\section1 High Definition vs. Low Definition Shader
- By default the volume rendering uses the high definition shader. It accounts for each
- voxel of the volume with correct weight when ray-tracing the volume contents,
- providing an accurate representation of even the finer details of the volume.
+ By default, the volumetric rendering uses a high definition shader. It accounts for each
+ voxel of the volume with the correct weight when ray-tracing the volume contents, providing an
+ accurate representation of even the finer details of the volume.
However, this is computationally very expensive, so the frame rate suffers.
- If rendering speed is more important than pixel-perfect
- accuracy of the volume contents, you can take the much faster low definition shader into use
- by setting \c{false} for QCustom3DVolume::useHighDefShader property. The low definition shader
- achieves the speed by making compromises on the accuracy, so it doesn't guarantee each voxel
- of the volume will be sampled. This can lead to flickering and/or other rendering artifacts
- on the finer details of the volume.
-
- \snippet volumetric/volumetric.cpp 13
+ If rendering speed is more important than pixel-perfect accuracy of the volume contents, take
+ the much faster low definition shader into use by setting QCustom3DVolume::useHighDefShader
+ property \c{false}. The low definition shader achieves the speed by making compromises on
+ accuracy, so it doesn't guarantee that every voxel of the volume will be sampled. This can lead
+ to flickering or other rendering artifacts on the finer details of the volume.
+
+ \snippet volumetric/volumetric.cpp 12
\section1 Example Contents
*/
diff --git a/examples/datavisualization/volumetric/main.cpp b/examples/datavisualization/volumetric/main.cpp
index 1a859018..7bbf1d1d 100644
--- a/examples/datavisualization/volumetric/main.cpp
+++ b/examples/datavisualization/volumetric/main.cpp
@@ -1,45 +1,18 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "volumetric.h"
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QRadioButton>
-#include <QtWidgets/QSlider>
-#include <QtWidgets/QCheckBox>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QGroupBox>
-#include <QtWidgets/QMessageBox>
-#include <QtGui/QScreen>
+#include <QtWidgets/qapplication.h>
+#include <QtWidgets/qwidget.h>
+#include <QtWidgets/qboxlayout.h>
+#include <QtWidgets/qradiobutton.h>
+#include <QtWidgets/qslider.h>
+#include <QtWidgets/qcheckbox.h>
+#include <QtWidgets/qlabel.h>
+#include <QtWidgets/qgroupbox.h>
+#include <QtWidgets/qmessagebox.h>
+#include <QtGui/qscreen.h>
int main(int argc, char **argv)
{
@@ -56,7 +29,7 @@ int main(int argc, char **argv)
}
QSize screenSize = graph->screen()->size();
- container->setMinimumSize(QSize(screenSize.width() / 3, screenSize.height() / 3));
+ container->setMinimumSize(QSize(screenSize.width() / 3, screenSize.height() / 2));
container->setMaximumSize(screenSize);
container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
container->setFocusPolicy(Qt::StrongFocus);
@@ -69,7 +42,7 @@ int main(int argc, char **argv)
hLayout->addLayout(vLayout);
hLayout->addLayout(vLayout2);
- widget->setWindowTitle(QStringLiteral("Volumetric object example - 3D terrain"));
+ widget->setWindowTitle(QStringLiteral("Volumetric Rendering - 3D Terrain"));
QCheckBox *sliceXCheckBox = new QCheckBox(widget);
sliceXCheckBox->setText(QStringLiteral("Slice volume on X axis"));
@@ -105,7 +78,7 @@ int main(int argc, char **argv)
QGroupBox *textureDetailGroupBox = new QGroupBox(QStringLiteral("Texture detail"));
QRadioButton *lowDetailRB = new QRadioButton(widget);
- lowDetailRB->setText(QStringLiteral("Low (128x64x128)"));
+ lowDetailRB->setText(QStringLiteral("Low (256x128x256)"));
lowDetailRB->setChecked(true);
QRadioButton *mediumDetailRB = new QRadioButton(widget);
diff --git a/examples/datavisualization/volumetric/volumetric.cpp b/examples/datavisualization/volumetric/volumetric.cpp
index a379be3e..3475c85b 100644
--- a/examples/datavisualization/volumetric/volumetric.cpp
+++ b/examples/datavisualization/volumetric/volumetric.cpp
@@ -1,50 +1,16 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "volumetric.h"
#include <QtDataVisualization/qvalue3daxis.h>
-#include <QtDataVisualization/q3dscene.h>
-#include <QtDataVisualization/q3dcamera.h>
-#include <QtDataVisualization/q3dtheme.h>
#include <QtDataVisualization/qcustom3dlabel.h>
-#include <QtDataVisualization/q3dscatter.h>
#include <QtDataVisualization/q3dinputhandler.h>
#include <QtCore/qmath.h>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QRadioButton>
-#include <QtWidgets/QSlider>
-#include <QtCore/QDebug>
-#include <QtGui/QOpenGLContext>
-
-const int lowDetailSize(128);
-const int mediumDetailSize(256);
-const int highDetailSize(512);
+#include <QtGui/qopenglcontext.h>
+
+const int lowDetailSize(256);
+const int mediumDetailSize(512);
+const int highDetailSize(1024);
const int colorTableSize(256);
const int layerDataSize(512);
const int mineShaftDiameter(1);
@@ -67,8 +33,6 @@ static bool isOpenGLES()
{
#if QT_CONFIG(opengles2)
return true;
-#elif (QT_VERSION < QT_VERSION_CHECK(5, 3, 0))
- return false;
#else
return QOpenGLContext::currentContext()->isOpenGLES();
#endif
@@ -76,36 +40,16 @@ static bool isOpenGLES()
VolumetricModifier::VolumetricModifier(Q3DScatter *scatter)
: m_graph(scatter),
- m_volumeItem(0),
m_sliceIndexX(lowDetailSize / 2),
m_sliceIndexY(lowDetailSize / 4),
- m_sliceIndexZ(lowDetailSize / 2),
- m_slicingX(false),
- m_slicingY(false),
- m_slicingZ(false),
- m_mediumDetailRB(0),
- m_highDetailRB(0),
- m_lowDetailData(0),
- m_mediumDetailData(0),
- m_highDetailData(0),
- m_mediumDetailIndex(0),
- m_highDetailIndex(0),
- m_mediumDetailShaftIndex(0),
- m_highDetailShaftIndex(0),
- m_sliceSliderX(0),
- m_sliceSliderY(0),
- m_sliceSliderZ(0),
- m_usingPrimaryTable(true),
- m_sliceLabelX(0),
- m_sliceLabelY(0),
- m_sliceLabelZ(0)
-{
- m_graph->activeTheme()->setType(Q3DTheme::ThemeQt);
+ m_sliceIndexZ(lowDetailSize / 2)
+{
+ m_graph->activeTheme()->setType(Q3DTheme::ThemePrimaryColors);
m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
- m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
- //! [6]
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetIsometricLeft);
+ //! [0]
m_graph->setOrthoProjection(true);
- //! [6]
+ //! [0]
m_graph->activeTheme()->setBackgroundEnabled(false);
// Only allow zooming at the center and limit the zoom to 200% to avoid clipping issues
@@ -115,10 +59,12 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter)
toggleAreaAll(true);
if (!isOpenGLES()) {
- m_lowDetailData = new QList<uchar>(lowDetailSize * lowDetailSize * lowDetailSize / 2);
- m_mediumDetailData =
- new QList<uchar>(mediumDetailSize * mediumDetailSize * mediumDetailSize / 2);
- m_highDetailData = new QList<uchar>(highDetailSize * highDetailSize * highDetailSize / 2);
+ m_lowDetailData
+ = new QList<uchar>(lowDetailSize * lowDetailSize * lowDetailSize / 2);
+ m_mediumDetailData
+ = new QList<uchar>(mediumDetailSize * mediumDetailSize * mediumDetailSize / 2);
+ m_highDetailData
+ = new QList<uchar>(highDetailSize * highDetailSize * highDetailSize / 2);
initHeightMap(QStringLiteral(":/heightmaps/layer_ground.png"), m_groundLayer);
initHeightMap(QStringLiteral(":/heightmaps/layer_water.png"), m_waterLayer);
@@ -129,7 +75,7 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter)
createVolume(lowDetailSize, 0, lowDetailSize, m_lowDetailData);
excavateMineShaft(lowDetailSize, 0, m_mineShaftArray.size(), m_lowDetailData);
- //! [0]
+ //! [1]
m_volumeItem = new QCustom3DVolume;
// Adjust water level to zero with a minor tweak to y-coordinate position and scaling
m_volumeItem->setScaling(
@@ -142,16 +88,16 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter)
(m_graph->axisY()->max() + m_graph->axisY()->min()) / 2.0f,
(m_graph->axisZ()->max() + m_graph->axisZ()->min()) / 2.0f));
m_volumeItem->setScalingAbsolute(false);
- //! [0]
//! [1]
+ //! [2]
m_volumeItem->setTextureWidth(lowDetailSize);
m_volumeItem->setTextureHeight(lowDetailSize / 2);
m_volumeItem->setTextureDepth(lowDetailSize);
m_volumeItem->setTextureFormat(QImage::Format_Indexed8);
m_volumeItem->setTextureData(new QList<uchar>(*m_lowDetailData));
- //! [1]
+ //! [2]
- // Generate color tables.
+ // Generate color tables
m_colorTable1.resize(colorTableSize);
m_colorTable2.resize(colorTableSize);
@@ -182,13 +128,17 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter)
if (i < magmaColorsMax) {
m_colorTable2[i] = qRgba(((i - aboveWaterGroundColorsMax) * 2),
((i - aboveWaterGroundColorsMax) * 2),
- ((i - aboveWaterGroundColorsMax) * 2), 255);
+ ((i - aboveWaterGroundColorsMax) * 2),
+ 255);
} else if (i < underWaterGroundColorsMax) {
m_colorTable2[i] = qRgba(((i - aboveWaterGroundColorsMax) * 2),
((i - aboveWaterGroundColorsMax) * 2),
- ((i - aboveWaterGroundColorsMax) * 2), terrainTransparency);
+ ((i - aboveWaterGroundColorsMax) * 2),
+ terrainTransparency);
} else if (i < waterColorsMax) {
- m_colorTable2[i] = qRgba(0, 0, ((i - underWaterGroundColorsMax) * 2) + 120,
+ m_colorTable2[i] = qRgba(0,
+ 0,
+ ((i - underWaterGroundColorsMax) * 2) + 120,
terrainTransparency);
} else {
m_colorTable2[i] = qRgba(0, 0, 0, 0); // Not used
@@ -197,21 +147,21 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter)
m_colorTable2[airColorIndex] = qRgba(0, 0, 0, 0);
m_colorTable2[mineShaftColorIndex] = qRgba(255, 255, 0, 255);
- //! [2]
+ //! [3]
m_volumeItem->setColorTable(m_colorTable1);
- //! [2]
+ //! [3]
- //! [5]
+ //! [4]
m_volumeItem->setSliceFrameGaps(QVector3D(0.01f, 0.02f, 0.01f));
m_volumeItem->setSliceFrameThicknesses(QVector3D(0.0025f, 0.005f, 0.0025f));
m_volumeItem->setSliceFrameWidths(QVector3D(0.0025f, 0.005f, 0.0025f));
m_volumeItem->setDrawSliceFrames(false);
- //! [5]
+ //! [4]
handleSlicingChanges();
- //! [3]
+ //! [5]
m_graph->addCustomItem(m_volumeItem);
- //! [3]
+ //! [5]
m_timer.start(0);
} else {
@@ -295,13 +245,13 @@ void VolumetricModifier::adjustSliceX(int value)
if (m_sliceIndexX == m_volumeItem->textureWidth())
m_sliceIndexX--;
if (m_volumeItem->sliceIndexX() != -1)
- //! [7]
+ //! [6]
m_volumeItem->setSliceIndexX(m_sliceIndexX);
- //! [7]
- //! [9]
+ //! [6]
+ //! [8]
m_sliceLabelX->setPixmap(
QPixmap::fromImage(m_volumeItem->renderSlice(Qt::XAxis, m_sliceIndexX)));
- //! [9]
+ //! [8]
}
}
@@ -457,7 +407,7 @@ void VolumetricModifier::setPreserveOpacity(bool enabled)
void VolumetricModifier::setTransparentGround(bool enabled)
{
if (m_volumeItem) {
- //! [12]
+ //! [11]
int newAlpha = enabled ? terrainTransparency : 255;
for (int i = aboveWaterGroundColorsMin; i < underWaterGroundColorsMax; i++) {
QRgb oldColor1 = m_colorTable1.at(i);
@@ -469,7 +419,7 @@ void VolumetricModifier::setTransparentGround(bool enabled)
m_volumeItem->setColorTable(m_colorTable1);
else
m_volumeItem->setColorTable(m_colorTable2);
- //! [12]
+ //! [11]
adjustSliceX(m_sliceSliderX->value());
adjustSliceY(m_sliceSliderY->value());
adjustSliceZ(m_sliceSliderZ->value());
@@ -479,9 +429,9 @@ void VolumetricModifier::setTransparentGround(bool enabled)
void VolumetricModifier::setUseHighDefShader(bool enabled)
{
if (m_volumeItem) {
- //! [13]
+ //! [12]
m_volumeItem->setUseHighDefShader(enabled);
- //! [13]
+ //! [12]
}
}
@@ -493,9 +443,9 @@ void VolumetricModifier::adjustAlphaMultiplier(int value)
mult = float(value - 99) / 2.0f;
else
mult = float(value) / float(500 - value * 4);
- //! [11]
+ //! [9]
m_volumeItem->setAlphaMultiplier(mult);
- //! [11]
+ //! [9]
QString labelFormat = QStringLiteral("Alpha multiplier: %1");
m_alphaMultiplierLabel->setText(labelFormat.arg(
QString::number(m_volumeItem->alphaMultiplier(), 'f', 3)));
@@ -650,8 +600,6 @@ int VolumetricModifier::excavateMineShaft(int textureSize, int startIndex, int c
dataIndex += (textureSize * textureSize / 2) * shaftSize;
}
}
-
-
}
return endIndex;
}
@@ -660,7 +608,7 @@ void VolumetricModifier::excavateMineBlock(int textureSize, int dataIndex, int s
QList<uchar> *textureData)
{
for (int k = 0; k < size; k++) {
- int curIndex = dataIndex + (k * textureSize * textureSize / 2);
+ int curIndex = 0;
for (int l = 0; l < size; l++) {
curIndex = dataIndex + (k * textureSize * textureSize / 2)
+ (l * textureSize);
@@ -669,7 +617,6 @@ void VolumetricModifier::excavateMineBlock(int textureSize, int dataIndex, int s
(*textureData)[curIndex] = mineShaftColorIndex;
curIndex++;
}
-
}
}
}
@@ -679,9 +626,9 @@ void VolumetricModifier::handleSlicingChanges()
if (m_volumeItem) {
if (m_slicingX || m_slicingY || m_slicingZ) {
// Only show slices of selected dimensions
- //! [8]
+ //! [7]
m_volumeItem->setDrawSlices(true);
- //! [8]
+ //! [7]
m_volumeItem->setSliceIndexX(m_slicingX ? m_sliceIndexX : -1);
m_volumeItem->setSliceIndexY(m_slicingY ? m_sliceIndexY : -1);
m_volumeItem->setSliceIndexZ(m_slicingZ ? m_sliceIndexZ : -1);
diff --git a/examples/datavisualization/volumetric/volumetric.h b/examples/datavisualization/volumetric/volumetric.h
index f57a8394..68bbb0dc 100644
--- a/examples/datavisualization/volumetric/volumetric.h
+++ b/examples/datavisualization/volumetric/volumetric.h
@@ -1,42 +1,16 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef VOLUMETRICMODIFIER_H
#define VOLUMETRICMODIFIER_H
#include <QtDataVisualization/q3dscatter.h>
#include <QtDataVisualization/qcustom3dvolume.h>
-#include <QtCore/QTimer>
-#include <QtGui/QRgb>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QSlider>
-#include <QtWidgets/QRadioButton>
+#include <QtCore/qtimer.h>
+#include <QtGui/qrgb.h>
+#include <QtWidgets/qlabel.h>
+#include <QtWidgets/qslider.h>
+#include <QtWidgets/qradiobutton.h>
class VolumetricModifier : public QObject
{
@@ -83,39 +57,39 @@ private:
void excavateMineBlock(int textureSize, int dataIndex, int size, QList<uchar> *textureData);
void handleSlicingChanges();
- Q3DScatter *m_graph;
- QCustom3DVolume *m_volumeItem;
- int m_sliceIndexX;
- int m_sliceIndexY;
- int m_sliceIndexZ;
- bool m_slicingX;
- bool m_slicingY;
- bool m_slicingZ;
- QLabel *m_fpsLabel;
- QRadioButton *m_mediumDetailRB;
- QRadioButton *m_highDetailRB;
- QList<uchar> *m_lowDetailData;
- QList<uchar> *m_mediumDetailData;
- QList<uchar> *m_highDetailData;
+ Q3DScatter *m_graph = nullptr;
+ QCustom3DVolume *m_volumeItem = nullptr;
+ int m_sliceIndexX = 0;
+ int m_sliceIndexY = 0;
+ int m_sliceIndexZ = 0;
+ bool m_slicingX = false;
+ bool m_slicingY = false;
+ bool m_slicingZ = false;
+ QLabel *m_fpsLabel = nullptr;
+ QRadioButton *m_mediumDetailRB = nullptr;
+ QRadioButton *m_highDetailRB = nullptr;
+ QList<uchar> *m_lowDetailData = nullptr;
+ QList<uchar> *m_mediumDetailData = nullptr;
+ QList<uchar> *m_highDetailData = nullptr;
+ int m_mediumDetailIndex = 0;
+ int m_highDetailIndex = 0;
+ int m_mediumDetailShaftIndex = 0;
+ int m_highDetailShaftIndex = 0;
+ QSlider *m_sliceSliderX = nullptr;
+ QSlider *m_sliceSliderY = nullptr;
+ QSlider *m_sliceSliderZ = nullptr;
+ QList<QRgb> m_colorTable1 = {};
+ QList<QRgb> m_colorTable2 = {};
+ bool m_usingPrimaryTable = true;
+ QLabel *m_sliceLabelX = nullptr;
+ QLabel *m_sliceLabelY = nullptr;
+ QLabel *m_sliceLabelZ = nullptr;
+ QLabel *m_alphaMultiplierLabel = nullptr;
+ QList<uchar> m_magmaLayer = {};
+ QList<uchar> m_waterLayer = {};
+ QList<uchar> m_groundLayer = {};
+ QList<QPair<QVector3D, QVector3D>> m_mineShaftArray = {};
QTimer m_timer;
- int m_mediumDetailIndex;
- int m_highDetailIndex;
- int m_mediumDetailShaftIndex;
- int m_highDetailShaftIndex;
- QSlider *m_sliceSliderX;
- QSlider *m_sliceSliderY;
- QSlider *m_sliceSliderZ;
- QList<QRgb> m_colorTable1;
- QList<QRgb> m_colorTable2;
- bool m_usingPrimaryTable;
- QLabel *m_sliceLabelX;
- QLabel *m_sliceLabelY;
- QLabel *m_sliceLabelZ;
- QLabel *m_alphaMultiplierLabel;
- QList<uchar> m_magmaLayer;
- QList<uchar> m_waterLayer;
- QList<uchar> m_groundLayer;
- QList<QPair<QVector3D, QVector3D>> m_mineShaftArray;
};
#endif
diff --git a/licenseRule.json b/licenseRule.json
new file mode 100644
index 00000000..2a70539b
--- /dev/null
+++ b/licenseRule.json
@@ -0,0 +1,89 @@
+[
+ {
+ "comment" : ["file_pattern_ending: strings matched against the end of a file name.",
+ "location keys: regular expression matched against the beginning of",
+ "the file path (relative to the git submodule root).",
+ "spdx: list of SPDX-License-Expression's allowed in the matching files.",
+ "-------------------------------------------------------",
+ "Files with the following endings are Build System licensed,",
+ "unless they are examples",
+ "Files with other endings can also be build system files"
+ ],
+ "file_pattern_ending" : ["CMakeLists.txt", ".cmake", ".pro", ".pri", ".prf",
+ "configure", "configure.bat", "cmake.in", "plist.in", "CMakeLists.txt.in"],
+ "location" : {
+ "" : {
+ "comment" : "Default",
+ "file type" : "build system",
+ "spdx" : ["BSD-3-Clause"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Example takes precedent",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ }
+ }
+ },
+ {
+ "comments" : ["Files with the following endings are Tool licensed,",
+ "unless they are examples.",
+ "Files with other endings can also be tool files."],
+ "file_pattern_ending" : [".sh", ".py", ".pl", ".bat", ".ps1"],
+ "location" :{
+ "" : {
+ "comment" : "Default",
+ "file type" : "tools and utils",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Example takes precedent",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ }
+ }
+ },
+ {
+ "comment" : "Files with the following endings are Documentation licensed.",
+ "file_pattern_ending" : [".qdoc", ".qdocinc" , ".qdocconf", ".txt", "README", "qt_attribution.json"],
+ "location" :{
+ "" : {
+ "comment" : "",
+ "file type" : "documentation",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only"]
+ }
+ }
+ },
+ {
+ "comment" : ["All other files",
+ "The licensing is defined only by the file location in the Qt module repository.",
+ "NO <file_pattern_ending> key for this case!",
+ "This needs to be the last entry of the file."],
+ "location" : {
+ "" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only"]
+ },
+ "src/" : {
+ "comment" : "Default",
+ "file type" : "module and plugin",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only"]
+ },
+ "tests/" : {
+ "comment" : "Default",
+ "file type" : "test",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only"]
+ },
+ "(.*)(examples/|snippets/)" : {
+ "comment" : "Default",
+ "file type" : "examples and snippets",
+ "spdx" : ["LicenseRef-Qt-Commercial OR BSD-3-Clause"]
+ },
+ "tests/auto/cpptest/common/cpptestutil.h" : {
+ "comment" : "",
+ "file type" : "util",
+ "spdx" : ["LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0"]
+ }
+ }
+ }
+]
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8f9835d4..0bd4f3cb 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
add_subdirectory(datavisualization)
if(TARGET Qt::Quick)
add_subdirectory(datavisualizationqml)
diff --git a/src/datavisualization/CMakeLists.txt b/src/datavisualization/CMakeLists.txt
index ca75d284..27f82340 100644
--- a/src/datavisualization/CMakeLists.txt
+++ b/src/datavisualization/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_internal_add_module(DataVisualization
TARGET_PRODUCT "Qt Data Visualization (Qt $$QT_VERSION)"
TARGET_DESCRIPTION "3D Data Visualization component for Qt."
@@ -34,6 +37,7 @@ qt_internal_add_module(DataVisualization
data/scatteritemmodelhandler.cpp data/scatteritemmodelhandler_p.h
data/scatterrenderitem.cpp data/scatterrenderitem_p.h
data/surfaceitemmodelhandler.cpp data/surfaceitemmodelhandler_p.h
+ engine/abstractdeclarativeinterface.cpp engine/abstractdeclarativeinterface_p.h
engine/abstract3dcontroller.cpp engine/abstract3dcontroller_p.h
engine/abstract3drenderer.cpp engine/abstract3drenderer_p.h
engine/axisrendercache.cpp engine/axisrendercache_p.h
@@ -76,6 +80,20 @@ qt_internal_add_module(DataVisualization
utils/texturehelper.cpp utils/texturehelper_p.h
utils/utils.cpp utils/utils_p.h
utils/vertexindexer.cpp utils/vertexindexer_p.h
+ NO_PCH_SOURCES
+ # undef QT_NO_FOREACH:
+ engine/abstract3dcontroller.cpp
+ engine/abstract3drenderer.cpp
+ engine/axisrendercache.cpp
+ engine/bars3dcontroller.cpp
+ engine/bars3drenderer.cpp
+ engine/q3dscatter.cpp
+ engine/q3dsurface.cpp
+ engine/scatter3dcontroller.cpp
+ engine/scatter3drenderer.cpp
+ engine/surface3dcontroller.cpp
+ engine/surface3drenderer.cpp
+ # end undef QT_NO_FOREACH
INCLUDE_DIRECTORIES
axis
data
@@ -84,13 +102,10 @@ qt_internal_add_module(DataVisualization
input
theme
utils
- ../datavisualizationqml
PUBLIC_LIBRARIES
Qt::Core
Qt::Gui
Qt::OpenGL
- Qt::Qml
- Qt::Quick
GENERATE_CPP_EXPORTS
)
@@ -372,7 +387,7 @@ set(shader_resource_files
"engine/shaders/texture_ES2.frag"
)
-qt_internal_add_resource(DataVisualization "shaders"
+qt_internal_add_resource(DataVisualization "datavisualizationshaders"
PREFIX
"/shaders"
BASE
@@ -381,7 +396,7 @@ qt_internal_add_resource(DataVisualization "shaders"
${shader_resource_files}
)
-qt_internal_add_resource(DataVisualization "meshes"
+qt_internal_add_resource(DataVisualization "datavisualizationmeshes"
PREFIX
"/defaultMeshes"
BASE
@@ -398,6 +413,17 @@ qt_internal_extend_target(DataVisualization CONDITION MACOS
PRIVATE_MODULE_INTERFACE
Qt::GuiPrivate
)
+
+qt_internal_extend_target(DataVisualization CONDITION MINGW
+ NO_UNITY_BUILD_SOURCES
+ data/qbardataitem.cpp
+ data/qscatterdataitem.cpp
+ data/qsurfacedataitem.cpp
+ # MinGW triggers `-Werror=maybe-uninitialized` on d_ptr while
+ # proper checks are in place and d_ptr is initialized in
+ # operator=()
+)
+
qt_internal_add_docs(DataVisualization
doc/qtdatavis3d.qdocconf
)
diff --git a/src/datavisualization/axis/qabstract3daxis.cpp b/src/datavisualization/axis/qabstract3daxis.cpp
index 94a42521..62bbb2a3 100644
--- a/src/datavisualization/axis/qabstract3daxis.cpp
+++ b/src/datavisualization/axis/qabstract3daxis.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qabstract3daxis_p.h"
diff --git a/src/datavisualization/axis/qabstract3daxis.h b/src/datavisualization/axis/qabstract3daxis.h
index 79af4377..3449397f 100644
--- a/src/datavisualization/axis/qabstract3daxis.h
+++ b/src/datavisualization/axis/qabstract3daxis.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QABSTRACT3DAXIS_H
#define QABSTRACT3DAXIS_H
diff --git a/src/datavisualization/axis/qabstract3daxis_p.h b/src/datavisualization/axis/qabstract3daxis_p.h
index 76e376f7..4b258edf 100644
--- a/src/datavisualization/axis/qabstract3daxis_p.h
+++ b/src/datavisualization/axis/qabstract3daxis_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/axis/qcategory3daxis.cpp b/src/datavisualization/axis/qcategory3daxis.cpp
index e47706c0..a8cdec4d 100644
--- a/src/datavisualization/axis/qcategory3daxis.cpp
+++ b/src/datavisualization/axis/qcategory3daxis.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qcategory3daxis_p.h"
#include "bars3dcontroller_p.h"
diff --git a/src/datavisualization/axis/qcategory3daxis.h b/src/datavisualization/axis/qcategory3daxis.h
index d7fc8709..5497c39b 100644
--- a/src/datavisualization/axis/qcategory3daxis.h
+++ b/src/datavisualization/axis/qcategory3daxis.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QCATEGORY3DAXIS_H
#define QCATEGORY3DAXIS_H
diff --git a/src/datavisualization/axis/qcategory3daxis_p.h b/src/datavisualization/axis/qcategory3daxis_p.h
index 842c07e6..c717af96 100644
--- a/src/datavisualization/axis/qcategory3daxis_p.h
+++ b/src/datavisualization/axis/qcategory3daxis_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/axis/qlogvalue3daxisformatter.cpp b/src/datavisualization/axis/qlogvalue3daxisformatter.cpp
index 37cf22db..adb485ce 100644
--- a/src/datavisualization/axis/qlogvalue3daxisformatter.cpp
+++ b/src/datavisualization/axis/qlogvalue3daxisformatter.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qlogvalue3daxisformatter_p.h"
#include "qvalue3daxis_p.h"
diff --git a/src/datavisualization/axis/qlogvalue3daxisformatter.h b/src/datavisualization/axis/qlogvalue3daxisformatter.h
index cdfb157d..1f4fc70a 100644
--- a/src/datavisualization/axis/qlogvalue3daxisformatter.h
+++ b/src/datavisualization/axis/qlogvalue3daxisformatter.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QLOGVALUE3DAXISFORMATTER_H
#define QLOGVALUE3DAXISFORMATTER_H
diff --git a/src/datavisualization/axis/qlogvalue3daxisformatter_p.h b/src/datavisualization/axis/qlogvalue3daxisformatter_p.h
index 6b129030..b1a28be5 100644
--- a/src/datavisualization/axis/qlogvalue3daxisformatter_p.h
+++ b/src/datavisualization/axis/qlogvalue3daxisformatter_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/axis/qvalue3daxis.cpp b/src/datavisualization/axis/qvalue3daxis.cpp
index ebc548f2..1358c92b 100644
--- a/src/datavisualization/axis/qvalue3daxis.cpp
+++ b/src/datavisualization/axis/qvalue3daxis.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qvalue3daxis_p.h"
#include "qvalue3daxisformatter_p.h"
diff --git a/src/datavisualization/axis/qvalue3daxis.h b/src/datavisualization/axis/qvalue3daxis.h
index 50e61d0b..87662847 100644
--- a/src/datavisualization/axis/qvalue3daxis.h
+++ b/src/datavisualization/axis/qvalue3daxis.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QVALUE3DAXIS_H
#define QVALUE3DAXIS_H
diff --git a/src/datavisualization/axis/qvalue3daxis_p.h b/src/datavisualization/axis/qvalue3daxis_p.h
index 1e9cbfbf..ab9095e3 100644
--- a/src/datavisualization/axis/qvalue3daxis_p.h
+++ b/src/datavisualization/axis/qvalue3daxis_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/axis/qvalue3daxisformatter.cpp b/src/datavisualization/axis/qvalue3daxisformatter.cpp
index 26786f9d..db210059 100644
--- a/src/datavisualization/axis/qvalue3daxisformatter.cpp
+++ b/src/datavisualization/axis/qvalue3daxisformatter.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qvalue3daxisformatter_p.h"
#include "qvalue3daxis_p.h"
diff --git a/src/datavisualization/axis/qvalue3daxisformatter.h b/src/datavisualization/axis/qvalue3daxisformatter.h
index 658a4166..e55483ce 100644
--- a/src/datavisualization/axis/qvalue3daxisformatter.h
+++ b/src/datavisualization/axis/qvalue3daxisformatter.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QVALUE3DAXISFORMATTER_H
#define QVALUE3DAXISFORMATTER_H
diff --git a/src/datavisualization/axis/qvalue3daxisformatter_p.h b/src/datavisualization/axis/qvalue3daxisformatter_p.h
index 9bc7b555..301d6014 100644
--- a/src/datavisualization/axis/qvalue3daxisformatter_p.h
+++ b/src/datavisualization/axis/qvalue3daxisformatter_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/configure.cmake b/src/datavisualization/configure.cmake
index aff14785..a7d05099 100644
--- a/src/datavisualization/configure.cmake
+++ b/src/datavisualization/configure.cmake
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_extra_definition("QT_VERSION_STR" "\"${PROJECT_VERSION}\"" PUBLIC)
qt_extra_definition("QT_VERSION_MAJOR" ${PROJECT_VERSION_MAJOR} PUBLIC)
qt_extra_definition("QT_VERSION_MINOR" ${PROJECT_VERSION_MINOR} PUBLIC)
diff --git a/src/datavisualization/data/abstractitemmodelhandler.cpp b/src/datavisualization/data/abstractitemmodelhandler.cpp
index c8c5bf25..99d983be 100644
--- a/src/datavisualization/data/abstractitemmodelhandler.cpp
+++ b/src/datavisualization/data/abstractitemmodelhandler.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "abstractitemmodelhandler_p.h"
diff --git a/src/datavisualization/data/abstractitemmodelhandler_p.h b/src/datavisualization/data/abstractitemmodelhandler_p.h
index fb215244..64e61838 100644
--- a/src/datavisualization/data/abstractitemmodelhandler_p.h
+++ b/src/datavisualization/data/abstractitemmodelhandler_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -91,6 +65,8 @@ private:
Q_DISABLE_COPY(AbstractItemModelHandler)
};
+static constexpr int noRoleIndex = -1;
+
QT_END_NAMESPACE
#endif
diff --git a/src/datavisualization/data/abstractrenderitem.cpp b/src/datavisualization/data/abstractrenderitem.cpp
index 25b656b6..e3811fd1 100644
--- a/src/datavisualization/data/abstractrenderitem.cpp
+++ b/src/datavisualization/data/abstractrenderitem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "abstractrenderitem_p.h"
diff --git a/src/datavisualization/data/abstractrenderitem_p.h b/src/datavisualization/data/abstractrenderitem_p.h
index f1fcaf13..765e0ba7 100644
--- a/src/datavisualization/data/abstractrenderitem_p.h
+++ b/src/datavisualization/data/abstractrenderitem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/baritemmodelhandler.cpp b/src/datavisualization/data/baritemmodelhandler.cpp
index 8864948a..4a8c8faa 100644
--- a/src/datavisualization/data/baritemmodelhandler.cpp
+++ b/src/datavisualization/data/baritemmodelhandler.cpp
@@ -1,38 +1,10 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "baritemmodelhandler_p.h"
QT_BEGIN_NAMESPACE
-static const int noRoleIndex = -1;
-
BarItemModelHandler::BarItemModelHandler(QItemModelBarDataProxy *proxy, QObject *parent)
: AbstractItemModelHandler(parent),
m_proxy(proxy),
diff --git a/src/datavisualization/data/baritemmodelhandler_p.h b/src/datavisualization/data/baritemmodelhandler_p.h
index dbb95967..98e0d51b 100644
--- a/src/datavisualization/data/baritemmodelhandler_p.h
+++ b/src/datavisualization/data/baritemmodelhandler_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/barrenderitem.cpp b/src/datavisualization/data/barrenderitem.cpp
index 3fa423d9..43d2de5a 100644
--- a/src/datavisualization/data/barrenderitem.cpp
+++ b/src/datavisualization/data/barrenderitem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "barrenderitem_p.h"
diff --git a/src/datavisualization/data/barrenderitem_p.h b/src/datavisualization/data/barrenderitem_p.h
index d46e0848..a83d07e6 100644
--- a/src/datavisualization/data/barrenderitem_p.h
+++ b/src/datavisualization/data/barrenderitem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/customrenderitem.cpp b/src/datavisualization/data/customrenderitem.cpp
index 68e84c44..9873bcf5 100644
--- a/src/datavisualization/data/customrenderitem.cpp
+++ b/src/datavisualization/data/customrenderitem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "customrenderitem_p.h"
@@ -68,9 +42,10 @@ CustomRenderItem::~CustomRenderItem()
ObjectHelper::releaseObjectHelper(m_renderer, m_object);
}
-void CustomRenderItem::setMesh(const QString &meshFile)
+bool CustomRenderItem::setMesh(const QString &meshFile)
{
ObjectHelper::resetObjectHelper(m_renderer, m_object, meshFile);
+ return m_object ? true : false;
}
void CustomRenderItem::setColorTable(const QList<QRgb> &colors)
diff --git a/src/datavisualization/data/customrenderitem_p.h b/src/datavisualization/data/customrenderitem_p.h
index 196e6aa0..abc62247 100644
--- a/src/datavisualization/data/customrenderitem_p.h
+++ b/src/datavisualization/data/customrenderitem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -59,7 +33,7 @@ public:
inline void setTexture(GLuint texture) { m_texture = texture; }
inline GLuint texture() const { return m_texture; }
- void setMesh(const QString &meshFile);
+ bool setMesh(const QString &meshFile);
inline ObjectHelper *mesh() const { return m_object; }
inline void setScaling(const QVector3D &scaling) { m_scaling = scaling; }
inline const QVector3D &scaling() const { return m_scaling; }
diff --git a/src/datavisualization/data/labelitem.cpp b/src/datavisualization/data/labelitem.cpp
index 337c8008..f8e1600b 100644
--- a/src/datavisualization/data/labelitem.cpp
+++ b/src/datavisualization/data/labelitem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "labelitem_p.h"
diff --git a/src/datavisualization/data/labelitem_p.h b/src/datavisualization/data/labelitem_p.h
index c090c9c0..760cdbfa 100644
--- a/src/datavisualization/data/labelitem_p.h
+++ b/src/datavisualization/data/labelitem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qabstract3dseries.cpp b/src/datavisualization/data/qabstract3dseries.cpp
index a196ed66..0a8613c0 100644
--- a/src/datavisualization/data/qabstract3dseries.cpp
+++ b/src/datavisualization/data/qabstract3dseries.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qabstract3dseries_p.h"
#include "qabstractdataproxy_p.h"
diff --git a/src/datavisualization/data/qabstract3dseries.h b/src/datavisualization/data/qabstract3dseries.h
index 73c95c50..781eabc5 100644
--- a/src/datavisualization/data/qabstract3dseries.h
+++ b/src/datavisualization/data/qabstract3dseries.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QABSTRACT3DSERIES_H
#define QABSTRACT3DSERIES_H
diff --git a/src/datavisualization/data/qabstract3dseries_p.h b/src/datavisualization/data/qabstract3dseries_p.h
index d4ad11c9..f5c2a95f 100644
--- a/src/datavisualization/data/qabstract3dseries_p.h
+++ b/src/datavisualization/data/qabstract3dseries_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qabstractdataproxy.cpp b/src/datavisualization/data/qabstractdataproxy.cpp
index 248b9f4a..3d80f101 100644
--- a/src/datavisualization/data/qabstractdataproxy.cpp
+++ b/src/datavisualization/data/qabstractdataproxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qabstractdataproxy_p.h"
#include "qabstract3dseries_p.h"
diff --git a/src/datavisualization/data/qabstractdataproxy.h b/src/datavisualization/data/qabstractdataproxy.h
index 08fa4053..4cf68ea1 100644
--- a/src/datavisualization/data/qabstractdataproxy.h
+++ b/src/datavisualization/data/qabstractdataproxy.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QABSTRACTDATAPROXY_H
#define QABSTRACTDATAPROXY_H
diff --git a/src/datavisualization/data/qabstractdataproxy_p.h b/src/datavisualization/data/qabstractdataproxy_p.h
index 6ab33661..ceb3c30c 100644
--- a/src/datavisualization/data/qabstractdataproxy_p.h
+++ b/src/datavisualization/data/qabstractdataproxy_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qbar3dseries.cpp b/src/datavisualization/data/qbar3dseries.cpp
index afc3b3ba..770bf831 100644
--- a/src/datavisualization/data/qbar3dseries.cpp
+++ b/src/datavisualization/data/qbar3dseries.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qbar3dseries_p.h"
#include "bars3dcontroller_p.h"
@@ -147,6 +121,18 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ * \qmlproperty list<ThemeColor> Bar3DSeries::rowColors
+ * \since 6.3
+ * This property can be used to draw the rows of the series in different colors.
+ * The \l{Theme3D::colorStyle}{Theme3D.colorStyle} must be set to
+ * \c ColorStyleUniform to use this property.
+ * \note If the property is set and the theme is changed,
+ * the rowColors list is not cleared automatically.
+ *
+ * \sa Q3DTheme::ColorStyleUniform
+ */
+
+/*!
* Constructsa bar 3D series with the parent \a parent.
*/
QBar3DSeries::QBar3DSeries(QObject *parent) :
@@ -282,6 +268,27 @@ float QBar3DSeries::meshAngle() const
}
/*!
+ * \property QBar3DSeries::rowColors
+ * \since 6.3
+ *
+ * \brief The list of row colors in the series.
+ *
+ * This property can be used to color
+ * the rows of the series in different colors.
+ * The Q3DTheme::ColorStyle must be set to
+ * Q3DTheme::ColorStyleUniform to use this property.
+ *
+ * \sa Q3DTheme::ColorStyleUniform
+ */
+void QBar3DSeries::setRowColors(const QList<QColor> &colors)
+{
+ dptr()->setRowColors(colors);
+}
+QList<QColor> QBar3DSeries::rowColors() const
+{
+ return dptrc()->m_rowColors;
+}
+/*!
* \internal
*/
QBar3DSeriesPrivate *QBar3DSeries::dptr()
@@ -355,6 +362,8 @@ void QBar3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *newCon
&Bars3DController::handleDataColumnLabelsChanged);
QObject::connect(qptr(), &QBar3DSeries::dataProxyChanged, controller,
&Bars3DController::handleArrayReset);
+ QObject::connect(qptr(), &QBar3DSeries::rowColorsChanged, controller,
+ &Bars3DController::handleRowColorsChanged);
}
}
@@ -432,4 +441,12 @@ void QBar3DSeriesPrivate::connectSignals()
&QBar3DSeriesPrivate::handleMeshRotationChanged);
}
+void QBar3DSeriesPrivate::setRowColors(const QList<QColor> &colors)
+{
+ if (m_rowColors != colors) {
+ m_rowColors = colors;
+ emit qptr()->rowColorsChanged(m_rowColors);
+ }
+}
+
QT_END_NAMESPACE
diff --git a/src/datavisualization/data/qbar3dseries.h b/src/datavisualization/data/qbar3dseries.h
index 99fbad77..0ca508e7 100644
--- a/src/datavisualization/data/qbar3dseries.h
+++ b/src/datavisualization/data/qbar3dseries.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QBAR3DSERIES_H
#define QBAR3DSERIES_H
@@ -44,6 +18,7 @@ class Q_DATAVISUALIZATION_EXPORT QBar3DSeries : public QAbstract3DSeries
Q_PROPERTY(QBarDataProxy *dataProxy READ dataProxy WRITE setDataProxy NOTIFY dataProxyChanged)
Q_PROPERTY(QPoint selectedBar READ selectedBar WRITE setSelectedBar NOTIFY selectedBarChanged)
Q_PROPERTY(float meshAngle READ meshAngle WRITE setMeshAngle NOTIFY meshAngleChanged)
+ Q_PROPERTY(QList<QColor> rowColors READ rowColors WRITE setRowColors NOTIFY rowColorsChanged REVISION(6, 3))
public:
explicit QBar3DSeries(QObject *parent = nullptr);
@@ -60,10 +35,14 @@ public:
void setMeshAngle(float angle);
float meshAngle() const;
+ QList<QColor> rowColors() const;
+ void setRowColors(const QList<QColor> &colors);
+
Q_SIGNALS:
void dataProxyChanged(QBarDataProxy *proxy);
void selectedBarChanged(const QPoint &position);
void meshAngleChanged(float angle);
+ Q_REVISION(6, 3) void rowColorsChanged(const QList<QColor> &rowcolors);
protected:
QBar3DSeriesPrivate *dptr();
diff --git a/src/datavisualization/data/qbar3dseries_p.h b/src/datavisualization/data/qbar3dseries_p.h
index 0f5bb43a..acf31c25 100644
--- a/src/datavisualization/data/qbar3dseries_p.h
+++ b/src/datavisualization/data/qbar3dseries_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -62,11 +36,15 @@ public:
void connectSignals();
+ void setRowColors(const QList<QColor> &colors);
+
private:
QBar3DSeries *qptr();
QPoint m_selectedBar;
+ QList<QColor> m_rowColors;
+
private:
friend class QBar3DSeries;
};
diff --git a/src/datavisualization/data/qbardataitem.cpp b/src/datavisualization/data/qbardataitem.cpp
index e1a04c83..7406a6b8 100644
--- a/src/datavisualization/data/qbardataitem.cpp
+++ b/src/datavisualization/data/qbardataitem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qbardataitem_p.h"
diff --git a/src/datavisualization/data/qbardataitem.h b/src/datavisualization/data/qbardataitem.h
index d287868c..0e1a271e 100644
--- a/src/datavisualization/data/qbardataitem.h
+++ b/src/datavisualization/data/qbardataitem.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QBARDATAITEM_H
#define QBARDATAITEM_H
diff --git a/src/datavisualization/data/qbardataitem_p.h b/src/datavisualization/data/qbardataitem_p.h
index 000bafdb..45d1a3eb 100644
--- a/src/datavisualization/data/qbardataitem_p.h
+++ b/src/datavisualization/data/qbardataitem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qbardataproxy.cpp b/src/datavisualization/data/qbardataproxy.cpp
index 36832137..49cda8cd 100644
--- a/src/datavisualization/data/qbardataproxy.cpp
+++ b/src/datavisualization/data/qbardataproxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qbardataproxy_p.h"
#include "qbar3dseries_p.h"
diff --git a/src/datavisualization/data/qbardataproxy.h b/src/datavisualization/data/qbardataproxy.h
index daf9366e..34a540b0 100644
--- a/src/datavisualization/data/qbardataproxy.h
+++ b/src/datavisualization/data/qbardataproxy.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QBARDATAPROXY_H
#define QBARDATAPROXY_H
diff --git a/src/datavisualization/data/qbardataproxy_p.h b/src/datavisualization/data/qbardataproxy_p.h
index 7b2cf22b..08898c42 100644
--- a/src/datavisualization/data/qbardataproxy_p.h
+++ b/src/datavisualization/data/qbardataproxy_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qcustom3ditem.cpp b/src/datavisualization/data/qcustom3ditem.cpp
index 07e3c809..a657823c 100644
--- a/src/datavisualization/data/qcustom3ditem.cpp
+++ b/src/datavisualization/data/qcustom3ditem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qcustom3ditem_p.h"
@@ -58,7 +32,9 @@ QT_BEGIN_NAMESPACE
/*! \qmlproperty string Custom3DItem::meshFile
*
* The item mesh file name. The item in the file must be in Wavefront OBJ format and include
- * vertices, normals, and UVs. It also needs to be in triangles.
+ * vertices, normals, and UVs. It also needs to be in triangles. If the file is missing either
+ * normals or UVs, loading will fail with an error message to the console output and the item will
+ * not be rendered.
*/
/*! \qmlproperty string Custom3DItem::textureFile
@@ -203,6 +179,9 @@ QCustom3DItem::~QCustom3DItem()
*
* The item in the file must be in Wavefront OBJ format and include
* vertices, normals, and UVs. It also needs to be in triangles.
+ * If the file is missing either normals or UVs, loading will fail
+ * with an error message to the console output and the item will
+ * not be rendered.
*/
void QCustom3DItem::setMeshFile(const QString &meshFile)
{
diff --git a/src/datavisualization/data/qcustom3ditem.h b/src/datavisualization/data/qcustom3ditem.h
index 8e65a7f5..52eb3899 100644
--- a/src/datavisualization/data/qcustom3ditem.h
+++ b/src/datavisualization/data/qcustom3ditem.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QCUSTOM3DITEM_H
#define QCUSTOM3DITEM_H
@@ -34,6 +8,7 @@
#include <QtGui/QImage>
#include <QtGui/QVector3D>
#include <QtGui/QQuaternion>
+#include <QtCore/QObject>
QT_BEGIN_NAMESPACE
diff --git a/src/datavisualization/data/qcustom3ditem_p.h b/src/datavisualization/data/qcustom3ditem_p.h
index d97c98c4..75d0f5d3 100644
--- a/src/datavisualization/data/qcustom3ditem_p.h
+++ b/src/datavisualization/data/qcustom3ditem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qcustom3dlabel.cpp b/src/datavisualization/data/qcustom3dlabel.cpp
index 72379dd8..4a440ab9 100644
--- a/src/datavisualization/data/qcustom3dlabel.cpp
+++ b/src/datavisualization/data/qcustom3dlabel.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qcustom3dlabel_p.h"
#include "utils_p.h"
diff --git a/src/datavisualization/data/qcustom3dlabel.h b/src/datavisualization/data/qcustom3dlabel.h
index 768c3fbf..3ee72e04 100644
--- a/src/datavisualization/data/qcustom3dlabel.h
+++ b/src/datavisualization/data/qcustom3dlabel.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QCUSTOMLABELITEM_H
#define QCUSTOMLABELITEM_H
diff --git a/src/datavisualization/data/qcustom3dlabel_p.h b/src/datavisualization/data/qcustom3dlabel_p.h
index f607ac1b..7637974c 100644
--- a/src/datavisualization/data/qcustom3dlabel_p.h
+++ b/src/datavisualization/data/qcustom3dlabel_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qcustom3dvolume.cpp b/src/datavisualization/data/qcustom3dvolume.cpp
index df944a58..3357bf43 100644
--- a/src/datavisualization/data/qcustom3dvolume.cpp
+++ b/src/datavisualization/data/qcustom3dvolume.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qcustom3dvolume_p.h"
#include "utils_p.h"
diff --git a/src/datavisualization/data/qcustom3dvolume.h b/src/datavisualization/data/qcustom3dvolume.h
index 16ecc714..764cebac 100644
--- a/src/datavisualization/data/qcustom3dvolume.h
+++ b/src/datavisualization/data/qcustom3dvolume.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QCUSTOM3DVOLUME_H
#define QCUSTOM3DVOLUME_H
diff --git a/src/datavisualization/data/qcustom3dvolume_p.h b/src/datavisualization/data/qcustom3dvolume_p.h
index f68473a4..0cd785fb 100644
--- a/src/datavisualization/data/qcustom3dvolume_p.h
+++ b/src/datavisualization/data/qcustom3dvolume_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qheightmapsurfacedataproxy.cpp b/src/datavisualization/data/qheightmapsurfacedataproxy.cpp
index 42ca6987..4dee6d23 100644
--- a/src/datavisualization/data/qheightmapsurfacedataproxy.cpp
+++ b/src/datavisualization/data/qheightmapsurfacedataproxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qheightmapsurfacedataproxy_p.h"
diff --git a/src/datavisualization/data/qheightmapsurfacedataproxy.h b/src/datavisualization/data/qheightmapsurfacedataproxy.h
index a22cb685..c11304f6 100644
--- a/src/datavisualization/data/qheightmapsurfacedataproxy.h
+++ b/src/datavisualization/data/qheightmapsurfacedataproxy.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QHEIGHTMAPSURFACEDATAPROXY_H
#define QHEIGHTMAPSURFACEDATAPROXY_H
diff --git a/src/datavisualization/data/qheightmapsurfacedataproxy_p.h b/src/datavisualization/data/qheightmapsurfacedataproxy_p.h
index 091291ed..a6bd613c 100644
--- a/src/datavisualization/data/qheightmapsurfacedataproxy_p.h
+++ b/src/datavisualization/data/qheightmapsurfacedataproxy_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qitemmodelbardataproxy.cpp b/src/datavisualization/data/qitemmodelbardataproxy.cpp
index c5e7c3c0..74e23cc9 100644
--- a/src/datavisualization/data/qitemmodelbardataproxy.cpp
+++ b/src/datavisualization/data/qitemmodelbardataproxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qitemmodelbardataproxy_p.h"
#include "baritemmodelhandler_p.h"
@@ -81,7 +55,7 @@ QT_BEGIN_NAMESPACE
* item models where doing search and replace is not necessary to get the desired values.
*
* For example about using the search patterns in conjunction with the roles, see
- * \l{Qt Quick 2 Bars Example}.
+ * \l{Simple Bar Graph} example.
*
* \sa {Qt Data Visualization Data Handling}
*/
diff --git a/src/datavisualization/data/qitemmodelbardataproxy.h b/src/datavisualization/data/qitemmodelbardataproxy.h
index 7340fa82..1b372a3c 100644
--- a/src/datavisualization/data/qitemmodelbardataproxy.h
+++ b/src/datavisualization/data/qitemmodelbardataproxy.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QITEMMODELBARDATAPROXY_H
#define QITEMMODELBARDATAPROXY_H
diff --git a/src/datavisualization/data/qitemmodelbardataproxy_p.h b/src/datavisualization/data/qitemmodelbardataproxy_p.h
index 4cd6e79d..cea4eb30 100644
--- a/src/datavisualization/data/qitemmodelbardataproxy_p.h
+++ b/src/datavisualization/data/qitemmodelbardataproxy_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qitemmodelscatterdataproxy.cpp b/src/datavisualization/data/qitemmodelscatterdataproxy.cpp
index c1ac496f..63392cc0 100644
--- a/src/datavisualization/data/qitemmodelscatterdataproxy.cpp
+++ b/src/datavisualization/data/qitemmodelscatterdataproxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qitemmodelscatterdataproxy_p.h"
#include "scatteritemmodelhandler_p.h"
@@ -64,7 +38,7 @@ QT_BEGIN_NAMESPACE
* item models where doing search and replace is not necessary to get the desired values.
*
* For example about using the search patterns in conjunction with the roles, see
- * ItemModelBarDataProxy usage in \l{Qt Quick 2 Bars Example}.
+ * ItemModelBarDataProxy usage in \l{Simple Bar Graph} example.
*
* \sa {Qt Data Visualization Data Handling}
*/
diff --git a/src/datavisualization/data/qitemmodelscatterdataproxy.h b/src/datavisualization/data/qitemmodelscatterdataproxy.h
index 6cabcb01..3e4d41f3 100644
--- a/src/datavisualization/data/qitemmodelscatterdataproxy.h
+++ b/src/datavisualization/data/qitemmodelscatterdataproxy.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QITEMMODELSCATTERDATAPROXY_H
#define QITEMMODELSCATTERDATAPROXY_H
diff --git a/src/datavisualization/data/qitemmodelscatterdataproxy_p.h b/src/datavisualization/data/qitemmodelscatterdataproxy_p.h
index dd957f0d..2559a321 100644
--- a/src/datavisualization/data/qitemmodelscatterdataproxy_p.h
+++ b/src/datavisualization/data/qitemmodelscatterdataproxy_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qitemmodelsurfacedataproxy.cpp b/src/datavisualization/data/qitemmodelsurfacedataproxy.cpp
index 701f9cca..75fe3691 100644
--- a/src/datavisualization/data/qitemmodelsurfacedataproxy.cpp
+++ b/src/datavisualization/data/qitemmodelsurfacedataproxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qitemmodelsurfacedataproxy_p.h"
#include "surfaceitemmodelhandler_p.h"
@@ -87,7 +61,7 @@ QT_BEGIN_NAMESPACE
* item models where doing search and replace is not necessary to get the desired values.
*
* For example about using the search patterns in conjunction with the roles, see
- * ItemModelBarDataProxy usage in \l{Qt Quick 2 Bars Example}.
+ * ItemModelBarDataProxy usage in \l{Simple Bar Graph} example.
*
* \sa {Qt Data Visualization Data Handling}
*/
diff --git a/src/datavisualization/data/qitemmodelsurfacedataproxy.h b/src/datavisualization/data/qitemmodelsurfacedataproxy.h
index b0128777..2d90f146 100644
--- a/src/datavisualization/data/qitemmodelsurfacedataproxy.h
+++ b/src/datavisualization/data/qitemmodelsurfacedataproxy.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QITEMMODELSURFACEDATAPROXY_H
#define QITEMMODELSURFACEDATAPROXY_H
diff --git a/src/datavisualization/data/qitemmodelsurfacedataproxy_p.h b/src/datavisualization/data/qitemmodelsurfacedataproxy_p.h
index dc9f96cb..a7de381a 100644
--- a/src/datavisualization/data/qitemmodelsurfacedataproxy_p.h
+++ b/src/datavisualization/data/qitemmodelsurfacedataproxy_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qscatter3dseries.cpp b/src/datavisualization/data/qscatter3dseries.cpp
index ec84ee96..3e0ea45b 100644
--- a/src/datavisualization/data/qscatter3dseries.cpp
+++ b/src/datavisualization/data/qscatter3dseries.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qscatter3dseries_p.h"
#include "scatter3dcontroller_p.h"
diff --git a/src/datavisualization/data/qscatter3dseries.h b/src/datavisualization/data/qscatter3dseries.h
index 62efebc6..599dfea4 100644
--- a/src/datavisualization/data/qscatter3dseries.h
+++ b/src/datavisualization/data/qscatter3dseries.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QSCATTER3DSERIES_H
#define QSCATTER3DSERIES_H
diff --git a/src/datavisualization/data/qscatter3dseries_p.h b/src/datavisualization/data/qscatter3dseries_p.h
index 16f20886..14f7672d 100644
--- a/src/datavisualization/data/qscatter3dseries_p.h
+++ b/src/datavisualization/data/qscatter3dseries_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qscatterdataitem.cpp b/src/datavisualization/data/qscatterdataitem.cpp
index db06573b..f55b45bf 100644
--- a/src/datavisualization/data/qscatterdataitem.cpp
+++ b/src/datavisualization/data/qscatterdataitem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qscatterdataitem_p.h"
diff --git a/src/datavisualization/data/qscatterdataitem.h b/src/datavisualization/data/qscatterdataitem.h
index ea1d81a6..9ed68de9 100644
--- a/src/datavisualization/data/qscatterdataitem.h
+++ b/src/datavisualization/data/qscatterdataitem.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QSCATTERDATAITEM_H
#define QSCATTERDATAITEM_H
diff --git a/src/datavisualization/data/qscatterdataitem_p.h b/src/datavisualization/data/qscatterdataitem_p.h
index 4fcfa58a..a3cf11c5 100644
--- a/src/datavisualization/data/qscatterdataitem_p.h
+++ b/src/datavisualization/data/qscatterdataitem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qscatterdataproxy.cpp b/src/datavisualization/data/qscatterdataproxy.cpp
index b6d1d0cc..3e793430 100644
--- a/src/datavisualization/data/qscatterdataproxy.cpp
+++ b/src/datavisualization/data/qscatterdataproxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qscatterdataproxy_p.h"
#include "qscatter3dseries_p.h"
diff --git a/src/datavisualization/data/qscatterdataproxy.h b/src/datavisualization/data/qscatterdataproxy.h
index 8fd0f695..fd22db08 100644
--- a/src/datavisualization/data/qscatterdataproxy.h
+++ b/src/datavisualization/data/qscatterdataproxy.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QSCATTERDATAPROXY_H
#define QSCATTERDATAPROXY_H
diff --git a/src/datavisualization/data/qscatterdataproxy_p.h b/src/datavisualization/data/qscatterdataproxy_p.h
index 17d967ff..8df992d1 100644
--- a/src/datavisualization/data/qscatterdataproxy_p.h
+++ b/src/datavisualization/data/qscatterdataproxy_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qsurface3dseries.cpp b/src/datavisualization/data/qsurface3dseries.cpp
index f3e8e1fa..9ac4a1de 100644
--- a/src/datavisualization/data/qsurface3dseries.cpp
+++ b/src/datavisualization/data/qsurface3dseries.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qsurface3dseries_p.h"
#include "surface3dcontroller_p.h"
@@ -166,7 +140,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
- * \qmlproperty color Surface3DSeries::wireFrameColor
+ * \qmlproperty color Surface3DSeries::wireframeColor
* \since 6.3
*
* The color used to draw the gridlines of the surface wireframe.
@@ -405,22 +379,22 @@ QString QSurface3DSeries::textureFile() const
}
/*!
- * \property QSurface3DSeries::wireFrameColor
+ * \property QSurface3DSeries::wireframeColor
* \since 6.3
*
* \brief The color for the surface wireframe.
*/
-void QSurface3DSeries::setWireFrameColor(const QColor &color)
+void QSurface3DSeries::setWireframeColor(const QColor &color)
{
- if (dptr()->m_wireFrameColor != color) {
- dptr()->setWireFrameColor(color);
- emit wireFrameColorChanged(color);
+ if (dptr()->m_wireframeColor != color) {
+ dptr()->setWireframeColor(color);
+ emit wireframeColorChanged(color);
}
}
-QColor QSurface3DSeries::wireFrameColor() const
+QColor QSurface3DSeries::wireframeColor() const
{
- return dptrc()->m_wireFrameColor;
+ return dptrc()->m_wireframeColor;
}
/*!
* \internal
@@ -445,7 +419,7 @@ QSurface3DSeriesPrivate::QSurface3DSeriesPrivate(QSurface3DSeries *q)
m_selectedPoint(Surface3DController::invalidSelectionPosition()),
m_flatShadingEnabled(true),
m_drawMode(QSurface3DSeries::DrawSurfaceAndWireframe),
- m_wireFrameColor(Qt::black)
+ m_wireframeColor(Qt::black)
{
m_itemLabelFormat = QStringLiteral("@xLabel, @yLabel, @zLabel");
m_mesh = QAbstract3DSeries::MeshSphere;
@@ -578,9 +552,9 @@ void QSurface3DSeriesPrivate::setTexture(const QImage &texture)
static_cast<Surface3DController *>(m_controller)->updateSurfaceTexture(qptr());
}
-void QSurface3DSeriesPrivate::setWireFrameColor(const QColor &color)
+void QSurface3DSeriesPrivate::setWireframeColor(const QColor &color)
{
- m_wireFrameColor = color;
+ m_wireframeColor = color;
if (m_controller)
m_controller->markSeriesVisualsDirty();
}
diff --git a/src/datavisualization/data/qsurface3dseries.h b/src/datavisualization/data/qsurface3dseries.h
index 508cbba0..60804e8f 100644
--- a/src/datavisualization/data/qsurface3dseries.h
+++ b/src/datavisualization/data/qsurface3dseries.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QSURFACE3DSERIES_H
#define QSURFACE3DSERIES_H
@@ -48,7 +22,7 @@ class Q_DATAVISUALIZATION_EXPORT QSurface3DSeries : public QAbstract3DSeries
Q_PROPERTY(DrawFlags drawMode READ drawMode WRITE setDrawMode NOTIFY drawModeChanged)
Q_PROPERTY(QImage texture READ texture WRITE setTexture NOTIFY textureChanged)
Q_PROPERTY(QString textureFile READ textureFile WRITE setTextureFile NOTIFY textureFileChanged)
- Q_PROPERTY(QColor wireFrameColor READ wireFrameColor WRITE setWireFrameColor NOTIFY wireFrameColorChanged REVISION(6, 3))
+ Q_PROPERTY(QColor wireframeColor READ wireframeColor WRITE setWireframeColor NOTIFY wireframeColorChanged REVISION(6, 3))
public:
enum DrawFlag {
@@ -56,6 +30,7 @@ public:
DrawSurface = 2,
DrawSurfaceAndWireframe = DrawWireframe | DrawSurface
};
+ Q_ENUM(DrawFlag)
Q_DECLARE_FLAGS(DrawFlags, DrawFlag)
explicit QSurface3DSeries(QObject *parent = nullptr);
@@ -82,8 +57,8 @@ public:
void setTextureFile(const QString &filename);
QString textureFile() const;
- void setWireFrameColor(const QColor &color);
- QColor wireFrameColor() const;
+ void setWireframeColor(const QColor &color);
+ QColor wireframeColor() const;
Q_SIGNALS:
void dataProxyChanged(QSurfaceDataProxy *proxy);
@@ -93,7 +68,7 @@ Q_SIGNALS:
void drawModeChanged(QSurface3DSeries::DrawFlags mode);
void textureChanged(const QImage &image);
void textureFileChanged(const QString &filename);
- Q_REVISION(6, 3) void wireFrameColorChanged(const QColor &color);
+ Q_REVISION(6, 3) void wireframeColorChanged(const QColor &color);
protected:
explicit QSurface3DSeries(QSurface3DSeriesPrivate *d, QObject *parent = nullptr);
@@ -106,6 +81,8 @@ private:
friend class Surface3DController;
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(QSurface3DSeries::DrawFlags)
+
QT_END_NAMESPACE
#endif
diff --git a/src/datavisualization/data/qsurface3dseries_p.h b/src/datavisualization/data/qsurface3dseries_p.h
index 3b35cd22..56008f49 100644
--- a/src/datavisualization/data/qsurface3dseries_p.h
+++ b/src/datavisualization/data/qsurface3dseries_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -60,7 +34,7 @@ public:
void setFlatShadingEnabled(bool enabled);
void setDrawMode(QSurface3DSeries::DrawFlags mode);
void setTexture(const QImage &texture);
- void setWireFrameColor(const QColor &color);
+ void setWireframeColor(const QColor &color);
private:
QSurface3DSeries *qptr();
@@ -70,7 +44,7 @@ private:
QSurface3DSeries::DrawFlags m_drawMode;
QImage m_texture;
QString m_textureFile;
- QColor m_wireFrameColor;
+ QColor m_wireframeColor;
private:
friend class QSurface3DSeries;
diff --git a/src/datavisualization/data/qsurfacedataitem.cpp b/src/datavisualization/data/qsurfacedataitem.cpp
index b35713f7..5d977c0f 100644
--- a/src/datavisualization/data/qsurfacedataitem.cpp
+++ b/src/datavisualization/data/qsurfacedataitem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qsurfacedataitem_p.h"
diff --git a/src/datavisualization/data/qsurfacedataitem.h b/src/datavisualization/data/qsurfacedataitem.h
index 6670bc20..fce196e7 100644
--- a/src/datavisualization/data/qsurfacedataitem.h
+++ b/src/datavisualization/data/qsurfacedataitem.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QSURFACEDATAITEM_H
#define QSURFACEDATAITEM_H
diff --git a/src/datavisualization/data/qsurfacedataitem_p.h b/src/datavisualization/data/qsurfacedataitem_p.h
index 6a738f33..85b42513 100644
--- a/src/datavisualization/data/qsurfacedataitem_p.h
+++ b/src/datavisualization/data/qsurfacedataitem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/qsurfacedataproxy.cpp b/src/datavisualization/data/qsurfacedataproxy.cpp
index c9c6425d..afb91c3f 100644
--- a/src/datavisualization/data/qsurfacedataproxy.cpp
+++ b/src/datavisualization/data/qsurfacedataproxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qsurfacedataproxy_p.h"
#include "qsurface3dseries_p.h"
diff --git a/src/datavisualization/data/qsurfacedataproxy.h b/src/datavisualization/data/qsurfacedataproxy.h
index 769b1fe8..ece1cd61 100644
--- a/src/datavisualization/data/qsurfacedataproxy.h
+++ b/src/datavisualization/data/qsurfacedataproxy.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QSURFACEDATAPROXY_H
#define QSURFACEDATAPROXY_H
diff --git a/src/datavisualization/data/qsurfacedataproxy_p.h b/src/datavisualization/data/qsurfacedataproxy_p.h
index 2e772508..a17d8eb5 100644
--- a/src/datavisualization/data/qsurfacedataproxy_p.h
+++ b/src/datavisualization/data/qsurfacedataproxy_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/scatteritemmodelhandler.cpp b/src/datavisualization/data/scatteritemmodelhandler.cpp
index 4c51e04a..8aa4ba7d 100644
--- a/src/datavisualization/data/scatteritemmodelhandler.cpp
+++ b/src/datavisualization/data/scatteritemmodelhandler.cpp
@@ -1,38 +1,10 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "scatteritemmodelhandler_p.h"
QT_BEGIN_NAMESPACE
-static const int noRoleIndex = -1;
-
ScatterItemModelHandler::ScatterItemModelHandler(QItemModelScatterDataProxy *proxy, QObject *parent)
: AbstractItemModelHandler(parent),
m_proxy(proxy),
diff --git a/src/datavisualization/data/scatteritemmodelhandler_p.h b/src/datavisualization/data/scatteritemmodelhandler_p.h
index e1a0b77b..7eb084c2 100644
--- a/src/datavisualization/data/scatteritemmodelhandler_p.h
+++ b/src/datavisualization/data/scatteritemmodelhandler_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/scatterrenderitem.cpp b/src/datavisualization/data/scatterrenderitem.cpp
index 6fea125b..b8c8a4d5 100644
--- a/src/datavisualization/data/scatterrenderitem.cpp
+++ b/src/datavisualization/data/scatterrenderitem.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "scatterrenderitem_p.h"
diff --git a/src/datavisualization/data/scatterrenderitem_p.h b/src/datavisualization/data/scatterrenderitem_p.h
index 5810c8ba..8eb1c766 100644
--- a/src/datavisualization/data/scatterrenderitem_p.h
+++ b/src/datavisualization/data/scatterrenderitem_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/data/surfaceitemmodelhandler.cpp b/src/datavisualization/data/surfaceitemmodelhandler.cpp
index 271fa299..bdec0308 100644
--- a/src/datavisualization/data/surfaceitemmodelhandler.cpp
+++ b/src/datavisualization/data/surfaceitemmodelhandler.cpp
@@ -1,38 +1,10 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "surfaceitemmodelhandler_p.h"
QT_BEGIN_NAMESPACE
-static const int noRoleIndex = -1;
-
SurfaceItemModelHandler::SurfaceItemModelHandler(QItemModelSurfaceDataProxy *proxy, QObject *parent)
: AbstractItemModelHandler(parent),
m_proxy(proxy),
diff --git a/src/datavisualization/data/surfaceitemmodelhandler_p.h b/src/datavisualization/data/surfaceitemmodelhandler_p.h
index 68ec1994..fc3178b9 100644
--- a/src/datavisualization/data/surfaceitemmodelhandler_p.h
+++ b/src/datavisualization/data/surfaceitemmodelhandler_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/doc/qtdatavis3d.qdocconf b/src/datavisualization/doc/qtdatavis3d.qdocconf
index cbbcee61..952cac3e 100644
--- a/src/datavisualization/doc/qtdatavis3d.qdocconf
+++ b/src/datavisualization/doc/qtdatavis3d.qdocconf
@@ -5,6 +5,7 @@ project = QtDataVis3D
description = Qt Data Visualization Reference Documentation
version = $QT_VERSION
buildversion = Qt Data Visualization | Commercial or GPLv3
+moduleheader = QtDataVisualization
examplesinstallpath = datavisualization
exampledirs += ../../../examples/datavisualization \
@@ -17,34 +18,32 @@ imagedirs += ../images \
depends = qtcore qtgui qtqml qtquick qtdoc qtcmake qtwidgets
-qhp.projects = QtDataVisualization
-
-qhp.QtDataVisualization.file = qtdatavis3d.qhp
-qhp.QtDataVisualization.namespace = org.qt-project.qtdatavisualization.$QT_VERSION_TAG
-qhp.QtDataVisualization.virtualFolder = qtdatavisualization
-qhp.QtDataVisualization.indexTitle = Qt Data Visualization
-qhp.QtDataVisualization.indexRoot =
-
-qhp.QtDataVisualization.subprojects = gettingstarted examples classes types
-qhp.QtDataVisualization.subprojects.gettingstarted.title = Getting Started
-qhp.QtDataVisualization.subprojects.gettingstarted.indexTitle = Qt Data Visualization Getting Started
-qhp.QtDataVisualization.subprojects.gettingstarted.selectors = doc:page
-qhp.QtDataVisualization.subprojects.gettingstarted.sortPages = true
-qhp.QtDataVisualization.subprojects.examples.title = Examples
-qhp.QtDataVisualization.subprojects.examples.indexTitle = Qt Data Visualization Examples
-qhp.QtDataVisualization.subprojects.examples.selectors = doc:example
-qhp.QtDataVisualization.subprojects.examples.sortPages = true
-qhp.QtDataVisualization.subprojects.classes.title = C++ Classes
-qhp.QtDataVisualization.subprojects.classes.indexTitle = Qt Data Visualization C++ Classes
-qhp.QtDataVisualization.subprojects.classes.selectors = class
-qhp.QtDataVisualization.subprojects.classes.sortPages = true
-qhp.QtDataVisualization.subprojects.types.title = QML Types
-qhp.QtDataVisualization.subprojects.types.indexTitle = Qt Data Visualization QML Types
-qhp.QtDataVisualization.subprojects.types.selectors = qmlclass
-qhp.QtDataVisualization.subprojects.types.sortPages = true
+qhp.projects = QtDataVis3D
+
+qhp.QtDataVis3D.file = qtdatavis3d.qhp
+qhp.QtDataVis3D.namespace = org.qt-project.qtdatavisualization.$QT_VERSION_TAG
+qhp.QtDataVis3D.virtualFolder = qtdatavisualization
+qhp.QtDataVis3D.indexTitle = Qt Data Visualization
+qhp.QtDataVis3D.indexRoot =
+
+qhp.QtDataVis3D.subprojects = gettingstarted examples classes types
+qhp.QtDataVis3D.subprojects.gettingstarted.title = Getting Started
+qhp.QtDataVis3D.subprojects.gettingstarted.indexTitle = Qt Data Visualization Getting Started
+qhp.QtDataVis3D.subprojects.gettingstarted.selectors = doc:page
+qhp.QtDataVis3D.subprojects.gettingstarted.sortPages = true
+qhp.QtDataVis3D.subprojects.examples.title = Examples
+qhp.QtDataVis3D.subprojects.examples.indexTitle = Qt Data Visualization Examples
+qhp.QtDataVis3D.subprojects.examples.selectors = doc:example
+qhp.QtDataVis3D.subprojects.examples.sortPages = true
+qhp.QtDataVis3D.subprojects.classes.title = C++ Classes
+qhp.QtDataVis3D.subprojects.classes.indexTitle = Qt Data Visualization C++ Classes
+qhp.QtDataVis3D.subprojects.classes.selectors = class
+qhp.QtDataVis3D.subprojects.classes.sortPages = true
+qhp.QtDataVis3D.subprojects.types.title = QML Types
+qhp.QtDataVis3D.subprojects.types.indexTitle = Qt Data Visualization QML Types
+qhp.QtDataVis3D.subprojects.types.selectors = qmlclass
+qhp.QtDataVis3D.subprojects.types.sortPages = true
navigation.landingpage = Qt Data Visualization
navigation.cppclassespage = Qt Data Visualization C++ Classes
navigation.qmltypespage = Qt Data Visualization QML Types
-
-manifestmeta.highlighted.names = "QtDataVisualization/Textured Surface Example"
diff --git a/src/datavisualization/doc/snippets/doc_src_q3dbars_construction.cpp b/src/datavisualization/doc/snippets/doc_src_q3dbars_construction.cpp
index 53c3f515..2f10a988 100644
--- a/src/datavisualization/doc/snippets/doc_src_q3dbars_construction.cpp
+++ b/src/datavisualization/doc/snippets/doc_src_q3dbars_construction.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
//! [3]
#include <QtDataVisualization>
diff --git a/src/datavisualization/doc/snippets/doc_src_q3dscatter_construction.cpp b/src/datavisualization/doc/snippets/doc_src_q3dscatter_construction.cpp
index 975b0d4e..5bf508f3 100644
--- a/src/datavisualization/doc/snippets/doc_src_q3dscatter_construction.cpp
+++ b/src/datavisualization/doc/snippets/doc_src_q3dscatter_construction.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
//! [3]
#include <QtDataVisualization>
diff --git a/src/datavisualization/doc/snippets/doc_src_q3dsurface_construction.cpp b/src/datavisualization/doc/snippets/doc_src_q3dsurface_construction.cpp
index 94fde08f..3946ede6 100644
--- a/src/datavisualization/doc/snippets/doc_src_q3dsurface_construction.cpp
+++ b/src/datavisualization/doc/snippets/doc_src_q3dsurface_construction.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
//! [5]
#include <QtDataVisualization>
diff --git a/src/datavisualization/doc/snippets/doc_src_q3dtheme.cpp b/src/datavisualization/doc/snippets/doc_src_q3dtheme.cpp
index ed798ae4..a192976d 100644
--- a/src/datavisualization/doc/snippets/doc_src_q3dtheme.cpp
+++ b/src/datavisualization/doc/snippets/doc_src_q3dtheme.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include <QtDataVisualization/Q3DBars>
#include <QtDataVisualization/Q3DTheme>
diff --git a/src/datavisualization/doc/snippets/doc_src_qmldatavisualization.cpp b/src/datavisualization/doc/snippets/doc_src_qmldatavisualization.cpp
index c02c89f4..488d3a6f 100644
--- a/src/datavisualization/doc/snippets/doc_src_qmldatavisualization.cpp
+++ b/src/datavisualization/doc/snippets/doc_src_qmldatavisualization.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
//! [0]
import QtDataVisualization 1.2
diff --git a/src/datavisualization/doc/snippets/doc_src_qtdatavisualization.cpp b/src/datavisualization/doc/snippets/doc_src_qtdatavisualization.cpp
index 7d41cac4..fa4e5178 100644
--- a/src/datavisualization/doc/snippets/doc_src_qtdatavisualization.cpp
+++ b/src/datavisualization/doc/snippets/doc_src_qtdatavisualization.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
//! [0]
#include <QtDataVisualization>
diff --git a/src/datavisualization/doc/snippets/doc_src_qtdatavisualization.pro b/src/datavisualization/doc/snippets/doc_src_qtdatavisualization.pro
index fea49c20..00652a42 100644
--- a/src/datavisualization/doc/snippets/doc_src_qtdatavisualization.pro
+++ b/src/datavisualization/doc/snippets/doc_src_qtdatavisualization.pro
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#! [0]
QT += datavisualization
diff --git a/src/datavisualization/doc/src/qtdatavisualization-index.qdoc b/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
index b433f262..5896b094 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\title Qt Data Visualization
@@ -31,47 +7,39 @@
\brief Provides functionality for 3D visualization.
- Qt Data Visualization module provides a way to visualize data in 3D as bar,
- scatter, and surface graphs. It is especially useful for visualizing depth
- maps and large quantities of rapidly changing data, such as data received
- from multiple sensors. The look and feel of graphs can be customized
- by using themes or by adding custom items and labels to them.
+ The Qt Data Visualization module enables you to visualize data in 3D as
+ bar, scatter, and surface graphs. It's especially useful for visualizing
+ depth maps and large quantities of rapidly changing data, such as data
+ received from multiple sensors. The look and feel of graphs can be
+ customized by using themes or by adding custom items and labels.
- Qt Data Visualization is built on Qt 5 and OpenGL to take advantage of
- hardware acceleration and Qt Quick 2.
+ Qt Data Visualization is built on Qt 6 and OpenGL to take advantage of
+ hardware acceleration and Qt Quick.
- \section1 Getting Started
+ \section1 Using the Module
- To import Qt Data Visualization QML types, add the following import statement to your \c .qml
- file:
+ \section2 QML API
- \qml \QtMinorVersion
- import QtDataVisualization 1.\1
- \endqml
+ \include {module-use.qdocinc} {using the qml api} {QtDataVisualization}
- If you intend to use Qt Data Visualization C++ classes in your application, use the
- following include:
+ \section2 C++ API
- \snippet doc_src_qtdatavisualization.cpp 0
+ \include {module-use.qdocinc} {using the c++ api}
- \note If you are only using a few classes from this module, we recommend including only those
- specific classes instead of the whole module.
+ \section3 Building with CMake
- To link against the Qt Data Visualization module, add this line to your \c qmake project file:
+ \include {module-use.qdocinc} {building with cmake} {DataVisualization}
- \snippet doc_src_qtdatavisualization.pro 0
+ \section3 Building with qmake
- \section1 Licenses
+ \include {module-use.qdocinc} {building_with_qmake} {datavisualization}
- Qt Data Visualization is available under commercial licenses from \l{The Qt Company}.
- In addition, it is available under the \l{GNU General Public License, version 3}.
- See \l{Qt Licensing} for further details.
-
- \section1 Articles
+ \section1 Articles and Guides
\list
\li \l{Qt Data Visualization Overview}{Overview}
\li \l{Qt Data Visualization Data Handling}{Data Handling}
- \li \l{Qt Data Visualization Interacting with Data}{Interacting with Data}
+ \li \l{Qt Data Visualization Interacting with Data}{Interacting with
+ Data}
\li \l{Qt Data Visualization Known Issues}{Known Issues}
\endlist
@@ -85,4 +53,9 @@
\li \l{Qt Data Visualization C++ Classes}
\li \l{Qt Data Visualization QML Types}
\endlist
+
+ \section1 Licenses and Attributions
+ Qt Data Visualization is available under commercial licenses from \l{The Qt
+ Company}. In addition, it is available under the \l{GNU General Public
+ License, version 3}. See \l{Qt Licensing} for further details.
*/
diff --git a/src/datavisualization/doc/src/qtdatavisualization-overview.qdoc b/src/datavisualization/doc/src/qtdatavisualization-overview.qdoc
index f62a1d90..0bf83ec4 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-overview.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-overview.qdoc
@@ -1,34 +1,11 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\title Qt Data Visualization Overview
\page qtdatavisualization-overview.html
\brief An overview of the Qt Data Visualization module.
+ \ingroup explanation
The Qt Data Visualization module provides a way to develop rapidly
responding, complex, and dynamic 3D visualization for analytical demanding
@@ -79,8 +56,8 @@
\image q3dbars-minimal.png
- For more information, see \l{How to construct a minimal Q3DBars graph},
- \l {Bars Example}, and \l {Qt Quick 2 Bars Example}.
+ For more information, see \l{How to construct a minimal Q3DBars graph}, and
+ \l {Simple Bar Graph} examples.
\section2 3D Scatter Graphs
@@ -92,8 +69,8 @@
\image q3dscatter-minimal.png
- For more information, see \l{How to construct a minimal Q3DScatter graph},
- \l{Scatter Example}, and \l{Qt Quick 2 Scatter Example}.
+ For more information, see \l{How to construct a minimal Q3DScatter graph}, and
+ \l{Simple Scatter Graph} examples.
\section2 3D Surface Graphs
@@ -105,9 +82,8 @@
\image q3dsurface-minimal.png
- For more information, see \l{How to construct a minimal Q3DSurface graph},
- \l{Surface Example}, \l{Textured Surface Example}, \l{Qt Quick 2 Surface
- Example}, and \l{Qt Quick 2 Surface Multiseries Example}.
+ For more information, see \l{How to construct a minimal Q3DSurface graph}, \l{Graph Gallery},
+ and \l{Surface Graph Gallery} examples.
\section1 Using OpenGL for Rendering Data
@@ -138,7 +114,7 @@
be partially transparent. Therefore, changing the rendering mode is a
question of performance versus quality.
- Qt Quick 2 uses a dedicated scenegraph for data rendering, and is therefore
+ Qt Quick uses a dedicated scenegraph for data rendering, and is therefore
the best choice for data visualization.
\section1 3D Axes
@@ -211,7 +187,7 @@
If a graph displays the data from several data series, some settings can be
specified separately for each series. For example, different gradients can
be specified for different layers of the graph to make it look more
- realistic. For an example, see \l{Qt Quick 2 Surface Multiseries Example}.
+ realistic. For an example, see \l{Surface Graph Gallery}.
\section1 Customizing 3D Scenes
@@ -223,7 +199,7 @@
position follows the camera automatically.
The camera can be customized by specifying its preset position, rotation,
- and zoom level. For an example, see \l{Qt Quick 2 Scatter Example}.
+ and zoom level. For an example, see \l{Simple Scatter Graph}.
\section1 Customizing Items
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc
index 9f9dd6e1..c2bb0cc5 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\qmltype AbstractGraph3D
@@ -308,7 +284,7 @@
* \c selectedElementChanged signal is emitted.
*
* The signal can be used for example for implementing customized input
- * handling, as demonstrated by the \l {Qt Quick 2 Axis Dragging Example}.
+ * handling, as demonstrated by the \l {Axis Handling} example.
*
* \sa selectedLabelIndex(), selectedAxis(), selectedCustomItemIndex(), selectedCustomItem(),
* Bars3D::selectedSeries, Scatter3D::selectedSeries, Scene3D::selectionQueryPosition,
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
index 437f2f6f..5116aa3a 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
* \qmltype Bars3D
@@ -33,7 +9,7 @@
* \ingroup datavisualization_qml
* \brief 3D bar graph.
*
- * This type enables developers to render bar graphs in 3D with Qt Quick 2.
+ * This type enables developers to render bar graphs in 3D with Qt Quick.
*
* You will need to import data visualization module to use this type:
*
@@ -43,7 +19,7 @@
*
* \snippet doc_src_qmldatavisualization.cpp 1
*
- * See \l{Qt Quick 2 Bars Example} for more thorough usage example.
+ * See \l{Simple Bar Graph} for more thorough usage example.
*
* \sa Bar3DSeries, ItemModelBarDataProxy, Scatter3D, Surface3D, {Qt Data Visualization C++ Classes}
*/
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-color.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-color.qdoc
index ee23ae20..cb8b70d2 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-color.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-color.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\qmltype ThemeColor
@@ -41,4 +17,6 @@
The color property describes the color of this ThemeColor.
The default color is black.
+
+ \note Transparency is not supported and will result in undefined behavior.
*/
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-colorgradient.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-colorgradient.qdoc
index 57a4f983..36277944 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-colorgradient.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-colorgradient.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\qmltype ColorGradientStop
@@ -54,6 +30,8 @@
The default color is black.
+ \note Transparency in a gradient is not supported and will result in undefined behavior.
+
\sa ColorGradient
*/
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc
index 8a5ce9d8..8e43ea79 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\qmltype Scatter3D
@@ -33,7 +9,7 @@
\ingroup datavisualization_qml
\brief 3D scatter graph.
- This type enables developers to render scatter graphs in 3D with Qt Quick 2.
+ This type enables developers to render scatter graphs in 3D with Qt Quick.
You will need to import data visualization module to use this type:
@@ -43,7 +19,7 @@
\snippet doc_src_qmldatavisualization.cpp 2
- See \l{Qt Quick 2 Scatter Example} for more thorough usage example.
+ See \l{Simple Scatter Graph} for more thorough usage example.
\sa Scatter3DSeries, ScatterDataProxy, Bars3D, Surface3D, {Qt Data Visualization C++ Classes}
*/
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
index c3daca2a..b8f47fd3 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\qmltype Surface3D
@@ -33,7 +9,7 @@
\ingroup datavisualization_qml
\brief Describes the usage of the 3D surface graph.
- This type enables developers to render surface plots in 3D with Qt Quick 2.
+ This type enables developers to render surface plots in 3D with Qt Quick.
You will need to import the data visualization module to use this type:
@@ -43,7 +19,7 @@
\snippet doc_src_qmldatavisualization.cpp 3
- See \l{Qt Quick 2 Surface Example} for more thorough usage example.
+ See \l{Surface Graph Gallery} for more thorough usage example.
\sa Surface3DSeries, ItemModelSurfaceDataProxy, Bars3D, Scatter3D, {Qt Data Visualization C++ Classes}
*/
diff --git a/src/datavisualization/doc/src/qtdatavisualization.qdoc b/src/datavisualization/doc/src/qtdatavisualization.qdoc
index 33448065..5b91c2da 100644
--- a/src/datavisualization/doc/src/qtdatavisualization.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization.qdoc
@@ -1,34 +1,12 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\module QtDataVisualization
\title Qt Data Visualization C++ Classes
\ingroup modules
+ \qtcmakepackage DataVisualization
+ \qtvariable datavisualization
\brief C++ classes for the Qt Data Visualization API.
@@ -49,7 +27,6 @@
/*!
\group datavisualization_examples
- \ingroup all-examples
\title Qt Data Visualization Examples
\brief Examples for the Qt Data Visualization.
@@ -59,10 +36,12 @@
\section1 Examples
\annotatedlist qtdatavisualization_examples
+ The following examples show how to use Qt Quick to visualize data:
+ \annotatedlist qtdatavisualization_qmlexamples
*/
/*!
- \page qtdatavisualization_data_handling.html
+ \page qtdatavisualization-data-handling.html
\title Qt Data Visualization Data Handling
\section1 Series
@@ -133,9 +112,9 @@
QHeightMapSurfaceDataProxy is a specialized proxy for generating a surface graph from a
heightmap image. See the QHeightMapSurfaceDataProxy documentation for more information.
- The \l{Custom Proxy Example}{Custom Proxy} example shows how a custom proxy can be created. It
- defines a custom data set based on variant lists and an extension of the basic proxy to resolve
- that data with an associated mapper.
+ The \l{Graph Gallery} example shows how a custom proxy can be created, under the
+ \uicontrol {Bar Graph} tab. It defines a custom data set based on variant lists and an
+ extension of the basic proxy to resolve that data with an associated mapper.
\section1 Dealing with Real-time Data
@@ -165,7 +144,7 @@
*/
/*!
- \page qtdatavisualization_interacting_with_data.html
+ \page qtdatavisualization-interacting-with-data.html
\title Qt Data Visualization Interacting with Data
\section1 Interacting with Data
@@ -183,9 +162,8 @@
the default touch controls, see QTouch3DInputHandler. The default handlers
must be disabled when using customized input handlers.
- The \l{Custom Input Example} illustrates how to use a custom input handler
- to select items upon mouseover instead of mouse click. The information
- below the mouse cursor is displayed as a popup.
+ The \l{Graph Gallery} example, under \uicontrol {Scatter Graph} tab, illustrates how to use
+ a custom input handler to drag an axis label to move the visible part of the data.
In addition to perspective projection, orthographic projection can be used
to create 2D graphs by replacing the default input handler with one that
@@ -212,7 +190,7 @@
*/
/*!
- \page qtdatavisualization_known_issues.html
+ \page qtdatavisualization-known-issues.html
\title Qt Data Visualization Known Issues
\list
@@ -222,7 +200,7 @@
application main. It can be defined by adding \c {qputenv("QSG_RHI_BACKEND", "opengl");}
in the beginning of your main function.
\li Some platforms like Android and WinRT cannot handle multiple native windows properly,
- so only the Qt Quick 2 graphs are available in practice for those platforms.
+ so only the Qt Quick graphs are available in practice for those platforms.
\li Surfaces with non-straight rows and columns do not always render properly.
\li Q3DLight class (and Light3D QML item) are currently not usable for anything.
\li Changing most of Q3DScene properties affecting subviewports currently has no effect.
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp
index 22d39e4a..f7d7f206 100644
--- a/src/datavisualization/engine/abstract3dcontroller.cpp
+++ b/src/datavisualization/engine/abstract3dcontroller.cpp
@@ -1,33 +1,9 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "abstractdeclarative_p.h"
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
+
+#include "abstractdeclarativeinterface_p.h"
#include "abstract3dcontroller_p.h"
#include "qabstract3daxis_p.h"
#include "qvalue3daxis_p.h"
@@ -1022,7 +998,7 @@ int Abstract3DController::addCustomItem(QCustom3DItem *item)
item->d_ptr->resetDirtyBits();
m_isCustomDataDirty = true;
emitNeedRender();
- return m_customItems.count() - 1;
+ return m_customItems.size() - 1;
}
void Abstract3DController::deleteCustomItems()
@@ -1549,7 +1525,7 @@ int Abstract3DController::selectedLabelIndex() const
{
int index = m_selectedLabelIndex;
QAbstract3DAxis *axis = selectedAxis();
- if (axis && axis->labels().count() <= index)
+ if (axis && axis->labels().size() <= index)
index = -1;
return index;
}
@@ -1579,7 +1555,7 @@ QAbstract3DAxis *Abstract3DController::selectedAxis() const
int Abstract3DController::selectedCustomItemIndex() const
{
int index = m_selectedCustomItemIndex;
- if (m_customItems.count() <= index)
+ if (m_customItems.size() <= index)
index = -1;
return index;
}
@@ -1618,7 +1594,7 @@ bool Abstract3DController::isOrthoProjection() const
void Abstract3DController::setAspectRatio(qreal ratio)
{
- if (m_aspectRatio != ratio) {
+ if (m_aspectRatio != ratio && ratio > 0) {
m_aspectRatio = ratio;
m_changeTracker.aspectRatioChanged = true;
emit aspectRatioChanged(m_aspectRatio);
@@ -1634,7 +1610,7 @@ qreal Abstract3DController::aspectRatio()
void Abstract3DController::setHorizontalAspectRatio(qreal ratio)
{
- if (m_horizontalAspectRatio != ratio) {
+ if (m_horizontalAspectRatio != ratio && ratio > 0) {
m_horizontalAspectRatio = ratio;
m_changeTracker.horizontalAspectRatioChanged = true;
emit horizontalAspectRatioChanged(m_horizontalAspectRatio);
@@ -1665,7 +1641,7 @@ bool Abstract3DController::reflection() const
void Abstract3DController::setReflectivity(qreal reflectivity)
{
- if (m_reflectivity != reflectivity) {
+ if (m_reflectivity != reflectivity && reflectivity > 0) {
m_reflectivity = reflectivity;
m_changeTracker.reflectivityChanged = true;
emit reflectivityChanged(m_reflectivity);
diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h
index 30514fb2..5081d37f 100644
--- a/src/datavisualization/engine/abstract3dcontroller_p.h
+++ b/src/datavisualization/engine/abstract3dcontroller_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -57,6 +31,7 @@ QT_FORWARD_DECLARE_CLASS(QOpenGLFramebufferObject)
QT_BEGIN_NAMESPACE
+class AbstractDeclarativeInterface;
class AbstractDeclarative;
class Abstract3DRenderer;
class QAbstract3DSeries;
@@ -227,7 +202,7 @@ protected:
qreal m_margin;
QMutex m_renderMutex;
- AbstractDeclarative *m_qml = nullptr;
+ AbstractDeclarativeInterface *m_qml = nullptr;
explicit Abstract3DController(QRect initialViewport, Q3DScene *scene, QObject *parent = 0);
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 9b8bc13a..a39a6079 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "abstract3drenderer_p.h"
#include "texturehelper_p.h"
@@ -749,8 +725,10 @@ void Abstract3DRenderer::updateCustomData(const QList<QCustom3DItem *> &customIt
CustomRenderItem *renderItem = m_customRenderCache.value(item);
if (!renderItem)
renderItem = addCustomItem(item);
- renderItem->setValid(true);
- renderItem->setIndex(i); // always update index, as it must match the custom item index
+ if (renderItem) {
+ renderItem->setValid(true);
+ renderItem->setIndex(i); // always update index, as it must match the custom item index
+ }
}
// Check render item cache and remove items that are not in customItems list anymore
@@ -1153,7 +1131,10 @@ CustomRenderItem *Abstract3DRenderer::addCustomItem(QCustom3DItem *item)
CustomRenderItem *newItem = new CustomRenderItem();
newItem->setRenderer(this);
newItem->setItemPointer(item); // Store pointer for render item updates
- newItem->setMesh(item->meshFile());
+ if (!newItem->setMesh(item->meshFile())) {
+ delete newItem;
+ return nullptr;
+ }
newItem->setOrigPosition(item->position());
newItem->setOrigScaling(item->scaling());
newItem->setScalingAbsolute(item->isScalingAbsolute());
@@ -1466,7 +1447,7 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
bool volumeDetected = false;
int loopCount = 0;
while (loopCount < 2) {
- for (QCustom3DItem *customItem : qAsConst(m_customItemDrawOrder)) {
+ for (QCustom3DItem *customItem : std::as_const(m_customItemDrawOrder)) {
CustomRenderItem *item = m_customRenderCache.value(customItem);
// Check that the render item is visible, and skip drawing if not
// Also check if reflected item is on the "wrong" side, and skip drawing if it is
@@ -1657,7 +1638,7 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
m_drawer->drawObject(shader, item->mesh(), item->texture());
}
}
- } else if (RenderingSelection == state) {
+ } else if (RenderingSelection == state && !volumeDetected) {
// Selection render
shader->setUniformValue(shader->MVP(), MVPMatrix);
QVector4D itemColor = indexToSelectionColor(item->index());
diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h
index 160225be..560e6d2e 100644
--- a/src/datavisualization/engine/abstract3drenderer_p.h
+++ b/src/datavisualization/engine/abstract3drenderer_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -50,6 +24,8 @@
#include "seriesrendercache_p.h"
#include "customrenderitem_p.h"
+#include <QtCore/qpointer.h>
+
QT_FORWARD_DECLARE_CLASS(QOffscreenSurface)
QT_BEGIN_NAMESPACE
diff --git a/src/datavisualization/engine/abstractdeclarativeinterface.cpp b/src/datavisualization/engine/abstractdeclarativeinterface.cpp
new file mode 100644
index 00000000..8a8b80fd
--- /dev/null
+++ b/src/datavisualization/engine/abstractdeclarativeinterface.cpp
@@ -0,0 +1,11 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include <QtDataVisualization/private/abstractdeclarativeinterface_p.h>
+
+QT_BEGIN_NAMESPACE
+
+AbstractDeclarativeInterface::~AbstractDeclarativeInterface()
+ = default;
+
+QT_END_NAMESPACE
diff --git a/src/datavisualization/engine/abstractdeclarativeinterface_p.h b/src/datavisualization/engine/abstractdeclarativeinterface_p.h
new file mode 100644
index 00000000..8ea01bb1
--- /dev/null
+++ b/src/datavisualization/engine/abstractdeclarativeinterface_p.h
@@ -0,0 +1,31 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#ifndef ABSTRACTDECLARATIVEINTERFACE_P_H
+#define ABSTRACTDECLARATIVEINTERFACE_P_H
+
+#include <QtDataVisualization/qdatavisualizationglobal.h>
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the QtDataVisualization API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+
+QT_BEGIN_NAMESPACE
+
+class Q_DATAVISUALIZATION_EXPORT AbstractDeclarativeInterface
+{
+protected:
+ ~AbstractDeclarativeInterface();
+public:
+ virtual bool isReady() const = 0;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/datavisualization/engine/axisrendercache.cpp b/src/datavisualization/engine/axisrendercache.cpp
index d6b0e24c..1218eec2 100644
--- a/src/datavisualization/engine/axisrendercache.cpp
+++ b/src/datavisualization/engine/axisrendercache.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "axisrendercache_p.h"
diff --git a/src/datavisualization/engine/axisrendercache_p.h b/src/datavisualization/engine/axisrendercache_p.h
index 076fbe56..a8913f1d 100644
--- a/src/datavisualization/engine/axisrendercache_p.h
+++ b/src/datavisualization/engine/axisrendercache_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp
index 74ea1076..a307f2f4 100644
--- a/src/datavisualization/engine/bars3dcontroller.cpp
+++ b/src/datavisualization/engine/bars3dcontroller.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "bars3dcontroller_p.h"
#include "bars3drenderer_p.h"
@@ -328,6 +304,11 @@ void Bars3DController::handleDataColumnLabelsChanged()
}
}
+void Bars3DController::handleRowColorsChanged()
+{
+ emitNeedRender();
+}
+
void Bars3DController::handleAxisAutoAdjustRangeChangedInOrientation(
QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust)
{
diff --git a/src/datavisualization/engine/bars3dcontroller_p.h b/src/datavisualization/engine/bars3dcontroller_p.h
index 818eea4f..a92db468 100644
--- a/src/datavisualization/engine/bars3dcontroller_p.h
+++ b/src/datavisualization/engine/bars3dcontroller_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -165,6 +139,7 @@ public Q_SLOTS:
void handleItemChanged(int rowIndex, int columnIndex);
void handleDataRowLabelsChanged();
void handleDataColumnLabelsChanged();
+ void handleRowColorsChanged();
Q_SIGNALS:
void primarySeriesChanged(QBar3DSeries *series);
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index 0c51d187..8d2d9cce 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "bars3drenderer_p.h"
#include "q3dcamera_p.h"
@@ -1628,10 +1604,17 @@ bool Bars3DRenderer::drawBars(BarRenderItem **selectedBar,
}
case Bars3DController::SelectionNone: {
// Current bar is not selected, nor on a row or column
- if (colorStyleIsUniform)
- barColor = baseColor;
- else
+ if (colorStyleIsUniform) {
+ QList<QColor> rowColors = cache->series()->rowColors();
+ if (rowColors.size() == 0) {
+ barColor = baseColor;
+ } else {
+ int rowColorIndex = row % rowColors.size();
+ barColor = Utils::vectorFromColor(rowColors[rowColorIndex]);
+ }
+ } else {
gradientTexture = cache->baseGradientTexture();
+ }
break;
}
}
diff --git a/src/datavisualization/engine/bars3drenderer_p.h b/src/datavisualization/engine/bars3drenderer_p.h
index 5e3c2459..d6c3c471 100644
--- a/src/datavisualization/engine/bars3drenderer_p.h
+++ b/src/datavisualization/engine/bars3drenderer_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/barseriesrendercache.cpp b/src/datavisualization/engine/barseriesrendercache.cpp
index 5935309c..da3655a9 100644
--- a/src/datavisualization/engine/barseriesrendercache.cpp
+++ b/src/datavisualization/engine/barseriesrendercache.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "barseriesrendercache_p.h"
diff --git a/src/datavisualization/engine/barseriesrendercache_p.h b/src/datavisualization/engine/barseriesrendercache_p.h
index c725bcfe..faf963eb 100644
--- a/src/datavisualization/engine/barseriesrendercache_p.h
+++ b/src/datavisualization/engine/barseriesrendercache_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/drawer.cpp b/src/datavisualization/engine/drawer.cpp
index 853e800b..63028fb4 100644
--- a/src/datavisualization/engine/drawer.cpp
+++ b/src/datavisualization/engine/drawer.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "drawer_p.h"
#include "shaderhelper_p.h"
@@ -44,8 +18,8 @@ class StaticLibInitializer
public:
StaticLibInitializer()
{
- Q_INIT_RESOURCE(shaders);
- Q_INIT_RESOURCE(meshes);
+ Q_INIT_RESOURCE(datavisualizationshaders);
+ Q_INIT_RESOURCE(datavisualizationmeshes);
}
};
StaticLibInitializer staticLibInitializer;
@@ -198,7 +172,7 @@ void Drawer::drawSelectionObject(ShaderHelper *shader, AbstractObjectHelper *obj
void Drawer::drawSurfaceGrid(ShaderHelper *shader, SurfaceObject *object)
{
// Get grid line color
- QVector4D lineColor = Utils::vectorFromColor(object->wireFrameColor());
+ QVector4D lineColor = Utils::vectorFromColor(object->wireframeColor());
shader->setUniformValue(shader->color(), lineColor);
// 1st attribute buffer : vertices
diff --git a/src/datavisualization/engine/drawer_p.h b/src/datavisualization/engine/drawer_p.h
index 425c0e24..54881d6d 100644
--- a/src/datavisualization/engine/drawer_p.h
+++ b/src/datavisualization/engine/drawer_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/meshes.qrc b/src/datavisualization/engine/meshes.qrc
deleted file mode 100644
index 5cca4c41..00000000
--- a/src/datavisualization/engine/meshes.qrc
+++ /dev/null
@@ -1,33 +0,0 @@
-<RCC>
- <qresource prefix="/defaultMeshes">
- <file alias="cone">meshes/coneFlat.obj</file>
- <file alias="coneSmooth">meshes/coneSmooth.obj</file>
- <file alias="pyramid">meshes/pyramidFlat.obj</file>
- <file alias="pyramidSmooth">meshes/pyramidSmooth.obj</file>
- <file alias="bar">meshes/cubeFlat.obj</file>
- <file alias="barSmooth">meshes/cubeSmooth.obj</file>
- <file alias="cylinder">meshes/cylinderFlat.obj</file>
- <file alias="cylinderSmooth">meshes/cylinderSmooth.obj</file>
- <file alias="background">meshes/background.obj</file>
- <file alias="plane">meshes/plane.obj</file>
- <file alias="sphere">meshes/sphere.obj</file>
- <file alias="sphereSmooth">meshes/sphereSmooth.obj</file>
- <file alias="bevelbar">meshes/barFlat.obj</file>
- <file alias="bevelbarSmooth">meshes/barSmooth.obj</file>
- <file alias="coneFull">meshes/coneFilledFlat.obj</file>
- <file alias="coneSmoothFull">meshes/coneFilledSmooth.obj</file>
- <file alias="cylinderFull">meshes/cylinderFilledFlat.obj</file>
- <file alias="cylinderSmoothFull">meshes/cylinderFilledSmooth.obj</file>
- <file alias="pyramidFull">meshes/pyramidFilledFlat.obj</file>
- <file alias="pyramidSmoothFull">meshes/pyramidFilledSmooth.obj</file>
- <file alias="bevelbarFull">meshes/barFilledFlat.obj</file>
- <file alias="bevelbarSmoothFull">meshes/barFilledSmooth.obj</file>
- <file alias="barFull">meshes/cubeFilledFlat.obj</file>
- <file alias="barSmoothFull">meshes/cubeFilledSmooth.obj</file>
- <file alias="backgroundNoFloor">meshes/backgroundNoFloor.obj</file>
- <file alias="minimal">meshes/minimalFlat.obj</file>
- <file alias="minimalSmooth">meshes/minimalSmooth.obj</file>
- <file alias="arrow">meshes/arrowFlat.obj</file>
- <file alias="arrowSmooth">meshes/arrowSmooth.obj</file>
- </qresource>
-</RCC>
diff --git a/src/datavisualization/engine/q3dbars.cpp b/src/datavisualization/engine/q3dbars.cpp
index 0d0597dc..a5204b24 100644
--- a/src/datavisualization/engine/q3dbars.cpp
+++ b/src/datavisualization/engine/q3dbars.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "q3dbars_p.h"
@@ -88,7 +62,7 @@ QT_BEGIN_NAMESPACE
*
* The scene can be rotated, zoomed into, and a bar can be selected to view its value,
* but no other interaction is included in this minimal code example. You can learn more by
- * familiarizing yourself with the examples provided, like the \l{Bars Example}.
+ * familiarizing yourself with the examples provided, like the \l{Bar Graph}.
*
* \sa Q3DScatter, Q3DSurface, {Qt Data Visualization C++ Classes}
*/
diff --git a/src/datavisualization/engine/q3dbars.h b/src/datavisualization/engine/q3dbars.h
index 125b21ed..75d9b15f 100644
--- a/src/datavisualization/engine/q3dbars.h
+++ b/src/datavisualization/engine/q3dbars.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DBARS_H
#define Q3DBARS_H
diff --git a/src/datavisualization/engine/q3dbars_p.h b/src/datavisualization/engine/q3dbars_p.h
index 08ac2803..cd2a2ac1 100644
--- a/src/datavisualization/engine/q3dbars_p.h
+++ b/src/datavisualization/engine/q3dbars_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/q3dcamera.cpp b/src/datavisualization/engine/q3dcamera.cpp
index 6a0d224e..69839fdc 100644
--- a/src/datavisualization/engine/q3dcamera.cpp
+++ b/src/datavisualization/engine/q3dcamera.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "q3dcamera_p.h"
#include "utils_p.h"
diff --git a/src/datavisualization/engine/q3dcamera.h b/src/datavisualization/engine/q3dcamera.h
index 234c926d..1c59bc13 100644
--- a/src/datavisualization/engine/q3dcamera.h
+++ b/src/datavisualization/engine/q3dcamera.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DCAMERA_H
#define Q3DCAMERA_H
diff --git a/src/datavisualization/engine/q3dcamera_p.h b/src/datavisualization/engine/q3dcamera_p.h
index 27685a43..dac62870 100644
--- a/src/datavisualization/engine/q3dcamera_p.h
+++ b/src/datavisualization/engine/q3dcamera_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/q3dlight.cpp b/src/datavisualization/engine/q3dlight.cpp
index 144f2a10..86afbe01 100644
--- a/src/datavisualization/engine/q3dlight.cpp
+++ b/src/datavisualization/engine/q3dlight.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "q3dlight_p.h"
diff --git a/src/datavisualization/engine/q3dlight.h b/src/datavisualization/engine/q3dlight.h
index aad430db..ceae12bf 100644
--- a/src/datavisualization/engine/q3dlight.h
+++ b/src/datavisualization/engine/q3dlight.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DLIGHT_H
#define Q3DLIGHT_H
diff --git a/src/datavisualization/engine/q3dlight_p.h b/src/datavisualization/engine/q3dlight_p.h
index 54802a35..6e1e7ff5 100644
--- a/src/datavisualization/engine/q3dlight_p.h
+++ b/src/datavisualization/engine/q3dlight_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/q3dobject.cpp b/src/datavisualization/engine/q3dobject.cpp
index 5e7b039a..c9e417dd 100644
--- a/src/datavisualization/engine/q3dobject.cpp
+++ b/src/datavisualization/engine/q3dobject.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "q3dobject_p.h"
#include "q3dscene_p.h"
diff --git a/src/datavisualization/engine/q3dobject.h b/src/datavisualization/engine/q3dobject.h
index cddfe089..875e1955 100644
--- a/src/datavisualization/engine/q3dobject.h
+++ b/src/datavisualization/engine/q3dobject.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DOBJECT_H
#define Q3DOBJECT_H
diff --git a/src/datavisualization/engine/q3dobject_p.h b/src/datavisualization/engine/q3dobject_p.h
index 4b25cb7d..9eeaaae8 100644
--- a/src/datavisualization/engine/q3dobject_p.h
+++ b/src/datavisualization/engine/q3dobject_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/q3dscatter.cpp b/src/datavisualization/engine/q3dscatter.cpp
index 7774c5d5..07c86110 100644
--- a/src/datavisualization/engine/q3dscatter.cpp
+++ b/src/datavisualization/engine/q3dscatter.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "q3dscatter.h"
#include "q3dscatter_p.h"
@@ -77,7 +53,7 @@ QT_BEGIN_NAMESPACE
* The scene can be rotated, zoomed into, and an item can be selected to view its position,
* but no other interaction is included in this minimal code example.
* You can learn more by familiarizing yourself with the examples provided, like
- * the \l{Scatter Example}.
+ * the \l{Scatter Graph}.
*
* \sa Q3DBars, Q3DSurface, {Qt Data Visualization C++ Classes}
*/
diff --git a/src/datavisualization/engine/q3dscatter.h b/src/datavisualization/engine/q3dscatter.h
index 19e5be40..5396471e 100644
--- a/src/datavisualization/engine/q3dscatter.h
+++ b/src/datavisualization/engine/q3dscatter.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DSCATTER_H
#define Q3DSCATTER_H
diff --git a/src/datavisualization/engine/q3dscatter_p.h b/src/datavisualization/engine/q3dscatter_p.h
index 5a534b08..b307a65b 100644
--- a/src/datavisualization/engine/q3dscatter_p.h
+++ b/src/datavisualization/engine/q3dscatter_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/q3dscene.cpp b/src/datavisualization/engine/q3dscene.cpp
index 1c1d4954..143983e7 100644
--- a/src/datavisualization/engine/q3dscene.cpp
+++ b/src/datavisualization/engine/q3dscene.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "q3dscene_p.h"
#include "q3dcamera_p.h"
diff --git a/src/datavisualization/engine/q3dscene.h b/src/datavisualization/engine/q3dscene.h
index d07d6a14..dd9e68c7 100644
--- a/src/datavisualization/engine/q3dscene.h
+++ b/src/datavisualization/engine/q3dscene.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DSCENE_H
#define Q3DSCENE_H
diff --git a/src/datavisualization/engine/q3dscene_p.h b/src/datavisualization/engine/q3dscene_p.h
index 47beeb93..687606cb 100644
--- a/src/datavisualization/engine/q3dscene_p.h
+++ b/src/datavisualization/engine/q3dscene_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/q3dsurface.cpp b/src/datavisualization/engine/q3dsurface.cpp
index b22ff446..2b456814 100644
--- a/src/datavisualization/engine/q3dsurface.cpp
+++ b/src/datavisualization/engine/q3dsurface.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "q3dsurface.h"
#include "q3dsurface_p.h"
@@ -91,7 +67,7 @@ QT_BEGIN_NAMESPACE
* The scene can be rotated, zoomed into, and a surface point can be selected to view its position,
* but no other interaction is included in this minimal code example.
* You can learn more by familiarizing yourself with the examples provided,
- * like the \l{Surface Example}.
+ * like the \l{Surface Graph}.
*
*
* \sa Q3DBars, Q3DScatter, {Qt Data Visualization C++ Classes}
diff --git a/src/datavisualization/engine/q3dsurface.h b/src/datavisualization/engine/q3dsurface.h
index a14e5636..c6f26972 100644
--- a/src/datavisualization/engine/q3dsurface.h
+++ b/src/datavisualization/engine/q3dsurface.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DSURFACE_H
#define Q3DSURFACE_H
diff --git a/src/datavisualization/engine/q3dsurface_p.h b/src/datavisualization/engine/q3dsurface_p.h
index db2ade45..b70bb643 100644
--- a/src/datavisualization/engine/q3dsurface_p.h
+++ b/src/datavisualization/engine/q3dsurface_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp
index 3110ec92..3b7eca01 100644
--- a/src/datavisualization/engine/qabstract3dgraph.cpp
+++ b/src/datavisualization/engine/qabstract3dgraph.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qabstract3dgraph.h"
#include "qabstract3dgraph_p.h"
@@ -41,7 +15,7 @@
#include <QtGui/QPainter>
#include <QtOpenGL/QOpenGLFramebufferObject>
#include <QtGui/QOffscreenSurface>
-#if defined(Q_OS_OSX)
+#if defined(Q_OS_MACOS)
#include <qpa/qplatformnativeinterface.h>
#endif
@@ -110,6 +84,8 @@ QT_BEGIN_NAMESPACE
\value SelectionMultiSeries
Setting this mode means that items for all series at same position are highlighted, instead
of just the selected item. The actual selection in the other series doesn't change.
+ When setting this mode flag, one or more of the basic selection flags (\c {SelectionItem},
+ \c {SelectionRow}, or \c SelectionColumn) must also be set.
Multi-series selection is not supported for Q3DScatter.
*/
@@ -224,7 +200,7 @@ QAbstract3DGraph::QAbstract3DGraph(QAbstract3DGraphPrivate *d, const QSurfaceFor
d_ptr->renderLater();
-#if defined(Q_OS_OSX)
+#if defined(Q_OS_MACOS)
// Enable touch events for Mac touchpads
typedef void * (*EnableTouch)(QWindow*, bool);
EnableTouch enableTouch =
@@ -440,7 +416,7 @@ void QAbstract3DGraph::clearSelection()
*
* \since 6.3
*/
-bool QAbstract3DGraph::hasSeries(QAbstract3DSeries *series)
+bool QAbstract3DGraph::hasSeries(QAbstract3DSeries *series) const
{
return d_ptr->m_visualController->hasSeries(series);
}
@@ -591,7 +567,7 @@ QCustom3DItem *QAbstract3DGraph::selectedCustomItem() const
* \c selectedElementChanged signal is emitted.
*
* The signal can be used for example for implementing custom input handlers, as
- * demonstrated by the \l {Axis Range Dragging With Labels Example}.
+ * demonstrated in the \l {Graph Gallery} example under \uicontrol {Scatter Graph} tab.
*
* \sa selectedLabelIndex(), selectedAxis(), selectedCustomItemIndex(), selectedCustomItem(),
* Q3DBars::selectedSeries(), Q3DScatter::selectedSeries(), Q3DSurface::selectedSeries(),
diff --git a/src/datavisualization/engine/qabstract3dgraph.h b/src/datavisualization/engine/qabstract3dgraph.h
index ca99ae7e..f3d8ecaa 100644
--- a/src/datavisualization/engine/qabstract3dgraph.h
+++ b/src/datavisualization/engine/qabstract3dgraph.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QABSTRACT3DGRAPH_H
#define QABSTRACT3DGRAPH_H
@@ -48,8 +22,6 @@ class QAbstract3DSeries;
class Q_DATAVISUALIZATION_EXPORT QAbstract3DGraph : public QWindow, protected QOpenGLFunctions
{
Q_OBJECT
- Q_ENUMS(ShadowQuality)
- Q_ENUMS(ElementType)
Q_FLAGS(SelectionFlag SelectionFlags)
Q_FLAGS(OptimizationHint OptimizationHints)
Q_PROPERTY(QAbstract3DInputHandler* activeInputHandler READ activeInputHandler WRITE setActiveInputHandler NOTIFY activeInputHandlerChanged)
@@ -89,6 +61,7 @@ public:
SelectionSlice = 8,
SelectionMultiSeries = 16
};
+ Q_ENUM(SelectionFlag)
Q_DECLARE_FLAGS(SelectionFlags, SelectionFlag)
enum ShadowQuality {
@@ -100,6 +73,7 @@ public:
ShadowQualitySoftMedium,
ShadowQualitySoftHigh
};
+ Q_ENUM(ShadowQuality)
enum ElementType {
ElementNone = 0,
@@ -109,11 +83,13 @@ public:
ElementAxisZLabel,
ElementCustomItem
};
+ Q_ENUM(ElementType)
enum OptimizationHint {
OptimizationDefault = 0,
OptimizationStatic = 1
};
+ Q_ENUM(OptimizationHint)
Q_DECLARE_FLAGS(OptimizationHints, OptimizationHint)
public:
@@ -142,7 +118,7 @@ public:
void clearSelection();
- virtual bool hasSeries(QAbstract3DSeries *series);
+ bool hasSeries(QAbstract3DSeries *series) const;
int addCustomItem(QCustom3DItem *item);
void removeCustomItems();
diff --git a/src/datavisualization/engine/qabstract3dgraph_p.h b/src/datavisualization/engine/qabstract3dgraph_p.h
index 9eff32ee..ed86769f 100644
--- a/src/datavisualization/engine/qabstract3dgraph_p.h
+++ b/src/datavisualization/engine/qabstract3dgraph_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp
index f78aa387..af7bb204 100644
--- a/src/datavisualization/engine/scatter3dcontroller.cpp
+++ b/src/datavisualization/engine/scatter3dcontroller.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "scatter3dcontroller_p.h"
#include "scatter3drenderer_p.h"
diff --git a/src/datavisualization/engine/scatter3dcontroller_p.h b/src/datavisualization/engine/scatter3dcontroller_p.h
index cc64b7df..175e4b82 100644
--- a/src/datavisualization/engine/scatter3dcontroller_p.h
+++ b/src/datavisualization/engine/scatter3dcontroller_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp
index cb0e780d..6a224ebd 100644
--- a/src/datavisualization/engine/scatter3drenderer.cpp
+++ b/src/datavisualization/engine/scatter3drenderer.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "scatter3drenderer_p.h"
#include "q3dcamera_p.h"
@@ -376,7 +352,7 @@ void Scatter3DRenderer::updateItems(const QList<Scatter3DController::ChangeItem>
const int index = item.index;
if (index >= cache->renderArray().size())
continue; // Items removed from array for same render
- bool oldVisibility;
+ bool oldVisibility = false;
ScatterRenderItem &item = cache->renderArray()[index];
if (optimizationStatic)
oldVisibility = item.isVisible();
diff --git a/src/datavisualization/engine/scatter3drenderer_p.h b/src/datavisualization/engine/scatter3drenderer_p.h
index 13c6be73..c1673e80 100644
--- a/src/datavisualization/engine/scatter3drenderer_p.h
+++ b/src/datavisualization/engine/scatter3drenderer_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/scatterseriesrendercache.cpp b/src/datavisualization/engine/scatterseriesrendercache.cpp
index dbe9fad6..2447076e 100644
--- a/src/datavisualization/engine/scatterseriesrendercache.cpp
+++ b/src/datavisualization/engine/scatterseriesrendercache.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "scatterseriesrendercache_p.h"
#include "scatterobjectbufferhelper_p.h"
diff --git a/src/datavisualization/engine/scatterseriesrendercache_p.h b/src/datavisualization/engine/scatterseriesrendercache_p.h
index 32752fc1..f19909af 100644
--- a/src/datavisualization/engine/scatterseriesrendercache_p.h
+++ b/src/datavisualization/engine/scatterseriesrendercache_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/selectionpointer.cpp b/src/datavisualization/engine/selectionpointer.cpp
index 4f7d2bf0..d78171e3 100644
--- a/src/datavisualization/engine/selectionpointer.cpp
+++ b/src/datavisualization/engine/selectionpointer.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "selectionpointer_p.h"
#include "shaderhelper_p.h"
@@ -36,7 +10,7 @@
QT_BEGIN_NAMESPACE
-const GLfloat sliceUnits = 2.5;
+const GLfloat spSliceUnits = 2.5;
SelectionPointer::SelectionPointer(Drawer *drawer)
: QObject(0),
@@ -94,7 +68,7 @@ void SelectionPointer::renderSelectionPointer(GLuint defaultFboHandle, bool useO
QMatrix4x4 projectionMatrix;
GLfloat viewPortRatio = (GLfloat)m_mainViewPort.width() / (GLfloat)m_mainViewPort.height();
if (m_cachedIsSlicingActivated) {
- GLfloat sliceUnitsScaled = sliceUnits / m_autoScaleAdjustment;
+ GLfloat sliceUnitsScaled = spSliceUnits / m_autoScaleAdjustment;
viewMatrix.lookAt(QVector3D(0.0f, 0.0f, 1.0f), zeroVector, upVector);
projectionMatrix.ortho(-sliceUnitsScaled * viewPortRatio, sliceUnitsScaled * viewPortRatio,
-sliceUnitsScaled, sliceUnitsScaled,
@@ -164,7 +138,7 @@ void SelectionPointer::renderSelectionLabel(GLuint defaultFboHandle, bool useOrt
QMatrix4x4 projectionMatrix;
GLfloat viewPortRatio = (GLfloat)m_mainViewPort.width() / (GLfloat)m_mainViewPort.height();
if (m_cachedIsSlicingActivated) {
- GLfloat sliceUnitsScaled = sliceUnits / m_autoScaleAdjustment;
+ GLfloat sliceUnitsScaled = spSliceUnits / m_autoScaleAdjustment;
viewMatrix.lookAt(QVector3D(0.0f, 0.0f, 1.0f), zeroVector, upVector);
projectionMatrix.ortho(-sliceUnitsScaled * viewPortRatio, sliceUnitsScaled * viewPortRatio,
-sliceUnitsScaled, sliceUnitsScaled,
diff --git a/src/datavisualization/engine/selectionpointer_p.h b/src/datavisualization/engine/selectionpointer_p.h
index bdb1d24c..42041b9e 100644
--- a/src/datavisualization/engine/selectionpointer_p.h
+++ b/src/datavisualization/engine/selectionpointer_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/seriesrendercache.cpp b/src/datavisualization/engine/seriesrendercache.cpp
index 8fd1a7e1..4794f605 100644
--- a/src/datavisualization/engine/seriesrendercache.cpp
+++ b/src/datavisualization/engine/seriesrendercache.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "seriesrendercache_p.h"
#include "abstract3drenderer_p.h"
diff --git a/src/datavisualization/engine/seriesrendercache_p.h b/src/datavisualization/engine/seriesrendercache_p.h
index 09547523..6f430a91 100644
--- a/src/datavisualization/engine/seriesrendercache_p.h
+++ b/src/datavisualization/engine/seriesrendercache_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/shaders.qrc b/src/datavisualization/engine/shaders.qrc
deleted file mode 100644
index 452f303e..00000000
--- a/src/datavisualization/engine/shaders.qrc
+++ /dev/null
@@ -1,43 +0,0 @@
-<RCC>
- <qresource prefix="/shaders">
- <file alias="fragment">shaders/default.frag</file>
- <file alias="vertex">shaders/default.vert</file>
- <file alias="fragmentColorOnY">shaders/colorOnY.frag</file>
- <file alias="fragmentPlainColor">shaders/plainColor.frag</file>
- <file alias="vertexPlainColor">shaders/plainColor.vert</file>
- <file alias="fragmentLabel">shaders/label.frag</file>
- <file alias="vertexLabel">shaders/label.vert</file>
- <file alias="fragmentDepth">shaders/depth.frag</file>
- <file alias="vertexDepth">shaders/depth.vert</file>
- <file alias="fragmentShadow">shaders/shadow.frag</file>
- <file alias="vertexShadow">shaders/shadow.vert</file>
- <file alias="fragmentShadowNoTex">shaders/shadowNoTex.frag</file>
- <file alias="fragmentShadowNoTexColorOnY">shaders/shadowNoTexColorOnY.frag</file>
- <file alias="fragmentColorOnYES2">shaders/colorOnY_ES2.frag</file>
- <file alias="fragmentES2">shaders/default_ES2.frag</file>
- <file alias="fragmentSurface">shaders/surface.frag</file>
- <file alias="vertexSurfaceFlat">shaders/surfaceFlat.vert</file>
- <file alias="fragmentSurfaceFlat">shaders/surfaceFlat.frag</file>
- <file alias="fragmentSurfaceES2">shaders/surface_ES2.frag</file>
- <file alias="vertexPointES2">shaders/point_ES2.vert</file>
- <file alias="fragmentSurfaceShadowNoTex">shaders/surfaceShadowNoTex.frag</file>
- <file alias="fragmentSurfaceShadowFlat">shaders/surfaceShadowFlat.frag</file>
- <file alias="vertexSurfaceShadowFlat">shaders/surfaceShadowFlat.vert</file>
- <file alias="fragmentTexture">shaders/texture.frag</file>
- <file alias="fragmentTextureES2">shaders/texture_ES2.frag</file>
- <file alias="vertexTexture">shaders/texture.vert</file>
- <file alias="fragmentTexturedSurfaceShadowFlat">shaders/surfaceTexturedShadowFlat.frag</file>
- <file alias="fragmentSurfaceTexturedFlat">shaders/surfaceTexturedFlat.frag</file>
- <file alias="fragmentTexture3D">shaders/texture3d.frag</file>
- <file alias="vertexTexture3D">shaders/texture3d.vert</file>
- <file alias="fragmentTexture3DSlice">shaders/texture3dslice.frag</file>
- <file alias="vertexShadowNoMatrices">shaders/shadowNoMatrices.vert</file>
- <file alias="vertexNoMatrices">shaders/defaultNoMatrices.vert</file>
- <file alias="fragmentTexture3DLowDef">shaders/texture3dlowdef.frag</file>
- <file alias="vertexPointES2_UV">shaders/point_ES2_UV.vert</file>
- <file alias="fragment3DSliceFrames">shaders/3dsliceframes.frag</file>
- <file alias="vertexPosition">shaders/position.vert</file>
- <file alias="fragmentPositionMap">shaders/positionmap.frag</file>
- <file alias="fragmentTexturedSurfaceShadow">shaders/surfaceTexturedShadow.frag</file>
- </qresource>
-</RCC>
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index d79e8162..13b32666 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "surface3dcontroller_p.h"
#include "surface3drenderer_p.h"
diff --git a/src/datavisualization/engine/surface3dcontroller_p.h b/src/datavisualization/engine/surface3dcontroller_p.h
index 73eda0cb..3d9276d8 100644
--- a/src/datavisualization/engine/surface3dcontroller_p.h
+++ b/src/datavisualization/engine/surface3dcontroller_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 0f977490..cffed56d 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "surface3drenderer_p.h"
#include "q3dcamera_p.h"
diff --git a/src/datavisualization/engine/surface3drenderer_p.h b/src/datavisualization/engine/surface3drenderer_p.h
index ea5da3b6..e60abbc0 100644
--- a/src/datavisualization/engine/surface3drenderer_p.h
+++ b/src/datavisualization/engine/surface3drenderer_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/engine/surfaceseriesrendercache.cpp b/src/datavisualization/engine/surfaceseriesrendercache.cpp
index 545cee7e..94b92ff5 100644
--- a/src/datavisualization/engine/surfaceseriesrendercache.cpp
+++ b/src/datavisualization/engine/surfaceseriesrendercache.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "surfaceseriesrendercache_p.h"
#include "surface3drenderer_p.h"
@@ -66,7 +40,7 @@ void SurfaceSeriesRenderCache::populate(bool newSeries)
QSurface3DSeries::DrawFlags drawMode = series()->drawMode();
m_surfaceVisible = drawMode.testFlag(QSurface3DSeries::DrawSurface);
m_surfaceGridVisible = drawMode.testFlag(QSurface3DSeries::DrawWireframe);
- QColor lineColor = series()->wireFrameColor();
+ QColor lineColor = series()->wireframeColor();
m_surfaceObj->setLineColor(lineColor);
m_sliceSurfaceObj->setLineColor(lineColor);
diff --git a/src/datavisualization/engine/surfaceseriesrendercache_p.h b/src/datavisualization/engine/surfaceseriesrendercache_p.h
index c8e89c8d..f61e6ad3 100644
--- a/src/datavisualization/engine/surfaceseriesrendercache_p.h
+++ b/src/datavisualization/engine/surfaceseriesrendercache_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/global/datavisualizationglobal_p.h b/src/datavisualization/global/datavisualizationglobal_p.h
index 2302105a..ff3e1f94 100644
--- a/src/datavisualization/global/datavisualizationglobal_p.h
+++ b/src/datavisualization/global/datavisualizationglobal_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/global/qdatavisualizationglobal.h b/src/datavisualization/global/qdatavisualizationglobal.h
index a769f98c..5a67d1c1 100644
--- a/src/datavisualization/global/qdatavisualizationglobal.h
+++ b/src/datavisualization/global/qdatavisualizationglobal.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QDATAVISUALIZATIONGLOBAL_H
#define QDATAVISUALIZATIONGLOBAL_H
diff --git a/src/datavisualization/input/q3dinputhandler.cpp b/src/datavisualization/input/q3dinputhandler.cpp
index ce205bf6..f62aaf70 100644
--- a/src/datavisualization/input/q3dinputhandler.cpp
+++ b/src/datavisualization/input/q3dinputhandler.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "datavisualizationglobal_p.h"
#include "q3dinputhandler_p.h"
@@ -42,7 +16,7 @@ static const int nearZoomRangeDivider = 12;
static const int midZoomRangeDivider = 60;
static const int farZoomRangeDivider = 120;
-static const float rotationSpeed = 100.0f;
+[[maybe_unused]] static const float rotationSpeed = 100.0f;
/*!
* \class Q3DInputHandler
diff --git a/src/datavisualization/input/q3dinputhandler.h b/src/datavisualization/input/q3dinputhandler.h
index d53175a3..be977385 100644
--- a/src/datavisualization/input/q3dinputhandler.h
+++ b/src/datavisualization/input/q3dinputhandler.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DINPUTHANDLER_H
#define Q3DINPUTHANDLER_H
diff --git a/src/datavisualization/input/q3dinputhandler_p.h b/src/datavisualization/input/q3dinputhandler_p.h
index addd65fa..b9244fb8 100644
--- a/src/datavisualization/input/q3dinputhandler_p.h
+++ b/src/datavisualization/input/q3dinputhandler_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/input/qabstract3dinputhandler.cpp b/src/datavisualization/input/qabstract3dinputhandler.cpp
index d439b793..bb19e7f9 100644
--- a/src/datavisualization/input/qabstract3dinputhandler.cpp
+++ b/src/datavisualization/input/qabstract3dinputhandler.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qabstract3dinputhandler_p.h"
diff --git a/src/datavisualization/input/qabstract3dinputhandler.h b/src/datavisualization/input/qabstract3dinputhandler.h
index 4715cf85..8ef40600 100644
--- a/src/datavisualization/input/qabstract3dinputhandler.h
+++ b/src/datavisualization/input/qabstract3dinputhandler.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QABSTRACT3DINPUTHANDLER_H
#define QABSTRACT3DINPUTHANDLER_H
diff --git a/src/datavisualization/input/qabstract3dinputhandler_p.h b/src/datavisualization/input/qabstract3dinputhandler_p.h
index c6fe14b3..3c664871 100644
--- a/src/datavisualization/input/qabstract3dinputhandler_p.h
+++ b/src/datavisualization/input/qabstract3dinputhandler_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/input/qtouch3dinputhandler.cpp b/src/datavisualization/input/qtouch3dinputhandler.cpp
index 5254d044..35b79a9f 100644
--- a/src/datavisualization/input/qtouch3dinputhandler.cpp
+++ b/src/datavisualization/input/qtouch3dinputhandler.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qtouch3dinputhandler_p.h"
#include <QtCore/QTimer>
@@ -41,7 +15,7 @@ static const int maxSelectionJitter = 10;
static const int maxSelectionJitter = 5;
#endif
static const int tapAndHoldTime = 250;
-static const float rotationSpeed = 200.0f;
+static const float t3ihRotationSpeed = 200.0f;
static const float touchZoomDrift = 0.02f;
/*!
@@ -121,12 +95,12 @@ void QTouch3DInputHandler::touchEvent(QTouchEvent *event)
QList<QTouchEvent::TouchPoint> points;
points = event->points();
- if (!scene()->isSlicingActive() && points.count() == 2) {
+ if (!scene()->isSlicingActive() && points.size() == 2) {
d_ptr->m_holdTimer->stop();
QPointF distance = points.at(0).position() - points.at(1).position();
QPoint midPoint = ((points.at(0).position() + points.at(1).position()) / 2.0).toPoint();
d_ptr->handlePinchZoom(distance.manhattanLength(), midPoint);
- } else if (points.count() == 1) {
+ } else if (points.size() == 1) {
QPointF pointerPos = points.at(0).position();
if (event->type() == QEvent::TouchBegin) {
// Flush input state
@@ -265,9 +239,9 @@ void QTouch3DInputHandlerPrivate::handleRotation(const QPointF &position)
float yRotation = camera->yRotation();
QPointF inputPos = q_ptr->inputPosition();
float mouseMoveX = float(inputPos.x() - position.x())
- / (scene->viewport().width() / rotationSpeed);
+ / (scene->viewport().width() / t3ihRotationSpeed);
float mouseMoveY = float(inputPos.y() - position.y())
- / (scene->viewport().height() / rotationSpeed);
+ / (scene->viewport().height() / t3ihRotationSpeed);
xRotation -= mouseMoveX;
yRotation -= mouseMoveY;
camera->setXRotation(xRotation);
diff --git a/src/datavisualization/input/qtouch3dinputhandler.h b/src/datavisualization/input/qtouch3dinputhandler.h
index 0b1bb81d..ba7c5ba4 100644
--- a/src/datavisualization/input/qtouch3dinputhandler.h
+++ b/src/datavisualization/input/qtouch3dinputhandler.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QTOUCH3DINPUTHANDLER_H
#define QTOUCH3DINPUTHANDLER_H
diff --git a/src/datavisualization/input/qtouch3dinputhandler_p.h b/src/datavisualization/input/qtouch3dinputhandler_p.h
index fd94c12a..fbfe0e10 100644
--- a/src/datavisualization/input/qtouch3dinputhandler_p.h
+++ b/src/datavisualization/input/qtouch3dinputhandler_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QTOUCH3DINPUTHANDLER_P_H
#define QTOUCH3DINPUTHANDLER_P_H
diff --git a/src/datavisualization/theme/q3dtheme.cpp b/src/datavisualization/theme/q3dtheme.cpp
index 25f2f7c1..0b56210b 100644
--- a/src/datavisualization/theme/q3dtheme.cpp
+++ b/src/datavisualization/theme/q3dtheme.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "q3dtheme_p.h"
#include "thememanager_p.h"
@@ -335,6 +309,8 @@ QT_BEGIN_NAMESPACE
* \qmlproperty color Theme3D::gridLineColor
*
* The color of the grid lines.
+ *
+ * \note Transparency is not supported and will result in undefined behavior.
*/
/*!
@@ -343,6 +319,8 @@ QT_BEGIN_NAMESPACE
* The highlight color for a selected object. Used if
* \l{AbstractGraph3D::selectionMode}{selectionMode}
* has the \c AbstractGraph3D.SelectionItem flag set.
+ *
+ * \note Transparency is not supported and will result in undefined behavior.
*/
/*!
@@ -352,6 +330,8 @@ QT_BEGIN_NAMESPACE
* \l{AbstractGraph3D::selectionMode}{selectionMode}
* has the \c AbstractGraph3D.SelectionRow or \c AbstractGraph3D.SelectionColumn
* flag set.
+ *
+ * \note Transparency is not supported and will result in undefined behavior.
*/
/*!
@@ -380,6 +360,8 @@ QT_BEGIN_NAMESPACE
* The highlight gradient for a selected object. Used if
* \l{AbstractGraph3D::selectionMode}{selectionMode}
* has the \c AbstractGraph3D.SelectionItem flag set.
+ *
+ * \note Transparency is not supported and will result in undefined behavior.
*/
/*!
@@ -389,6 +371,8 @@ QT_BEGIN_NAMESPACE
* \l{AbstractGraph3D::selectionMode}{selectionMode}
* has the \c AbstractGraph3D.SelectionRow or \c AbstractGraph3D.SelectionColumn
* flag set.
+ *
+ * \note Transparency is not supported and will result in undefined behavior.
*/
/*!
@@ -632,6 +616,8 @@ QColor Q3DTheme::labelBackgroundColor() const
* \property Q3DTheme::gridLineColor
*
* \brief The color of the grid lines.
+ *
+ * \note Transparency is not supported and will result in undefined behavior.
*/
void Q3DTheme::setGridLineColor(const QColor &color)
{
@@ -1022,11 +1008,13 @@ Q3DTheme::ColorStyle Q3DTheme::colorStyle() const
*/
void Q3DTheme::setType(Theme themeType)
{
- d_ptr->m_dirtyBits.themeIdDirty = true;
- if (d_ptr->m_themeId != themeType) {
- d_ptr->m_themeId = themeType;
- ThemeManager::setPredefinedPropertiesToTheme(this, themeType);
- emit typeChanged(themeType);
+ if (themeType >= ThemeQt && themeType <= ThemeUserDefined) {
+ d_ptr->m_dirtyBits.themeIdDirty = true;
+ if (d_ptr->m_themeId != themeType) {
+ d_ptr->m_themeId = themeType;
+ ThemeManager::setPredefinedPropertiesToTheme(this, themeType);
+ emit typeChanged(themeType);
+ }
}
}
diff --git a/src/datavisualization/theme/q3dtheme.h b/src/datavisualization/theme/q3dtheme.h
index 3cf02ca7..5087d854 100644
--- a/src/datavisualization/theme/q3dtheme.h
+++ b/src/datavisualization/theme/q3dtheme.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef Q3DTHEME_H
#define Q3DTHEME_H
@@ -76,7 +50,7 @@ public:
};
enum Theme {
- ThemeQt,
+ ThemeQt = 0,
ThemePrimaryColors,
ThemeDigia,
ThemeStoneMoss,
diff --git a/src/datavisualization/theme/q3dtheme_p.h b/src/datavisualization/theme/q3dtheme_p.h
index ea7dd3e1..ae054faf 100644
--- a/src/datavisualization/theme/q3dtheme_p.h
+++ b/src/datavisualization/theme/q3dtheme_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/theme/thememanager.cpp b/src/datavisualization/theme/thememanager.cpp
index e109e4f1..8dfd6a72 100644
--- a/src/datavisualization/theme/thememanager.cpp
+++ b/src/datavisualization/theme/thememanager.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "thememanager_p.h"
#include "q3dtheme_p.h"
diff --git a/src/datavisualization/theme/thememanager_p.h b/src/datavisualization/theme/thememanager_p.h
index a04a0d49..ea28bd1f 100644
--- a/src/datavisualization/theme/thememanager_p.h
+++ b/src/datavisualization/theme/thememanager_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/abstractobjecthelper.cpp b/src/datavisualization/utils/abstractobjecthelper.cpp
index 2510a65b..a99bdfac 100644
--- a/src/datavisualization/utils/abstractobjecthelper.cpp
+++ b/src/datavisualization/utils/abstractobjecthelper.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "abstractobjecthelper_p.h"
diff --git a/src/datavisualization/utils/abstractobjecthelper_p.h b/src/datavisualization/utils/abstractobjecthelper_p.h
index 2a51d001..918db4e4 100644
--- a/src/datavisualization/utils/abstractobjecthelper_p.h
+++ b/src/datavisualization/utils/abstractobjecthelper_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/camerahelper.cpp b/src/datavisualization/utils/camerahelper.cpp
index 05ba7c98..1a8c8823 100644
--- a/src/datavisualization/utils/camerahelper.cpp
+++ b/src/datavisualization/utils/camerahelper.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "camerahelper_p.h"
diff --git a/src/datavisualization/utils/camerahelper_p.h b/src/datavisualization/utils/camerahelper_p.h
index 26c7ee38..88c556b3 100644
--- a/src/datavisualization/utils/camerahelper_p.h
+++ b/src/datavisualization/utils/camerahelper_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/meshloader.cpp b/src/datavisualization/utils/meshloader.cpp
index 274d4a13..dc21b0f6 100644
--- a/src/datavisualization/utils/meshloader.cpp
+++ b/src/datavisualization/utils/meshloader.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "meshloader_p.h"
@@ -81,6 +55,10 @@ bool MeshLoader::loadOBJ(const QString &path, QList<QVector3D> &out_vertices,
QStringList set1 = lineContents.at(1).split(slashTag);
QStringList set2 = lineContents.at(2).split(slashTag);
QStringList set3 = lineContents.at(3).split(slashTag);
+ if (set1.size() < 3 || set2.size() < 3 || set3.size() < 3) {
+ qWarning("The file being loaded is missing UVs and/or normals");
+ return false;
+ }
vertexIndex[0] = set1.at(0).toUInt();
vertexIndex[1] = set2.at(0).toUInt();
vertexIndex[2] = set3.at(0).toUInt();
diff --git a/src/datavisualization/utils/meshloader_p.h b/src/datavisualization/utils/meshloader_p.h
index 7479f19e..cbd4036b 100644
--- a/src/datavisualization/utils/meshloader_p.h
+++ b/src/datavisualization/utils/meshloader_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/objecthelper.cpp b/src/datavisualization/utils/objecthelper.cpp
index f8fa01de..6053b255 100644
--- a/src/datavisualization/utils/objecthelper.cpp
+++ b/src/datavisualization/utils/objecthelper.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "meshloader_p.h"
#include "vertexindexer_p.h"
@@ -113,10 +87,19 @@ ObjectHelper *ObjectHelper::getObjectHelper(const Abstract3DRenderer *cacheId,
objRef = new ObjectHelperRef;
objRef->refCount = 0;
objRef->obj = new ObjectHelper(objectFile);
- objectTable->insert(objectFile, objRef);
+ if (objRef->obj->m_meshDataLoaded) {
+ objectTable->insert(objectFile, objRef);
+ } else {
+ delete objRef->obj;
+ delete objRef;
+ objRef = nullptr;
+ }
+ }
+ if (objRef) {
+ objRef->refCount++;
+ return objRef->obj;
}
- objRef->refCount++;
- return objRef->obj;
+ return nullptr;
}
void ObjectHelper::load()
@@ -140,41 +123,44 @@ void ObjectHelper::load()
QList<QVector2D> uvs;
QList<QVector3D> normals;
bool loadOk = MeshLoader::loadOBJ(m_objectFile, vertices, uvs, normals);
- if (!loadOk)
- qFatal("loading failed");
-
- // Index vertices
- VertexIndexer::indexVBO(vertices, uvs, normals, m_indices, m_indexedVertices, m_indexedUVs,
- m_indexedNormals);
-
- m_indexCount = m_indices.size();
-
- glGenBuffers(1, &m_vertexbuffer);
- glBindBuffer(GL_ARRAY_BUFFER, m_vertexbuffer);
- glBufferData(GL_ARRAY_BUFFER, m_indexedVertices.size() * sizeof(QVector3D),
- &m_indexedVertices.at(0),
- GL_STATIC_DRAW);
- glGenBuffers(1, &m_normalbuffer);
- glBindBuffer(GL_ARRAY_BUFFER, m_normalbuffer);
- glBufferData(GL_ARRAY_BUFFER, m_indexedNormals.size() * sizeof(QVector3D),
- &m_indexedNormals.at(0),
- GL_STATIC_DRAW);
-
- glGenBuffers(1, &m_uvbuffer);
- glBindBuffer(GL_ARRAY_BUFFER, m_uvbuffer);
- glBufferData(GL_ARRAY_BUFFER, m_indexedUVs.size() * sizeof(QVector2D),
- &m_indexedUVs.at(0), GL_STATIC_DRAW);
-
- glGenBuffers(1, &m_elementbuffer);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_elementbuffer);
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, m_indices.size() * sizeof(GLuint),
- &m_indices.at(0), GL_STATIC_DRAW);
-
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
-
- m_meshDataLoaded = true;
+ if (!loadOk) {
+ qCritical() << "Loading" << m_objectFile << "failed";
+ m_meshDataLoaded = false;
+ } else {
+ // Index vertices
+ VertexIndexer::indexVBO(vertices, uvs, normals, m_indices, m_indexedVertices, m_indexedUVs,
+ m_indexedNormals);
+
+ m_indexCount = m_indices.size();
+
+ glGenBuffers(1, &m_vertexbuffer);
+ glBindBuffer(GL_ARRAY_BUFFER, m_vertexbuffer);
+ glBufferData(GL_ARRAY_BUFFER, m_indexedVertices.size() * sizeof(QVector3D),
+ &m_indexedVertices.at(0),
+ GL_STATIC_DRAW);
+
+ glGenBuffers(1, &m_normalbuffer);
+ glBindBuffer(GL_ARRAY_BUFFER, m_normalbuffer);
+ glBufferData(GL_ARRAY_BUFFER, m_indexedNormals.size() * sizeof(QVector3D),
+ &m_indexedNormals.at(0),
+ GL_STATIC_DRAW);
+
+ glGenBuffers(1, &m_uvbuffer);
+ glBindBuffer(GL_ARRAY_BUFFER, m_uvbuffer);
+ glBufferData(GL_ARRAY_BUFFER, m_indexedUVs.size() * sizeof(QVector2D),
+ &m_indexedUVs.at(0), GL_STATIC_DRAW);
+
+ glGenBuffers(1, &m_elementbuffer);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_elementbuffer);
+ glBufferData(GL_ELEMENT_ARRAY_BUFFER, m_indices.size() * sizeof(GLuint),
+ &m_indices.at(0), GL_STATIC_DRAW);
+
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+
+ m_meshDataLoaded = true;
+ }
}
QT_END_NAMESPACE
diff --git a/src/datavisualization/utils/objecthelper_p.h b/src/datavisualization/utils/objecthelper_p.h
index d642bc3b..1ac0feb0 100644
--- a/src/datavisualization/utils/objecthelper_p.h
+++ b/src/datavisualization/utils/objecthelper_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/qutils.h b/src/datavisualization/utils/qutils.h
index dc72835e..6b58a977 100644
--- a/src/datavisualization/utils/qutils.h
+++ b/src/datavisualization/utils/qutils.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef QUTILS_H
#define QUTILS_H
@@ -38,9 +12,7 @@
QT_BEGIN_NAMESPACE
-#ifdef Q_OS_MACOS
-#pragma clang diagnostic ignored "-Wunused-function"
-#endif
+[[maybe_unused]]
static inline QSurfaceFormat qDefaultSurfaceFormat(bool antialias)
{
bool isES = false;
diff --git a/src/datavisualization/utils/scatterobjectbufferhelper.cpp b/src/datavisualization/utils/scatterobjectbufferhelper.cpp
index 0efd8572..0a04d038 100644
--- a/src/datavisualization/utils/scatterobjectbufferhelper.cpp
+++ b/src/datavisualization/utils/scatterobjectbufferhelper.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "scatterobjectbufferhelper_p.h"
#include "objecthelper_p.h"
@@ -35,7 +9,7 @@
QT_BEGIN_NAMESPACE
-const GLfloat itemScaler = 3.0f;
+const GLfloat ScatterObjectBufferHelper::itemScaler = 3.0f;
ScatterObjectBufferHelper::ScatterObjectBufferHelper()
: m_scaleY(0.0f)
@@ -78,10 +52,10 @@ void ScatterObjectBufferHelper::fullLoad(ScatterSeriesRenderCache *cache, qreal
const QList<QVector3D> indexed_vertices = dotObj->indexedvertices();
const QList<QVector2D> indexed_uvs = dotObj->indexedUVs();
const QList<QVector3D> indexed_normals = dotObj->indexedNormals();
- const int indicesCount = indices.count();
- const int verticeCount = indexed_vertices.count();
- const int uvsCount = indexed_uvs.count();
- const int normalsCount = indexed_normals.count();
+ const int indicesCount = indices.size();
+ const int verticeCount = indexed_vertices.size();
+ const int uvsCount = indexed_uvs.size();
+ const int normalsCount = indexed_normals.size();
float itemSize = cache->itemSize() / itemScaler;
if (itemSize == 0.0f)
@@ -98,7 +72,7 @@ void ScatterObjectBufferHelper::fullLoad(ScatterSeriesRenderCache *cache, qreal
QList<QVector3D> scaled_vertices;
scaled_vertices.resize(verticeCount);
for (int i = 0; i < verticeCount; i++)
- scaled_vertices[i] = indexed_vertices[i] * modelMatrix;
+ scaled_vertices[i] = (QVector4D(indexed_vertices[i]) * modelMatrix).toVector3D();
QList<GLuint> buffered_indices;
QList<QVector3D> buffered_vertices;
@@ -141,9 +115,11 @@ void ScatterObjectBufferHelper::fullLoad(ScatterSeriesRenderCache *cache, qreal
modelMatrix = matrix.transposed(); // Because of row-column major difference
for (int j = 0; j < verticeCount; j++) {
- buffered_vertices[j + offset] = indexed_vertices[j] * modelMatrix
+ buffered_vertices[j + offset]
+ = (QVector4D(indexed_vertices[j]) * modelMatrix).toVector3D()
+ item.translation();
- buffered_normals[j + offset] = indexed_normals[j] * itModelMatrix;
+ buffered_normals[j + offset]
+ = (QVector4D(indexed_normals[j]) * itModelMatrix).toVector3D();
}
}
@@ -196,7 +172,7 @@ void ScatterObjectBufferHelper::fullLoad(ScatterSeriesRenderCache *cache, qreal
void ScatterObjectBufferHelper::updateUVs(ScatterSeriesRenderCache *cache)
{
ObjectHelper *dotObj = cache->object();
- const int uvsCount = dotObj->indexedUVs().count();
+ const int uvsCount = dotObj->indexedUVs().size();
const ScatterRenderItemArray &renderArray = cache->renderArray();
const bool updateAll = (cache->updateIndices().size() == 0);
const int updateSize = updateAll ? renderArray.size() : cache->updateIndices().size();
@@ -237,7 +213,7 @@ uint ScatterObjectBufferHelper::createRangeGradientUVs(ScatterSeriesRenderCache
QList<QVector2D> &buffered_uvs)
{
ObjectHelper *dotObj = cache->object();
- const int uvsCount = dotObj->indexedUVs().count();
+ const int uvsCount = dotObj->indexedUVs().size();
const ScatterRenderItemArray &renderArray = cache->renderArray();
const bool updateAll = (cache->updateIndices().size() == 0);
const int updateSize = updateAll ? renderArray.size() : cache->updateIndices().size();
@@ -280,7 +256,7 @@ uint ScatterObjectBufferHelper::createObjectGradientUVs(ScatterSeriesRenderCache
const QList<QVector3D> &indexed_vertices)
{
ObjectHelper *dotObj = cache->object();
- const int uvsCount = dotObj->indexedUVs().count();
+ const int uvsCount = dotObj->indexedUVs().size();
const ScatterRenderItemArray &renderArray = cache->renderArray();
const uint renderArraySize = renderArray.size();
@@ -317,7 +293,7 @@ void ScatterObjectBufferHelper::update(ScatterSeriesRenderCache *cache, qreal do
// Index vertices
const QList<QVector3D> indexed_vertices = dotObj->indexedvertices();
- int verticeCount = indexed_vertices.count();
+ int verticeCount = indexed_vertices.size();
float itemSize = cache->itemSize() / itemScaler;
if (itemSize == 0.0f)
@@ -334,7 +310,7 @@ void ScatterObjectBufferHelper::update(ScatterSeriesRenderCache *cache, qreal do
QList<QVector3D> scaled_vertices;
scaled_vertices.resize(verticeCount);
for (int i = 0; i < verticeCount; i++)
- scaled_vertices[i] = indexed_vertices[i] * modelMatrix;
+ scaled_vertices[i] = (QVector4D(indexed_vertices[i]) * modelMatrix).toVector3D();
QList<QVector3D> buffered_vertices;
buffered_vertices.resize(verticeCount * updateSize);
@@ -356,9 +332,11 @@ void ScatterObjectBufferHelper::update(ScatterSeriesRenderCache *cache, qreal do
modelMatrix = matrix.transposed();
modelMatrix.scale(modelScaler);
- for (int j = 0; j < verticeCount; j++)
- buffered_vertices[j + offset] = indexed_vertices[j] * modelMatrix
+ for (int j = 0; j < verticeCount; j++) {
+ buffered_vertices[j + offset]
+ = (QVector4D(indexed_vertices[j]) * modelMatrix).toVector3D()
+ item.translation();
+ }
}
itemCount++;
}
diff --git a/src/datavisualization/utils/scatterobjectbufferhelper_p.h b/src/datavisualization/utils/scatterobjectbufferhelper_p.h
index 2f9dfd7d..5328e029 100644
--- a/src/datavisualization/utils/scatterobjectbufferhelper_p.h
+++ b/src/datavisualization/utils/scatterobjectbufferhelper_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -63,6 +37,7 @@ private:
const QList<QVector3D> &indexed_vertices);
float m_scaleY;
+ static const GLfloat itemScaler;
};
QT_END_NAMESPACE
diff --git a/src/datavisualization/utils/scatterpointbufferhelper.cpp b/src/datavisualization/utils/scatterpointbufferhelper.cpp
index 9600a386..ccb5dd13 100644
--- a/src/datavisualization/utils/scatterpointbufferhelper.cpp
+++ b/src/datavisualization/utils/scatterpointbufferhelper.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "scatterpointbufferhelper_p.h"
#include <QtGui/QVector2D>
diff --git a/src/datavisualization/utils/scatterpointbufferhelper_p.h b/src/datavisualization/utils/scatterpointbufferhelper_p.h
index 0240b529..ff19a36e 100644
--- a/src/datavisualization/utils/scatterpointbufferhelper_p.h
+++ b/src/datavisualization/utils/scatterpointbufferhelper_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/shaderhelper.cpp b/src/datavisualization/utils/shaderhelper.cpp
index 31535225..7de9592d 100644
--- a/src/datavisualization/utils/shaderhelper.cpp
+++ b/src/datavisualization/utils/shaderhelper.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "shaderhelper_p.h"
diff --git a/src/datavisualization/utils/shaderhelper_p.h b/src/datavisualization/utils/shaderhelper_p.h
index e00e16c7..93f861b2 100644
--- a/src/datavisualization/utils/shaderhelper_p.h
+++ b/src/datavisualization/utils/shaderhelper_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/surfaceobject.cpp b/src/datavisualization/utils/surfaceobject.cpp
index 7d73e700..30635e6c 100644
--- a/src/datavisualization/utils/surfaceobject.cpp
+++ b/src/datavisualization/utils/surfaceobject.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "surfaceobject_p.h"
#include "surface3drenderer_p.h"
diff --git a/src/datavisualization/utils/surfaceobject_p.h b/src/datavisualization/utils/surfaceobject_p.h
index 9e317bb2..7a2b7241 100644
--- a/src/datavisualization/utils/surfaceobject_p.h
+++ b/src/datavisualization/utils/surfaceobject_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -40,7 +14,6 @@
#ifndef SURFACEOBJECT_P_H
#define SURFACEOBJECT_P_H
-#include "datavisualizationglobal_p.h"
#include "abstractobjecthelper_p.h"
#include "qsurfacedataproxy.h"
@@ -96,8 +69,8 @@ public:
float minYValue() const { return m_minY; }
float maxYValue() const { return m_maxY; }
inline void activateSurfaceTexture(bool value) { m_returnTextureBuffer = value; }
- inline void setLineColor(const QColor &color) { m_wireFrameColor = color; }
- inline const QColor &wireFrameColor() const { return m_wireFrameColor; }
+ inline void setLineColor(const QColor &color) { m_wireframeColor = color; }
+ inline const QColor &wireframeColor() const { return m_wireframeColor; }
private:
void createCoarseIndices(GLint *indices, int &p, int row, int upperRow, int j);
@@ -132,7 +105,7 @@ private:
bool m_returnTextureBuffer = false;
SurfaceObject::DataDimensions m_dataDimension;
SurfaceObject::DataDimensions m_oldDataDimension = DataDimensions(-1);
- QColor m_wireFrameColor;
+ QColor m_wireframeColor;
};
QT_END_NAMESPACE
diff --git a/src/datavisualization/utils/texturehelper.cpp b/src/datavisualization/utils/texturehelper.cpp
index bc1bc4c6..c892014a 100644
--- a/src/datavisualization/utils/texturehelper.cpp
+++ b/src/datavisualization/utils/texturehelper.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "texturehelper_p.h"
#include "utils_p.h"
diff --git a/src/datavisualization/utils/texturehelper_p.h b/src/datavisualization/utils/texturehelper_p.h
index 20c6beea..f9baa272 100644
--- a/src/datavisualization/utils/texturehelper_p.h
+++ b/src/datavisualization/utils/texturehelper_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/utils.cpp b/src/datavisualization/utils/utils.cpp
index 7d5a4c08..3470c44d 100644
--- a/src/datavisualization/utils/utils.cpp
+++ b/src/datavisualization/utils/utils.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "utils_p.h"
diff --git a/src/datavisualization/utils/utils_p.h b/src/datavisualization/utils/utils_p.h
index afeed6d3..06c98407 100644
--- a/src/datavisualization/utils/utils_p.h
+++ b/src/datavisualization/utils/utils_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualization/utils/vertexindexer.cpp b/src/datavisualization/utils/vertexindexer.cpp
index a96a7756..65316c63 100644
--- a/src/datavisualization/utils/vertexindexer.cpp
+++ b/src/datavisualization/utils/vertexindexer.cpp
@@ -1,35 +1,10 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "vertexindexer_p.h"
#include <QtCore/qmath.h>
+#include <QtCore/qmap.h>
QT_BEGIN_NAMESPACE
diff --git a/src/datavisualization/utils/vertexindexer_p.h b/src/datavisualization/utils/vertexindexer_p.h
index 2f4809bf..e7f0f775 100644
--- a/src/datavisualization/utils/vertexindexer_p.h
+++ b/src/datavisualization/utils/vertexindexer_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/CMakeLists.txt b/src/datavisualizationqml/CMakeLists.txt
index e185e9de..110a5ef0 100644
--- a/src/datavisualizationqml/CMakeLists.txt
+++ b/src/datavisualizationqml/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(qml_files
"designer/Bars3DSpecifics.qml"
"designer/Scatter3DSpecifics.qml"
@@ -41,17 +44,20 @@ qt_internal_add_qml_module(DataVisualizationQml
enumtostringmap.cpp enumtostringmap_p.h
foreigntypes_p.h
glstatestore.cpp glstatestore_p.h
+ NO_PCH_SOURCES
+ declarativetheme.cpp # undef QT_NO_FOREACH
QML_FILES
${qml_files}
RESOURCES
${resources}
- PUBLIC_LIBRARIES
- Qt::Core
+ LIBRARIES
+ Qt::CorePrivate
Qt::Gui
Qt::OpenGL
Qt::Qml
Qt::Quick
- DataVisualizationPrivate
+ Qt::DataVisualizationPrivate
+ NO_GENERATE_CPP_EXPORTS
)
qt_internal_extend_target(DataVisualizationQml CONDITION MACOS
diff --git a/src/datavisualizationqml/abstractdeclarative.cpp b/src/datavisualizationqml/abstractdeclarative.cpp
index e449c7d5..af19d46f 100644
--- a/src/datavisualizationqml/abstractdeclarative.cpp
+++ b/src/datavisualizationqml/abstractdeclarative.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "abstractdeclarative_p.h"
#include "declarativetheme_p.h"
@@ -34,7 +8,7 @@
#if defined(Q_OS_IOS)
#include <QtCore/QTimer>
#endif
-#if defined(Q_OS_OSX)
+#if defined(Q_OS_MACOS)
#include <qpa/qplatformnativeinterface.h>
#endif
@@ -50,6 +24,7 @@ static QHash<AbstractDeclarative *, QQuickWindow *> graphWindowList;
AbstractDeclarative::AbstractDeclarative(QQuickItem *parent) :
QQuickItem(parent),
+ AbstractDeclarativeInterface(),
m_controller(0),
m_contextWindow(0),
m_renderMode(RenderIndirect),
@@ -89,8 +64,11 @@ AbstractDeclarative::~AbstractDeclarative()
void AbstractDeclarative::setRenderingMode(AbstractDeclarative::RenderingMode mode)
{
- if (mode == m_renderMode)
+ if (mode == m_renderMode
+ || mode <= AbstractDeclarative::RenderingMode::RenderDirectToBackground
+ || mode >= AbstractDeclarative::RenderingMode::RenderIndirect) {
return;
+ }
RenderingMode previousMode = m_renderMode;
@@ -450,7 +428,7 @@ void AbstractDeclarative::handleWindowChanged(QQuickWindow *window)
if (!window)
return;
-#if defined(Q_OS_OSX)
+#if defined(Q_OS_MACOS)
bool previousVisibility = window->isVisible();
// Enable touch events for Mac touchpads
window->setVisible(true);
@@ -587,7 +565,7 @@ void AbstractDeclarative::render()
QOpenGLFunctions *funcs = QOpenGLContext::currentContext()->functions();
- if (isVisible()) {
+ if (funcs && isVisible()) {
funcs->glDepthMask(GL_TRUE);
funcs->glEnable(GL_DEPTH_TEST);
funcs->glDepthFunc(GL_LESS);
@@ -669,8 +647,8 @@ void AbstractDeclarative::checkWindowList(QQuickWindow *window)
}
QList<QQuickWindow *> windowList;
-
- foreach (AbstractDeclarative *graph, graphWindowList.keys()) {
+ const auto graphs = graphWindowList.keys();
+ for (AbstractDeclarative *graph : graphs) {
if (graph->m_renderMode == RenderDirectToBackground
|| graph->m_renderMode == RenderDirectToBackground_NoClear) {
windowList.append(graphWindowList.value(graph));
diff --git a/src/datavisualizationqml/abstractdeclarative_p.h b/src/datavisualizationqml/abstractdeclarative_p.h
index ce98c8e7..090738c5 100644
--- a/src/datavisualizationqml/abstractdeclarative_p.h
+++ b/src/datavisualizationqml/abstractdeclarative_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -44,6 +18,7 @@
#include <private/datavisualizationglobal_p.h>
#include <private/abstract3dcontroller_p.h>
+#include <QtDataVisualization/private/abstractdeclarativeinterface_p.h>
#include <QtQuick/QQuickItem>
#include <QtCore/QPointer>
@@ -55,7 +30,7 @@ class GLStateStore;
QT_BEGIN_NAMESPACE
-class AbstractDeclarative : public QQuickItem
+class AbstractDeclarative : public QQuickItem, public AbstractDeclarativeInterface
{
Q_OBJECT
Q_PROPERTY(SelectionFlags selectionMode READ selectionMode WRITE setSelectionMode NOTIFY selectionModeChanged)
@@ -135,6 +110,8 @@ public:
Q_ENUM(ShadowQuality)
Q_ENUM(RenderingMode)
Q_ENUM(ElementType)
+ Q_ENUM(SelectionFlag)
+ Q_ENUM(OptimizationHint)
Q_FLAGS(SelectionFlag SelectionFlags)
Q_FLAGS(OptimizationHint OptimizationHints)
@@ -239,7 +216,7 @@ public:
QMutex *mutex() { return &m_mutex; }
- bool isReady() { return isComponentComplete(); }
+ bool isReady() const override { return isComponentComplete(); }
public Q_SLOTS:
virtual void handleAxisXChanged(QAbstract3DAxis *axis) = 0;
diff --git a/src/datavisualizationqml/colorgradient.cpp b/src/datavisualizationqml/colorgradient.cpp
index 3f6881b0..c00c43aa 100644
--- a/src/datavisualizationqml/colorgradient.cpp
+++ b/src/datavisualizationqml/colorgradient.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "colorgradient_p.h"
diff --git a/src/datavisualizationqml/colorgradient_p.h b/src/datavisualizationqml/colorgradient_p.h
index 4bae9c1d..5e5d0e51 100644
--- a/src/datavisualizationqml/colorgradient_p.h
+++ b/src/datavisualizationqml/colorgradient_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/declarativebars.cpp b/src/datavisualizationqml/declarativebars.cpp
index 59d64f4e..1cba987a 100644
--- a/src/datavisualizationqml/declarativebars.cpp
+++ b/src/datavisualizationqml/declarativebars.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "declarativebars_p.h"
#include <QtCore/QMutexLocker>
diff --git a/src/datavisualizationqml/declarativebars_p.h b/src/datavisualizationqml/declarativebars_p.h
index 516ff13f..82653ab2 100644
--- a/src/datavisualizationqml/declarativebars_p.h
+++ b/src/datavisualizationqml/declarativebars_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/declarativecolor.cpp b/src/datavisualizationqml/declarativecolor.cpp
index 177c0fbe..979c3f1e 100644
--- a/src/datavisualizationqml/declarativecolor.cpp
+++ b/src/datavisualizationqml/declarativecolor.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "declarativecolor_p.h"
diff --git a/src/datavisualizationqml/declarativecolor_p.h b/src/datavisualizationqml/declarativecolor_p.h
index d772e642..426d674d 100644
--- a/src/datavisualizationqml/declarativecolor_p.h
+++ b/src/datavisualizationqml/declarativecolor_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/declarativerendernode.cpp b/src/datavisualizationqml/declarativerendernode.cpp
index f99e1375..5a9f466c 100644
--- a/src/datavisualizationqml/declarativerendernode.cpp
+++ b/src/datavisualizationqml/declarativerendernode.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "declarativerendernode_p.h"
#include "abstractdeclarative_p.h"
diff --git a/src/datavisualizationqml/declarativerendernode_p.h b/src/datavisualizationqml/declarativerendernode_p.h
index 28cb0538..2f6d22ec 100644
--- a/src/datavisualizationqml/declarativerendernode_p.h
+++ b/src/datavisualizationqml/declarativerendernode_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/declarativescatter.cpp b/src/datavisualizationqml/declarativescatter.cpp
index 1417bc6d..1e3795a0 100644
--- a/src/datavisualizationqml/declarativescatter.cpp
+++ b/src/datavisualizationqml/declarativescatter.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "declarativescatter_p.h"
#include <QtCore/QMutexLocker>
diff --git a/src/datavisualizationqml/declarativescatter_p.h b/src/datavisualizationqml/declarativescatter_p.h
index 18848e0b..4b020b76 100644
--- a/src/datavisualizationqml/declarativescatter_p.h
+++ b/src/datavisualizationqml/declarativescatter_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/declarativescene.cpp b/src/datavisualizationqml/declarativescene.cpp
index f4e5ae00..75508994 100644
--- a/src/datavisualizationqml/declarativescene.cpp
+++ b/src/datavisualizationqml/declarativescene.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "declarativescene_p.h"
diff --git a/src/datavisualizationqml/declarativescene_p.h b/src/datavisualizationqml/declarativescene_p.h
index eade98aa..ba38b5e8 100644
--- a/src/datavisualizationqml/declarativescene_p.h
+++ b/src/datavisualizationqml/declarativescene_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/declarativeseries.cpp b/src/datavisualizationqml/declarativeseries.cpp
index 38263a32..65c2cc76 100644
--- a/src/datavisualizationqml/declarativeseries.cpp
+++ b/src/datavisualizationqml/declarativeseries.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "declarativeseries_p.h"
#include <QtCore/QMetaMethod>
@@ -103,7 +77,8 @@ DeclarativeBar3DSeries::DeclarativeBar3DSeries(QObject *parent)
: QBar3DSeries(parent),
m_baseGradient(0),
m_singleHighlightGradient(0),
- m_multiHighlightGradient(0)
+ m_multiHighlightGradient(0),
+ m_dummyColors(false)
{
QObject::connect(this, &QBar3DSeries::selectedBarChanged, this,
&DeclarativeBar3DSeries::selectedBarChanged);
@@ -171,6 +146,37 @@ ColorGradient *DeclarativeBar3DSeries::multiHighlightGradient() const
return m_multiHighlightGradient;
}
+QQmlListProperty<DeclarativeColor> DeclarativeBar3DSeries::rowColors()
+{
+ return QQmlListProperty<DeclarativeColor>(this, this,
+ &DeclarativeBar3DSeries::appendRowColorsFunc,
+ &DeclarativeBar3DSeries::countRowColorsFunc,
+ &DeclarativeBar3DSeries::atRowColorsFunc,
+ &DeclarativeBar3DSeries::clearRowColorsFunc);
+}
+
+void DeclarativeBar3DSeries::appendRowColorsFunc(QQmlListProperty<DeclarativeColor> *list,
+ DeclarativeColor *color)
+{
+ reinterpret_cast<DeclarativeBar3DSeries *>(list->data)->addColor(color);
+}
+
+qsizetype DeclarativeBar3DSeries::countRowColorsFunc(QQmlListProperty<DeclarativeColor> *list)
+{
+ return reinterpret_cast<DeclarativeBar3DSeries *>(list->data)->colorList().size();
+}
+
+DeclarativeColor *DeclarativeBar3DSeries::atRowColorsFunc(QQmlListProperty<DeclarativeColor> *list,
+ qsizetype index)
+{
+ return reinterpret_cast<DeclarativeBar3DSeries *>(list->data)->colorList().at(index);
+}
+
+void DeclarativeBar3DSeries::clearRowColorsFunc(QQmlListProperty<DeclarativeColor> *list)
+{
+ reinterpret_cast<DeclarativeBar3DSeries *>(list->data)->clearColors();
+}
+
void DeclarativeBar3DSeries::handleBaseGradientUpdate()
{
if (m_baseGradient)
@@ -189,6 +195,73 @@ void DeclarativeBar3DSeries::handleMultiHighlightGradientUpdate()
setSeriesGradient(this, *m_multiHighlightGradient, GradientTypeMulti);
}
+void DeclarativeBar3DSeries::handleRowColorUpdate()
+{
+ int colorCount = m_rowColors.size();
+ int changed = 0;
+
+ DeclarativeColor *color = qobject_cast<DeclarativeColor*>(QObject::sender());
+ for (int i = 0; i < colorCount; i++) {
+ if (color == m_rowColors.at(i)) {
+ changed = i;
+ break;
+ }
+ }
+ QList<QColor> list = QBar3DSeries::rowColors();
+ list[changed] = m_rowColors.at(changed)->color();
+ QBar3DSeries::setRowColors(list);
+}
+
+void DeclarativeBar3DSeries::addColor(DeclarativeColor *color)
+{
+ if (!color) {
+ qWarning("Color is invalid, use ThemeColor");
+ return;
+ }
+ clearDummyColors();
+ m_rowColors.append(color);
+ connect(color, &DeclarativeColor::colorChanged, this,
+ &DeclarativeBar3DSeries::handleRowColorUpdate);
+ QList<QColor> list = QBar3DSeries::rowColors();
+ list.append(color->color());
+ QBar3DSeries::setRowColors(list);
+}
+
+QList<DeclarativeColor *> DeclarativeBar3DSeries::colorList()
+{
+ if (m_rowColors.isEmpty()) {
+ m_dummyColors = true;
+ const QList<QColor> list = QBar3DSeries::rowColors();
+ for (const QColor &item : list) {
+ DeclarativeColor *color = new DeclarativeColor(this);
+ color->setColor(item);
+ m_rowColors.append(color);
+ connect(color, &DeclarativeColor::colorChanged, this,
+ &DeclarativeBar3DSeries::handleRowColorUpdate);
+ }
+ }
+ return m_rowColors;
+}
+
+void DeclarativeBar3DSeries::clearColors()
+{
+ clearDummyColors();
+ for (const auto color : std::as_const(m_rowColors))
+ disconnect(color, 0, this, 0);
+
+ m_rowColors.clear();
+ QBar3DSeries::setRowColors(QList<QColor>());
+}
+
+void DeclarativeBar3DSeries::clearDummyColors()
+{
+ if (m_dummyColors) {
+ qDeleteAll(m_rowColors);
+ m_rowColors.clear();
+ m_dummyColors = false;
+ }
+}
+
DeclarativeScatter3DSeries::DeclarativeScatter3DSeries(QObject *parent)
: QScatter3DSeries(parent),
m_baseGradient(0),
diff --git a/src/datavisualizationqml/declarativeseries_p.h b/src/datavisualizationqml/declarativeseries_p.h
index da45cb3f..13b1eda3 100644
--- a/src/datavisualizationqml/declarativeseries_p.h
+++ b/src/datavisualizationqml/declarativeseries_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -44,6 +18,7 @@
#include "qscatter3dseries.h"
#include "qsurface3dseries.h"
#include "colorgradient_p.h"
+#include "declarativecolor_p.h"
#include <private/datavisualizationglobal_p.h>
#include <QtQml/qqml.h>
@@ -68,6 +43,7 @@ class DeclarativeBar3DSeries : public QBar3DSeries
Q_PROPERTY(ColorGradient *baseGradient READ baseGradient WRITE setBaseGradient NOTIFY baseGradientChanged)
Q_PROPERTY(ColorGradient *singleHighlightGradient READ singleHighlightGradient WRITE setSingleHighlightGradient NOTIFY singleHighlightGradientChanged)
Q_PROPERTY(ColorGradient *multiHighlightGradient READ multiHighlightGradient WRITE setMultiHighlightGradient NOTIFY multiHighlightGradientChanged)
+ Q_PROPERTY(QQmlListProperty<DeclarativeColor> rowColors READ rowColors REVISION(6, 3))
Q_CLASSINFO("DefaultProperty", "seriesChildren")
QML_NAMED_ELEMENT(Bar3DSeries)
@@ -91,10 +67,19 @@ public:
void setMultiHighlightGradient(ColorGradient *gradient);
ColorGradient *multiHighlightGradient() const;
+ QQmlListProperty<DeclarativeColor> rowColors();
+ static void appendRowColorsFunc(QQmlListProperty<DeclarativeColor> *list,
+ DeclarativeColor *color);
+ static qsizetype countRowColorsFunc(QQmlListProperty<DeclarativeColor> *list);
+ static DeclarativeColor *atRowColorsFunc(QQmlListProperty<DeclarativeColor> *list,
+ qsizetype index);
+ static void clearRowColorsFunc(QQmlListProperty<DeclarativeColor> *list);
+
public Q_SLOTS:
void handleBaseGradientUpdate();
void handleSingleHighlightGradientUpdate();
void handleMultiHighlightGradientUpdate();
+ void handleRowColorUpdate();
Q_SIGNALS:
void selectedBarChanged(const QPointF &position);
@@ -106,6 +91,14 @@ private:
ColorGradient *m_baseGradient; // Not owned
ColorGradient *m_singleHighlightGradient; // Not owned
ColorGradient *m_multiHighlightGradient; // Not owned
+
+ QList<DeclarativeColor *> m_rowColors;
+ bool m_dummyColors;
+
+ void addColor(DeclarativeColor *color);
+ QList<DeclarativeColor *> colorList();
+ void clearColors();
+ void clearDummyColors();
};
class DeclarativeScatter3DSeries : public QScatter3DSeries
diff --git a/src/datavisualizationqml/declarativesurface.cpp b/src/datavisualizationqml/declarativesurface.cpp
index d422992a..cff80e98 100644
--- a/src/datavisualizationqml/declarativesurface.cpp
+++ b/src/datavisualizationqml/declarativesurface.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "declarativesurface_p.h"
#include <QtCore/QMutexLocker>
diff --git a/src/datavisualizationqml/declarativesurface_p.h b/src/datavisualizationqml/declarativesurface_p.h
index 71f3c470..4634834a 100644
--- a/src/datavisualizationqml/declarativesurface_p.h
+++ b/src/datavisualizationqml/declarativesurface_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/declarativetheme.cpp b/src/datavisualizationqml/declarativetheme.cpp
index 282f14b1..02f3becc 100644
--- a/src/datavisualizationqml/declarativetheme.cpp
+++ b/src/datavisualizationqml/declarativetheme.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "declarativetheme_p.h"
diff --git a/src/datavisualizationqml/declarativetheme_p.h b/src/datavisualizationqml/declarativetheme_p.h
index ea59641d..8bc2f049 100644
--- a/src/datavisualizationqml/declarativetheme_p.h
+++ b/src/datavisualizationqml/declarativetheme_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/src/datavisualizationqml/designer/Bars3DSpecifics.qml b/src/datavisualizationqml/designer/Bars3DSpecifics.qml
index cd1e76b4..d509fd84 100644
--- a/src/datavisualizationqml/designer/Bars3DSpecifics.qml
+++ b/src/datavisualizationqml/designer/Bars3DSpecifics.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import HelperWidgets 2.0
diff --git a/src/datavisualizationqml/designer/Scatter3DSpecifics.qml b/src/datavisualizationqml/designer/Scatter3DSpecifics.qml
index b864fb16..ffc79d44 100644
--- a/src/datavisualizationqml/designer/Scatter3DSpecifics.qml
+++ b/src/datavisualizationqml/designer/Scatter3DSpecifics.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import HelperWidgets 2.0
diff --git a/src/datavisualizationqml/designer/Surface3DSpecifics.qml b/src/datavisualizationqml/designer/Surface3DSpecifics.qml
index 90c2f763..33ca7d75 100644
--- a/src/datavisualizationqml/designer/Surface3DSpecifics.qml
+++ b/src/datavisualizationqml/designer/Surface3DSpecifics.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import HelperWidgets 2.0
diff --git a/src/datavisualizationqml/designer/default/Bars3D.qml b/src/datavisualizationqml/designer/default/Bars3D.qml
index 32f4c939..8c56b67c 100644
--- a/src/datavisualizationqml/designer/default/Bars3D.qml
+++ b/src/datavisualizationqml/designer/default/Bars3D.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/src/datavisualizationqml/designer/default/Scatter3D.qml b/src/datavisualizationqml/designer/default/Scatter3D.qml
index 2c92d192..5a6cd261 100644
--- a/src/datavisualizationqml/designer/default/Scatter3D.qml
+++ b/src/datavisualizationqml/designer/default/Scatter3D.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/src/datavisualizationqml/designer/default/Surface3D.qml b/src/datavisualizationqml/designer/default/Surface3D.qml
index 66fd10fb..24561890 100644
--- a/src/datavisualizationqml/designer/default/Surface3D.qml
+++ b/src/datavisualizationqml/designer/default/Surface3D.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/src/datavisualizationqml/enumtostringmap.cpp b/src/datavisualizationqml/enumtostringmap.cpp
index e10e8bc0..c411f7a9 100644
--- a/src/datavisualizationqml/enumtostringmap.cpp
+++ b/src/datavisualizationqml/enumtostringmap.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "enumtostringmap_p.h"
diff --git a/src/datavisualizationqml/enumtostringmap_p.h b/src/datavisualizationqml/enumtostringmap_p.h
index ee613433..b8be3f18 100644
--- a/src/datavisualizationqml/enumtostringmap_p.h
+++ b/src/datavisualizationqml/enumtostringmap_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -47,6 +21,7 @@
#include <QtGui/qopengl.h>
#include <QMap>
#include <QString>
+#include <private/qglobal_p.h>
class EnumToStringMap
{
diff --git a/src/datavisualizationqml/foreigntypes_p.h b/src/datavisualizationqml/foreigntypes_p.h
index 9bf9b1c7..0b92d862 100644
--- a/src/datavisualizationqml/foreigntypes_p.h
+++ b/src/datavisualizationqml/foreigntypes_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
@@ -72,6 +46,7 @@
#include <QtDataVisualization/qtouch3dinputhandler.h>
#include <QtDataVisualization/qvalue3daxis.h>
#include <QtDataVisualization/qvalue3daxisformatter.h>
+#include <QtCore/private/qglobal_p.h>
QT_BEGIN_NAMESPACE
@@ -82,20 +57,20 @@ QT_BEGIN_NAMESPACE
QML_ADDED_IN_VERSION(1, minor) \
#define DEFINE_FOREIGN_UNCREATABLE_TYPE(type, name) \
- struct type##Foreign \
+ struct type##DataVisForeign \
{ \
DEFINE_FOREIGN_BASE_ATTRIBUTES(type, name, 0) \
QML_UNCREATABLE("Trying to create uncreatable: " #name ".") \
};
#define DEFINE_FOREIGN_CREATABLE_TYPE(type, name, minor) \
- struct type##Foreign \
+ struct type##DataVisForeign \
{ \
DEFINE_FOREIGN_BASE_ATTRIBUTES(type, name, minor) \
};
#define DEFINE_FOREIGN_REPLACED_TYPE(type, name, better) \
- struct type##Foreign \
+ struct type##DataVisForeign \
{ \
DEFINE_FOREIGN_BASE_ATTRIBUTES(type, name, 0) \
QML_UNCREATABLE("Trying to create uncreatable: " #name ", use " #better " instead.") \
diff --git a/src/datavisualizationqml/glstatestore.cpp b/src/datavisualizationqml/glstatestore.cpp
index dfb4266f..573835a3 100644
--- a/src/datavisualizationqml/glstatestore.cpp
+++ b/src/datavisualizationqml/glstatestore.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "glstatestore_p.h"
#include <QDebug>
diff --git a/src/datavisualizationqml/glstatestore_p.h b/src/datavisualizationqml/glstatestore_p.h
index f5aa0bdd..b34a4c0d 100644
--- a/src/datavisualizationqml/glstatestore_p.h
+++ b/src/datavisualizationqml/glstatestore_p.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//
// W A R N I N G
diff --git a/sync.profile b/sync.profile
deleted file mode 100644
index 5a56ccc6..00000000
--- a/sync.profile
+++ /dev/null
@@ -1,16 +0,0 @@
-%modules = ( # path to module name map
- "QtDataVisualization" => "$basedir/src/datavisualization",
- "QtDataVisualizationQml" => "$basedir/src/datavisualizationqml",
-);
-%moduleheaders = ( # restrict the module headers to those found in relative path
-);
-# Module dependencies.
-# Every module that is required to build this module should have one entry.
-# Each of the module version specifiers can take one of the following values:
-# - A specific Git revision.
-# - any git symbolic ref resolvable from the module's repository (e.g. "refs/heads/master" to track master branch)
-#
-%dependencies = (
- "qtbase" => "",
- "qtdeclarative" => "",
-);
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 7d60f9ff..898ece00 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
if(QT_BUILD_STANDALONE_TESTS)
endif()
qt_build_tests()
diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt
index ffa2e824..6f440eaa 100644
--- a/tests/auto/CMakeLists.txt
+++ b/tests/auto/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
if(NOT ANDROID)
add_subdirectory(cpptest)
endif()
diff --git a/tests/auto/cpptest/CMakeLists.txt b/tests/auto/cpptest/CMakeLists.txt
index bed23651..939b32c9 100644
--- a/tests/auto/cpptest/CMakeLists.txt
+++ b/tests/auto/cpptest/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
add_subdirectory(q3dbars)
add_subdirectory(q3dbars-proxy)
add_subdirectory(q3dbars-modelproxy)
diff --git a/tests/auto/cpptest/common/cpptestutil.h b/tests/auto/cpptest/common/cpptestutil.h
index 986ba8b9..546c60f9 100644
--- a/tests/auto/cpptest/common/cpptestutil.h
+++ b/tests/auto/cpptest/common/cpptestutil.h
@@ -1,30 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#ifndef CPPTESTUTIL_H
#define CPPTESTUTIL_H
diff --git a/tests/auto/cpptest/q3daxis-category/CMakeLists.txt b/tests/auto/cpptest/q3daxis-category/CMakeLists.txt
index 3bac4408..f148b184 100644
--- a/tests/auto/cpptest/q3daxis-category/CMakeLists.txt
+++ b/tests/auto/cpptest/q3daxis-category/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3daxis-category
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3daxis-category_datavis
SOURCES
tst_axis.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3daxis-category/tst_axis.cpp b/tests/auto/cpptest/q3daxis-category/tst_axis.cpp
index ef0d36ef..d1440d6a 100644
--- a/tests/auto/cpptest/q3daxis-category/tst_axis.cpp
+++ b/tests/auto/cpptest/q3daxis-category/tst_axis.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -80,7 +54,7 @@ void tst_axis::initialProperties()
{
QVERIFY(m_axis);
- QCOMPARE(m_axis->labels().length(), 0);
+ QCOMPARE(m_axis->labels().size(), 0);
// Common (from QAbstract3DAxis)
QCOMPARE(m_axis->isAutoAdjustRange(), true);
@@ -100,7 +74,7 @@ void tst_axis::initializeProperties()
m_axis->setLabels(QStringList() << "first" << "second");
- QCOMPARE(m_axis->labels().length(), 2);
+ QCOMPARE(m_axis->labels().size(), 2);
QCOMPARE(m_axis->labels().at(1), QString("second"));
// Common (from QAbstract3DAxis)
diff --git a/tests/auto/cpptest/q3daxis-logvalue/CMakeLists.txt b/tests/auto/cpptest/q3daxis-logvalue/CMakeLists.txt
index 1c5932d1..0bba27a9 100644
--- a/tests/auto/cpptest/q3daxis-logvalue/CMakeLists.txt
+++ b/tests/auto/cpptest/q3daxis-logvalue/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3daxis-logvalue
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3daxis-logvalue_datavis
SOURCES
tst_axis.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3daxis-logvalue/tst_axis.cpp b/tests/auto/cpptest/q3daxis-logvalue/tst_axis.cpp
index 9382f887..cf2b055c 100644
--- a/tests/auto/cpptest/q3daxis-logvalue/tst_axis.cpp
+++ b/tests/auto/cpptest/q3daxis-logvalue/tst_axis.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3daxis-value/CMakeLists.txt b/tests/auto/cpptest/q3daxis-value/CMakeLists.txt
index addb2c10..5c412106 100644
--- a/tests/auto/cpptest/q3daxis-value/CMakeLists.txt
+++ b/tests/auto/cpptest/q3daxis-value/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3daxis-value
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3daxis-value_datavis
SOURCES
tst_axis.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3daxis-value/tst_axis.cpp b/tests/auto/cpptest/q3daxis-value/tst_axis.cpp
index 3b8455ca..54d36d3d 100644
--- a/tests/auto/cpptest/q3daxis-value/tst_axis.cpp
+++ b/tests/auto/cpptest/q3daxis-value/tst_axis.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -88,7 +62,7 @@ void tst_axis::initialProperties()
// Common (from QAbstract3DAxis)
QCOMPARE(m_axis->isAutoAdjustRange(), true);
QCOMPARE(m_axis->labelAutoRotation(), 0.0f);
- QCOMPARE(m_axis->labels().length(), 6);
+ QCOMPARE(m_axis->labels().size(), 6);
QCOMPARE(m_axis->labels().at(0), QString("0.00"));
QCOMPARE(m_axis->labels().at(1), QString("2.00"));
QCOMPARE(m_axis->labels().at(2), QString("4.00"));
@@ -129,7 +103,7 @@ void tst_axis::initializeProperties()
QCOMPARE(m_axis->isAutoAdjustRange(), false);
QCOMPARE(m_axis->labelAutoRotation(), 15.0f);
- QCOMPARE(m_axis->labels().length(), 3);
+ QCOMPARE(m_axis->labels().size(), 3);
QCOMPARE(m_axis->labels().at(0), QString("5m"));
QCOMPARE(m_axis->labels().at(1), QString("15m"));
QCOMPARE(m_axis->labels().at(2), QString("25m"));
diff --git a/tests/auto/cpptest/q3dbars-modelproxy/CMakeLists.txt b/tests/auto/cpptest/q3dbars-modelproxy/CMakeLists.txt
index 89fcaa60..f9b05902 100644
--- a/tests/auto/cpptest/q3dbars-modelproxy/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dbars-modelproxy/CMakeLists.txt
@@ -1,9 +1,12 @@
-qt_internal_add_test(q3dbars-modelproxy
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dbars-modelproxy_datavis
SOURCES
tst_proxy.cpp
INCLUDE_DIRECTORIES
../common
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::GuiPrivate
Qt::Widgets
diff --git a/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp
index dd5d7284..424aad3f 100644
--- a/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp
+++ b/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -92,8 +66,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->columnRole(), QString(""));
QCOMPARE(proxy->valueRole(), QString("val"));
QCOMPARE(proxy->rotationRole(), QString(""));
- QCOMPARE(proxy->rowCategories().length(), 0);
- QCOMPARE(proxy->columnCategories().length(), 0);
+ QCOMPARE(proxy->rowCategories().size(), 0);
+ QCOMPARE(proxy->columnCategories().size(), 0);
delete proxy;
proxy = new QItemModelBarDataProxy(table->model(), "row", "col", "val");
@@ -102,8 +76,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->columnRole(), QString("col"));
QCOMPARE(proxy->valueRole(), QString("val"));
QCOMPARE(proxy->rotationRole(), QString(""));
- QCOMPARE(proxy->rowCategories().length(), 0);
- QCOMPARE(proxy->columnCategories().length(), 0);
+ QCOMPARE(proxy->rowCategories().size(), 0);
+ QCOMPARE(proxy->columnCategories().size(), 0);
delete proxy;
proxy = new QItemModelBarDataProxy(table->model(), "row", "col", "val", "rot");
@@ -112,8 +86,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->columnRole(), QString("col"));
QCOMPARE(proxy->valueRole(), QString("val"));
QCOMPARE(proxy->rotationRole(), QString("rot"));
- QCOMPARE(proxy->rowCategories().length(), 0);
- QCOMPARE(proxy->columnCategories().length(), 0);
+ QCOMPARE(proxy->rowCategories().size(), 0);
+ QCOMPARE(proxy->columnCategories().size(), 0);
delete proxy;
proxy = new QItemModelBarDataProxy(table->model(), "row", "col", "val",
@@ -123,8 +97,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->columnRole(), QString("col"));
QCOMPARE(proxy->valueRole(), QString("val"));
QCOMPARE(proxy->rotationRole(), QString(""));
- QCOMPARE(proxy->rowCategories().length(), 1);
- QCOMPARE(proxy->columnCategories().length(), 1);
+ QCOMPARE(proxy->rowCategories().size(), 1);
+ QCOMPARE(proxy->columnCategories().size(), 1);
delete proxy;
proxy = new QItemModelBarDataProxy(table->model(), "row", "col", "val", "rot",
@@ -134,8 +108,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->columnRole(), QString("col"));
QCOMPARE(proxy->valueRole(), QString("val"));
QCOMPARE(proxy->rotationRole(), QString("rot"));
- QCOMPARE(proxy->rowCategories().length(), 1);
- QCOMPARE(proxy->columnCategories().length(), 1);
+ QCOMPARE(proxy->rowCategories().size(), 1);
+ QCOMPARE(proxy->columnCategories().size(), 1);
delete proxy;
}
@@ -163,9 +137,9 @@ void tst_proxy::initialProperties()
QCOMPARE(m_proxy->valueRolePattern(), QRegularExpression());
QCOMPARE(m_proxy->valueRoleReplace(), QString());
- QCOMPARE(m_proxy->columnLabels().count(), 0);
+ QCOMPARE(m_proxy->columnLabels().size(), 0);
QCOMPARE(m_proxy->rowCount(), 0);
- QCOMPARE(m_proxy->rowLabels().count(), 0);
+ QCOMPARE(m_proxy->rowLabels().size(), 0);
QVERIFY(!m_proxy->series());
QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeBar);
@@ -199,7 +173,7 @@ void tst_proxy::initializeProperties()
QCOMPARE(m_proxy->autoColumnCategories(), false);
QCOMPARE(m_proxy->autoRowCategories(), false);
- QCOMPARE(m_proxy->columnCategories().count(), 2);
+ QCOMPARE(m_proxy->columnCategories().size(), 2);
QCOMPARE(m_proxy->columnRole(), QString("column"));
QCOMPARE(m_proxy->columnRolePattern(), QRegularExpression("/^.*-(\\d\\d)$/"));
QCOMPARE(m_proxy->columnRoleReplace(), QString("\\\\1"));
@@ -208,7 +182,7 @@ void tst_proxy::initializeProperties()
QCOMPARE(m_proxy->rotationRole(), QString("rotation"));
QCOMPARE(m_proxy->rotationRolePattern(), QRegularExpression("/-/"));
QCOMPARE(m_proxy->rotationRoleReplace(), QString("\\\\1"));
- QCOMPARE(m_proxy->rowCategories().count(), 2);
+ QCOMPARE(m_proxy->rowCategories().size(), 2);
QCOMPARE(m_proxy->rowRole(), QString("row"));
QCOMPARE(m_proxy->rowRolePattern(), QRegularExpression("/^(\\d\\d\\d\\d).*$/"));
QCOMPARE(m_proxy->rowRoleReplace(), QString("\\\\1"));
@@ -272,9 +246,9 @@ void tst_proxy::multiMatch()
QCoreApplication::processEvents();
QCOMPARE(graph.valueAxis()->max(), 15.0f);
- QCOMPARE(m_proxy->columnLabels().count(), 1);
+ QCOMPARE(m_proxy->columnLabels().size(), 1);
QCOMPARE(m_proxy->rowCount(), 1);
- QCOMPARE(m_proxy->rowLabels().count(), 1);
+ QCOMPARE(m_proxy->rowLabels().size(), 1);
QVERIFY(m_proxy->series());
m_proxy = 0; // Proxy gets deleted as graph gets deleted
diff --git a/tests/auto/cpptest/q3dbars-proxy/CMakeLists.txt b/tests/auto/cpptest/q3dbars-proxy/CMakeLists.txt
index d257b113..23c6997d 100644
--- a/tests/auto/cpptest/q3dbars-proxy/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dbars-proxy/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dbars-proxy
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dbars-proxy_datavis
SOURCES
tst_proxy.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp b/tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp
index 0a9dec52..4c343cb4 100644
--- a/tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp
+++ b/tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -79,9 +53,9 @@ void tst_proxy::initialProperties()
{
QVERIFY(m_proxy);
- QCOMPARE(m_proxy->columnLabels().count(), 0);
+ QCOMPARE(m_proxy->columnLabels().size(), 0);
QCOMPARE(m_proxy->rowCount(), 0);
- QCOMPARE(m_proxy->rowLabels().count(), 0);
+ QCOMPARE(m_proxy->rowLabels().size(), 0);
QVERIFY(!m_proxy->series());
QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeBar);
@@ -97,9 +71,9 @@ void tst_proxy::initializeProperties()
m_proxy->addRow(data);
m_proxy->setRowLabels(QStringList() << "1");
- QCOMPARE(m_proxy->columnLabels().count(), 3);
+ QCOMPARE(m_proxy->columnLabels().size(), 3);
QCOMPARE(m_proxy->rowCount(), 1);
- QCOMPARE(m_proxy->rowLabels().count(), 1);
+ QCOMPARE(m_proxy->rowLabels().size(), 1);
}
QTEST_MAIN(tst_proxy)
diff --git a/tests/auto/cpptest/q3dbars-series/CMakeLists.txt b/tests/auto/cpptest/q3dbars-series/CMakeLists.txt
index c3e44bef..f160c81c 100644
--- a/tests/auto/cpptest/q3dbars-series/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dbars-series/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dbars-series
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dbars-series_datavis
SOURCES
tst_series.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dbars-series/tst_series.cpp b/tests/auto/cpptest/q3dbars-series/tst_series.cpp
index 11dfd3f2..6e0272ac 100644
--- a/tests/auto/cpptest/q3dbars-series/tst_series.cpp
+++ b/tests/auto/cpptest/q3dbars-series/tst_series.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -90,6 +64,7 @@ void tst_series::initialProperties()
QVERIFY(m_series->dataProxy());
QCOMPARE(m_series->meshAngle(), 0.0f);
QCOMPARE(m_series->selectedBar(), m_series->invalidSelectionPosition());
+ QCOMPARE(m_series->rowColors().size(), 0);
// Common properties
QCOMPARE(m_series->baseColor(), QColor(Qt::black));
@@ -132,6 +107,13 @@ void tst_series::initializeProperties()
gradient3.setColorAt(0.0, Qt::white);
gradient3.setColorAt(1.0, Qt::gray);
+ QList<QColor> rowColors;
+ rowColors.append(QColor(Qt::green));
+ rowColors.append(QColor(Qt::blue));
+ rowColors.append(QColor(Qt::red));
+
+ m_series->setRowColors(rowColors);
+
// Common properties
m_series->setBaseColor(QColor(Qt::blue));
m_series->setBaseGradient(gradient1);
@@ -165,6 +147,11 @@ void tst_series::initializeProperties()
QCOMPARE(m_series->singleHighlightGradient().stops().at(0).second, QColor(Qt::white));
QCOMPARE(m_series->userDefinedMesh(), QString(":/customitem.obj"));
QCOMPARE(m_series->isVisible(), false);
+
+ QCOMPARE(m_series->rowColors().size(), 3);
+ QCOMPARE(m_series->rowColors().at(0), QColor(Qt::green));
+ QCOMPARE(m_series->rowColors().at(1), QColor(Qt::blue));
+ QCOMPARE(m_series->rowColors().at(2), QColor(Qt::red));
}
void tst_series::invalidProperties()
diff --git a/tests/auto/cpptest/q3dbars/CMakeLists.txt b/tests/auto/cpptest/q3dbars/CMakeLists.txt
index 95bb5a3d..c2f05908 100644
--- a/tests/auto/cpptest/q3dbars/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dbars/CMakeLists.txt
@@ -1,9 +1,12 @@
-qt_internal_add_test(q3dbars
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dbars_datavis
SOURCES
tst_bars.cpp
INCLUDE_DIRECTORIES
../common
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::GuiPrivate
Qt::DataVisualization
diff --git a/tests/auto/cpptest/q3dbars/tst_bars.cpp b/tests/auto/cpptest/q3dbars/tst_bars.cpp
index 9c92cc84..96219cb0 100644
--- a/tests/auto/cpptest/q3dbars/tst_bars.cpp
+++ b/tests/auto/cpptest/q3dbars/tst_bars.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -124,7 +98,7 @@ void tst_bars::initialProperties()
QCOMPARE(m_graph->barSpacing(), QSizeF(1.0f, 1.0f));
QCOMPARE(m_graph->barSeriesMargin(), QSizeF(0.0f, 0.0f));
QCOMPARE(m_graph->isBarSpacingRelative(), true);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
QVERIFY(!m_graph->selectedSeries());
QVERIFY(!m_graph->primarySeries());
QCOMPARE(m_graph->floorLevel(), 0.0);
@@ -212,9 +186,9 @@ void tst_bars::invalidProperties()
m_graph->setLocale(QLocale("XX"));
QCOMPARE(m_graph->selectionMode(), QAbstract3DGraph::SelectionItem);
- QCOMPARE(m_graph->aspectRatio(), -1.0/*2.0*/); // TODO: Fix once QTRD-3367 is done
- QCOMPARE(m_graph->horizontalAspectRatio(), -1.0/*0.0*/); // TODO: Fix once QTRD-3367 is done
- QCOMPARE(m_graph->reflectivity(), -1.0/*0.5*/); // TODO: Fix once QTRD-3367 is done
+ QCOMPARE(m_graph->aspectRatio(), 2.0);
+ QCOMPARE(m_graph->horizontalAspectRatio(), 0.0);
+ QCOMPARE(m_graph->reflectivity(), 0.5);
QCOMPARE(m_graph->locale(), QLocale("C"));
}
@@ -224,7 +198,7 @@ void tst_bars::addSeries()
m_graph->addSeries(series);
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
QVERIFY(!m_graph->selectedSeries());
QCOMPARE(m_graph->primarySeries(), series);
}
@@ -239,7 +213,7 @@ void tst_bars::addMultipleSeries()
m_graph->addSeries(series2);
m_graph->addSeries(series3);
- QCOMPARE(m_graph->seriesList().length(), 3);
+ QCOMPARE(m_graph->seriesList().size(), 3);
QCOMPARE(m_graph->primarySeries(), series);
m_graph->setPrimarySeries(series2);
@@ -254,7 +228,7 @@ void tst_bars::selectSeries()
m_graph->addSeries(series);
m_graph->primarySeries()->setSelectedBar(QPoint(0, 0));
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
QCOMPARE(m_graph->selectedSeries(), series);
m_graph->clearSelection();
@@ -267,7 +241,7 @@ void tst_bars::removeSeries()
m_graph->addSeries(series);
m_graph->removeSeries(series);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
delete series;
}
@@ -285,16 +259,16 @@ void tst_bars::removeMultipleSeries()
QCOMPARE(m_graph->selectedSeries(), series);
m_graph->removeSeries(series);
- QCOMPARE(m_graph->seriesList().length(), 2);
+ QCOMPARE(m_graph->seriesList().size(), 2);
QCOMPARE(m_graph->primarySeries(), series2);
QVERIFY(!m_graph->selectedSeries());
m_graph->removeSeries(series2);
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
QCOMPARE(m_graph->primarySeries(), series3);
m_graph->removeSeries(series3);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
delete series;
delete series2;
@@ -320,14 +294,14 @@ void tst_bars::addInputHandler()
m_graph->addInputHandler(handler);
m_graph->addInputHandler(handler2);
- QCOMPARE(m_graph->inputHandlers().length(), 3); // Default, as it is still active, plus added ones
+ QCOMPARE(m_graph->inputHandlers().size(), 3); // Default, as it is still active, plus added ones
QCOMPARE(m_graph->activeInputHandler(), initialHandler);
m_graph->setActiveInputHandler(handler2);
QCOMPARE(m_graph->activeInputHandler(), handler2);
m_graph->setActiveInputHandler(NULL);
QVERIFY(!m_graph->activeInputHandler());
- QCOMPARE(m_graph->inputHandlers().length(), 2);
+ QCOMPARE(m_graph->inputHandlers().size(), 2);
}
void tst_bars::removeInputHandler()
@@ -339,12 +313,12 @@ void tst_bars::removeInputHandler()
m_graph->addInputHandler(handler2);
m_graph->setActiveInputHandler(handler2);
- QCOMPARE(m_graph->inputHandlers().length(), 2); // Default handler removed by previous call
+ QCOMPARE(m_graph->inputHandlers().size(), 2); // Default handler removed by previous call
QCOMPARE(m_graph->activeInputHandler(), handler2);
m_graph->releaseInputHandler(handler2);
- QCOMPARE(m_graph->inputHandlers().length(), 1);
+ QCOMPARE(m_graph->inputHandlers().size(), 1);
m_graph->releaseInputHandler(handler);
- QCOMPARE(m_graph->inputHandlers().length(), 0);
+ QCOMPARE(m_graph->inputHandlers().size(), 0);
delete handler2;
delete handler;
@@ -358,7 +332,7 @@ void tst_bars::addTheme()
m_graph->addTheme(theme);
m_graph->addTheme(theme2);
- QCOMPARE(m_graph->themes().length(), 3); // Default, plus added ones
+ QCOMPARE(m_graph->themes().size(), 3); // Default, plus added ones
QCOMPARE(m_graph->activeTheme(), initialTheme);
m_graph->setActiveTheme(theme2);
QCOMPARE(m_graph->activeTheme(), theme2);
@@ -374,9 +348,9 @@ void tst_bars::removeTheme()
m_graph->setActiveTheme(theme2);
QCOMPARE(m_graph->activeTheme(), theme2);
m_graph->releaseTheme(theme2);
- QCOMPARE(m_graph->themes().length(), 2);
+ QCOMPARE(m_graph->themes().size(), 2);
m_graph->releaseTheme(theme);
- QCOMPARE(m_graph->themes().length(), 1); // Default theme remains
+ QCOMPARE(m_graph->themes().size(), 1); // Default theme remains
delete theme2;
delete theme;
@@ -388,9 +362,9 @@ void tst_bars::addCustomItem()
QCustom3DItem *item2 = new QCustom3DItem();
m_graph->addCustomItem(item);
- QCOMPARE(m_graph->customItems().length(), 1);
+ QCOMPARE(m_graph->customItems().size(), 1);
m_graph->addCustomItem(item2);
- QCOMPARE(m_graph->customItems().length(), 2);
+ QCOMPARE(m_graph->customItems().size(), 2);
}
void tst_bars::removeCustomItem()
@@ -405,14 +379,14 @@ void tst_bars::removeCustomItem()
m_graph->addCustomItem(item3);
m_graph->releaseCustomItem(item);
- QCOMPARE(m_graph->customItems().length(), 2);
+ QCOMPARE(m_graph->customItems().size(), 2);
m_graph->removeCustomItem(item2);
- QCOMPARE(m_graph->customItems().length(), 1);
+ QCOMPARE(m_graph->customItems().size(), 1);
m_graph->addCustomItem(item);
m_graph->removeCustomItemAt(QVector3D(1, 1, 1));
- QCOMPARE(m_graph->customItems().length(), 1);
+ QCOMPARE(m_graph->customItems().size(), 1);
m_graph->removeCustomItems();
- QCOMPARE(m_graph->customItems().length(), 0);
+ QCOMPARE(m_graph->customItems().size(), 0);
}
void tst_bars::renderToImage()
diff --git a/tests/auto/cpptest/q3dcustom-label/CMakeLists.txt b/tests/auto/cpptest/q3dcustom-label/CMakeLists.txt
index ae29c699..3baea7fa 100644
--- a/tests/auto/cpptest/q3dcustom-label/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dcustom-label/CMakeLists.txt
@@ -1,9 +1,12 @@
-qt_internal_add_test(q3dcustom-label
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dcustom-label_datavis
SOURCES
tst_custom.cpp
INCLUDE_DIRECTORIES
../common
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::GuiPrivate
Qt::DataVisualization
diff --git a/tests/auto/cpptest/q3dcustom-label/tst_custom.cpp b/tests/auto/cpptest/q3dcustom-label/tst_custom.cpp
index 4b6b3e5b..6914031f 100644
--- a/tests/auto/cpptest/q3dcustom-label/tst_custom.cpp
+++ b/tests/auto/cpptest/q3dcustom-label/tst_custom.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dcustom-volume/CMakeLists.txt b/tests/auto/cpptest/q3dcustom-volume/CMakeLists.txt
index 5f8d2576..858f2dfc 100644
--- a/tests/auto/cpptest/q3dcustom-volume/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dcustom-volume/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dcustom-volume
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dcustom-volume_datavis
SOURCES
tst_custom.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dcustom-volume/tst_custom.cpp b/tests/auto/cpptest/q3dcustom-volume/tst_custom.cpp
index 495b8ba8..21040df3 100644
--- a/tests/auto/cpptest/q3dcustom-volume/tst_custom.cpp
+++ b/tests/auto/cpptest/q3dcustom-volume/tst_custom.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -96,7 +70,7 @@ void tst_custom::construct()
QCOMPARE(custom->sliceIndexY(), -1);
QCOMPARE(custom->sliceIndexZ(), -1);
QCOMPARE(custom->useHighDefShader(), true);
- QCOMPARE(custom->textureData()->length(), 1000);
+ QCOMPARE(custom->textureData()->size(), 1000);
QCOMPARE(custom->textureDataWidth(), 40);
QCOMPARE(custom->textureFormat(), QImage::Format_ARGB32);
QCOMPARE(custom->textureHeight(), 10);
diff --git a/tests/auto/cpptest/q3dcustom/CMakeLists.txt b/tests/auto/cpptest/q3dcustom/CMakeLists.txt
index e0816b76..4126a884 100644
--- a/tests/auto/cpptest/q3dcustom/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dcustom/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dcustom
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dcustom_datavis
SOURCES
tst_custom.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dcustom/tst_custom.cpp b/tests/auto/cpptest/q3dcustom/tst_custom.cpp
index 19607431..05e09f98 100644
--- a/tests/auto/cpptest/q3dcustom/tst_custom.cpp
+++ b/tests/auto/cpptest/q3dcustom/tst_custom.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dinput-touch/CMakeLists.txt b/tests/auto/cpptest/q3dinput-touch/CMakeLists.txt
index 507c78c8..7550bf2b 100644
--- a/tests/auto/cpptest/q3dinput-touch/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dinput-touch/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dinput-touch
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dinput-touch_datavis
SOURCES
tst_input.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dinput-touch/tst_input.cpp b/tests/auto/cpptest/q3dinput-touch/tst_input.cpp
index c6a5d548..6a11741c 100644
--- a/tests/auto/cpptest/q3dinput-touch/tst_input.cpp
+++ b/tests/auto/cpptest/q3dinput-touch/tst_input.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dinput/CMakeLists.txt b/tests/auto/cpptest/q3dinput/CMakeLists.txt
index 8254b259..ac0fe9a9 100644
--- a/tests/auto/cpptest/q3dinput/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dinput/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dinput
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dinput_datavis
SOURCES
tst_input.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dinput/tst_input.cpp b/tests/auto/cpptest/q3dinput/tst_input.cpp
index 2b36f4aa..95912b8a 100644
--- a/tests/auto/cpptest/q3dinput/tst_input.cpp
+++ b/tests/auto/cpptest/q3dinput/tst_input.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dscatter-modelproxy/CMakeLists.txt b/tests/auto/cpptest/q3dscatter-modelproxy/CMakeLists.txt
index 3f6e0203..438c05f8 100644
--- a/tests/auto/cpptest/q3dscatter-modelproxy/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dscatter-modelproxy/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dscatter-modelproxy
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dscatter-modelproxy_datavis
SOURCES
tst_proxy.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::Widgets
Qt::DataVisualization
diff --git a/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp
index 9bcfbe8a..d6950f1f 100644
--- a/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp
+++ b/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dscatter-proxy/CMakeLists.txt b/tests/auto/cpptest/q3dscatter-proxy/CMakeLists.txt
index 7875bab5..c813e9fb 100644
--- a/tests/auto/cpptest/q3dscatter-proxy/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dscatter-proxy/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dscatter-proxy
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dscatter-proxy_datavis
SOURCES
tst_proxy.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp b/tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp
index 1d40e845..e2633225 100644
--- a/tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp
+++ b/tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dscatter-series/CMakeLists.txt b/tests/auto/cpptest/q3dscatter-series/CMakeLists.txt
index 7191dec6..c2eb2c4a 100644
--- a/tests/auto/cpptest/q3dscatter-series/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dscatter-series/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dscatter-series
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dscatter-series_datavis
SOURCES
tst_series.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dscatter-series/tst_series.cpp b/tests/auto/cpptest/q3dscatter-series/tst_series.cpp
index aa5cc205..c0c23b07 100644
--- a/tests/auto/cpptest/q3dscatter-series/tst_series.cpp
+++ b/tests/auto/cpptest/q3dscatter-series/tst_series.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dscatter/CMakeLists.txt b/tests/auto/cpptest/q3dscatter/CMakeLists.txt
index 78136693..176fb66e 100644
--- a/tests/auto/cpptest/q3dscatter/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dscatter/CMakeLists.txt
@@ -1,9 +1,12 @@
-qt_internal_add_test(q3dscatter
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dscatter_datavis
SOURCES
tst_scatter.cpp
INCLUDE_DIRECTORIES
../common
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::GuiPrivate
Qt::DataVisualization
diff --git a/tests/auto/cpptest/q3dscatter/tst_scatter.cpp b/tests/auto/cpptest/q3dscatter/tst_scatter.cpp
index cd39ab8d..f6ac402e 100644
--- a/tests/auto/cpptest/q3dscatter/tst_scatter.cpp
+++ b/tests/auto/cpptest/q3dscatter/tst_scatter.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -104,7 +78,7 @@ void tst_scatter::construct()
void tst_scatter::initialProperties()
{
QVERIFY(m_graph);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
QVERIFY(!m_graph->selectedSeries());
QCOMPARE(m_graph->axisX()->orientation(), QAbstract3DAxis::AxisOrientationX);
QCOMPARE(m_graph->axisY()->orientation(), QAbstract3DAxis::AxisOrientationY);
@@ -174,9 +148,9 @@ void tst_scatter::invalidProperties()
m_graph->setLocale(QLocale("XX"));
QCOMPARE(m_graph->selectionMode(), QAbstract3DGraph::SelectionItem);
- QCOMPARE(m_graph->aspectRatio(), -1.0/*2.0*/); // TODO: Fix once QTRD-3367 is done
- QCOMPARE(m_graph->horizontalAspectRatio(), -1.0/*0.0*/); // TODO: Fix once QTRD-3367 is done
- QCOMPARE(m_graph->reflectivity(), -1.0/*0.5*/); // TODO: Fix once QTRD-3367 is done
+ QCOMPARE(m_graph->aspectRatio(), 2.0);
+ QCOMPARE(m_graph->horizontalAspectRatio(), 0.0);
+ QCOMPARE(m_graph->reflectivity(), 0.5);
QCOMPARE(m_graph->locale(), QLocale("C"));
}
@@ -184,7 +158,7 @@ void tst_scatter::addSeries()
{
m_graph->addSeries(newSeries());
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
QVERIFY(!m_graph->selectedSeries());
}
@@ -198,7 +172,7 @@ void tst_scatter::addMultipleSeries()
m_graph->addSeries(series2);
m_graph->addSeries(series3);
- QCOMPARE(m_graph->seriesList().length(), 3);
+ QCOMPARE(m_graph->seriesList().size(), 3);
}
void tst_scatter::selectSeries()
@@ -208,7 +182,7 @@ void tst_scatter::selectSeries()
m_graph->addSeries(series);
m_graph->seriesList()[0]->setSelectedItem(1);
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
QCOMPARE(m_graph->selectedSeries(), series);
m_graph->clearSelection();
@@ -221,7 +195,7 @@ void tst_scatter::removeSeries()
m_graph->addSeries(series);
m_graph->removeSeries(series);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
delete series;
}
@@ -240,14 +214,14 @@ void tst_scatter::removeMultipleSeries()
QCOMPARE(m_graph->selectedSeries(), series);
m_graph->removeSeries(series);
- QCOMPARE(m_graph->seriesList().length(), 2);
+ QCOMPARE(m_graph->seriesList().size(), 2);
QVERIFY(!m_graph->selectedSeries());
m_graph->removeSeries(series2);
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
m_graph->removeSeries(series3);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
delete series;
delete series2;
diff --git a/tests/auto/cpptest/q3dscene-camera/CMakeLists.txt b/tests/auto/cpptest/q3dscene-camera/CMakeLists.txt
index e8abcd46..63cd964c 100644
--- a/tests/auto/cpptest/q3dscene-camera/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dscene-camera/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dscene-camera
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dscene-camera_datavis
SOURCES
tst_camera.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dscene-camera/tst_camera.cpp b/tests/auto/cpptest/q3dscene-camera/tst_camera.cpp
index dbfb1367..8c8f4b45 100644
--- a/tests/auto/cpptest/q3dscene-camera/tst_camera.cpp
+++ b/tests/auto/cpptest/q3dscene-camera/tst_camera.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dscene-light/CMakeLists.txt b/tests/auto/cpptest/q3dscene-light/CMakeLists.txt
index 5908e8ce..fc70b804 100644
--- a/tests/auto/cpptest/q3dscene-light/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dscene-light/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dscene-light
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dscene-light_datavis
SOURCES
tst_light.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dscene-light/tst_light.cpp b/tests/auto/cpptest/q3dscene-light/tst_light.cpp
index a02ee1ed..fb5ba325 100644
--- a/tests/auto/cpptest/q3dscene-light/tst_light.cpp
+++ b/tests/auto/cpptest/q3dscene-light/tst_light.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dscene/CMakeLists.txt b/tests/auto/cpptest/q3dscene/CMakeLists.txt
index 766d3388..a7c25ff2 100644
--- a/tests/auto/cpptest/q3dscene/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dscene/CMakeLists.txt
@@ -1,9 +1,12 @@
-qt_internal_add_test(q3dscene
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dscene_datavis
SOURCES
tst_scene.cpp
INCLUDE_DIRECTORIES
../common
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::GuiPrivate
Qt::DataVisualization
diff --git a/tests/auto/cpptest/q3dscene/tst_scene.cpp b/tests/auto/cpptest/q3dscene/tst_scene.cpp
index b40072ef..23d3392c 100644
--- a/tests/auto/cpptest/q3dscene/tst_scene.cpp
+++ b/tests/auto/cpptest/q3dscene/tst_scene.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dsurface-heightproxy/CMakeLists.txt b/tests/auto/cpptest/q3dsurface-heightproxy/CMakeLists.txt
index ddff28fd..b7285b3a 100644
--- a/tests/auto/cpptest/q3dsurface-heightproxy/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dsurface-heightproxy/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dsurface-heightproxy
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dsurface-heightproxy_datavis
SOURCES
tst_proxy.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
@@ -10,7 +13,7 @@ set(q3dsurface-heightproxy_resource_files
"customtexture.jpg"
)
-qt_internal_add_resource(q3dsurface-heightproxy "q3dsurface-heightproxy"
+qt_internal_add_resource(q3dsurface-heightproxy_datavis "q3dsurface-heightproxy"
PREFIX
"/"
FILES
diff --git a/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.qrc b/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.qrc
deleted file mode 100644
index b83c7ef9..00000000
--- a/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>customtexture.jpg</file>
- </qresource>
-</RCC>
diff --git a/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp
index 4bc88405..2d28398a 100644
--- a/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp
+++ b/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dsurface-modelproxy-nan/CMakeLists.txt b/tests/auto/cpptest/q3dsurface-modelproxy-nan/CMakeLists.txt
index 8125bd21..835a3bad 100644
--- a/tests/auto/cpptest/q3dsurface-modelproxy-nan/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dsurface-modelproxy-nan/CMakeLists.txt
@@ -1,9 +1,12 @@
-qt_internal_add_test(q3dsurface-modelproxy-nan
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dsurface-modelproxy-nan_datavis
SOURCES
tst_proxy.cpp
INCLUDE_DIRECTORIES
../common
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::GuiPrivate
Qt::Widgets
diff --git a/tests/auto/cpptest/q3dsurface-modelproxy-nan/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-modelproxy-nan/tst_proxy.cpp
index 53b9ac39..c6e0841a 100644
--- a/tests/auto/cpptest/q3dsurface-modelproxy-nan/tst_proxy.cpp
+++ b/tests/auto/cpptest/q3dsurface-modelproxy-nan/tst_proxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dsurface-modelproxy/CMakeLists.txt b/tests/auto/cpptest/q3dsurface-modelproxy/CMakeLists.txt
index 0738ba32..4b42431a 100644
--- a/tests/auto/cpptest/q3dsurface-modelproxy/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dsurface-modelproxy/CMakeLists.txt
@@ -1,9 +1,12 @@
-qt_internal_add_test(q3dsurface-modelproxy
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dsurface-modelproxy_datavis
SOURCES
tst_proxy.cpp
INCLUDE_DIRECTORIES
../common
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::GuiPrivate
Qt::Widgets
diff --git a/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp
index 09c0c383..a442b1f3 100644
--- a/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp
+++ b/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -94,8 +68,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->xPosRole(), QString(""));
QCOMPARE(proxy->yPosRole(), QString("y"));
QCOMPARE(proxy->zPosRole(), QString(""));
- QCOMPARE(proxy->rowCategories().length(), 0);
- QCOMPARE(proxy->columnCategories().length(), 0);
+ QCOMPARE(proxy->rowCategories().size(), 0);
+ QCOMPARE(proxy->columnCategories().size(), 0);
delete proxy;
proxy = new QItemModelSurfaceDataProxy(table.model(), "row", "column", "y");
@@ -105,8 +79,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->xPosRole(), QString("column"));
QCOMPARE(proxy->yPosRole(), QString("y"));
QCOMPARE(proxy->zPosRole(), QString("row"));
- QCOMPARE(proxy->rowCategories().length(), 0);
- QCOMPARE(proxy->columnCategories().length(), 0);
+ QCOMPARE(proxy->rowCategories().size(), 0);
+ QCOMPARE(proxy->columnCategories().size(), 0);
delete proxy;
proxy = new QItemModelSurfaceDataProxy(table.model(), "row", "column", "x", "y", "z");
@@ -116,8 +90,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->xPosRole(), QString("x"));
QCOMPARE(proxy->yPosRole(), QString("y"));
QCOMPARE(proxy->zPosRole(), QString("z"));
- QCOMPARE(proxy->rowCategories().length(), 0);
- QCOMPARE(proxy->columnCategories().length(), 0);
+ QCOMPARE(proxy->rowCategories().size(), 0);
+ QCOMPARE(proxy->columnCategories().size(), 0);
delete proxy;
proxy = new QItemModelSurfaceDataProxy(table.model(), "row", "column", "y",
@@ -128,8 +102,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->xPosRole(), QString("column"));
QCOMPARE(proxy->yPosRole(), QString("y"));
QCOMPARE(proxy->zPosRole(), QString("row"));
- QCOMPARE(proxy->rowCategories().length(), 1);
- QCOMPARE(proxy->columnCategories().length(), 1);
+ QCOMPARE(proxy->rowCategories().size(), 1);
+ QCOMPARE(proxy->columnCategories().size(), 1);
delete proxy;
proxy = new QItemModelSurfaceDataProxy(table.model(), "row", "column", "x", "y", "z",
@@ -140,8 +114,8 @@ void tst_proxy::construct()
QCOMPARE(proxy->xPosRole(), QString("x"));
QCOMPARE(proxy->yPosRole(), QString("y"));
QCOMPARE(proxy->zPosRole(), QString("z"));
- QCOMPARE(proxy->rowCategories().length(), 1);
- QCOMPARE(proxy->columnCategories().length(), 1);
+ QCOMPARE(proxy->rowCategories().size(), 1);
+ QCOMPARE(proxy->columnCategories().size(), 1);
delete proxy;
}
@@ -210,13 +184,13 @@ void tst_proxy::initializeProperties()
QCOMPARE(m_proxy->autoColumnCategories(), false);
QCOMPARE(m_proxy->autoRowCategories(), false);
- QCOMPARE(m_proxy->columnCategories().count(), 2);
+ QCOMPARE(m_proxy->columnCategories().size(), 2);
QCOMPARE(m_proxy->columnRole(), QString("column"));
QCOMPARE(m_proxy->columnRolePattern(), QRegularExpression("/^.*-(\\d\\d)$/"));
QCOMPARE(m_proxy->columnRoleReplace(), QString("\\\\1"));
QVERIFY(m_proxy->itemModel());
QCOMPARE(m_proxy->multiMatchBehavior(), QItemModelSurfaceDataProxy::MMBAverage);
- QCOMPARE(m_proxy->rowCategories().count(), 2);
+ QCOMPARE(m_proxy->rowCategories().size(), 2);
QCOMPARE(m_proxy->rowRole(), QString("row"));
QCOMPARE(m_proxy->rowRolePattern(), QRegularExpression("/^(\\d\\d\\d\\d).*$/"));
QCOMPARE(m_proxy->rowRoleReplace(), QString("\\\\1"));
diff --git a/tests/auto/cpptest/q3dsurface-proxy/CMakeLists.txt b/tests/auto/cpptest/q3dsurface-proxy/CMakeLists.txt
index 868c6e3e..5553d635 100644
--- a/tests/auto/cpptest/q3dsurface-proxy/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dsurface-proxy/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dsurface-proxy
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dsurface-proxy_datavis
SOURCES
tst_proxy.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp
index 16025964..bc5d9edc 100644
--- a/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp
+++ b/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
diff --git a/tests/auto/cpptest/q3dsurface-series/CMakeLists.txt b/tests/auto/cpptest/q3dsurface-series/CMakeLists.txt
index cd85f2ce..283829bd 100644
--- a/tests/auto/cpptest/q3dsurface-series/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dsurface-series/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dsurface-series
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dsurface-series_datavis
SOURCES
tst_series.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dsurface-series/tst_series.cpp b/tests/auto/cpptest/q3dsurface-series/tst_series.cpp
index 9a097d6e..59befddc 100644
--- a/tests/auto/cpptest/q3dsurface-series/tst_series.cpp
+++ b/tests/auto/cpptest/q3dsurface-series/tst_series.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -92,7 +66,7 @@ void tst_series::initialProperties()
QCOMPARE(m_series->isFlatShadingEnabled(), true);
QCOMPARE(m_series->isFlatShadingSupported(), true);
QCOMPARE(m_series->selectedPoint(), m_series->invalidSelectionPosition());
- QCOMPARE(m_series->wireFrameColor(), QColor(Qt::black));
+ QCOMPARE(m_series->wireframeColor(), QColor(Qt::black));
// Common properties. The ones identical between different series are tested in QBar3DSeries tests
QCOMPARE(m_series->itemLabelFormat(), QString("@xLabel, @yLabel, @zLabel"));
QCOMPARE(m_series->mesh(), QAbstract3DSeries::MeshSphere);
@@ -107,12 +81,12 @@ void tst_series::initializeProperties()
m_series->setDrawMode(QSurface3DSeries::DrawWireframe);
m_series->setFlatShadingEnabled(false);
m_series->setSelectedPoint(QPoint(0, 0));
- m_series->setWireFrameColor(QColor(Qt::red));
+ m_series->setWireframeColor(QColor(Qt::red));
QCOMPARE(m_series->drawMode(), QSurface3DSeries::DrawWireframe);
QCOMPARE(m_series->isFlatShadingEnabled(), false);
QCOMPARE(m_series->selectedPoint(), QPoint(0, 0));
- QCOMPARE(m_series->wireFrameColor(), QColor(Qt::red));
+ QCOMPARE(m_series->wireframeColor(), QColor(Qt::red));
// Common properties. The ones identical between different series are tested in QBar3DSeries tests
m_series->setMesh(QAbstract3DSeries::MeshPyramid);
diff --git a/tests/auto/cpptest/q3dsurface/CMakeLists.txt b/tests/auto/cpptest/q3dsurface/CMakeLists.txt
index 0cbfae3a..71f78da8 100644
--- a/tests/auto/cpptest/q3dsurface/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dsurface/CMakeLists.txt
@@ -1,9 +1,12 @@
-qt_internal_add_test(q3dsurface
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dsurface_datavis
SOURCES
tst_surface.cpp
INCLUDE_DIRECTORIES
../common
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::GuiPrivate
Qt::DataVisualization
diff --git a/tests/auto/cpptest/q3dsurface/tst_surface.cpp b/tests/auto/cpptest/q3dsurface/tst_surface.cpp
index fc1068e3..b27dfa0c 100644
--- a/tests/auto/cpptest/q3dsurface/tst_surface.cpp
+++ b/tests/auto/cpptest/q3dsurface/tst_surface.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -109,7 +83,7 @@ void tst_surface::construct()
void tst_surface::initialProperties()
{
QVERIFY(m_graph);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
QVERIFY(!m_graph->selectedSeries());
QCOMPARE(m_graph->flipHorizontalGrid(), false);
QCOMPARE(m_graph->axisX()->orientation(), QAbstract3DAxis::AxisOrientationX);
@@ -184,9 +158,9 @@ void tst_surface::invalidProperties()
m_graph->setLocale(QLocale("XX"));
QCOMPARE(m_graph->selectionMode(), QAbstract3DGraph::SelectionItem);
- QCOMPARE(m_graph->aspectRatio(), -1.0/*2.0*/); // TODO: Fix once QTRD-3367 is done
- QCOMPARE(m_graph->horizontalAspectRatio(), -1.0/*0.0*/); // TODO: Fix once QTRD-3367 is done
- QCOMPARE(m_graph->reflectivity(), -1.0/*0.5*/); // TODO: Fix once QTRD-3367 is done
+ QCOMPARE(m_graph->aspectRatio(), 2.0);
+ QCOMPARE(m_graph->horizontalAspectRatio(), 0.0);
+ QCOMPARE(m_graph->reflectivity(), 0.5);
QCOMPARE(m_graph->locale(), QLocale("C"));
}
@@ -194,7 +168,7 @@ void tst_surface::addSeries()
{
m_graph->addSeries(newSeries());
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
QVERIFY(!m_graph->selectedSeries());
}
@@ -208,7 +182,7 @@ void tst_surface::addMultipleSeries()
m_graph->addSeries(series2);
m_graph->addSeries(series3);
- QCOMPARE(m_graph->seriesList().length(), 3);
+ QCOMPARE(m_graph->seriesList().size(), 3);
}
void tst_surface::selectSeries()
@@ -218,7 +192,7 @@ void tst_surface::selectSeries()
m_graph->addSeries(series);
m_graph->seriesList()[0]->setSelectedPoint(QPoint(0, 0));
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
QCOMPARE(m_graph->selectedSeries(), series);
m_graph->clearSelection();
@@ -231,7 +205,7 @@ void tst_surface::removeSeries()
m_graph->addSeries(series);
m_graph->removeSeries(series);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
delete series;
}
@@ -250,14 +224,14 @@ void tst_surface::removeMultipleSeries()
QCOMPARE(m_graph->selectedSeries(), series);
m_graph->removeSeries(series);
- QCOMPARE(m_graph->seriesList().length(), 2);
+ QCOMPARE(m_graph->seriesList().size(), 2);
QVERIFY(!m_graph->selectedSeries());
m_graph->removeSeries(series2);
- QCOMPARE(m_graph->seriesList().length(), 1);
+ QCOMPARE(m_graph->seriesList().size(), 1);
m_graph->removeSeries(series3);
- QCOMPARE(m_graph->seriesList().length(), 0);
+ QCOMPARE(m_graph->seriesList().size(), 0);
delete series;
delete series2;
diff --git a/tests/auto/cpptest/q3dtheme/CMakeLists.txt b/tests/auto/cpptest/q3dtheme/CMakeLists.txt
index 29c1ff21..0b59ed6e 100644
--- a/tests/auto/cpptest/q3dtheme/CMakeLists.txt
+++ b/tests/auto/cpptest/q3dtheme/CMakeLists.txt
@@ -1,7 +1,10 @@
-qt_internal_add_test(q3dtheme
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+qt_internal_add_test(q3dtheme_datavis
SOURCES
tst_theme.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
Qt::DataVisualization
)
diff --git a/tests/auto/cpptest/q3dtheme/tst_theme.cpp b/tests/auto/cpptest/q3dtheme/tst_theme.cpp
index 58a22592..24503d95 100644
--- a/tests/auto/cpptest/q3dtheme/tst_theme.cpp
+++ b/tests/auto/cpptest/q3dtheme/tst_theme.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
@@ -80,10 +54,10 @@ void tst_theme::construct()
QCOMPARE(theme->ambientLightStrength(), 0.5f);
QCOMPARE(theme->backgroundColor(), QColor(Qt::black));
QCOMPARE(theme->isBackgroundEnabled(), true);
- QCOMPARE(theme->baseColors().length(), 5);
+ QCOMPARE(theme->baseColors().size(), 5);
QCOMPARE(theme->baseColors().at(0), QColor(Qt::white));
QCOMPARE(theme->baseColors().at(4), QColor(QRgb(0x6b6b6b)));
- QCOMPARE(theme->baseGradients().length(), 5);
+ QCOMPARE(theme->baseGradients().size(), 5);
QCOMPARE(theme->baseGradients().at(0).stops().at(1).second, QColor(Qt::white));
QCOMPARE(theme->baseGradients().at(4).stops().at(1).second, QColor(QRgb(0x6b6b6b)));
QCOMPARE(theme->colorStyle(), Q3DTheme::ColorStyleUniform);
@@ -113,9 +87,9 @@ void tst_theme::initialProperties()
QCOMPARE(m_theme->ambientLightStrength(), 0.25f);
QCOMPARE(m_theme->backgroundColor(), QColor(Qt::black));
QCOMPARE(m_theme->isBackgroundEnabled(), true);
- QCOMPARE(m_theme->baseColors().length(), 1);
+ QCOMPARE(m_theme->baseColors().size(), 1);
QCOMPARE(m_theme->baseColors().at(0), QColor(Qt::black));
- QCOMPARE(m_theme->baseGradients().length(), 1);
+ QCOMPARE(m_theme->baseGradients().size(), 1);
QCOMPARE(m_theme->baseGradients().at(0).stops().at(0).second, QColor(Qt::black));
QCOMPARE(m_theme->baseGradients().at(0).stops().at(1).second, QColor(Qt::white));
QCOMPARE(m_theme->colorStyle(), Q3DTheme::ColorStyleUniform);
@@ -178,10 +152,10 @@ void tst_theme::initializeProperties()
QCOMPARE(m_theme->ambientLightStrength(), 0.3f);
QCOMPARE(m_theme->backgroundColor(), QColor(Qt::red));
QCOMPARE(m_theme->isBackgroundEnabled(), false);
- QCOMPARE(m_theme->baseColors().length(), 2);
+ QCOMPARE(m_theme->baseColors().size(), 2);
QCOMPARE(m_theme->baseColors().at(0), QColor(Qt::red));
QCOMPARE(m_theme->baseColors().at(1), QColor(Qt::blue));
- QCOMPARE(m_theme->baseGradients().length(), 2);
+ QCOMPARE(m_theme->baseGradients().size(), 2);
QCOMPARE(m_theme->baseGradients().at(0), gradient1);
QCOMPARE(m_theme->baseGradients().at(0), gradient2);
QCOMPARE(m_theme->colorStyle(), Q3DTheme::ColorStyleRangeGradient);
diff --git a/tests/auto/qmltest/CMakeLists.txt b/tests/auto/qmltest/CMakeLists.txt
index 8ab433b4..3f891438 100644
--- a/tests/auto/qmltest/CMakeLists.txt
+++ b/tests/auto/qmltest/CMakeLists.txt
@@ -1,9 +1,18 @@
-qt_internal_add_test(tst_qmltest
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+file(GLOB_RECURSE test_data_glob
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ *)
+list(APPEND test_data ${test_data_glob})
+
+qt_internal_add_test(tst_qmltest_datavis
QMLTEST
SOURCES
tst_qmltest.cpp
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
+ TESTDATA ${test_data}
)
set(qmltest_resource_files
@@ -11,7 +20,7 @@ set(qmltest_resource_files
"customtexture.jpg"
)
-qt_internal_add_resource(tst_qmltest "qmltest"
+qt_internal_add_resource(tst_qmltest_datavis "qmltest"
PREFIX
"/"
FILES
diff --git a/tests/auto/qmltest/axis3d/tst_category.qml b/tests/auto/qmltest/axis3d/tst_category.qml
index 0792ad8f..7400177e 100644
--- a/tests/auto/qmltest/axis3d/tst_category.qml
+++ b/tests/auto/qmltest/axis3d/tst_category.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/axis3d/tst_logvalue.qml b/tests/auto/qmltest/axis3d/tst_logvalue.qml
index d92f98d7..323bc194 100644
--- a/tests/auto/qmltest/axis3d/tst_logvalue.qml
+++ b/tests/auto/qmltest/axis3d/tst_logvalue.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/axis3d/tst_value.qml b/tests/auto/qmltest/axis3d/tst_value.qml
index 6e15cb85..d284a874 100644
--- a/tests/auto/qmltest/axis3d/tst_value.qml
+++ b/tests/auto/qmltest/axis3d/tst_value.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/bars3d/tst_bars.qml b/tests/auto/qmltest/bars3d/tst_bars.qml
index 80c1d9e4..03638501 100644
--- a/tests/auto/qmltest/bars3d/tst_bars.qml
+++ b/tests/auto/qmltest/bars3d/tst_bars.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization
@@ -40,7 +14,7 @@ Item {
function constructBars() {
bars3d = Qt.createQmlObject("
- import QtQuick 2.2
+ import QtQuick
import QtDataVisualization
Bars3D {
anchors.fill: parent
@@ -111,7 +85,7 @@ Item {
function constructBarsWithCustomItemList() {
bars3d = Qt.createQmlObject("
- import QtQuick 2.2
+ import QtQuick
import QtDataVisualization
Bars3D {
anchors.fill: parent
diff --git a/tests/auto/qmltest/bars3d/tst_barseries.qml b/tests/auto/qmltest/bars3d/tst_barseries.qml
index 77eba61a..7ee38d29 100644
--- a/tests/auto/qmltest/bars3d/tst_barseries.qml
+++ b/tests/auto/qmltest/bars3d/tst_barseries.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization
@@ -64,6 +38,20 @@ Item {
]
}
+ ThemeColor {
+ id: rowColor1
+ color: "green"
+ }
+
+ ThemeColor {
+ id: rowColor2
+ color: "blue"
+ }
+ ThemeColor {
+ id: rowColor3
+ color: "red"
+ }
+
Bar3DSeries {
id: initialized
dataProxy: ItemModelBarDataProxy {
@@ -92,6 +80,7 @@ Item {
singleHighlightGradient: gradient3
userDefinedMesh: ":/customitem.obj"
visible: false
+ rowColors: [ rowColor1, rowColor2, rowColor3 ]
}
ItemModelBarDataProxy {
@@ -118,6 +107,7 @@ Item {
compare(initial.invalidSelectionPosition, Qt.point(-1, -1))
compare(initial.meshAngle, 0)
compare(initial.selectedBar, Qt.point(-1, -1))
+ compare(initial.rowColors.length, 0)
}
function test_2_initial_common() {
@@ -149,6 +139,7 @@ Item {
compare(initialized.dataProxy.rowCount, 2)
fuzzyCompare(initialized.meshAngle, 15.0, 0.01)
compare(initialized.selectedBar, Qt.point(0, 0))
+ compare(initialized.rowColors.length, 3)
}
function test_2_initialized_common() {
@@ -177,6 +168,7 @@ Item {
change.dataProxy = proxy1
change.meshAngle = 15.0
change.selectedBar = Qt.point(0, 0)
+ change.rowColors = [rowColor1, rowColor2, rowColor3]
}
function test_2_test_change() {
@@ -222,5 +214,10 @@ Item {
gradient1.stops[0].color = "yellow"
compare(change.baseGradient.stops[0].color, "#ffff00")
}
+
+ function test_5_change_rowColors() {
+ rowColor2.color = "purple"
+ compare(change.rowColors[1].color, "#800080")
+ }
}
}
diff --git a/tests/auto/qmltest/bars3d/tst_basic.qml b/tests/auto/qmltest/bars3d/tst_basic.qml
index ea303356..881d629e 100644
--- a/tests/auto/qmltest/bars3d/tst_basic.qml
+++ b/tests/auto/qmltest/bars3d/tst_basic.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization
@@ -43,7 +17,7 @@ Item {
function constructEmpty() {
empty = Qt.createQmlObject("
- import QtQuick 2.2
+ import QtQuick
import QtDataVisualization
Bars3D {
}", top)
@@ -51,7 +25,7 @@ Item {
function constructBasic() {
basic = Qt.createQmlObject("
- import QtQuick 2.2
+ import QtQuick
import QtDataVisualization
Bars3D {
anchors.fill: parent
@@ -69,7 +43,7 @@ Item {
function constructCommon() {
common = Qt.createQmlObject("
- import QtQuick 2.2
+ import QtQuick
import QtDataVisualization
Bars3D {
anchors.fill: parent
@@ -79,7 +53,7 @@ Item {
function constructCommonInit() {
common_init = Qt.createQmlObject("
- import QtQuick 2.2
+ import QtQuick
import QtDataVisualization
Bars3D {
anchors.fill: parent
@@ -127,8 +101,6 @@ Item {
compare(empty.rowAxis.type, AbstractAxis3D.AxisTypeCategory)
compare(empty.valueAxis.type, AbstractAxis3D.AxisTypeValue)
waitForRendering(top)
- empty.destroy()
- waitForRendering(top)
}
}
@@ -173,8 +145,6 @@ Item {
compare(basic.barSpacing, Qt.size(-1.0, -1.0), "barSpacing")
compare(basic.barSeriesMargin, Qt.size(-1.0, -1.0), "barSeriesMargin")
waitForRendering(top)
- basic.destroy()
- waitForRendering(top)
}
}
@@ -183,13 +153,16 @@ Item {
when: windowShown
function test_1_common() {
+ if (Qt.platform.os === "android")
+ return;
+
constructCommon()
+ if (common.shadowsSupported === false)
+ return;
+
compare(common.selectionMode, AbstractGraph3D.SelectionItem, "selectionMode")
compare(common.shadowQuality, AbstractGraph3D.ShadowQualityMedium, "shadowQuality")
- if (common.shadowsSupported === true)
- compare(common.msaaSamples, 4, "msaaSamples")
- else
- compare(common.msaaSamples, 0, "msaaSamples")
+ compare(common.msaaSamples, 4, "msaaSamples")
compare(common.theme.type, Theme3D.ThemeQt, "theme")
compare(common.renderingMode, AbstractGraph3D.RenderIndirect, "renderingMode")
compare(common.measureFps, false, "measureFps")
@@ -210,14 +183,14 @@ Item {
}
function test_2_change_common() {
+ if (Qt.platform.os === "android" || common.shadowsSupported === false)
+ return;
+
common.selectionMode = AbstractGraph3D.SelectionItem | AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice
common.shadowQuality = AbstractGraph3D.ShadowQualitySoftHigh
- compare(common.shadowQuality, AbstractGraph3D.ShadowQualitySoftHigh, "shadowQuality")
common.msaaSamples = 8
- if (common.shadowsSupported === true)
- compare(common.msaaSamples, 8, "msaaSamples")
- else
- compare(common.msaaSamples, 0, "msaaSamples")
+ compare(common.shadowQuality, AbstractGraph3D.ShadowQualitySoftHigh, "shadowQuality")
+ compare(common.msaaSamples, 8, "msaaSamples")
common.theme.type = Theme3D.ThemeRetro
common.renderingMode = AbstractGraph3D.RenderDirectToBackground_NoClear
common.measureFps = true
@@ -251,6 +224,9 @@ Item {
}
function test_3_change_invalid_common() {
+ if (Qt.platform.os === "android" || common.shadowsSupported === false)
+ return;
+
common.selectionMode = AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionColumn | AbstractGraph3D.SelectionSlice
common.theme.type = -2
common.renderingMode = -1
@@ -262,28 +238,30 @@ Item {
common.reflection = false
common.reflectivity = -1.0
compare(common.selectionMode, AbstractGraph3D.SelectionItem | AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice, "selectionMode")
- compare(common.theme.type, -2/*Theme3D.ThemeRetro*/, "theme") // TODO: Fix once QTRD-3367 is done
- compare(common.renderingMode, -1/*AbstractGraph3D.RenderDirectToBackground_NoClear*/, "renderingMode") // TODO: Fix once QTRD-3367 is done
- compare(common.aspectRatio, -1.0/*1.0*/, "aspectRatio") // TODO: Fix once QTRD-3367 is done
- compare(common.horizontalAspectRatio, -2/*1*/, "horizontalAspectRatio") // TODO: Fix once QTRD-3367 is done
- compare(common.reflectivity, -1.0/*1.0*/, "reflectivity") // TODO: Fix once QTRD-3367 is done
-
- waitForRendering(top)
- common.destroy()
+ compare(common.theme.type, Theme3D.ThemeRetro, "theme")
+ compare(common.renderingMode, AbstractGraph3D.RenderDirectToBackground_NoClear, "renderingMode")
+ compare(common.aspectRatio, 1.0, "aspectRatio")
+ compare(common.horizontalAspectRatio, 1.0, "horizontalAspectRatio")
+ compare(common.reflectivity, 1.0, "reflectivity")
waitForRendering(top)
}
+ }
+
+ TestCase {
+ name: "Bars3D Common Initialized"
+ when: windowShown
+
+ function test_1_common_initialized() {
+ if (Qt.platform.os === "android")
+ return;
- function test_4_common_initialized() {
constructCommonInit()
+ if (common_init.shadowsSupported === false) // This test is flaky on VM, use shadowsSupported to detect being run in VM
+ return;
compare(common_init.selectionMode, AbstractGraph3D.SelectionNone, "selectionMode")
- if (common_init.shadowsSupported === true) {
- tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityLow)
- compare(common_init.msaaSamples, 2, "msaaSamples")
- } else {
- tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityNone)
- compare(common_init.msaaSamples, 0, "msaaSamples")
- }
+ tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityLow)
+ compare(common_init.msaaSamples, 2, "msaaSamples")
compare(common_init.theme.type, Theme3D.ThemeUserDefined, "theme")
compare(common_init.renderingMode, AbstractGraph3D.RenderIndirect, "renderingMode")
compare(common_init.measureFps, true, "measureFps")
@@ -298,9 +276,6 @@ Item {
compare(common_init.reflectivity, 0.1, "reflectivity")
compare(common_init.locale, Qt.locale("UK"), "locale")
compare(common_init.margin, 0.2, "margin")
-
- waitForRendering(top)
- common_init.destroy();
waitForRendering(top)
}
}
diff --git a/tests/auto/qmltest/bars3d/tst_proxy.qml b/tests/auto/qmltest/bars3d/tst_proxy.qml
index 428000ac..bd337017 100644
--- a/tests/auto/qmltest/bars3d/tst_proxy.qml
+++ b/tests/auto/qmltest/bars3d/tst_proxy.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization
diff --git a/tests/auto/qmltest/custom3d/tst_customitem.qml b/tests/auto/qmltest/custom3d/tst_customitem.qml
index 862aa67a..eebfaac1 100644
--- a/tests/auto/qmltest/custom3d/tst_customitem.qml
+++ b/tests/auto/qmltest/custom3d/tst_customitem.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/custom3d/tst_customlabel.qml b/tests/auto/qmltest/custom3d/tst_customlabel.qml
index f4094efd..28f062ab 100644
--- a/tests/auto/qmltest/custom3d/tst_customlabel.qml
+++ b/tests/auto/qmltest/custom3d/tst_customlabel.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/custom3d/tst_customvolume.qml b/tests/auto/qmltest/custom3d/tst_customvolume.qml
index aa97a7e2..21630394 100644
--- a/tests/auto/qmltest/custom3d/tst_customvolume.qml
+++ b/tests/auto/qmltest/custom3d/tst_customvolume.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/input3d/tst_input.qml b/tests/auto/qmltest/input3d/tst_input.qml
index 44b06b65..a2904c53 100644
--- a/tests/auto/qmltest/input3d/tst_input.qml
+++ b/tests/auto/qmltest/input3d/tst_input.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/input3d/tst_touch.qml b/tests/auto/qmltest/input3d/tst_touch.qml
index 13af8afd..047abb97 100644
--- a/tests/auto/qmltest/input3d/tst_touch.qml
+++ b/tests/auto/qmltest/input3d/tst_touch.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/qmltest.qrc b/tests/auto/qmltest/qmltest.qrc
deleted file mode 100644
index 61f19086..00000000
--- a/tests/auto/qmltest/qmltest.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>customitem.obj</file>
- <file>customtexture.jpg</file>
- </qresource>
-</RCC>
diff --git a/tests/auto/qmltest/scatter3d/tst_basic.qml b/tests/auto/qmltest/scatter3d/tst_basic.qml
index a5f20d01..7320ac49 100644
--- a/tests/auto/qmltest/scatter3d/tst_basic.qml
+++ b/tests/auto/qmltest/scatter3d/tst_basic.qml
@@ -1,34 +1,8 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
-import QtDataVisualization 1.2
+import QtDataVisualization
import QtTest 1.0
Item {
@@ -43,16 +17,16 @@ Item {
function constructEmpty() {
empty = Qt.createQmlObject("
- import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtQuick
+ import QtDataVisualization
Scatter3D {
}", top)
}
function constructBasic() {
basic = Qt.createQmlObject("
- import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtQuick
+ import QtDataVisualization
Scatter3D {
anchors.fill: parent
}", top)
@@ -61,8 +35,8 @@ Item {
function constructCommon() {
common = Qt.createQmlObject("
- import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtQuick
+ import QtDataVisualization
Scatter3D {
anchors.fill: parent
}", top)
@@ -71,8 +45,8 @@ Item {
function constructCommonInit() {
common_init = Qt.createQmlObject("
- import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtQuick
+ import QtDataVisualization
Scatter3D {
anchors.fill: parent
selectionMode: AbstractGraph3D.SelectionNone
@@ -112,8 +86,6 @@ Item {
compare(empty.axisZ.type, AbstractAxis3D.AxisTypeValue)
compare(empty.axisY.type, AbstractAxis3D.AxisTypeValue)
waitForRendering(top)
- empty.destroy()
- waitForRendering(top)
}
}
@@ -126,8 +98,6 @@ Item {
compare(basic.width, 150, "width")
compare(basic.height, 150, "height")
waitForRendering(top)
- basic.destroy()
- waitForRendering(top)
}
}
@@ -136,13 +106,16 @@ Item {
when: windowShown
function test_1_common() {
+ if (Qt.platform.os === "android")
+ return;
+
constructCommon()
+ if (common.shadowsSupported === false)
+ return;
+
compare(common.selectionMode, AbstractGraph3D.SelectionItem, "selectionMode")
compare(common.shadowQuality, AbstractGraph3D.ShadowQualityMedium, "shadowQuality")
- if (common.shadowsSupported === true)
- compare(common.msaaSamples, 4, "msaaSamples")
- else
- compare(common.msaaSamples, 0, "msaaSamples")
+ compare(common.msaaSamples, 4, "msaaSamples")
compare(common.theme.type, Theme3D.ThemeQt, "theme")
compare(common.renderingMode, AbstractGraph3D.RenderIndirect, "renderingMode")
compare(common.measureFps, false, "measureFps")
@@ -163,14 +136,14 @@ Item {
}
function test_2_change_common() {
+ if (Qt.platform.os === "android" || common.shadowsSupported === false)
+ return;
+
common.selectionMode = AbstractGraph3D.SelectionNone
common.shadowQuality = AbstractGraph3D.ShadowQualitySoftHigh
- compare(common.shadowQuality, AbstractGraph3D.ShadowQualitySoftHigh, "shadowQuality")
common.msaaSamples = 8
- if (common.shadowsSupported === true)
- compare(common.msaaSamples, 8, "msaaSamples")
- else
- compare(common.msaaSamples, 0, "msaaSamples")
+ compare(common.shadowQuality, AbstractGraph3D.ShadowQualitySoftHigh, "shadowQuality")
+ compare(common.msaaSamples, 8, "msaaSamples")
common.theme.type = Theme3D.ThemeRetro
common.renderingMode = AbstractGraph3D.RenderDirectToBackground_NoClear
common.measureFps = true
@@ -204,6 +177,9 @@ Item {
}
function test_3_change_invalid_common() {
+ if (Qt.platform.os === "android" || common.shadowsSupported === false)
+ return;
+
common.selectionMode = AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionColumn | AbstractGraph3D.SelectionSlice
common.theme.type = -2
common.renderingMode = -1
@@ -215,28 +191,30 @@ Item {
common.reflection = false
common.reflectivity = -1.0
compare(common.selectionMode, AbstractGraph3D.SelectionNone, "selectionMode")
- compare(common.theme.type, -2/*Theme3D.ThemeRetro*/, "theme") // TODO: Fix once QTRD-3367 is done
- compare(common.renderingMode, -1/*AbstractGraph3D.RenderDirectToBackground_NoClear*/, "renderingMode") // TODO: Fix once QTRD-3367 is done
- compare(common.aspectRatio, -1.0/*1.0*/, "aspectRatio") // TODO: Fix once QTRD-3367 is done
- compare(common.horizontalAspectRatio, -2/*1*/, "horizontalAspectRatio") // TODO: Fix once QTRD-3367 is done
- compare(common.reflectivity, -1.0/*1.0*/, "reflectivity") // TODO: Fix once QTRD-3367 is done
-
- waitForRendering(top)
- common.destroy()
+ compare(common.theme.type, Theme3D.ThemeRetro, "theme")
+ compare(common.renderingMode, AbstractGraph3D.RenderDirectToBackground_NoClear, "renderingMode")
+ compare(common.aspectRatio, 1.0, "aspectRatio")
+ compare(common.horizontalAspectRatio, 1.0, "horizontalAspectRatio")
+ compare(common.reflectivity, 1.0, "reflectivity")
waitForRendering(top)
- }
+ }
+ }
+
+ TestCase {
+ name: "Scatter3D Common Initialized"
+ when: windowShown
+
+ function test_1_common_initialized() {
+ if (Qt.platform.os === "android")
+ return;
- function test_4_common_initialized() {
constructCommonInit()
+ if (common_init.shadowsSupported === false)
+ return;
compare(common_init.selectionMode, AbstractGraph3D.SelectionNone, "selectionMode")
- if (common_init.shadowsSupported === true) {
- tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityLow)
- compare(common_init.msaaSamples, 2, "msaaSamples")
- } else {
- tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityNone)
- compare(common_init.msaaSamples, 0, "msaaSamples")
- }
+ tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityLow)
+ compare(common_init.msaaSamples, 2, "msaaSamples")
compare(common_init.theme.type, Theme3D.ThemeUserDefined, "theme")
compare(common_init.renderingMode, AbstractGraph3D.RenderIndirect, "renderingMode")
compare(common_init.measureFps, true, "measureFps")
@@ -251,9 +229,6 @@ Item {
compare(common_init.reflectivity, 0.1, "reflectivity")
compare(common_init.locale, Qt.locale("UK"), "locale")
compare(common_init.margin, 0.2, "margin")
-
- waitForRendering(top)
- common_init.destroy();
waitForRendering(top)
}
}
diff --git a/tests/auto/qmltest/scatter3d/tst_proxy.qml b/tests/auto/qmltest/scatter3d/tst_proxy.qml
index bd8c0c74..c970b82a 100644
--- a/tests/auto/qmltest/scatter3d/tst_proxy.qml
+++ b/tests/auto/qmltest/scatter3d/tst_proxy.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/scatter3d/tst_scatter.qml b/tests/auto/qmltest/scatter3d/tst_scatter.qml
index d871f891..c8c8f93a 100644
--- a/tests/auto/qmltest/scatter3d/tst_scatter.qml
+++ b/tests/auto/qmltest/scatter3d/tst_scatter.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization
diff --git a/tests/auto/qmltest/scatter3d/tst_scatterseries.qml b/tests/auto/qmltest/scatter3d/tst_scatterseries.qml
index 7d84e83c..9e6cc80e 100644
--- a/tests/auto/qmltest/scatter3d/tst_scatterseries.qml
+++ b/tests/auto/qmltest/scatter3d/tst_scatterseries.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/scene3d/tst_camera.qml b/tests/auto/qmltest/scene3d/tst_camera.qml
index 96418ae3..c6aa446a 100644
--- a/tests/auto/qmltest/scene3d/tst_camera.qml
+++ b/tests/auto/qmltest/scene3d/tst_camera.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/scene3d/tst_light.qml b/tests/auto/qmltest/scene3d/tst_light.qml
index 68602316..faf3bce2 100644
--- a/tests/auto/qmltest/scene3d/tst_light.qml
+++ b/tests/auto/qmltest/scene3d/tst_light.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.3
diff --git a/tests/auto/qmltest/scene3d/tst_scene.qml b/tests/auto/qmltest/scene3d/tst_scene.qml
index 08a55662..b9f84202 100644
--- a/tests/auto/qmltest/scene3d/tst_scene.qml
+++ b/tests/auto/qmltest/scene3d/tst_scene.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
@@ -44,7 +18,7 @@ Item {
Bars3D {
id: initialized
scene.activeCamera: Camera3D { zoomLevel: 200 }
- scene.devicePixelRatio: 2.0
+ scene.devicePixelRatio: 2 // Will work only if actual pixel ratio is 2.0
scene.graphPositionQuery: Qt.point(0, 0)
scene.primarySubViewport: Qt.rect(0, 0, 50, 50)
scene.secondarySubViewport: Qt.rect(50, 50, 100, 100)
@@ -67,7 +41,7 @@ Item {
function test_initial() {
verify(initial.scene.activeCamera)
verify(initial.scene.activeLight)
- compare(initial.scene.devicePixelRatio, 1.0)
+ compare(initial.scene.devicePixelRatio, Screen.devicePixelRatio)
compare(initial.scene.graphPositionQuery, Qt.point(-1, -1))
compare(initial.scene.invalidSelectionPoint, Qt.point(-1, -1))
compare(initial.scene.primarySubViewport.x, 0)
@@ -93,7 +67,7 @@ Item {
function test_initialized() {
compare(initialized.scene.activeCamera.zoomLevel, 200)
- compare(initialized.scene.devicePixelRatio, 2.0)
+ compare(initialized.scene.devicePixelRatio, Screen.devicePixelRatio)
compare(initialized.scene.graphPositionQuery, Qt.point(0, 0))
compare(initialized.scene.primarySubViewport.x, 0)
compare(initialized.scene.primarySubViewport.y, 0)
diff --git a/tests/auto/qmltest/surface3d/tst_basic.qml b/tests/auto/qmltest/surface3d/tst_basic.qml
index a0a0bd19..2979d6d5 100644
--- a/tests/auto/qmltest/surface3d/tst_basic.qml
+++ b/tests/auto/qmltest/surface3d/tst_basic.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
@@ -43,16 +17,16 @@ Item {
function constructEmpty() {
empty = Qt.createQmlObject("
- import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtQuick
+ import QtDataVisualization
Surface3D {
}", top)
}
function constructBasic() {
basic = Qt.createQmlObject("
- import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtQuick
+ import QtDataVisualization
Surface3D {
anchors.fill: parent
flipHorizontalGrid: true
@@ -62,8 +36,8 @@ Item {
function constructCommon() {
common = Qt.createQmlObject("
- import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtQuick
+ import QtDataVisualization
Surface3D {
anchors.fill: parent
}", top)
@@ -72,8 +46,8 @@ Item {
function constructCommonInit() {
common_init = Qt.createQmlObject("
- import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtQuick
+ import QtDataVisualization
Surface3D {
anchors.fill: parent
selectionMode: AbstractGraph3D.SelectionNone
@@ -114,8 +88,6 @@ Item {
compare(empty.axisZ.type, AbstractAxis3D.AxisTypeValue)
compare(empty.axisY.type, AbstractAxis3D.AxisTypeValue)
waitForRendering(top)
- empty.destroy()
- waitForRendering(top)
}
}
@@ -134,8 +106,6 @@ Item {
basic.flipHorizontalGrid = false
compare(basic.flipHorizontalGrid, false, "flipHorizontalGrid")
waitForRendering(top)
- basic.destroy()
- waitForRendering(top)
}
}
@@ -144,13 +114,16 @@ Item {
when: windowShown
function test_1_common() {
+ if (Qt.platform.os === "android")
+ return;
+
constructCommon()
+ if (common.shadowsSupported === false)
+ return;
+
compare(common.selectionMode, AbstractGraph3D.SelectionItem, "selectionMode")
compare(common.shadowQuality, AbstractGraph3D.ShadowQualityMedium, "shadowQuality")
- if (common.shadowsSupported === true)
- compare(common.msaaSamples, 4, "msaaSamples")
- else
- compare(common.msaaSamples, 0, "msaaSamples")
+ compare(common.msaaSamples, 4, "msaaSamples")
compare(common.theme.type, Theme3D.ThemeQt, "theme")
compare(common.renderingMode, AbstractGraph3D.RenderIndirect, "renderingMode")
compare(common.measureFps, false, "measureFps")
@@ -171,14 +144,14 @@ Item {
}
function test_2_change_common() {
+ if (Qt.platform.os === "android" || common.shadowsSupported === false)
+ return;
+
common.selectionMode = AbstractGraph3D.SelectionItem | AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice
common.shadowQuality = AbstractGraph3D.ShadowQualitySoftHigh
- compare(common.shadowQuality, AbstractGraph3D.ShadowQualitySoftHigh, "shadowQuality")
common.msaaSamples = 8
- if (common.shadowsSupported === true)
- compare(common.msaaSamples, 8, "msaaSamples")
- else
- compare(common.msaaSamples, 0, "msaaSamples")
+ compare(common.shadowQuality, AbstractGraph3D.ShadowQualitySoftHigh, "shadowQuality")
+ compare(common.msaaSamples, 8, "msaaSamples")
common.theme.type = Theme3D.ThemeRetro
common.renderingMode = AbstractGraph3D.RenderDirectToBackground_NoClear
common.measureFps = true
@@ -212,6 +185,9 @@ Item {
}
function test_3_change_invalid_common() {
+ if (Qt.platform.os === "android" || common.shadowsSupported === false)
+ return;
+
common.selectionMode = AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionColumn | AbstractGraph3D.SelectionSlice
common.theme.type = -2
common.renderingMode = -1
@@ -223,28 +199,30 @@ Item {
common.reflection = false
common.reflectivity = -1.0
compare(common.selectionMode, AbstractGraph3D.SelectionItem | AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice, "selectionMode")
- compare(common.theme.type, -2/*Theme3D.ThemeRetro*/, "theme") // TODO: Fix once QTRD-3367 is done
- compare(common.renderingMode, -1/*AbstractGraph3D.RenderDirectToBackground_NoClear*/, "renderingMode") // TODO: Fix once QTRD-3367 is done
- compare(common.aspectRatio, -1.0/*1.0*/, "aspectRatio") // TODO: Fix once QTRD-3367 is done
- compare(common.horizontalAspectRatio, -2/*1*/, "horizontalAspectRatio") // TODO: Fix once QTRD-3367 is done
- compare(common.reflectivity, -1.0/*1.0*/, "reflectivity") // TODO: Fix once QTRD-3367 is done
-
- waitForRendering(top)
- common.destroy()
+ compare(common.theme.type, Theme3D.ThemeRetro, "theme")
+ compare(common.renderingMode, AbstractGraph3D.RenderDirectToBackground_NoClear, "renderingMode")
+ compare(common.aspectRatio, 1.0, "aspectRatio")
+ compare(common.horizontalAspectRatio, 1.0, "horizontalAspectRatio")
+ compare(common.reflectivity, 1.0, "reflectivity")
waitForRendering(top)
}
+ }
+
+ TestCase {
+ name: "Surface3D Common Initialized"
+ when: windowShown
+
+ function test_1_common_initialized() {
+ if (Qt.platform.os === "android")
+ return;
- function test_4_common_initialized() {
constructCommonInit()
+ if (common_init.shadowsSupported === false)
+ return;
compare(common_init.selectionMode, AbstractGraph3D.SelectionNone, "selectionMode")
- if (common_init.shadowsSupported === true) {
- tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityLow)
- compare(common_init.msaaSamples, 2, "msaaSamples")
- } else {
- tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityNone)
- compare(common_init.msaaSamples, 0, "msaaSamples")
- }
+ tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityLow)
+ compare(common_init.msaaSamples, 2, "msaaSamples")
compare(common_init.theme.type, Theme3D.ThemeUserDefined, "theme")
compare(common_init.renderingMode, AbstractGraph3D.RenderIndirect, "renderingMode")
compare(common_init.measureFps, true, "measureFps")
@@ -259,9 +237,6 @@ Item {
compare(common_init.reflectivity, 0.1, "reflectivity")
compare(common_init.locale, Qt.locale("UK"), "locale")
compare(common_init.margin, 0.2, "margin")
-
- waitForRendering(top)
- common_init.destroy();
waitForRendering(top)
}
}
diff --git a/tests/auto/qmltest/surface3d/tst_heightproxy.qml b/tests/auto/qmltest/surface3d/tst_heightproxy.qml
index f92d8198..c3c5b71d 100644
--- a/tests/auto/qmltest/surface3d/tst_heightproxy.qml
+++ b/tests/auto/qmltest/surface3d/tst_heightproxy.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/surface3d/tst_proxy.qml b/tests/auto/qmltest/surface3d/tst_proxy.qml
index eddad5a2..57058f36 100644
--- a/tests/auto/qmltest/surface3d/tst_proxy.qml
+++ b/tests/auto/qmltest/surface3d/tst_proxy.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/surface3d/tst_surface.qml b/tests/auto/qmltest/surface3d/tst_surface.qml
index e112295f..4c52d184 100644
--- a/tests/auto/qmltest/surface3d/tst_surface.qml
+++ b/tests/auto/qmltest/surface3d/tst_surface.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization
diff --git a/tests/auto/qmltest/surface3d/tst_surfaceseries.qml b/tests/auto/qmltest/surface3d/tst_surfaceseries.qml
index e4707f60..7d681021 100644
--- a/tests/auto/qmltest/surface3d/tst_surfaceseries.qml
+++ b/tests/auto/qmltest/surface3d/tst_surfaceseries.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization
@@ -79,7 +53,7 @@ Item {
flatShadingEnabled: false
selectedPoint: Qt.point(0, 0)
textureFile: ":\customtexture.jpg"
- wireFrameColor: "red"
+ wireframeColor: "red"
baseColor: "blue"
baseGradient: gradient1
@@ -124,7 +98,7 @@ Item {
compare(initial.flatShadingEnabled, true)
compare(initial.flatShadingSupported, true)
compare(initial.selectedPoint, Qt.point(-1, -1))
- compare(initial.wireFrameColor, "#000000")
+ compare(initial.wireframeColor, "#000000")
}
function test_2_initial_common() {
@@ -158,7 +132,7 @@ Item {
compare(initialized.flatShadingEnabled, false)
compare(initialized.selectedPoint, Qt.point(0, 0))
compare(initialized.textureFile, ":\customtexture.jpg")
- compare(initialized.wireFrameColor, "#ff0000")
+ compare(initialized.wireframeColor, "#ff0000")
}
function test_2_initialized_common() {
@@ -190,7 +164,7 @@ Item {
change.flatShadingEnabled = false
change.selectedPoint = Qt.point(0, 0)
change.textureFile = ":\customtexture.jpg"
- change.wireFrameColor = "green"
+ change.wireframeColor = "green"
}
function test_2_test_change() {
@@ -200,7 +174,7 @@ Item {
compare(change.flatShadingEnabled, false)
compare(change.selectedPoint, Qt.point(0, 0))
compare(change.textureFile, ":\customtexture.jpg")
- compare(change.wireFrameColor, "#008000")
+ compare(change.wireframeColor, "#008000")
}
function test_3_change_common() {
diff --git a/tests/auto/qmltest/theme3d/tst_colorgradient.qml b/tests/auto/qmltest/theme3d/tst_colorgradient.qml
index e1a25400..6d2cdf35 100644
--- a/tests/auto/qmltest/theme3d/tst_colorgradient.qml
+++ b/tests/auto/qmltest/theme3d/tst_colorgradient.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/theme3d/tst_theme.qml b/tests/auto/qmltest/theme3d/tst_theme.qml
index 880ff87b..3b44a5c8 100644
--- a/tests/auto/qmltest/theme3d/tst_theme.qml
+++ b/tests/auto/qmltest/theme3d/tst_theme.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/theme3d/tst_themecolor.qml b/tests/auto/qmltest/theme3d/tst_themecolor.qml
index e7b4c1ca..6e662deb 100644
--- a/tests/auto/qmltest/theme3d/tst_themecolor.qml
+++ b/tests/auto/qmltest/theme3d/tst_themecolor.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization 1.2
diff --git a/tests/auto/qmltest/tst_qmltest.cpp b/tests/auto/qmltest/tst_qmltest.cpp
index 746430c5..86482f65 100644
--- a/tests/auto/qmltest/tst_qmltest.cpp
+++ b/tests/auto/qmltest/tst_qmltest.cpp
@@ -1,40 +1,34 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtQuickTest/quicktest.h>
+
+class tst_qmltest: public QObject
+{
+ Q_OBJECT
+private slots:
+ void skiptest() { QSKIP("This test will fail, skipping."); };
+};
+
int main(int argc, char **argv)
{
if (!qEnvironmentVariableIsEmpty("QEMU_LD_PREFIX")) {
- qWarning("This test will fail due to QEMU emulation shortcomings.");
- return 0;
+ qWarning("This test would fail due to QEMU emulation shortcomings, so it will be skipped.");
+ tst_qmltest skip;
+ return QTest::qExec(&skip, argc, argv);
}
+#ifdef Q_OS_QNX
+ if (qEnvironmentVariable("QTEST_ENVIRONMENT").split(' ').contains("ci") &&
+ qEnvironmentVariable("QT_QPA_PLATFORM").split(' ').contains("offscreen")
+ ) {
+ qWarning("This test would fail on CI QNX QEMU without OpenGL support, so it will be skipped.");
+ tst_qmltest skip;
+ return QTest::qExec(&skip, argc, argv);
+ }
+#endif
qputenv("QSG_RHI_BACKEND", "opengl");
QTEST_SET_MAIN_SOURCE_PATH
return quick_test_main(argc, argv, "qmltest", QUICK_TEST_SOURCE_DIR);
}
+
+#include "tst_qmltest.moc"
diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt
index a1ca1dba..32112c6b 100644
--- a/tests/manual/CMakeLists.txt
+++ b/tests/manual/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
if(TARGET Qt::Quick)
add_subdirectory(qmldynamicdata)
add_subdirectory(qmlmultitest)
@@ -5,6 +8,7 @@ if(TARGET Qt::Quick)
add_subdirectory(qmlperf)
add_subdirectory(qmlgradient)
add_subdirectory(qmlheightmap)
+ add_subdirectory(qmlbarsrowcolors)
endif()
if(NOT ANDROID AND NOT IOS AND NOT WINRT)
add_subdirectory(barstest)
diff --git a/tests/manual/barstest/CMakeLists.txt b/tests/manual/barstest/CMakeLists.txt
index 8c4c9295..391b98aa 100644
--- a/tests/manual/barstest/CMakeLists.txt
+++ b/tests/manual/barstest/CMakeLists.txt
@@ -1,14 +1,18 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(barstest
GUI
SOURCES
chart.cpp chart.h
+ sliderwrapper.cpp sliderwrapper.h
+ buttonwrapper.cpp buttonwrapper.h
custominputhandler.cpp custominputhandler.h
main.cpp
+ NO_PCH_SOURCES
+ chart.cpp # undef QT_NO_FOREACH
)
target_link_libraries(barstest PUBLIC
Qt::Gui
diff --git a/tests/manual/barstest/buttonwrapper.cpp b/tests/manual/barstest/buttonwrapper.cpp
new file mode 100644
index 00000000..c8eef0c7
--- /dev/null
+++ b/tests/manual/barstest/buttonwrapper.cpp
@@ -0,0 +1,14 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+#include "buttonwrapper.h"
+#include <QPushButton>
+
+ButtonWrapper::ButtonWrapper(QPushButton *button)
+{
+ m_button = button;
+}
+
+void ButtonWrapper::setEnabled(int state)
+{
+ m_button->setEnabled(state);
+}
diff --git a/tests/manual/barstest/buttonwrapper.h b/tests/manual/barstest/buttonwrapper.h
new file mode 100644
index 00000000..d0112117
--- /dev/null
+++ b/tests/manual/barstest/buttonwrapper.h
@@ -0,0 +1,22 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+#ifndef BUTTONWRAPPER_H
+#define BUTTONWRAPPER_H
+
+#include <QObject>
+class QPushButton;
+
+class ButtonWrapper : public QObject
+{
+ Q_OBJECT
+public:
+ ButtonWrapper(QPushButton *button);
+
+public Q_SLOTS:
+ void setEnabled(int state);
+
+private:
+ QPushButton *m_button;
+};
+
+#endif // BUTTONWRAPPER_H
diff --git a/tests/manual/barstest/chart.cpp b/tests/manual/barstest/chart.cpp
index 4f006024..d427921a 100644
--- a/tests/manual/barstest/chart.cpp
+++ b/tests/manual/barstest/chart.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "chart.h"
#include "custominputhandler.h"
@@ -268,7 +244,7 @@ void GraphModifier::start()
restart(false);
}
-void GraphModifier::restart(bool dynamicData)
+void GraphModifier::restart(int dynamicData)
{
m_static = !dynamicData;
@@ -343,7 +319,7 @@ void GraphModifier::releaseSeries()
m_graph->removeSeries(series);
}
-void GraphModifier::flipViews()
+void GraphModifier::flipViews(bool checked)
{
m_graph->scene()->setSecondarySubviewOnTop(!m_graph->scene()->isSecondarySubviewOnTop());
qDebug() << "secondary subview on top:" << m_graph->scene()->isSecondarySubviewOnTop();
@@ -735,7 +711,7 @@ void GraphModifier::handleSelectionChange(const QPoint &position)
qDebug() << "Selected bar position:" << position << "series:" << index;
}
-void GraphModifier::setUseNullInputHandler(bool useNull)
+void GraphModifier::setUseNullInputHandler(int useNull)
{
qDebug() << "setUseNullInputHandler" << useNull;
if (m_useNullInputHandler == useNull)
@@ -828,7 +804,7 @@ QBarDataArray *GraphModifier::makeDummyData()
}
// Executes one step of the primary series test
-void GraphModifier::primarySeriesTest()
+void GraphModifier::primarySeriesTest(bool checked)
{
static int nextStep = 0;
@@ -1050,7 +1026,7 @@ void GraphModifier::insertRemoveTestToggle()
}
}
-void GraphModifier::toggleRotation()
+void GraphModifier::toggleRotation(bool checked)
{
if (m_rotationTimer.isActive())
m_rotationTimer.stop();
@@ -1058,7 +1034,7 @@ void GraphModifier::toggleRotation()
m_rotationTimer.start(20);
}
-void GraphModifier::useLogAxis()
+void GraphModifier::useLogAxis(bool checked)
{
static int counter = -1;
static QLogValue3DAxisFormatter *logFormatter = 0;
@@ -1214,7 +1190,7 @@ void GraphModifier::addRemoveSeries()
counter++;
}
-void GraphModifier::testItemAndRowChanges()
+void GraphModifier::testItemAndRowChanges(bool checked)
{
static int counter = 0;
const int rowCount = 12;
@@ -1604,7 +1580,7 @@ void GraphModifier::rotateY(int rotation)
m_graph->scene()->activeCamera()->setCameraPosition(m_xRotation, m_yRotation);
}
-void GraphModifier::setFpsMeasurement(bool enable)
+void GraphModifier::setFpsMeasurement(int enable)
{
m_graph->setMeasureFps(enable);
}
@@ -1673,7 +1649,7 @@ void GraphModifier::setMaxY(int max)
m_maxval = max;
}
-void GraphModifier::changeColorStyle()
+void GraphModifier::changeColorStyle(bool checked)
{
int style = m_graph->activeTheme()->colorStyle();
@@ -1683,7 +1659,7 @@ void GraphModifier::changeColorStyle()
m_graph->activeTheme()->setColorStyle(Q3DTheme::ColorStyle(style));
}
-void GraphModifier::useOwnTheme()
+void GraphModifier::useOwnTheme(bool checked)
{
// Own theme is persistent, any changes to it via UI will be remembered
if (!m_ownTheme) {
@@ -1722,7 +1698,7 @@ void GraphModifier::changeBaseColor(const QColor &color)
m_graph->activeTheme()->setBaseColors(colors);
}
-void GraphModifier::setGradient()
+void GraphModifier::setGradient(bool checked)
{
QLinearGradient barGradient(0, 0, 1, 100);
barGradient.setColorAt(1.0, Qt::lightGray);
@@ -1762,7 +1738,7 @@ void GraphModifier::toggleMultiseriesScaling()
m_graph->setMultiSeriesUniform(!m_graph->isMultiSeriesUniform());
}
-void GraphModifier::setReflection(bool enabled)
+void GraphModifier::setReflection(int enabled)
{
m_graph->setReflection(enabled);
}
diff --git a/tests/manual/barstest/chart.h b/tests/manual/barstest/chart.h
index dabaa5e2..ae72318e 100644
--- a/tests/manual/barstest/chart.h
+++ b/tests/manual/barstest/chart.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef CHARTMODIFIER_H
#define CHARTMODIFIER_H
@@ -68,7 +42,7 @@ public:
void changeFontSize(int fontsize);
void rotateX(int rotation);
void rotateY(int rotation);
- void setFpsMeasurement(bool enable);
+ void setFpsMeasurement(int state);
void setBackgroundEnabled(int enabled);
void setGridEnabled(int enabled);
void setSpecsRatio(int barwidth);
@@ -84,43 +58,43 @@ public:
void setMinY(int min);
void setMaxY(int max);
void start();
- void restart(bool dynamicData);
+ void restart(int dynamicData);
void selectBar();
void swapAxis();
void releaseAxes();
void releaseSeries();
void createMassiveArray();
- void useOwnTheme();
+ void useOwnTheme(bool checked);
void changeBaseColor(const QColor &color);
- void changeColorStyle();
+ void changeColorStyle(bool checked);
void showFiveSeries();
QBarDataArray *makeDummyData();
- void primarySeriesTest();
+ void primarySeriesTest(bool checked);
void insertRemoveTestToggle();
- void toggleRotation();
- void useLogAxis();
+ void toggleRotation(bool checked);
+ void useLogAxis(bool checked);
void changeValueAxisFormat(const QString & text);
void changeLogBase(const QString & text);
void setFpsLabel(QLabel *fpsLabel) { m_fpsLabel = fpsLabel; }
void addRemoveSeries();
- void testItemAndRowChanges();
+ void testItemAndRowChanges(bool checked);
void reverseValueAxis(int enabled);
void setInputHandlerRotationEnabled(int enabled);
void setInputHandlerZoomEnabled(int enabled);
void setInputHandlerSelectionEnabled(int enabled);
void setInputHandlerZoomAtTargetEnabled(int enabled);
- void setReflection(bool enabled);
+ void setReflection(int enabled);
void setReflectivity(int value);
void toggleCustomItem();
public Q_SLOTS:
- void flipViews();
- void setGradient();
+ void flipViews(bool checked);
+ void setGradient(bool checked);
void toggleMultiseriesScaling();
void changeShadowQuality(int quality);
void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
void handleSelectionChange(const QPoint &position);
- void setUseNullInputHandler(bool useNull);
+ void setUseNullInputHandler(int useNull);
void changeValueAxisSegments(int value);
void handleRowAxisChanged(QCategory3DAxis *axis);
@@ -152,7 +126,7 @@ private:
int m_rowCount;
float m_xRotation;
float m_yRotation;
- bool m_static;
+ int m_static;
float m_barSpacingX;
float m_barSpacingZ;
float m_barSeriesMarginX;
diff --git a/tests/manual/barstest/custominputhandler.cpp b/tests/manual/barstest/custominputhandler.cpp
index e6fe9aa5..2740fddb 100644
--- a/tests/manual/barstest/custominputhandler.cpp
+++ b/tests/manual/barstest/custominputhandler.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "custominputhandler.h"
diff --git a/tests/manual/barstest/custominputhandler.h b/tests/manual/barstest/custominputhandler.h
index 62b87d31..ee762cee 100644
--- a/tests/manual/barstest/custominputhandler.h
+++ b/tests/manual/barstest/custominputhandler.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef CUSTOMINPUTHANDLER_H
#define CUSTOMINPUTHANDLER_H
diff --git a/tests/manual/barstest/main.cpp b/tests/manual/barstest/main.cpp
index 1b14d08d..178b91f3 100644
--- a/tests/manual/barstest/main.cpp
+++ b/tests/manual/barstest/main.cpp
@@ -1,33 +1,9 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "chart.h"
+#include "sliderwrapper.h"
+#include "buttonwrapper.h"
#include <QApplication>
#include <QWidget>
@@ -613,12 +589,14 @@ int main(int argc, char **argv)
QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, modifier,
&GraphModifier::setUseNullInputHandler);
- QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderX,
- &QSlider::setEnabled);
+ SliderWrapper *rotationSliderWrapperX = new SliderWrapper(rotationSliderX);
+ SliderWrapper *rotationSliderWrapperY = new SliderWrapper(rotationSliderY);
+ QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderWrapperX,
+ &SliderWrapper::setEnabled);
QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderX,
&QSlider::setValue);
- QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderY,
- &QSlider::setEnabled);
+ QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderWrapperY,
+ &SliderWrapper::setEnabled);
QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderY,
&QSlider::setValue);
@@ -633,40 +611,59 @@ int main(int argc, char **argv)
QObject::connect(toggleCustomItemButton, &QPushButton::clicked, modifier,
&GraphModifier::toggleCustomItem);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, addDataButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, addMultiDataButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, insertDataButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, insertMultiDataButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, changeSingleDataButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, changeRowButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, changeRowsButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, removeRowButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, removeRowsButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, massiveArrayButton,
- &QPushButton::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderX,
- &QSlider::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderZ,
- &QSlider::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, minSliderX,
- &QSlider::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, minSliderZ,
- &QSlider::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, minSliderY,
- &QSlider::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, maxSliderY,
- &QSlider::setEnabled);
- QObject::connect(staticCheckBox, &QCheckBox::stateChanged, swapAxisButton,
- &QSlider::setEnabled);
+ ButtonWrapper *addDataButtonWrapper = new ButtonWrapper(addDataButton);
+ ButtonWrapper *addMultiDataButtonWrapper = new ButtonWrapper(addMultiDataButton);
+ ButtonWrapper *insertDataButtonWrapper = new ButtonWrapper(insertDataButton);
+ ButtonWrapper *insertMultiDataButtonWrapper = new ButtonWrapper(insertMultiDataButton);
+ ButtonWrapper *changeSingleDataButtonWrapper = new ButtonWrapper(changeSingleDataButton);
+ ButtonWrapper *changeRowButtonWrapper = new ButtonWrapper(changeRowButton);
+ ButtonWrapper *changeRowsButtonWrapper = new ButtonWrapper(changeRowsButton);
+ ButtonWrapper *massiveArrayButtonWrapper = new ButtonWrapper(massiveArrayButton);
+ ButtonWrapper *removeRowButtonWrapper = new ButtonWrapper(removeRowButton);
+ ButtonWrapper *removeRowsButtonWrapper = new ButtonWrapper(removeRowsButton);
+
+ SliderWrapper *sampleSliderWrapperX = new SliderWrapper(sampleSliderX);
+ SliderWrapper *sampleSliderWrapperZ = new SliderWrapper(sampleSliderZ);
+ SliderWrapper *minSliderWrapperX = new SliderWrapper(minSliderX);
+ SliderWrapper *minSliderWrapperZ = new SliderWrapper(minSliderZ);
+ SliderWrapper *minSliderWrapperY = new SliderWrapper(minSliderY);
+ SliderWrapper *maxSliderWrapperY = new SliderWrapper(maxSliderY);
+ ButtonWrapper *swapAxisButtonWrapper = new ButtonWrapper(swapAxisButton);
+
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, addDataButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, addMultiDataButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, insertDataButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, insertMultiDataButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, changeSingleDataButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, changeRowButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, changeRowsButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, removeRowButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, removeRowsButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, massiveArrayButtonWrapper,
+ &ButtonWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderWrapperX,
+ &SliderWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderWrapperZ,
+ &SliderWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, minSliderWrapperX,
+ &SliderWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, minSliderWrapperZ,
+ &SliderWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, minSliderWrapperY,
+ &SliderWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, maxSliderWrapperY,
+ &SliderWrapper::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, swapAxisButtonWrapper,
+ &ButtonWrapper::setEnabled);
QObject::connect(staticCheckBox, &QCheckBox::stateChanged, modifier, &GraphModifier::restart);
modifier->setFpsLabel(fpsLabel);
diff --git a/tests/manual/barstest/sliderwrapper.cpp b/tests/manual/barstest/sliderwrapper.cpp
new file mode 100644
index 00000000..bdfeb4f7
--- /dev/null
+++ b/tests/manual/barstest/sliderwrapper.cpp
@@ -0,0 +1,13 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+#include "sliderwrapper.h"
+
+SliderWrapper::SliderWrapper(QSlider *slider)
+{
+ m_slider = slider;
+}
+
+void SliderWrapper::setEnabled(int enabled)
+{
+ m_slider->setEnabled(enabled);
+}
diff --git a/tests/manual/barstest/sliderwrapper.h b/tests/manual/barstest/sliderwrapper.h
new file mode 100644
index 00000000..f6d9404a
--- /dev/null
+++ b/tests/manual/barstest/sliderwrapper.h
@@ -0,0 +1,23 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+#ifndef SLIDERWRAPPER_H
+#define SLIDERWRAPPER_H
+#include <QObject>
+#include <QSlider>
+
+class SliderWrapper : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit SliderWrapper(QSlider *slider);
+
+public Q_SLOTS:
+ void setEnabled(int enabled);
+
+private:
+ QSlider *m_slider = nullptr;
+
+};
+
+#endif // SLIDERWRAPPER_H
diff --git a/tests/manual/directional/CMakeLists.txt b/tests/manual/directional/CMakeLists.txt
index c1bd2798..43b961e0 100644
--- a/tests/manual/directional/CMakeLists.txt
+++ b/tests/manual/directional/CMakeLists.txt
@@ -1,7 +1,7 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(directional
GUI
diff --git a/tests/manual/directional/main.cpp b/tests/manual/directional/main.cpp
index 06bf137f..66b80d40 100644
--- a/tests/manual/directional/main.cpp
+++ b/tests/manual/directional/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "scatterdatamodifier.h"
diff --git a/tests/manual/directional/scatterdatamodifier.cpp b/tests/manual/directional/scatterdatamodifier.cpp
index 6968920c..b537a8a2 100644
--- a/tests/manual/directional/scatterdatamodifier.cpp
+++ b/tests/manual/directional/scatterdatamodifier.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "scatterdatamodifier.h"
#include <QtDataVisualization/qscatterdataproxy.h>
diff --git a/tests/manual/directional/scatterdatamodifier.h b/tests/manual/directional/scatterdatamodifier.h
index 3120b6f6..c794d17c 100644
--- a/tests/manual/directional/scatterdatamodifier.h
+++ b/tests/manual/directional/scatterdatamodifier.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef SCATTERDATAMODIFIER_H
#define SCATTERDATAMODIFIER_H
diff --git a/tests/manual/galaxy/CMakeLists.txt b/tests/manual/galaxy/CMakeLists.txt
index 1a530dae..f089ed7d 100644
--- a/tests/manual/galaxy/CMakeLists.txt
+++ b/tests/manual/galaxy/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
qt_add_executable(galaxy
cumulativedistributor.cpp cumulativedistributor.h
diff --git a/tests/manual/galaxy/cumulativedistributor.cpp b/tests/manual/galaxy/cumulativedistributor.cpp
index 4506480c..961583ff 100644
--- a/tests/manual/galaxy/cumulativedistributor.cpp
+++ b/tests/manual/galaxy/cumulativedistributor.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
/*
* Galaxy creation code obtained from http://beltoforion.de/galaxy/galaxy_en.html
diff --git a/tests/manual/galaxy/cumulativedistributor.h b/tests/manual/galaxy/cumulativedistributor.h
index 56276e98..60c48ccc 100644
--- a/tests/manual/galaxy/cumulativedistributor.h
+++ b/tests/manual/galaxy/cumulativedistributor.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
/*
* Galaxy creation code obtained from http://beltoforion.de/galaxy/galaxy_en.html
diff --git a/tests/manual/galaxy/galaxydata.cpp b/tests/manual/galaxy/galaxydata.cpp
index c49e07fd..73ccf9c5 100644
--- a/tests/manual/galaxy/galaxydata.cpp
+++ b/tests/manual/galaxy/galaxydata.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
/*
* Galaxy creation code obtained from http://beltoforion.de/galaxy/galaxy_en.html
diff --git a/tests/manual/galaxy/galaxydata.h b/tests/manual/galaxy/galaxydata.h
index e01db67b..6127482e 100644
--- a/tests/manual/galaxy/galaxydata.h
+++ b/tests/manual/galaxy/galaxydata.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef SCATTERDATAMODIFIER_H
#define SCATTERDATAMODIFIER_H
diff --git a/tests/manual/galaxy/main.cpp b/tests/manual/galaxy/main.cpp
index 5fb7b0ca..a0cbda52 100644
--- a/tests/manual/galaxy/main.cpp
+++ b/tests/manual/galaxy/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "galaxydata.h"
diff --git a/tests/manual/galaxy/star.cpp b/tests/manual/galaxy/star.cpp
index ca6b66f0..5b639125 100644
--- a/tests/manual/galaxy/star.cpp
+++ b/tests/manual/galaxy/star.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "star.h"
diff --git a/tests/manual/galaxy/star.h b/tests/manual/galaxy/star.h
index 9c5dc1ac..045a9702 100644
--- a/tests/manual/galaxy/star.h
+++ b/tests/manual/galaxy/star.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef STAR_H
#define STAR_H
diff --git a/tests/manual/itemmodeltest/CMakeLists.txt b/tests/manual/itemmodeltest/CMakeLists.txt
index 7b5faf60..8fee8d00 100644
--- a/tests/manual/itemmodeltest/CMakeLists.txt
+++ b/tests/manual/itemmodeltest/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_internal_add_manual_test(itemmodeltest
GUI
SOURCES
diff --git a/tests/manual/itemmodeltest/main.cpp b/tests/manual/itemmodeltest/main.cpp
index a9a7f357..feebd1b1 100644
--- a/tests/manual/itemmodeltest/main.cpp
+++ b/tests/manual/itemmodeltest/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtDataVisualization/q3dbars.h>
#include <QtDataVisualization/q3dsurface.h>
@@ -234,8 +208,8 @@ void GraphDataGenerator::changeSelectedButtonClicked()
{
// Change all selected cells to a random value 1-10
QVariant value = QVariant::fromValue(QRandomGenerator::global()->bounded(10.0) + 1);
- QList<QTableWidgetItem *> selectedItems = m_tableWidget->selectedItems();
- foreach (QTableWidgetItem *item, selectedItems) {
+ const QList<QTableWidgetItem *> selectedItems = m_tableWidget->selectedItems();
+ for (QTableWidgetItem *item : selectedItems) {
QString oldData = item->data(Qt::DisplayRole).toString();
item->setData(Qt::DisplayRole,
oldData.left(5)
@@ -292,7 +266,7 @@ int main(int argc, char **argv)
barProxy->setValueRoleReplace(QStringLiteral("\\4"));
barProxy->setRotationRoleReplace(QStringLiteral("\\5"));
surfaceProxy->setXPosRole(tableWidget->model()->roleNames().value(Qt::DisplayRole));
- surfaceProxy->setZPosRole(tableWidget->model()->roleNames().value(Qt::DisplayRole));
+ surfaceProxy->setYPosRole(tableWidget->model()->roleNames().value(Qt::DisplayRole));
surfaceProxy->setXPosRolePattern(QRegularExpression(QStringLiteral("^(\\d*)\\/(\\d*)\\/\\d*[\\.\\,]?\\d*\\/\\d*[\\.\\,]?\\d*$")));
surfaceProxy->setXPosRoleReplace(QStringLiteral("\\2"));
surfaceProxy->setYPosRolePattern(QRegularExpression(QStringLiteral("^\\d*(\\/)(\\d*)\\/(\\d*[\\.\\,]?\\d*)\\/\\d*[\\.\\,]?\\d*$")));
diff --git a/tests/manual/minimalbars/CMakeLists.txt b/tests/manual/minimalbars/CMakeLists.txt
index 9f72f667..50ae8a61 100644
--- a/tests/manual/minimalbars/CMakeLists.txt
+++ b/tests/manual/minimalbars/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_internal_add_manual_test(MinimalBars
GUI
SOURCES
diff --git a/tests/manual/minimalscatter/CMakeLists.txt b/tests/manual/minimalscatter/CMakeLists.txt
index a1cdcc39..5f9c07ae 100644
--- a/tests/manual/minimalscatter/CMakeLists.txt
+++ b/tests/manual/minimalscatter/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_internal_add_manual_test(MinimalScatter
GUI
SOURCES
diff --git a/tests/manual/minimalsurface/CMakeLists.txt b/tests/manual/minimalsurface/CMakeLists.txt
index a8ca7275..39c3b04d 100644
--- a/tests/manual/minimalsurface/CMakeLists.txt
+++ b/tests/manual/minimalsurface/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_internal_add_manual_test(MinimalSurface
GUI
SOURCES
diff --git a/tests/manual/multigraphs/CMakeLists.txt b/tests/manual/multigraphs/CMakeLists.txt
index fdb9e08b..8e6da82a 100644
--- a/tests/manual/multigraphs/CMakeLists.txt
+++ b/tests/manual/multigraphs/CMakeLists.txt
@@ -1,7 +1,7 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(multigraphs
GUI
diff --git a/tests/manual/multigraphs/data.cpp b/tests/manual/multigraphs/data.cpp
index f5f855cd..b46c6a0d 100644
--- a/tests/manual/multigraphs/data.cpp
+++ b/tests/manual/multigraphs/data.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#define NOMINMAX
diff --git a/tests/manual/multigraphs/data.h b/tests/manual/multigraphs/data.h
index fcd0f54f..a2c43452 100644
--- a/tests/manual/multigraphs/data.h
+++ b/tests/manual/multigraphs/data.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef DATA_H
#define DATA_H
diff --git a/tests/manual/multigraphs/main.cpp b/tests/manual/multigraphs/main.cpp
index 1597a2b9..b13dd2ce 100644
--- a/tests/manual/multigraphs/main.cpp
+++ b/tests/manual/multigraphs/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "data.h"
diff --git a/tests/manual/qmlbarsrowcolors/CMakeLists.txt b/tests/manual/qmlbarsrowcolors/CMakeLists.txt
new file mode 100644
index 00000000..62a2ed98
--- /dev/null
+++ b/tests/manual/qmlbarsrowcolors/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+qt_internal_add_manual_test(qmlbarsrowcolors
+ GUI
+ SOURCES
+ main.cpp
+ )
+
+target_link_libraries(qmlbarsrowcolors PUBLIC
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+ Qt::Quick
+ Qt::DataVisualization
+)
+
+set(qmlbarsrowcolors_resource_files
+ "qml/qmlbarsrowcolors/Axes.qml"
+ "qml/qmlbarsrowcolors/Data.qml"
+ "qml/qmlbarsrowcolors/main.qml"
+)
+
+qt6_add_resources(qmlbarsrowcolors "qmlbarsrowcolors"
+ PREFIX
+ "/"
+ FILES
+ ${qmlbarsrowcolors_resource_files}
+)
diff --git a/tests/manual/qmlbarsrowcolors/main.cpp b/tests/manual/qmlbarsrowcolors/main.cpp
new file mode 100644
index 00000000..83a1a78a
--- /dev/null
+++ b/tests/manual/qmlbarsrowcolors/main.cpp
@@ -0,0 +1,33 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include <QtGui/QGuiApplication>
+#include <QtCore/QDir>
+#include <QtQuick/QQuickView>
+#include <QtQml/QQmlEngine>
+
+int main(int argc, char *argv[])
+{
+ qputenv("QSG_RHI_BACKEND", "opengl");
+ QGuiApplication app(argc, argv);
+
+ QQuickView viewer;
+
+ // The following are needed to make examples run without having to install the module
+ // in desktop environments.
+#ifdef Q_OS_WIN
+ QString extraImportPath(QStringLiteral("%1/../../../../%2"));
+#else
+ QString extraImportPath(QStringLiteral("%1/../../../%2"));
+#endif
+ viewer.engine()->addImportPath(extraImportPath.arg(QGuiApplication::applicationDirPath(),
+ QString::fromLatin1("qml")));
+
+ viewer.setTitle(QStringLiteral("Monthly income/expenses"));
+
+ viewer.setSource(QUrl("qrc:/qml/qmlbarsrowcolors/main.qml"));
+ viewer.setResizeMode(QQuickView::SizeRootObjectToView);
+ viewer.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/Axes.qml b/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/Axes.qml
new file mode 100644
index 00000000..0e021c34
--- /dev/null
+++ b/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/Axes.qml
@@ -0,0 +1,41 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtQuick
+import QtDataVisualization
+
+Item {
+ property alias column: columnAxis
+ property alias row: rowAxis
+ property alias value: valueAxis
+ property alias total: totalAxis
+
+ // Custom labels for columns, since the data contains abbreviated month names.
+ //! [0]
+ CategoryAxis3D {
+ id: columnAxis
+ labels: ["January", "February", "March", "April", "May", "June",
+ "July", "August", "September", "October", "November", "December"]
+ labelAutoRotation: 30
+ }
+ //! [0]
+ CategoryAxis3D {
+ id: totalAxis
+ labels: ["Yearly total"]
+ labelAutoRotation: 30
+ }
+ CategoryAxis3D {
+ // For row labels we can use row labels from data proxy, no labels defined for rows.
+ id: rowAxis
+ labelAutoRotation: 30
+ }
+
+ ValueAxis3D {
+ id: valueAxis
+ min: 0
+ max: 35
+ labelFormat: "%.2f M\u20AC"
+ title: "Monthly income"
+ labelAutoRotation: 90
+ }
+}
diff --git a/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/Data.qml b/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/Data.qml
new file mode 100644
index 00000000..6eb27741
--- /dev/null
+++ b/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/Data.qml
@@ -0,0 +1,118 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtQuick
+import QtQml.Models
+
+Item {
+ property alias model: dataModel
+
+ property var modelAsJsArray: {
+ var arr = []
+ for (var i = 0; i < dataModel.count; i++) {
+ var row = dataModel.get(i)
+ arr.push({
+ timestamp: row.timestamp,
+ expenses: row.expenses,
+ income: row.income
+ })
+ }
+ return arr
+ }
+
+ //! [0]
+ ListModel {
+ id: dataModel
+ ListElement{ timestamp: "2006-01"; expenses: "-4"; income: "5" }
+ ListElement{ timestamp: "2006-02"; expenses: "-5"; income: "6" }
+ ListElement{ timestamp: "2006-03"; expenses: "-7"; income: "4" }
+ //! [0]
+ ListElement{ timestamp: "2006-04"; expenses: "-3"; income: "2" }
+ ListElement{ timestamp: "2006-05"; expenses: "-4"; income: "1" }
+ ListElement{ timestamp: "2006-06"; expenses: "-2"; income: "2" }
+ ListElement{ timestamp: "2006-07"; expenses: "-1"; income: "3" }
+ ListElement{ timestamp: "2006-08"; expenses: "-5"; income: "1" }
+ ListElement{ timestamp: "2006-09"; expenses: "-2"; income: "3" }
+ ListElement{ timestamp: "2006-10"; expenses: "-5"; income: "2" }
+ ListElement{ timestamp: "2006-11"; expenses: "-8"; income: "5" }
+ ListElement{ timestamp: "2006-12"; expenses: "-3"; income: "3" }
+
+ ListElement{ timestamp: "2007-01"; expenses: "-3"; income: "1" }
+ ListElement{ timestamp: "2007-02"; expenses: "-4"; income: "2" }
+ ListElement{ timestamp: "2007-03"; expenses: "-12"; income: "4" }
+ ListElement{ timestamp: "2007-04"; expenses: "-13"; income: "6" }
+ ListElement{ timestamp: "2007-05"; expenses: "-14"; income: "11" }
+ ListElement{ timestamp: "2007-06"; expenses: "-7"; income: "7" }
+ ListElement{ timestamp: "2007-07"; expenses: "-6"; income: "4" }
+ ListElement{ timestamp: "2007-08"; expenses: "-4"; income: "15" }
+ ListElement{ timestamp: "2007-09"; expenses: "-2"; income: "18" }
+ ListElement{ timestamp: "2007-10"; expenses: "-29"; income: "25" }
+ ListElement{ timestamp: "2007-11"; expenses: "-23"; income: "29" }
+ ListElement{ timestamp: "2007-12"; expenses: "-5"; income: "9" }
+
+ ListElement{ timestamp: "2008-01"; expenses: "-3"; income: "8" }
+ ListElement{ timestamp: "2008-02"; expenses: "-8"; income: "14" }
+ ListElement{ timestamp: "2008-03"; expenses: "-10"; income: "20" }
+ ListElement{ timestamp: "2008-04"; expenses: "-12"; income: "24" }
+ ListElement{ timestamp: "2008-05"; expenses: "-10"; income: "19" }
+ ListElement{ timestamp: "2008-06"; expenses: "-5"; income: "8" }
+ ListElement{ timestamp: "2008-07"; expenses: "-1"; income: "4" }
+ ListElement{ timestamp: "2008-08"; expenses: "-7"; income: "12" }
+ ListElement{ timestamp: "2008-09"; expenses: "-4"; income: "16" }
+ ListElement{ timestamp: "2008-10"; expenses: "-22"; income: "33" }
+ ListElement{ timestamp: "2008-11"; expenses: "-16"; income: "25" }
+ ListElement{ timestamp: "2008-12"; expenses: "-2"; income: "7" }
+
+ ListElement{ timestamp: "2009-01"; expenses: "-4"; income: "5" }
+ ListElement{ timestamp: "2009-02"; expenses: "-4"; income: "7" }
+ ListElement{ timestamp: "2009-03"; expenses: "-11"; income: "14" }
+ ListElement{ timestamp: "2009-04"; expenses: "-16"; income: "22" }
+ ListElement{ timestamp: "2009-05"; expenses: "-3"; income: "5" }
+ ListElement{ timestamp: "2009-06"; expenses: "-4"; income: "8" }
+ ListElement{ timestamp: "2009-07"; expenses: "-7"; income: "9" }
+ ListElement{ timestamp: "2009-08"; expenses: "-9"; income: "13" }
+ ListElement{ timestamp: "2009-09"; expenses: "-1"; income: "6" }
+ ListElement{ timestamp: "2009-10"; expenses: "-14"; income: "25" }
+ ListElement{ timestamp: "2009-11"; expenses: "-19"; income: "29" }
+ ListElement{ timestamp: "2009-12"; expenses: "-5"; income: "7" }
+
+ ListElement{ timestamp: "2010-01"; expenses: "-14"; income: "22" }
+ ListElement{ timestamp: "2010-02"; expenses: "-5"; income: "7" }
+ ListElement{ timestamp: "2010-03"; expenses: "-1"; income: "9" }
+ ListElement{ timestamp: "2010-04"; expenses: "-1"; income: "12" }
+ ListElement{ timestamp: "2010-05"; expenses: "-5"; income: "9" }
+ ListElement{ timestamp: "2010-06"; expenses: "-5"; income: "8" }
+ ListElement{ timestamp: "2010-07"; expenses: "-3"; income: "7" }
+ ListElement{ timestamp: "2010-08"; expenses: "-1"; income: "5" }
+ ListElement{ timestamp: "2010-09"; expenses: "-2"; income: "4" }
+ ListElement{ timestamp: "2010-10"; expenses: "-10"; income: "13" }
+ ListElement{ timestamp: "2010-11"; expenses: "-12"; income: "17" }
+ ListElement{ timestamp: "2010-12"; expenses: "-6"; income: "9" }
+
+ ListElement{ timestamp: "2011-01"; expenses: "-2"; income: "6" }
+ ListElement{ timestamp: "2011-02"; expenses: "-4"; income: "8" }
+ ListElement{ timestamp: "2011-03"; expenses: "-7"; income: "12" }
+ ListElement{ timestamp: "2011-04"; expenses: "-9"; income: "15" }
+ ListElement{ timestamp: "2011-05"; expenses: "-7"; income: "19" }
+ ListElement{ timestamp: "2011-06"; expenses: "-9"; income: "18" }
+ ListElement{ timestamp: "2011-07"; expenses: "-13"; income: "17" }
+ ListElement{ timestamp: "2011-08"; expenses: "-5"; income: "9" }
+ ListElement{ timestamp: "2011-09"; expenses: "-3"; income: "8" }
+ ListElement{ timestamp: "2011-10"; expenses: "-13"; income: "15" }
+ ListElement{ timestamp: "2011-11"; expenses: "-8"; income: "17" }
+ ListElement{ timestamp: "2011-12"; expenses: "-7"; income: "10" }
+
+ ListElement{ timestamp: "2012-01"; expenses: "-12"; income: "16" }
+ ListElement{ timestamp: "2012-02"; expenses: "-24"; income: "28" }
+ ListElement{ timestamp: "2012-03"; expenses: "-27"; income: "22" }
+ ListElement{ timestamp: "2012-04"; expenses: "-29"; income: "25" }
+ ListElement{ timestamp: "2012-05"; expenses: "-27"; income: "29" }
+ ListElement{ timestamp: "2012-06"; expenses: "-19"; income: "18" }
+ ListElement{ timestamp: "2012-07"; expenses: "-13"; income: "17" }
+ ListElement{ timestamp: "2012-08"; expenses: "-15"; income: "19" }
+ ListElement{ timestamp: "2012-09"; expenses: "-3"; income: "8" }
+ ListElement{ timestamp: "2012-10"; expenses: "-3"; income: "6" }
+ ListElement{ timestamp: "2012-11"; expenses: "-4"; income: "8" }
+ ListElement{ timestamp: "2012-12"; expenses: "-5"; income: "9" }
+ }
+}
diff --git a/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/main.qml b/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/main.qml
new file mode 100644
index 00000000..2f15b453
--- /dev/null
+++ b/tests/manual/qmlbarsrowcolors/qml/qmlbarsrowcolors/main.qml
@@ -0,0 +1,392 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import QtDataVisualization
+import QtQuick.Window
+import Qt.labs.qmlmodels
+import "."
+
+Item {
+ id: mainview
+
+ property int buttonLayoutHeight: 180;
+ property int currentRow
+ property Bar3DSeries selectedSeries
+
+ function toggleRowColorsForBarSeries(enable) {
+ if (enable)
+ barSeries.rowColors = [color1, color2, color3]
+ else
+ barSeries.rowColors = []
+ }
+
+ function toggleRowColorsForSecondarySeries(enable) {
+ if (enable)
+ secondarySeries.rowColors = [color4, color5, color6]
+ else
+ secondarySeries.rowColors = []
+ }
+
+ function handleSelectionChange(series, position) {
+ if (position !== series.invalidSelectionPosition)
+ selectedSeries = series
+
+ // Set tableView current row to selected bar
+ var rowRole = series.dataProxy.rowLabels[position.x];
+ var colRole
+ if (barGraph.columnAxis === graphAxes.total)
+ colRole = "01";
+ else
+ colRole = series.dataProxy.columnLabels[position.y];
+ var checkTimestamp = rowRole + "-" + colRole
+
+ if (currentRow === -1 || checkTimestamp !== graphData.model.get(currentRow).timestamp) {
+ var totalRows = tableView.rows;
+ for (var i = 0; i < totalRows; i++) {
+ var modelTimestamp = graphData.model.get(i).timestamp
+ if (modelTimestamp === checkTimestamp) {
+ currentRow = i
+ break
+ }
+ }
+ }
+ }
+
+ width: 1280
+ height: 1024
+
+ state: Screen.width < Screen.height ? "portrait" : "landscape"
+ selectedSeries: barSeries
+
+ onCurrentRowChanged: {
+ var timestamp = graphData.model.get(currentRow).timestamp
+ var pattern = /(\d\d\d\d)-(\d\d)/
+ var matches = pattern.exec(timestamp)
+ var rowIndex = modelProxy.rowCategoryIndex(matches[1])
+ var colIndex
+ if (barGraph.columnAxis === graphAxes.total)
+ colIndex = 0 // Just one column when showing yearly totals
+ else
+ colIndex = modelProxy.columnCategoryIndex(matches[2])
+ if (selectedSeries.visible)
+ mainview.selectedSeries.selectedBar = Qt.point(rowIndex, colIndex)
+ else if (barSeries.visible)
+ barSeries.selectedBar = Qt.point(rowIndex, colIndex)
+ else
+ secondarySeries.selectedBar = Qt.point(rowIndex, colIndex)
+ }
+
+ Data {
+ id: graphData
+ }
+
+ Axes {
+ id: graphAxes
+ }
+
+ ThemeColor {
+ id: color1
+ color: "green"
+ }
+
+ ThemeColor {
+ id: color2
+ color: "blue"
+ }
+
+ ThemeColor {
+ id: color3
+ color: "red"
+ }
+
+ ThemeColor {
+ id: color4
+ color: "yellow"
+ }
+
+ ThemeColor {
+ id: color5
+ color: "purple"
+ }
+
+ ThemeColor {
+ id: color6
+ color: "orange"
+ }
+
+ Theme3D {
+ id: theme1
+ type: Theme3D.ThemeRetro
+ labelBorderEnabled: true
+ font.pointSize: 35
+ labelBackgroundEnabled: true
+ colorStyle: Theme3D.ColorStyleUniform
+ }
+
+ Theme3D {
+ id: theme2
+ type: Theme3D.ThemeArmyBlue
+ labelBorderEnabled: true
+ font.pointSize: 35
+ labelBackgroundEnabled: true
+ colorStyle: Theme3D.ColorStyleUniform
+ }
+
+ Item {
+ id: dataView
+ anchors.right: mainview.right;
+ anchors.bottom: mainview.bottom
+
+ Bars3D {
+ id: barGraph
+ width: dataView.width
+ height: dataView.height
+ shadowQuality: AbstractGraph3D.ShadowQualityMedium
+ selectionMode: AbstractGraph3D.SelectionItem
+ theme: theme1
+ barThickness: 0.7
+ barSpacing: Qt.size(0.5, 0.5)
+ barSpacingRelative: false
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh
+ columnAxis: graphAxes.column
+ rowAxis: graphAxes.row
+ valueAxis: graphAxes.value
+
+ Bar3DSeries {
+ id: secondarySeries
+ visible: false
+ itemLabelFormat: "Expenses, @colLabel, @rowLabel: -@valueLabel"
+ rowColors: [color4 , color5, color6]
+
+ onSelectedBarChanged: (position)=> handleSelectionChange(secondarySeries, position)
+
+ ItemModelBarDataProxy {
+ id: secondaryProxy
+ itemModel: graphData.model
+ rowRole: "timestamp"
+ columnRole: "timestamp"
+ valueRole: "expenses"
+ rowRolePattern: /^(\d\d\d\d).*$/
+ columnRolePattern: /^.*-(\d\d)$/
+ valueRolePattern: /-/
+ rowRoleReplace: "\\1"
+ columnRoleReplace: "\\1"
+ multiMatchBehavior: ItemModelBarDataProxy.MMBCumulative
+ }
+ }
+
+ Bar3DSeries {
+ id: barSeries
+ itemLabelFormat: "Income, @colLabel, @rowLabel: @valueLabel"
+ rowColors: [color1, color2, color3]
+
+ onSelectedBarChanged: (position)=> handleSelectionChange(barSeries, position)
+
+ ItemModelBarDataProxy {
+ id: modelProxy
+ itemModel: graphData.model
+ rowRole: "timestamp"
+ columnRole: "timestamp"
+ valueRole: "income"
+ rowRolePattern: /^(\d\d\d\d).*$/
+ columnRolePattern: /^.*-(\d\d)$/
+ rowRoleReplace: "\\1"
+ columnRoleReplace: "\\1"
+ multiMatchBehavior: ItemModelBarDataProxy.MMBCumulative
+ }
+ }
+ }
+ }
+
+ ColumnLayout {
+ id: tableViewLayout
+
+ anchors.top: parent.top
+ anchors.left: parent.left
+
+ HorizontalHeaderView {
+ id: header
+ property var columnNames: ["Month", "Expenses", "Income"]
+
+ syncView: tableView
+ Layout.fillWidth: true
+ delegate: Text {
+ padding: 3
+ text: header.columnNames[index]
+ }
+
+ }
+
+ TableView {
+ id: tableView
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ reuseItems: false
+ clip: true
+
+ model: TableModel {
+ id: tableModel
+ TableModelColumn { display: "timestamp" }
+ TableModelColumn { display: "expenses" }
+ TableModelColumn { display: "income" }
+
+ rows: graphData.modelAsJsArray
+ }
+
+ delegate: Rectangle {
+ implicitHeight: 30
+ implicitWidth: tableView.width / 3
+ color: row === currentRow ? "#e0e0e0" : "#ffffff"
+ MouseArea {
+ anchors.fill: parent
+ onClicked: currentRow = row
+ }
+
+ Text {
+ id: delegateText
+ anchors.verticalCenter: parent.verticalCenter
+ width: parent.width
+ anchors.leftMargin: 4
+ anchors.left: parent.left
+ anchors.right: parent.right
+ text: formattedText
+ property string formattedText: {
+ if (column === 0) {
+ if (display !== "") {
+ var pattern = /(\d\d\d\d)-(\d\d)/
+ var matches = pattern.exec(display)
+ var colIndex = parseInt(matches[2], 10) - 1
+ return matches[1] + " - " + graphAxes.column.labels[colIndex]
+ }
+ } else {
+ return display
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ColumnLayout {
+ id: controlLayout
+ spacing: 0
+
+ Button {
+ id: seriesToggle
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ text: "Show Expenses"
+ clip: true
+
+ onClicked: {
+ if (text === "Show Expenses") {
+ barSeries.visible = false
+ secondarySeries.visible = true
+ barGraph.valueAxis.labelFormat = "-%.2f M\u20AC"
+ secondarySeries.itemLabelFormat = "Expenses, @colLabel, @rowLabel: @valueLabel"
+ text = "Show Both"
+ } else if (text === "Show Both") {
+ barSeries.visible = true
+ barGraph.valueAxis.labelFormat = "%.2f M\u20AC"
+ secondarySeries.itemLabelFormat = "Expenses, @colLabel, @rowLabel: -@valueLabel"
+ text = "Show Income"
+ } else { // text === "Show Income"
+ secondarySeries.visible = false
+ text = "Show Expenses"
+ }
+ }
+ }
+
+ Button {
+ id: themeToggle
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ text: "Use theme 2"
+ clip: true
+
+ onClicked: {
+ if (text === "Use theme 2") {
+ barGraph.theme = theme2
+ text = "Use theme 1"
+ } else {
+ barGraph.theme = theme1
+ text = "Use theme 2"
+ }
+ }
+ }
+
+ Button {
+ id: barSeriesRowColorToggle
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ text: "Disable row colors"
+
+ onClicked: {
+ if (text === "Disable row colors") {
+ toggleRowColorsForBarSeries(false)
+ toggleRowColorsForSecondarySeries(false)
+ text = "Enable row colors"
+ } else {
+ toggleRowColorsForBarSeries(true)
+ toggleRowColorsForSecondarySeries(true)
+ text = "Disable row colors"
+ }
+ }
+ }
+ }
+
+ states: [
+ State {
+ name: "landscape"
+ PropertyChanges {
+ target: dataView
+ width: mainview.width / 4 * 3
+ height: mainview.height
+ }
+ PropertyChanges {
+ target: tableViewLayout
+ height: mainview.height - buttonLayoutHeight
+ anchors.right: dataView.left
+ anchors.left: mainview.left
+ anchors.bottom: undefined
+ }
+ PropertyChanges {
+ target: controlLayout
+ width: mainview.width / 4
+ height: buttonLayoutHeight
+ anchors.top: tableViewLayout.bottom
+ anchors.bottom: mainview.bottom
+ anchors.left: mainview.left
+ anchors.right: dataView.left
+ }
+ },
+ State {
+ name: "portrait"
+ PropertyChanges {
+ target: dataView
+ width: mainview.height / 4 * 3
+ height: mainview.width
+ }
+ PropertyChanges {
+ target: tableViewLayout
+ height: mainview.width
+ anchors.right: controlLayout.left
+ anchors.left: mainview.left
+ anchors.bottom: dataView.top
+ }
+ PropertyChanges {
+ target: controlLayout
+ width: mainview.height / 4
+ height: mainview.width / 4
+ anchors.top: mainview.top
+ anchors.bottom: dataView.top
+ anchors.left: undefined
+ anchors.right: mainview.right
+ }
+ }
+ ]
+}
diff --git a/tests/manual/qmldynamicdata/CMakeLists.txt b/tests/manual/qmldynamicdata/CMakeLists.txt
index 4d051b5e..739ecd15 100644
--- a/tests/manual/qmldynamicdata/CMakeLists.txt
+++ b/tests/manual/qmldynamicdata/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_internal_add_manual_test(qmldynamicdata
GUI
SOURCES
@@ -5,6 +8,8 @@ qt_internal_add_manual_test(qmldynamicdata
)
target_link_libraries(qmldynamicdata PUBLIC
Qt::Gui
+ Qt::Qml
+ Qt::Quick
Qt::DataVisualization
)
diff --git a/tests/manual/qmldynamicdata/main.cpp b/tests/manual/qmldynamicdata/main.cpp
index 03bc1a37..6a416829 100644
--- a/tests/manual/qmldynamicdata/main.cpp
+++ b/tests/manual/qmldynamicdata/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtGui/QGuiApplication>
#include <QtCore/QDir>
diff --git a/tests/manual/qmldynamicdata/qml/qmldynamicdata/main.qml b/tests/manual/qmldynamicdata/qml/qmldynamicdata/main.qml
index 74ec5cb9..1d0e65bf 100644
--- a/tests/manual/qmldynamicdata/qml/qmldynamicdata/main.qml
+++ b/tests/manual/qmldynamicdata/qml/qmldynamicdata/main.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtDataVisualization 1.2
@@ -155,12 +129,12 @@ Item {
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.LeftButton | Qt.RightButton
- property int mouseX: -1
- property int mouseY: -1
+ property int mouseXPos: -1
+ property int mouseYPos: -1
onPositionChanged: (mouse)=> {
- mouseX = mouse.x;
- mouseY = mouse.y;
+ mouseXPos = mouse.x;
+ mouseYPos = mouse.y;
}
onWheel: (wheel)=> {
@@ -187,7 +161,8 @@ Item {
running: true
repeat: true
onTriggered: {
- scatterGraph.scene.selectionQueryPosition = Qt.point(inputArea.mouseX, inputArea.mouseY);
+ scatterGraph.scene.selectionQueryPosition = Qt.point(inputArea.mouseXPos,
+ inputArea.mouseYPos);
}
}
}
diff --git a/tests/manual/qmlgradient/CMakeLists.txt b/tests/manual/qmlgradient/CMakeLists.txt
index d559e261..8288e1b2 100644
--- a/tests/manual/qmlgradient/CMakeLists.txt
+++ b/tests/manual/qmlgradient/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_internal_add_manual_test(qmlgradient
GUI
SOURCES
@@ -5,6 +8,8 @@ qt_internal_add_manual_test(qmlgradient
)
target_link_libraries(qmlgradient PUBLIC
Qt::Gui
+ Qt::Qml
+ Qt::Quick
Qt::DataVisualization
)
diff --git a/tests/manual/qmlgradient/main.cpp b/tests/manual/qmlgradient/main.cpp
index 48210ef2..b3a65f0f 100644
--- a/tests/manual/qmlgradient/main.cpp
+++ b/tests/manual/qmlgradient/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtGui/QGuiApplication>
#include <QtCore/QDir>
diff --git a/tests/manual/qmlgradient/qml/qmlgradient/main.qml b/tests/manual/qmlgradient/qml/qmlgradient/main.qml
index c692a72a..650dd087 100644
--- a/tests/manual/qmlgradient/qml/qmlgradient/main.qml
+++ b/tests/manual/qmlgradient/qml/qmlgradient/main.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtQuick.Window
diff --git a/tests/manual/qmlheightmap/CMakeLists.txt b/tests/manual/qmlheightmap/CMakeLists.txt
index 174b7bcf..17e7f3f2 100644
--- a/tests/manual/qmlheightmap/CMakeLists.txt
+++ b/tests/manual/qmlheightmap/CMakeLists.txt
@@ -1,7 +1,7 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(qmlheightmap
GUI
@@ -10,6 +10,8 @@ qt_internal_add_manual_test(qmlheightmap
)
target_link_libraries(qmlheightmap PUBLIC
Qt::Gui
+ Qt::Qml
+ Qt::Quick
Qt::DataVisualization
)
diff --git a/tests/manual/qmlheightmap/main.cpp b/tests/manual/qmlheightmap/main.cpp
index b54e9fea..371b78a8 100644
--- a/tests/manual/qmlheightmap/main.cpp
+++ b/tests/manual/qmlheightmap/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtGui/QGuiApplication>
#include <QtCore/QDir>
diff --git a/tests/manual/qmlheightmap/qml/qmlheightmap/main.qml b/tests/manual/qmlheightmap/qml/qmlheightmap/main.qml
index d7e29514..53003b59 100644
--- a/tests/manual/qmlheightmap/qml/qmlheightmap/main.qml
+++ b/tests/manual/qmlheightmap/qml/qmlheightmap/main.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtQuick.Window
diff --git a/tests/manual/qmlmultitest/CMakeLists.txt b/tests/manual/qmlmultitest/CMakeLists.txt
index 77b3a4a6..a92ff8db 100644
--- a/tests/manual/qmlmultitest/CMakeLists.txt
+++ b/tests/manual/qmlmultitest/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
qt_internal_add_manual_test(qmlmultitest
GUI
SOURCES
@@ -5,6 +8,8 @@ qt_internal_add_manual_test(qmlmultitest
)
target_link_libraries(qmlmultitest PUBLIC
Qt::Gui
+ Qt::Qml
+ Qt::Quick
Qt::DataVisualization
)
diff --git a/tests/manual/qmlmultitest/main.cpp b/tests/manual/qmlmultitest/main.cpp
index 41763539..555dff63 100644
--- a/tests/manual/qmlmultitest/main.cpp
+++ b/tests/manual/qmlmultitest/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtGui/QGuiApplication>
#include <QtCore/QDir>
diff --git a/tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml b/tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml
index b6d16eae..78e65575 100644
--- a/tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml
+++ b/tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
diff --git a/tests/manual/qmlmultitest/qml/qmlmultitest/main.qml b/tests/manual/qmlmultitest/qml/qmlmultitest/main.qml
index 54c85e95..493feb79 100644
--- a/tests/manual/qmlmultitest/qml/qmlmultitest/main.qml
+++ b/tests/manual/qmlmultitest/qml/qmlmultitest/main.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtQuick.Layouts
diff --git a/tests/manual/qmlperf/CMakeLists.txt b/tests/manual/qmlperf/CMakeLists.txt
index 141ba0c8..31235e32 100644
--- a/tests/manual/qmlperf/CMakeLists.txt
+++ b/tests/manual/qmlperf/CMakeLists.txt
@@ -1,7 +1,7 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(qmlperf
GUI
@@ -11,6 +11,8 @@ qt_internal_add_manual_test(qmlperf
)
target_link_libraries(qmlperf PUBLIC
Qt::Gui
+ Qt::Qml
+ Qt::Quick
Qt::DataVisualization
)
diff --git a/tests/manual/qmlperf/datagenerator.cpp b/tests/manual/qmlperf/datagenerator.cpp
index 18db9004..df00d483 100644
--- a/tests/manual/qmlperf/datagenerator.cpp
+++ b/tests/manual/qmlperf/datagenerator.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "datagenerator.h"
#include <QDebug>
diff --git a/tests/manual/qmlperf/datagenerator.h b/tests/manual/qmlperf/datagenerator.h
index ac816b92..99a9dbf7 100644
--- a/tests/manual/qmlperf/datagenerator.h
+++ b/tests/manual/qmlperf/datagenerator.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef DATAGENERATOR_H
#define DATAGENERATOR_H
diff --git a/tests/manual/qmlperf/main.cpp b/tests/manual/qmlperf/main.cpp
index 91ac214b..2566fc7d 100644
--- a/tests/manual/qmlperf/main.cpp
+++ b/tests/manual/qmlperf/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "datagenerator.h"
diff --git a/tests/manual/qmlperf/qml/qmlperf/main.qml b/tests/manual/qmlperf/qml/qmlperf/main.qml
index 60930606..4562e538 100644
--- a/tests/manual/qmlperf/qml/qmlperf/main.qml
+++ b/tests/manual/qmlperf/qml/qmlperf/main.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtQuick.Layouts
diff --git a/tests/manual/qmlvolume/CMakeLists.txt b/tests/manual/qmlvolume/CMakeLists.txt
index eeaa572a..5a0e446a 100644
--- a/tests/manual/qmlvolume/CMakeLists.txt
+++ b/tests/manual/qmlvolume/CMakeLists.txt
@@ -1,7 +1,7 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(qmlvolume
GUI
@@ -11,6 +11,8 @@ qt_internal_add_manual_test(qmlvolume
)
target_link_libraries(qmlvolume PUBLIC
Qt::Gui
+ Qt::Qml
+ Qt::Quick
Qt::DataVisualization
)
diff --git a/tests/manual/qmlvolume/datasource.cpp b/tests/manual/qmlvolume/datasource.cpp
index 9aa11963..6a16278e 100644
--- a/tests/manual/qmlvolume/datasource.cpp
+++ b/tests/manual/qmlvolume/datasource.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "datasource.h"
#include <QtCore/qmath.h>
@@ -50,7 +24,7 @@ void DataSource::fillVolume(QCustom3DVolume *volumeItem)
// This can take a while if the dimensions are large, so we support incremental data generation.
int index = 0;
- int textureSize = 256;
+ int textureSize = 1024;
QVector3D midPoint(float(textureSize) / 2.0f,
float(textureSize) / 2.0f,
float(textureSize) / 2.0f);
diff --git a/tests/manual/qmlvolume/datasource.h b/tests/manual/qmlvolume/datasource.h
index 37602a2c..de502337 100644
--- a/tests/manual/qmlvolume/datasource.h
+++ b/tests/manual/qmlvolume/datasource.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef DATASOURCE_H
#define DATASOURCE_H
diff --git a/tests/manual/qmlvolume/main.cpp b/tests/manual/qmlvolume/main.cpp
index fc14a3a1..1c4e4492 100644
--- a/tests/manual/qmlvolume/main.cpp
+++ b/tests/manual/qmlvolume/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "datasource.h"
diff --git a/tests/manual/qmlvolume/qml/qmlvolume/main.qml b/tests/manual/qmlvolume/qml/qmlvolume/main.qml
index 0ce82a12..da061483 100644
--- a/tests/manual/qmlvolume/qml/qmlvolume/main.qml
+++ b/tests/manual/qmlvolume/qml/qmlvolume/main.qml
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtQuick.Layouts
@@ -60,7 +34,7 @@ Item {
itemLabelVisible: false
onItemLabelChanged: {
- if (surfaceSeries.selectedPoint === surfaceSeries.invalidSelectionPosition)
+ if (surfaceSeries.selectedPoint == surfaceSeries.invalidSelectionPosition)
selectionText.text = "No selection"
else
selectionText.text = surfaceSeries.itemLabel
@@ -127,7 +101,7 @@ Item {
text: "Slice"
onClicked: {
- if (volumeItem.sliceIndexZ == -1) {
+ if (volumeItem.sliceIndexZ === -1) {
volumeItem.sliceIndexZ = 128
volumeItem.drawSlices = true
volumeItem.drawSliceFrames = true
@@ -149,7 +123,27 @@ Item {
}
}
}
+ }
+
+ SequentialAnimation {
+ running: volumeItem.drawSlices
+ loops: Animation.Infinite
+ PropertyAnimation {
+ target: volumeItem
+ property: "sliceIndexZ"
+ from: 0
+ to: 1024
+ duration: 5000
+ }
+
+ PropertyAnimation {
+ target: volumeItem
+ property: "sliceIndexZ"
+ from: 1024
+ to: 0
+ duration: 5000
+ }
}
Custom3DVolume {
diff --git a/tests/manual/scattertest/CMakeLists.txt b/tests/manual/scattertest/CMakeLists.txt
index 00177653..89013c12 100644
--- a/tests/manual/scattertest/CMakeLists.txt
+++ b/tests/manual/scattertest/CMakeLists.txt
@@ -1,13 +1,15 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(scattertest
GUI
SOURCES
main.cpp
scatterchart.cpp scatterchart.h
+ NO_PCH_SOURCES
+ scatterchart.cpp # undef QT_NO_FOREACH
)
target_link_libraries(scattertest PUBLIC
Qt::Gui
diff --git a/tests/manual/scattertest/main.cpp b/tests/manual/scattertest/main.cpp
index 1f872c4d..af4d477f 100644
--- a/tests/manual/scattertest/main.cpp
+++ b/tests/manual/scattertest/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "scatterchart.h"
diff --git a/tests/manual/scattertest/scatterchart.cpp b/tests/manual/scattertest/scatterchart.cpp
index ca8414ac..fce115d4 100644
--- a/tests/manual/scattertest/scatterchart.cpp
+++ b/tests/manual/scattertest/scatterchart.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "scatterchart.h"
#include <QtDataVisualization/qscatterdataproxy.h>
@@ -244,7 +220,7 @@ void ScatterDataModifier::massiveTestAppendAndScroll()
m_chart->axisZ()->setRange(min, max);
}
-void ScatterDataModifier::setFpsMeasurement(bool enable)
+void ScatterDataModifier::setFpsMeasurement(int enable)
{
m_chart->setMeasureFps(enable);
}
@@ -973,14 +949,14 @@ void ScatterDataModifier::changeRadialLabelOffset(int offset)
m_chart->setRadialLabelOffset(float(offset) / 100.0f);
}
-void ScatterDataModifier::toggleAxisTitleVisibility(bool enabled)
+void ScatterDataModifier::toggleAxisTitleVisibility(int enabled)
{
m_chart->axisX()->setTitleVisible(enabled);
m_chart->axisY()->setTitleVisible(enabled);
m_chart->axisZ()->setTitleVisible(enabled);
}
-void ScatterDataModifier::toggleAxisTitleFixed(bool enabled)
+void ScatterDataModifier::toggleAxisTitleFixed(int enabled)
{
m_chart->axisX()->setTitleFixed(enabled);
m_chart->axisY()->setTitleFixed(enabled);
@@ -1009,12 +985,12 @@ void ScatterDataModifier::renderToImage()
}
}
-void ScatterDataModifier::togglePolar(bool enable)
+void ScatterDataModifier::togglePolar(int enable)
{
m_chart->setPolar(enable);
}
-void ScatterDataModifier::toggleStatic(bool enable)
+void ScatterDataModifier::toggleStatic(int enable)
{
if (enable)
m_chart->setOptimizationHints(QAbstract3DGraph::OptimizationStatic);
@@ -1022,7 +998,7 @@ void ScatterDataModifier::toggleStatic(bool enable)
m_chart->setOptimizationHints(QAbstract3DGraph::OptimizationDefault);
}
-void ScatterDataModifier::toggleOrtho(bool enable)
+void ScatterDataModifier::toggleOrtho(int enable)
{
m_chart->setOrthoProjection(enable);
}
diff --git a/tests/manual/scattertest/scatterchart.h b/tests/manual/scattertest/scatterchart.h
index 43fabeac..2771a9a4 100644
--- a/tests/manual/scattertest/scatterchart.h
+++ b/tests/manual/scattertest/scatterchart.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef SCATTERDATAMODIFIER_H
#define SCATTERDATAMODIFIER_H
@@ -67,7 +41,7 @@ public:
void massiveDataTest();
void massiveTestScroll();
void massiveTestAppendAndScroll();
- void setFpsMeasurement(bool enable);
+ void setFpsMeasurement(int enable);
void setFpsLabel(QLabel *fpsLabel) { m_fpsLabel = fpsLabel; }
void testItemChanges();
void testAxisReverse();
@@ -101,12 +75,12 @@ public Q_SLOTS:
void handleFpsChange(qreal fps);
void changeLabelRotation(int rotation);
void changeRadialLabelOffset(int offset);
- void toggleAxisTitleVisibility(bool enabled);
- void toggleAxisTitleFixed(bool enabled);
+ void toggleAxisTitleVisibility(int enabled);
+ void toggleAxisTitleFixed(int enabled);
void renderToImage();
- void togglePolar(bool enable);
- void toggleStatic(bool enable);
- void toggleOrtho(bool enable);
+ void togglePolar(int enable);
+ void toggleStatic(int enable);
+ void toggleOrtho(int enable);
void setCameraTargetX(int value);
void setCameraTargetY(int value);
void setCameraTargetZ(int value);
diff --git a/tests/manual/surfacetest/CMakeLists.txt b/tests/manual/surfacetest/CMakeLists.txt
index c59f9488..bb3f0500 100644
--- a/tests/manual/surfacetest/CMakeLists.txt
+++ b/tests/manual/surfacetest/CMakeLists.txt
@@ -1,13 +1,17 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(surfacetest
GUI
SOURCES
+ buttonwrapper.cpp buttonwrapper.h
+ checkboxwrapper.cpp checkboxwrapper.h
graphmodifier.cpp graphmodifier.h
main.cpp
+ NO_PCH_SOURCES
+ graphmodifier.cpp # undef QT_NO_FOREACH
)
target_link_libraries(surfacetest PUBLIC
Qt::Gui
diff --git a/tests/manual/surfacetest/buttonwrapper.cpp b/tests/manual/surfacetest/buttonwrapper.cpp
new file mode 100644
index 00000000..c8eef0c7
--- /dev/null
+++ b/tests/manual/surfacetest/buttonwrapper.cpp
@@ -0,0 +1,14 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+#include "buttonwrapper.h"
+#include <QPushButton>
+
+ButtonWrapper::ButtonWrapper(QPushButton *button)
+{
+ m_button = button;
+}
+
+void ButtonWrapper::setEnabled(int state)
+{
+ m_button->setEnabled(state);
+}
diff --git a/tests/manual/surfacetest/buttonwrapper.h b/tests/manual/surfacetest/buttonwrapper.h
new file mode 100644
index 00000000..d0112117
--- /dev/null
+++ b/tests/manual/surfacetest/buttonwrapper.h
@@ -0,0 +1,22 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+#ifndef BUTTONWRAPPER_H
+#define BUTTONWRAPPER_H
+
+#include <QObject>
+class QPushButton;
+
+class ButtonWrapper : public QObject
+{
+ Q_OBJECT
+public:
+ ButtonWrapper(QPushButton *button);
+
+public Q_SLOTS:
+ void setEnabled(int state);
+
+private:
+ QPushButton *m_button;
+};
+
+#endif // BUTTONWRAPPER_H
diff --git a/tests/manual/surfacetest/checkboxwrapper.cpp b/tests/manual/surfacetest/checkboxwrapper.cpp
new file mode 100644
index 00000000..37bd3ded
--- /dev/null
+++ b/tests/manual/surfacetest/checkboxwrapper.cpp
@@ -0,0 +1,14 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+#include "checkboxwrapper.h"
+#include <QCheckBox>
+
+CheckBoxWrapper::CheckBoxWrapper(QCheckBox *cb)
+{
+ m_checkbox = cb;
+}
+
+void CheckBoxWrapper::setEnabled(int enabled)
+{
+ m_checkbox->setEnabled(enabled);
+}
diff --git a/tests/manual/surfacetest/checkboxwrapper.h b/tests/manual/surfacetest/checkboxwrapper.h
new file mode 100644
index 00000000..37e72346
--- /dev/null
+++ b/tests/manual/surfacetest/checkboxwrapper.h
@@ -0,0 +1,23 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+#ifndef CHECKBOXWRAPPER_H
+#define CHECKBOXWRAPPER_H
+
+#include <QObject>
+
+class QCheckBox;
+
+class CheckBoxWrapper : public QObject
+{
+ Q_OBJECT
+public:
+ explicit CheckBoxWrapper(QCheckBox *cb);
+
+public Q_SLOTS:
+ void setEnabled(int enabled);
+
+private:
+ QCheckBox *m_checkbox;
+};
+
+#endif // CHECKBOXWRAPPER_H
diff --git a/tests/manual/surfacetest/graphmodifier.cpp b/tests/manual/surfacetest/graphmodifier.cpp
index 76c5afb9..f406513d 100644
--- a/tests/manual/surfacetest/graphmodifier.cpp
+++ b/tests/manual/surfacetest/graphmodifier.cpp
@@ -1,31 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
#include "graphmodifier.h"
#include <QtDataVisualization/QValue3DAxis>
@@ -193,7 +169,7 @@ void GraphModifier::fillSeries()
m_multiseries[3]->dataProxy()->resetArray(dataArray4);
}
-void GraphModifier::toggleSeries1(bool enabled)
+void GraphModifier::toggleSeries1(int enabled)
{
qDebug() << __FUNCTION__ << " enabled = " << enabled;
@@ -204,7 +180,7 @@ void GraphModifier::toggleSeries1(bool enabled)
}
}
-void GraphModifier::toggleSeries2(bool enabled)
+void GraphModifier::toggleSeries2(int enabled)
{
qDebug() << __FUNCTION__ << " enabled = " << enabled;
@@ -215,7 +191,7 @@ void GraphModifier::toggleSeries2(bool enabled)
}
}
-void GraphModifier::toggleSeries3(bool enabled)
+void GraphModifier::toggleSeries3(int enabled)
{
qDebug() << __FUNCTION__ << " enabled = " << enabled;
@@ -226,7 +202,7 @@ void GraphModifier::toggleSeries3(bool enabled)
}
}
-void GraphModifier::toggleSeries4(bool enabled)
+void GraphModifier::toggleSeries4(int enabled)
{
qDebug() << __FUNCTION__ << " enabled = " << enabled;
@@ -237,7 +213,7 @@ void GraphModifier::toggleSeries4(bool enabled)
}
}
-void GraphModifier::toggleSmooth(bool enabled)
+void GraphModifier::toggleSmooth(int enabled)
{
qDebug() << "GraphModifier::toggleSmooth " << enabled;
m_theSeries->setFlatShadingEnabled(enabled);
@@ -246,7 +222,7 @@ void GraphModifier::toggleSmooth(bool enabled)
#endif
}
-void GraphModifier::toggleSurfaceGrid(bool enable)
+void GraphModifier::toggleSurfaceGrid(int enable)
{
qDebug() << "GraphModifier::toggleSurfaceGrid" << enable;
if (enable)
@@ -260,7 +236,7 @@ void GraphModifier::toggleSurfaceGrid(bool enable)
#endif
}
-void GraphModifier::toggleSurface(bool enable)
+void GraphModifier::toggleSurface(int enable)
{
qDebug() << "GraphModifier::toggleSurface" << enable;
if (enable)
@@ -274,7 +250,7 @@ void GraphModifier::toggleSurface(bool enable)
#endif
}
-void GraphModifier::toggleSeriesVisible(bool enable)
+void GraphModifier::toggleSeriesVisible(int enable)
{
m_theSeries->setVisible(enable);
#ifdef MULTI_SERIES
@@ -282,13 +258,13 @@ void GraphModifier::toggleSeriesVisible(bool enable)
#endif
}
-void GraphModifier::toggleSmoothS2(bool enabled)
+void GraphModifier::toggleSmoothS2(int enabled)
{
qDebug() << __FUNCTION__ << enabled;
m_multiseries[1]->setFlatShadingEnabled(enabled);
}
-void GraphModifier::toggleSurfaceGridS2(bool enable)
+void GraphModifier::toggleSurfaceGridS2(int enable)
{
qDebug() << __FUNCTION__ << enable;
if (enable)
@@ -299,7 +275,7 @@ void GraphModifier::toggleSurfaceGridS2(bool enable)
m_multiseries[1]->setDrawMode(m_drawMode2);
}
-void GraphModifier::toggleSurfaceS2(bool enable)
+void GraphModifier::toggleSurfaceS2(int enable)
{
qDebug() << __FUNCTION__ << enable;
if (enable)
@@ -310,19 +286,19 @@ void GraphModifier::toggleSurfaceS2(bool enable)
m_multiseries[1]->setDrawMode(m_drawMode2);
}
-void GraphModifier::toggleSeries2Visible(bool enable)
+void GraphModifier::toggleSeries2Visible(int enable)
{
qDebug() << __FUNCTION__ << enable;
m_multiseries[1]->setVisible(enable);
}
-void GraphModifier::toggleSmoothS3(bool enabled)
+void GraphModifier::toggleSmoothS3(int enabled)
{
qDebug() << __FUNCTION__ << enabled;
m_multiseries[2]->setFlatShadingEnabled(enabled);
}
-void GraphModifier::toggleSurfaceGridS3(bool enable)
+void GraphModifier::toggleSurfaceGridS3(int enable)
{
qDebug() << __FUNCTION__ << enable;
if (enable)
@@ -333,7 +309,7 @@ void GraphModifier::toggleSurfaceGridS3(bool enable)
m_multiseries[2]->setDrawMode(m_drawMode3);
}
-void GraphModifier::toggleSurfaceS3(bool enable)
+void GraphModifier::toggleSurfaceS3(int enable)
{
qDebug() << __FUNCTION__ << enable;
if (enable)
@@ -344,19 +320,19 @@ void GraphModifier::toggleSurfaceS3(bool enable)
m_multiseries[2]->setDrawMode(m_drawMode3);
}
-void GraphModifier::toggleSeries3Visible(bool enable)
+void GraphModifier::toggleSeries3Visible(int enable)
{
qDebug() << __FUNCTION__ << enable;
m_multiseries[2]->setVisible(enable);
}
-void GraphModifier::toggleSmoothS4(bool enabled)
+void GraphModifier::toggleSmoothS4(int enabled)
{
qDebug() << __FUNCTION__ << enabled;
m_multiseries[3]->setFlatShadingEnabled(enabled);
}
-void GraphModifier::toggleSurfaceGridS4(bool enable)
+void GraphModifier::toggleSurfaceGridS4(int enable)
{
qDebug() << __FUNCTION__ << enable;
if (enable)
@@ -367,7 +343,7 @@ void GraphModifier::toggleSurfaceGridS4(bool enable)
m_multiseries[3]->setDrawMode(m_drawMode4);
}
-void GraphModifier::toggleSurfaceS4(bool enable)
+void GraphModifier::toggleSurfaceS4(int enable)
{
qDebug() << __FUNCTION__ << enable;
if (enable)
@@ -378,13 +354,13 @@ void GraphModifier::toggleSurfaceS4(bool enable)
m_multiseries[3]->setDrawMode(m_drawMode4);
}
-void GraphModifier::toggleSeries4Visible(bool enable)
+void GraphModifier::toggleSeries4Visible(int enable)
{
qDebug() << __FUNCTION__ << enable;
m_multiseries[3]->setVisible(enable);
}
-void GraphModifier::toggleSqrtSin(bool enable)
+void GraphModifier::toggleSqrtSin(int enable)
{
if (enable) {
qDebug() << "Create Sqrt&Sin surface, (" << m_xCount << ", " << m_zCount << ")";
@@ -426,7 +402,7 @@ void GraphModifier::toggleSqrtSin(bool enable)
}
}
-void GraphModifier::togglePlane(bool enable)
+void GraphModifier::togglePlane(int enable)
{
qDebug() << "GraphModifier::togglePlane " << enable;
@@ -749,21 +725,21 @@ void GraphModifier::changeLabelRotation(int rotation)
m_graph->axisZ()->setLabelAutoRotation(float(rotation));
}
-void GraphModifier::toggleAxisTitleVisibility(bool enabled)
+void GraphModifier::toggleAxisTitleVisibility(int enabled)
{
m_graph->axisX()->setTitleVisible(enabled);
m_graph->axisY()->setTitleVisible(enabled);
m_graph->axisZ()->setTitleVisible(enabled);
}
-void GraphModifier::toggleAxisTitleFixed(bool enabled)
+void GraphModifier::toggleAxisTitleFixed(int enabled)
{
m_graph->axisX()->setTitleFixed(enabled);
m_graph->axisY()->setTitleFixed(enabled);
m_graph->axisZ()->setTitleFixed(enabled);
}
-void GraphModifier::toggleXAscending(bool enabled)
+void GraphModifier::toggleXAscending(int enabled)
{
m_ascendingX = enabled;
@@ -793,7 +769,7 @@ void GraphModifier::toggleXAscending(bool enabled)
}
}
-void GraphModifier::toggleZAscending(bool enabled)
+void GraphModifier::toggleZAscending(int enabled)
{
m_ascendingZ = enabled;
@@ -823,7 +799,7 @@ void GraphModifier::toggleZAscending(bool enabled)
}
}
-void GraphModifier::togglePolar(bool enabled)
+void GraphModifier::togglePolar(int enabled)
{
m_graph->setPolar(enabled);
}
@@ -1681,7 +1657,7 @@ void GraphModifier::setHorizontalAspectRatio(int ratio)
m_graph->setHorizontalAspectRatio(aspectRatio);
}
-void GraphModifier::setSurfaceTexture(bool enabled)
+void GraphModifier::setSurfaceTexture(int enabled)
{
if (enabled)
m_multiseries[3]->setTexture(QImage(":/maps/mapimage"));
diff --git a/tests/manual/surfacetest/graphmodifier.h b/tests/manual/surfacetest/graphmodifier.h
index e535021a..fe839976 100644
--- a/tests/manual/surfacetest/graphmodifier.h
+++ b/tests/manual/surfacetest/graphmodifier.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef GRAPHMODIFIER_H
#define GRAPHMODIFIER_H
@@ -53,29 +27,29 @@ public:
explicit GraphModifier(Q3DSurface *graph, QWidget *parentWidget);
~GraphModifier();
- void toggleSeries1(bool enabled);
- void toggleSeries2(bool enabled);
- void toggleSeries3(bool enabled);
- void toggleSeries4(bool enabled);
- void toggleSmooth(bool enabled);
- void toggleSurfaceGrid(bool enable);
- void toggleSurface(bool enable);
- void toggleSeriesVisible(bool enable);
- void toggleSmoothS2(bool enabled);
- void toggleSurfaceGridS2(bool enable);
- void toggleSurfaceS2(bool enable);
- void toggleSeries2Visible(bool enable);
- void toggleSmoothS3(bool enabled);
- void toggleSurfaceGridS3(bool enable);
- void toggleSurfaceS3(bool enable);
- void toggleSeries3Visible(bool enable);
- void toggleSmoothS4(bool enabled);
- void toggleSurfaceGridS4(bool enable);
- void toggleSurfaceS4(bool enable);
- void toggleSeries4Visible(bool enable);
+ void toggleSeries1(int enabled);
+ void toggleSeries2(int enabled);
+ void toggleSeries3(int enabled);
+ void toggleSeries4(int enabled);
+ void toggleSmooth(int enabled);
+ void toggleSurfaceGrid(int enable);
+ void toggleSurface(int enable);
+ void toggleSeriesVisible(int enable);
+ void toggleSmoothS2(int enabled);
+ void toggleSurfaceGridS2(int enable);
+ void toggleSurfaceS2(int enable);
+ void toggleSeries2Visible(int enable);
+ void toggleSmoothS3(int enabled);
+ void toggleSurfaceGridS3(int enable);
+ void toggleSurfaceS3(int enable);
+ void toggleSeries3Visible(int enable);
+ void toggleSmoothS4(int enabled);
+ void toggleSurfaceGridS4(int enable);
+ void toggleSurfaceS4(int enable);
+ void toggleSeries4Visible(int enable);
- void toggleSqrtSin(bool enable);
- void togglePlane(bool enable);
+ void toggleSqrtSin(int enable);
+ void togglePlane(int enable);
void setHeightMapData(bool enable);
void toggleGridSliderLock(bool enable);
void setGridSliderX(QSlider *slider) { m_gridSliderX = slider; }
@@ -123,7 +97,7 @@ public:
void testDataOrdering();
void setAspectRatio(int ratio);
void setHorizontalAspectRatio(int ratio);
- void setSurfaceTexture(bool enabled);
+ void setSurfaceTexture(int enabled);
public Q_SLOTS:
void changeShadowQuality(int quality);
@@ -138,11 +112,11 @@ public Q_SLOTS:
void handleAxisZChanged(QValue3DAxis *axis);
void handleFpsChange(qreal fps);
void changeLabelRotation(int rotation);
- void toggleAxisTitleVisibility(bool enabled);
- void toggleAxisTitleFixed(bool enabled);
- void toggleXAscending(bool enabled);
- void toggleZAscending(bool enabled);
- void togglePolar(bool enabled);
+ void toggleAxisTitleVisibility(int enabled);
+ void toggleAxisTitleFixed(int enabled);
+ void toggleXAscending(int enabled);
+ void toggleZAscending(int enabled);
+ void togglePolar(int enabled);
void setCameraTargetX(int value);
void setCameraTargetY(int value);
void setCameraTargetZ(int value);
diff --git a/tests/manual/surfacetest/main.cpp b/tests/manual/surfacetest/main.cpp
index 239a6eba..7b90a0c2 100644
--- a/tests/manual/surfacetest/main.cpp
+++ b/tests/manual/surfacetest/main.cpp
@@ -1,33 +1,9 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "graphmodifier.h"
+#include "buttonwrapper.h"
+#include "checkboxwrapper.h"
#include <QtDataVisualization/q3dtheme.h>
#include <QApplication>
@@ -580,49 +556,66 @@ int main(int argc, char *argv[])
QObject::connect(series4VisibleCB, &QCheckBox::stateChanged,
modifier, &GraphModifier::toggleSeries4Visible);
+ CheckBoxWrapper *series1SmoothCBWrapper = new CheckBoxWrapper(smoothCB);
+ CheckBoxWrapper *series1SurfaceGridCBWrapper = new CheckBoxWrapper(surfaceGridCB);
+ CheckBoxWrapper *series1surfaceCBWrapper = new CheckBoxWrapper(surfaceCB);
+ CheckBoxWrapper *series1VisibleCBWrapper = new CheckBoxWrapper(seriesVisibleCB);
QObject::connect(series1CB, &QCheckBox::stateChanged,
modifier, &GraphModifier::toggleSeries1);
QObject::connect(series1CB, &QCheckBox::stateChanged,
- smoothCB, &QPushButton::setEnabled);
+ series1SmoothCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series1CB, &QCheckBox::stateChanged,
- surfaceGridCB, &QPushButton::setEnabled);
+ series1SurfaceGridCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series1CB, &QCheckBox::stateChanged,
- surfaceCB, &QPushButton::setEnabled);
+ series1surfaceCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series1CB, &QCheckBox::stateChanged,
- seriesVisibleCB, &QPushButton::setEnabled);
+ series1VisibleCBWrapper, &CheckBoxWrapper::setEnabled);
+
+ CheckBoxWrapper *series2SmoothCBWrapper = new CheckBoxWrapper(smoothS2CB);
+ CheckBoxWrapper *series2SurfaceGridCBWrapper = new CheckBoxWrapper(surfaceGridS2CB);
+ CheckBoxWrapper *series2surfaceCBWrapper = new CheckBoxWrapper(surfaceS2CB);
+ CheckBoxWrapper *series2VisibleCBWrapper = new CheckBoxWrapper(series2VisibleCB);
QObject::connect(series2CB, &QCheckBox::stateChanged,
modifier, &GraphModifier::toggleSeries2);
QObject::connect(series2CB, &QCheckBox::stateChanged,
- smoothS2CB, &QPushButton::setEnabled);
+ series2SmoothCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series2CB, &QCheckBox::stateChanged,
- surfaceGridS2CB, &QPushButton::setEnabled);
+ series2SurfaceGridCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series2CB, &QCheckBox::stateChanged,
- surfaceS2CB, &QPushButton::setEnabled);
+ series2surfaceCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series2CB, &QCheckBox::stateChanged,
- series2VisibleCB, &QPushButton::setEnabled);
+ series2VisibleCBWrapper, &CheckBoxWrapper::setEnabled);
+ CheckBoxWrapper *series3SmoothCBWrapper = new CheckBoxWrapper(smoothS3CB);
+ CheckBoxWrapper *series3SurfaceGridCBWrapper = new CheckBoxWrapper(surfaceGridS3CB);
+ CheckBoxWrapper *series3surfaceCBWrapper = new CheckBoxWrapper(surfaceS3CB);
+ CheckBoxWrapper *series3VisibleCBWrapper = new CheckBoxWrapper(series3VisibleCB);
QObject::connect(series3CB, &QCheckBox::stateChanged,
modifier, &GraphModifier::toggleSeries3);
QObject::connect(series3CB, &QCheckBox::stateChanged,
- smoothS3CB, &QPushButton::setEnabled);
+ series3SmoothCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series3CB, &QCheckBox::stateChanged,
- surfaceGridS3CB, &QPushButton::setEnabled);
+ series3SurfaceGridCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series3CB, &QCheckBox::stateChanged,
- surfaceS3CB, &QPushButton::setEnabled);
+ series3surfaceCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series3CB, &QCheckBox::stateChanged,
- series3VisibleCB, &QPushButton::setEnabled);
+ series3VisibleCBWrapper, &CheckBoxWrapper::setEnabled);
+ CheckBoxWrapper *series4SmoothCBWrapper = new CheckBoxWrapper(smoothS4CB);
+ CheckBoxWrapper *series4SurfaceGridCBWrapper = new CheckBoxWrapper(surfaceGridS4CB);
+ CheckBoxWrapper *series4surfaceCBWrapper = new CheckBoxWrapper(surfaceS4CB);
+ CheckBoxWrapper *series4VisibleCBWrapper = new CheckBoxWrapper(series4VisibleCB);
QObject::connect(series4CB, &QCheckBox::stateChanged,
modifier, &GraphModifier::toggleSeries4);
QObject::connect(series4CB, &QCheckBox::stateChanged,
- smoothS4CB, &QPushButton::setEnabled);
+ series4SmoothCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series4CB, &QCheckBox::stateChanged,
- surfaceGridS4CB, &QPushButton::setEnabled);
+ series4SurfaceGridCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series4CB, &QCheckBox::stateChanged,
- surfaceS4CB, &QPushButton::setEnabled);
+ series4surfaceCBWrapper, &CheckBoxWrapper::setEnabled);
QObject::connect(series4CB, &QCheckBox::stateChanged,
- series4VisibleCB, &QPushButton::setEnabled);
+ series4VisibleCBWrapper, &CheckBoxWrapper::setEnabled);
#else
QObject::connect(sqrtSinCB, &QRadioButton::toggled,
modifier, &GraphModifier::toggleSqrtSin);
diff --git a/tests/manual/volumetrictest/CMakeLists.txt b/tests/manual/volumetrictest/CMakeLists.txt
index c0f698f1..7e39bdf5 100644
--- a/tests/manual/volumetrictest/CMakeLists.txt
+++ b/tests/manual/volumetrictest/CMakeLists.txt
@@ -1,7 +1,7 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
qt_internal_add_manual_test(volumetrictest
GUI
diff --git a/tests/manual/volumetrictest/main.cpp b/tests/manual/volumetrictest/main.cpp
index a3fb999e..d9d322be 100644
--- a/tests/manual/volumetrictest/main.cpp
+++ b/tests/manual/volumetrictest/main.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "volumetrictest.h"
#include <QtWidgets/QApplication>
diff --git a/tests/manual/volumetrictest/volumetrictest.cpp b/tests/manual/volumetrictest/volumetrictest.cpp
index 7b6e3821..49293873 100644
--- a/tests/manual/volumetrictest/volumetrictest.cpp
+++ b/tests/manual/volumetrictest/volumetrictest.cpp
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "volumetrictest.h"
#include <QtDataVisualization/qbar3dseries.h>
diff --git a/tests/manual/volumetrictest/volumetrictest.h b/tests/manual/volumetrictest/volumetrictest.h
index b100b827..20b197d0 100644
--- a/tests/manual/volumetrictest/volumetrictest.h
+++ b/tests/manual/volumetrictest/volumetrictest.h
@@ -1,31 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Data Visualization module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#ifndef VOLUMETRICMODIFIER_H
#define VOLUMETRICMODIFIER_H