This generalizes the logic from QgsLayoutManager, so that additional
manager classes handling other object types can be added without
incurring a lot of near-duplicate code.
This is a step toward allowing storage of elevation profiles
within projects.
With this new method code, it is now possible to use
`QgsProject::removeMapLayers` with a list of layers or a list of
layers IDs in qt5 and qt6.
Co-authored-by: bdm-oslandia <benoit.de.mezzo@oslandia.com>
API allows to define a color model without a color space. If both are
set, consistency between defined color model and color space one is
checked (only in Qt version 6.8.0 or greater because it's not possible
to retrieve color model from color space before that)
If checked, this option reverse the slider in the elevation filter
so that the widget goes from high values at the bottom to low values at the top.
See justification in https://github.com/qgis/QGIS/issues/56995Fixes#56995
Returns the CRS to use for the project when transforming 3D data,
or when z/elevation value handling is important.
The returned CRS will take into account verticalCrs(), e.g. by
returning a compound CRS consisting of crs() + verticalCrs().
This method may still return a 2D CRS, e.g in the case that crs()
is a 2D CRS and no verticalCrs() has been set for the project.
I.E. It is NOT guaranteed that the returned CRS will actually
be a 3D CRS, but rather it is guaranteed that the returned CRS
is **ALWAYS** the most appropriate CRS to use when handling 3D data.
If the project crs() is a compound CRS, then the CRS returned
by QgsProject::verticalCrs() be the vertical component of
QgsProject::crs(). Otherwise it will be the value explicitly
set by a call to setVerticalCrs().
The vertical crs is a persistent property of a project, which
is saved/restored to xml.
And expose through Project Properties elevation settings widget
This setting allows users to specify the upper and lower
elevation limits associated with the project. (I.e. its an
equivalent to QgsProjectTimeSettings::temporalRange)