diff --git a/.ci/run_tests.sh b/.ci/run_tests.sh
index cdc8d16c6990..79b0782af9a1 100755
--- a/.ci/run_tests.sh
+++ b/.ci/run_tests.sh
@@ -12,7 +12,13 @@ test -n "${DOCKER}" || {
DOCKER_COMPOSE=$(command -v podman-compose docker-compose | head -1)
test -n "${DOCKER_COMPOSE}" || {
- DOCKER_COMPOSE="${DOCKER} compose" # TODO: check if supported
+ DOCKER_COMPOSE="${DOCKER} compose"
+ # check if supported
+ ${DOCKER_COMPOSE} > /dev/null || {
+ echo "Cannot find podman-compose or docker-compose, and '${DOCKER_COMPOSE}' fails" >&2
+ echo "HINT: try installing podman-compose" >&2
+ exit 1
+ }
}
IMAGE_BUILD_DEPS=docker.io/qgis/qgis3-build-deps:latest
diff --git a/.docker/qgis3-qt5-build-deps.dockerfile b/.docker/qgis3-qt5-build-deps.dockerfile
index 173e0069a413..de30c642b56a 100644
--- a/.docker/qgis3-qt5-build-deps.dockerfile
+++ b/.docker/qgis3-qt5-build-deps.dockerfile
@@ -156,13 +156,14 @@ RUN apt-get update \
# HANA: client side
# Install hdbsql tool
-RUN curl -j -k -L -H "Cookie: eula_3_2_agreed=tools.hana.ondemand.com/developer-license-3_2.txt" https://tools.hana.ondemand.com/additional/hanaclient-latest-linux-x64.tar.gz --output hanaclient-latest-linux-x64.tar.gz \
- && tar -xvf hanaclient-latest-linux-x64.tar.gz \
- && mkdir /usr/sap \
- && ./client/hdbinst -a client --sapmnt=/usr/sap \
- && rm -rf client \
- && rm hanaclient*
-ENV PATH="/usr/sap/hdbclient:${PATH}"
+# Does not always work
+# RUN curl -j -k -L -H "Cookie: eula_3_2_agreed=tools.hana.ondemand.com/developer-license-3_2.txt" https://tools.hana.ondemand.com/additional/hanaclient-latest-linux-x64.tar.gz --output hanaclient-latest-linux-x64.tar.gz \
+# && tar -xvf hanaclient-latest-linux-x64.tar.gz \
+# && mkdir /usr/sap \
+# && ./client/hdbinst -a client --sapmnt=/usr/sap \
+# && rm -rf client \
+# && rm hanaclient*
+# ENV PATH="/usr/sap/hdbclient:${PATH}"
# MSSQL: client side
# RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
index 65bd04ff28a0..e325f63429f4 100644
--- a/.github/workflows/run-tests.yml
+++ b/.github/workflows/run-tests.yml
@@ -24,6 +24,7 @@ on:
- master
- release-**
- queued_ltr_backports
+ - capture-profile-points
# paths cannot be filtered on this workflow on pull request as it is a required one in the branch protection
# feature request and hacks: https://github.community/t/feature-request-conditional-required-checks/16761
@@ -118,7 +119,7 @@ jobs:
echo QT_VERSION: ${QT_VERSION}
- name: Login to Docker Hub
- if: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
+ if: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
@@ -131,7 +132,7 @@ jobs:
context: .
file: .docker/qgis3-qt${{ matrix.qt-version }}-build-deps.dockerfile
tags: qgis/qgis3-build-deps-${{ matrix.distro-version }}-qt${{ matrix.qt-version }}:${{ github.event.pull_request.base.ref || github.ref_name }}
- push: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
+ push: false
pull: true
build-args:
DISTRO_VERSION=${{ matrix.distro-version }}
@@ -296,12 +297,12 @@ jobs:
run: |
echo CTEST_BUILD_NAME: ${CTEST_BUILD_NAME}
- - name: Login to Docker Hub
- if: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PASSWORD }}
+ # - name: Login to Docker Hub
+ # if: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
+ # uses: docker/login-action@v3
+ # with:
+ # username: ${{ secrets.DOCKER_USERNAME }}
+ # password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build Docker Container with Testing Environment
id: docker-build
@@ -310,7 +311,7 @@ jobs:
context: .
file: .docker/qgis3-qt${{ matrix.qt-version }}-build-deps.dockerfile
tags: qgis/qgis3-qt${{ matrix.qt-version }}-build-deps-bin-only:${{ github.event.pull_request.base.ref || github.ref_name }}
- push: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
+ push: false
pull: true
target: ${{ matrix.docker-target }}
build-args:
@@ -408,7 +409,7 @@ jobs:
fetch-depth: 2
- name: Login to Docker Hub
- if: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
+ if: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
@@ -421,7 +422,7 @@ jobs:
context: .
file: .docker/qgis3-qt${{ matrix.qt-version }}-build-deps.dockerfile
tags: qgis/qgis3-qt${{ matrix.qt-version }}-build-deps-bin-only:${{ github.event.pull_request.base.ref || github.ref_name }}
- push: ${{ github.event_name == 'push' && github.actor == 'qgis' }}
+ push: ${{ github.event_name == 'push' && github.repository == 'qgis/QGIS' }}
pull: true
target: ${{ matrix.docker-target }}
build-args:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e283e40d65c1..5898713e3933 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,7 +6,7 @@ set(CMAKE_AUTORCC ON)
# set path to additional CMake modules
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
# POLICIES
-if(NOT "${CMAKE_VERSION}" VERSION_LESS "3.27")
+if("${CMAKE_VERSION}" VERSION_GREATER_EQUAL "3.27")
# include(Dart) still used, as is the "Experimental" target
cmake_policy(SET CMP0145 OLD)
endif()
@@ -435,6 +435,10 @@ if(WITH_CORE)
# required
find_package(Proj REQUIRED)
message(STATUS "Found Proj: ${PROJ_VERSION} ${PROJ_DIR}")
+ if(PROJ_VERSION VERSION_LESS "8.1")
+ message(FATAL_ERROR "Cannot build QGIS using Proj older than 8.1")
+ endif()
+
find_package(GEOS REQUIRED)
message(STATUS "Found Geos: ${GEOS_VERSION} ${GEOS_DIR}")
find_package(GDAL REQUIRED)
@@ -691,8 +695,10 @@ if (ENABLE_TESTS)
set (PUSH_TO_CDASH FALSE CACHE BOOL "Determines whether test results should be pushed to CDASH site")
set(QT_USE_QTTEST TRUE)
enable_testing()
- # Adds some testing specific build targets e.g. make Experimental
- include(Dart)
+ if (PUSH_TO_CDASH)
+ # Adds some testing specific build targets e.g. make Experimental
+ include(Dart)
+ endif()
# Additional test configuration options e.g. max upload size of test report
configure_file(
"${CMAKE_SOURCE_DIR}/cmake_templates/CTestCustom.cmake.in"
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 64e2d6d1364c..dcb7a8b6f7ea 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -14,10 +14,11 @@ You can help us **by submitting bug reports or fixing bugs** in the [QGIS bug tr
If you wish to contribute patches you can:
-1. [fork the project](https://help.github.com/forking/)
-1. make your changes
-1. commit to your repository
-1. and then [create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/).
+1. [Fork the project](https://help.github.com/forking/)
+2. Install the [pre-commit](https://pre-commit.com/) hook: `pre-commit install --install-hooks` (version 4.1+ required)
+3. Make your changes
+4. Commit to your repository
+5. [Create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/)
The development team can then review your contribution and commit it upstream as appropriate.
diff --git a/INSTALL.md b/INSTALL.md
index 6ab00d7f4a25..08a687695ec8 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -23,6 +23,7 @@ Building QGIS from source - step by step
+ [3.11.2. Suggested system tweaks](#3112-suggested-system-tweaks)
+ [3.11.3. Additional tools for QGIS development](#3113-additional-tools-for-qgis-development)
+ [3.11.4. QT6 experimental builds with Fedora Rawhide](#3114-qt6-experimental-builds-with-fedora-rawhide)
+ * [3.12. Building on Linux with vcpkg](#312-building-on-linux-with-vcpkg)
- [4. Building on Windows](#4-building-on-windows)
* [4.1. Building with Microsoft Visual Studio](#41-building-with-microsoft-visual-studio)
+ [4.1.1. Visual Studio 2022 Community Edition](#411-visual-studio-2022-community-edition)
@@ -106,7 +107,7 @@ Required build tools:
Required build dependencies:
* Qt >= 5.15.2
-* Proj >= 7.2.0
+* Proj >= 8.1.0
* GEOS >= 3.9
* Sqlite3 >= 3.0.0
* SpatiaLite >= 4.2.0
@@ -581,11 +582,45 @@ To build,
cmake .. -DBUILD_WITH_QT6=ON -DWITH_QTWEBKIT=OFF -DWITH_QTWEBENGINE=ON
```
+## 3.12. Building on Linux with vcpkg
+
+With [vcpkg](https://github.com/microsoft/vcpkg/) you can develop QGIS using
+Qt6 on a Linux system.
+
+First, [Install and initialize vcpkg](https://github.com/microsoft/vcpkg-tool/blob/main/README.md#installuseremove).
+
+Get the QGIS source code:
+
+```sh
+git clone git@github.com:qgis/QGIS.git
+```
+
+Configure:
+
+```sh
+cmake -S . \
+ -B ./build-x64-linux \
+ -GNinja \
+ -DCMAKE_BUILD_TYPE=Debug \
+ -DWITH_VCPKG=ON \
+ -DBUILD_WITH_QT6=ON \
+ -DWITH_QTWEBKIT=OFF \
+ -DWITH_BINDINGS=ON \
+ -DVCPKG_TARGET_TRIPLET=x64-linux-dynamic-release \
+ -DVCPKG_HOST_TRIPLET=x64-linux-dynamic-release
+```
+
+Build:
+
+```sh
+cmake --build ./build-x64-linux
+```
+
# 4. Building on Windows
## 4.1. Building with Microsoft Visual Studio
-This section describes how to build QGIS using Visual Studio (MSVC) 2019 on Windows.
+This section describes how to build QGIS using Visual Studio (MSVC) 2022 on Windows.
The official Windows packages are built using OSGeo4W.
This section describes the setup required to allow Visual Studio to be used to
@@ -593,7 +628,7 @@ build QGIS.
### 4.1.1. Visual Studio 2022 Community Edition
-Download and install the [free (as in free beer) Community installer](https://download.visualstudio.microsoft.com/download/pr/68d6b204-9df0-4fcc-abcc-08ee0eff9cb2/b029547488a9383b0c8d8a9c813e246feb3ec19e0fe55020d4878fde5f0983fe/vs_Community.exe)
+Download and install the [free (as in free beer) Community installer](https://c2rsetup.officeapps.live.com/c2r/downloadVS.aspx?sku=community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030:7851336a02d44ba38a548acc719002df)
Select "Desktop Development with C++"
@@ -601,7 +636,7 @@ Select "Desktop Development with C++"
Download and install following packages:
-* [CMake](https://cmake.org/files/v3.12/cmake-3.12.3-win64-x64.msi)
+* [CMake](https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-windows-x86_64.msi)
* GNU flex, GNU bison and GIT with [cygwin 64bit](https://cygwin.com/setup-x86_64.exe)
* [OSGeo4W](https://download.osgeo.org/osgeo4w/v2/osgeo4w-setup.exe)
* [ninja](https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip): Copy the `ninja.exe` to `C:\OSGeo4W\bin\`
diff --git a/cmake/FindProj.cmake b/cmake/FindProj.cmake
index 3feb785fa6be..d32659f01406 100644
--- a/cmake/FindProj.cmake
+++ b/cmake/FindProj.cmake
@@ -30,7 +30,6 @@ if(NOT PROJ_FOUND)
OR NOT CMAKE_FIND_FRAMEWORK)
SET (CMAKE_FIND_FRAMEWORK_save ${CMAKE_FIND_FRAMEWORK} CACHE STRING "" FORCE)
SET (CMAKE_FIND_FRAMEWORK "ONLY" CACHE STRING "" FORCE)
- #FIND_PATH(PROJ_INCLUDE_DIR PROJ/proj_api.h)
FIND_LIBRARY(PROJ_LIBRARY PROJ)
IF (PROJ_LIBRARY)
# FIND_PATH doesn't add "Headers" for a framework
@@ -39,17 +38,11 @@ if(NOT PROJ_FOUND)
SET (CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_save} CACHE STRING "" FORCE)
ENDIF ()
ENDIF (APPLE)
-
- FIND_PATH(PROJ_INCLUDE_DIR proj_api.h
+
+ FIND_PATH(PROJ_INCLUDE_DIR proj.h
"$ENV{INCLUDE}"
"$ENV{LIB_DIR}/include"
- )
- IF (NOT PROJ_INCLUDE_DIR)
- FIND_PATH(PROJ_INCLUDE_DIR proj.h
- "$ENV{INCLUDE}"
- "$ENV{LIB_DIR}/include"
- )
- ENDIF (NOT PROJ_INCLUDE_DIR)
+ )
FIND_LIBRARY(PROJ_LIBRARY NAMES proj_i proj PATHS
"$ENV{LIB}"
@@ -67,27 +60,12 @@ if(NOT PROJ_FOUND)
STRING(REGEX REPLACE "^.*PROJ_VERSION_MINOR +([0-9]+).*$" "\\1" PROJ_VERSION_MINOR "${proj_version}")
STRING(REGEX REPLACE "^.*PROJ_VERSION_PATCH +([0-9]+).*$" "\\1" PROJ_VERSION_PATCH "${proj_version}")
STRING(CONCAT PROJ_VERSION_STR "(" ${PROJ_VERSION_MAJOR} "." ${PROJ_VERSION_MINOR} "." ${PROJ_VERSION_PATCH} ")")
- IF ((PROJ_VERSION_MAJOR EQUAL 7) AND ((PROJ_VERSION_MINOR LESS 2) OR (PROJ_VERSION_MAJOR LESS 7)))
- MESSAGE (FATAL_ERROR "Cannot build QGIS using Proj ${PROJ_VERSION_MAJOR}.${PROJ_VERSION_MINOR}.${PROJ_VERSION_PATCH} Use 7.2.0 or higher.")
- ENDIF ((PROJ_VERSION_MAJOR EQUAL 7) AND ((PROJ_VERSION_MINOR LESS 2) OR (PROJ_VERSION_MAJOR LESS 7)))
- ELSE(EXISTS ${PROJ_INCLUDE_DIR}/proj.h AND EXISTS ${PROJ_INCLUDE_DIR}/proj_experimental.h)
- FILE(READ ${PROJ_INCLUDE_DIR}/proj_api.h proj_version)
- STRING(REGEX REPLACE "^.*PJ_VERSION ([0-9]+).*$" "\\1" PJ_VERSION "${proj_version}")
-
- # This will break if 4.10.0 ever will be released (highly unlikely)
- STRING(REGEX REPLACE "([0-9])([0-9])([0-9])" "\\1" PROJ_VERSION_MAJOR "${PJ_VERSION}")
- STRING(REGEX REPLACE "([0-9])([0-9])([0-9])" "\\2" PROJ_VERSION_MINOR "${PJ_VERSION}")
- STRING(REGEX REPLACE "([0-9])([0-9])([0-9])" "\\3" PROJ_VERSION_PATCH "${PJ_VERSION}")
- STRING(CONCAT PROJ_VERSION_STR "(" ${PROJ_VERSION_MAJOR} "." ${PROJ_VERSION_MINOR} "." ${PROJ_VERSION_PATCH} ")")
-
- # Minimum Proj version required is 4.9.3
- IF ((PROJ_VERSION_MAJOR EQUAL 4) AND ((PROJ_VERSION_MINOR LESS 9) OR ((PROJ_VERSION_MINOR EQUAL 9) AND (PROJ_VERSION_PATCH LESS 3))))
- MESSAGE(FATAL_ERROR "Found Proj: ${PROJ_VERSION_MAJOR}.${PROJ_VERSION_MINOR}.${PROJ_VERSION_PATCH}. Cannot build QGIS using Proj older than 4.9.3.")
- ENDIF((PROJ_VERSION_MAJOR EQUAL 4) AND ((PROJ_VERSION_MINOR LESS 9) OR ((PROJ_VERSION_MINOR EQUAL 9) AND (PROJ_VERSION_PATCH LESS 3))))
ENDIF(EXISTS ${PROJ_INCLUDE_DIR}/proj.h AND EXISTS ${PROJ_INCLUDE_DIR}/proj_experimental.h)
IF (NOT PROJ_FIND_QUIETLY)
MESSAGE(STATUS "Found Proj: ${PROJ_LIBRARY} version ${PROJ_VERSION_MAJOR} ${PROJ_VERSION_STR}")
ENDIF (NOT PROJ_FIND_QUIETLY)
+
+ SET(PROJ_VERSION ${PROJ_VERSION_MAJOR}.${PROJ_VERSION_MINOR}.${PROJ_VERSION_PATCH})
INCLUDE_DIRECTORIES(BEFORE SYSTEM ${PROJ_INCLUDE_DIR})
diff --git a/cmake/SIPMacros.cmake b/cmake/SIPMacros.cmake
index e69e208b6a10..2f44b71c7bef 100644
--- a/cmake/SIPMacros.cmake
+++ b/cmake/SIPMacros.cmake
@@ -65,11 +65,14 @@ MACRO(GENERATE_SIP_PYTHON_MODULE_CODE MODULE_NAME MODULE_SIP SIP_FILES CPP_FILES
CONFIGURE_FILE(${_sip_file} ${_out_sip_file})
# Deprecated annotation supports message only since version 6.9.0
- if(${SIP_VERSION_STR} VERSION_LESS 6.9.0)
- file(READ ${_out_sip_file} _content)
- string(REGEX REPLACE "([/,])Deprecated=\"[^\"]*\"([/,])" "\\1Deprecated\\2" _content "${_content}")
- file(GENERATE OUTPUT ${_out_sip_file} CONTENT "${_content}")
- endif()
+ # if(${SIP_VERSION_STR} VERSION_LESS 6.9.0)
+
+ # For now disabling SIP deprecated because it crashes the application
+ file(READ ${_out_sip_file} _content)
+ string(REGEX REPLACE "([/,])Deprecated=\"[^\"]*\"([/,])" "\\1Deprecated\\2" _content "${_content}")
+ file(GENERATE OUTPUT ${_out_sip_file} CONTENT "${_content}")
+
+ # endif()
ENDFOREACH (_sip_file)
diff --git a/debian/control b/debian/control
index 590317c5ab55..bbfcfe59a384 100644
--- a/debian/control
+++ b/debian/control
@@ -85,6 +85,7 @@ Standards-Version: 3.9.7
Vcs-Browser: https://github.com/qgis/QGIS/
Vcs-Git: https://github.com/qgis/QGIS.git
Homepage: https://qgis.org/
+Rules-Requires-Root: no
Package: qgis
Architecture: any
diff --git a/debian/control.in b/debian/control.in
index f23fbe291bfe..3313c439839c 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -43,7 +43,7 @@ Build-Depends:
opencl-headers,
#oracle# oracle-instantclient-basiclite,
#oracle# oracle-instantclient-devel,
- pkg-config,
+ pkgconf,
pyqt5-dev-tools,
pyqt5-dev,
pyqt5.qsci-dev,
@@ -61,7 +61,8 @@ Build-Depends:
python3-pyqt5.qtserialport,
python3-pyqt5.qtsql,
python3-pyqt5.qtsvg,
- python3-pyqtbuild, sip-tools,
+ python3-pyqtbuild,
+ sip-tools,
python3-termcolor,
python3-yaml,
qt3d5-dev,
@@ -99,6 +100,7 @@ Standards-Version: 3.9.7
Vcs-Browser: https://github.com/qgis/QGIS/
Vcs-Git: https://github.com/qgis/QGIS.git
Homepage: https://qgis.org/
+Rules-Requires-Root: no
Package: qgis
Architecture: any
@@ -502,7 +504,7 @@ Description: QGIS server providing various OGC services
QGIS is a Geographic Information System (GIS) which manages, analyzes and
display databases of geographic information.
.
- This package contains the wms service.
+ This package contains the WMS service.
Package: qgis-server-wmts
Architecture: any
@@ -514,7 +516,7 @@ Description: QGIS server providing various OGC services
QGIS is a Geographic Information System (GIS) which manages, analyzes and
display databases of geographic information.
.
- This package contains the wmts service.
+ This package contains the WMTS service.
Package: qgis-server-wfs
Architecture: any
@@ -526,7 +528,7 @@ Description: QGIS server providing various OGC services
QGIS is a Geographic Information System (GIS) which manages, analyzes and
display databases of geographic information.
.
- This package contains the wfs service.
+ This package contains the WFS service.
Package: qgis-server-wfs3
Architecture: any
@@ -538,7 +540,7 @@ Description: QGIS server providing various OGC services
QGIS is a Geographic Information System (GIS) which manages, analyzes and
display databases of geographic information.
.
- This package contains the wfs 3 service.
+ This package contains the WFS 3 service.
Package: qgis-server-wcs
Architecture: any
@@ -550,7 +552,7 @@ Description: QGIS server providing various OGC services
QGIS is a Geographic Information System (GIS) which manages, analyzes and
display databases of geographic information.
.
- This package contains the wcs service.
+ This package contains the WCS service.
Package: qgis-server-landingpage
Architecture: any
diff --git a/debian/rules b/debian/rules
index 90f70ae275c2..2540cfcf1cb1 100755
--- a/debian/rules
+++ b/debian/rules
@@ -58,7 +58,7 @@ GRASSVER=$(subst .,,$(shell pkg-config --modversion grass|cut -d. -f1))
GRASSABI=$(subst .,,$(shell pkg-config --modversion grass|cut -d. -f1,2,3|sed -e 's/RC/-/'))
# Include percentage of started edges
-export NINJA_STATUS=[%f/%t %p]
+export NINJA_STATUS=[%f/%t %p]
ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
NINJA_OPTS += -v
@@ -123,7 +123,7 @@ $(shell test -f /usr/include/$(DEB_BUILD_MULTIARCH)/qt5/Qt3DExtras/qt3dextrasver
ifneq (0,$(.SHELLSTATUS))
# Qt3DExtras intentionally removed from debian (#895386) and in turn ubuntu
CMAKE_OPTS += \
- -DQt53DExtras_DIR=$(realpath external/qt3dextra-headers/cmake/Qt53DExtras) \
+ -DQt53DExtras_DIR=$(realpath external/qt3dextra-headers/cmake/Qt53DExtras) \
-DQT5_3DEXTRA_INCLUDE_DIR=$(realpath external/qt3dextra-headers) \
-DQT5_3DEXTRA_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libQt53DExtras.so
endif
@@ -315,8 +315,8 @@ endif
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/doc/LICENSE
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/python/plugins/db_manager/LICENSE
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/python/plugins/MetaSearch/LICENSE.txt
- $(RM) $(CURDIR)/debian/tmp/usr/bin/test_provider_wcs
$(RM) $(CURDIR)/debian/tmp/usr/bin/qgis_bench
+ $(RM) $(CURDIR)/debian/tmp/usr/bin/test_provider_wcs
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/resources/wcs-servers.json
# remove documentation outside usr/share/doc
@@ -333,13 +333,13 @@ endif
mv $(CURDIR)/debian/tmp/usr/share/qgis/resources/srs.db $(CURDIR)/debian/tmp/usr/share/qgis/resources/srs-template.db
# Mime info
- install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/mime/packages
- install -o root -g root -m 644 $(CURDIR)/debian/qgis.xml $(CURDIR)/debian/tmp/usr/share/mime/packages
+ install -d $(CURDIR)/debian/tmp/usr/share/mime/packages
+ install -m 644 $(CURDIR)/debian/qgis.xml $(CURDIR)/debian/tmp/usr/share/mime/packages
# qgis binaries
- install -o root -g root -m 755 -d $(CURDIR)/debian/qgis/usr/bin
- install -o root -g root -m 755 $(CURDIR)/debian/tmp/usr/bin/qgis $(CURDIR)/debian/qgis/usr/bin/qgis.bin
- install -o root -g root -m 755 $(CURDIR)/debian/tmp/usr/bin/qgis_process $(CURDIR)/debian/qgis/usr/bin/qgis_process.bin
+ install -m 755 -d $(CURDIR)/debian/qgis/usr/bin
+ install -m 755 $(CURDIR)/debian/tmp/usr/bin/qgis $(CURDIR)/debian/qgis/usr/bin/qgis.bin
+ install -m 755 $(CURDIR)/debian/tmp/usr/bin/qgis_process $(CURDIR)/debian/qgis/usr/bin/qgis_process.bin
$(RM) $(CURDIR)/debian/tmp/usr/bin/qgis $(CURDIR)/debian/tmp/usr/bin/qgis_process
@@ -349,8 +349,8 @@ endif
-e "s#\{ORACLE_LIBDIR\}#$(ORACLE_LIBDIR)#g" \
$(CURDIR)/debian/qgis.sh.in >$(CURDIR)/debian/qgis.sh
- install -o root -g root -m 755 $(CURDIR)/debian/qgis.sh $(CURDIR)/debian/qgis/usr/bin/qgis
- install -o root -g root -m 755 $(CURDIR)/debian/qgis.sh $(CURDIR)/debian/qgis/usr/bin/qgis_process
+ install -m 755 $(CURDIR)/debian/qgis.sh $(CURDIR)/debian/qgis/usr/bin/qgis
+ install -m 755 $(CURDIR)/debian/qgis.sh $(CURDIR)/debian/qgis/usr/bin/qgis_process
mkdir -p $(CURDIR)/debian/libqgis-dev
cd $(CURDIR)/debian/tmp && find . -name "*.sip" | tar --remove-files -cf - -T - | tar -C $(CURDIR)/debian/libqgis-dev -xf - --xform 's,\./usr/lib/python./dist-packages/qgis,usr/share/sip/qgis,'
diff --git a/images/themes/default/console/iconClassBrowserConsole.svg b/images/themes/default/console/iconClassBrowserConsole.svg
index 42bc5711d627..031539ea9426 100644
--- a/images/themes/default/console/iconClassBrowserConsole.svg
+++ b/images/themes/default/console/iconClassBrowserConsole.svg
@@ -1 +1,10 @@
-
\ No newline at end of file
+
+
diff --git a/images/themes/default/console/iconCommentEditorConsole.svg b/images/themes/default/console/iconCommentEditorConsole.svg
index 6094e84fedfe..44790de3166c 100644
--- a/images/themes/default/console/iconCommentEditorConsole.svg
+++ b/images/themes/default/console/iconCommentEditorConsole.svg
@@ -1 +1,4 @@
-
\ No newline at end of file
+
+
diff --git a/python/3d/auto_generated/qgscameracontroller.sip.in b/python/3d/auto_generated/qgscameracontroller.sip.in
index 65524ad0ace6..a06948f69d27 100644
--- a/python/3d/auto_generated/qgscameracontroller.sip.in
+++ b/python/3d/auto_generated/qgscameracontroller.sip.in
@@ -173,6 +173,23 @@ Rotates the camera on itself.
:param diffYaw: the yaw difference
.. versionadded:: 3.30
+%End
+
+ void rotateCameraAroundPivot( float newPitch, float newHeading, const QVector3D &pivotPoint );
+%Docstring
+Rotates the camera around the pivot point (in world coordinates)
+to the given new pitch and heading angle.
+
+.. versionadded:: 3.42
+%End
+
+ void zoomCameraAroundPivot( const QVector3D &oldCameraPosition, double zoomFactor, const QVector3D &pivotPoint );
+%Docstring
+Zooms camera by given zoom factor (>1 one means zoom in)
+while keeping the pivot point (given in world coordinates) at the
+same screen coordinates after the zoom.
+
+.. versionadded:: 3.42
%End
bool willHandleKeyEvent( QKeyEvent *event );
@@ -188,6 +205,13 @@ Reacts to the shift of origin of the scene, updating camera pose and
any other member variables so that the origin stays at the same position
relative to other entities.
+.. versionadded:: 3.42
+%End
+
+ void setInputHandlersEnabled( bool enable );
+%Docstring
+Sets whether the camera controller responds to mouse and keyboard events
+
.. versionadded:: 3.42
%End
diff --git a/python/3d/auto_generated/qgspointcloudlayer3drenderer.sip.in b/python/3d/auto_generated/qgspointcloudlayer3drenderer.sip.in
index 333b4926dcad..c38bad182225 100644
--- a/python/3d/auto_generated/qgspointcloudlayer3drenderer.sip.in
+++ b/python/3d/auto_generated/qgspointcloudlayer3drenderer.sip.in
@@ -104,6 +104,20 @@ Sets the maximum number of points to be rendered in the scene
virtual bool convertFrom2DRenderer( QgsPointCloudRenderer *renderer );
+ void setZoomOutBehavior( const Qgis::PointCloudZoomOutRenderBehavior behavior );
+%Docstring
+Sets the renderer behavior when zoomed out
+
+.. versionadded:: 3.42
+%End
+
+ Qgis::PointCloudZoomOutRenderBehavior zoomOutBehavior() const;
+%Docstring
+Returns the renderer behavior when zoomed out
+
+.. versionadded:: 3.42
+%End
+
private:
QgsPointCloudLayer3DRenderer( const QgsPointCloudLayer3DRenderer & );
QgsPointCloudLayer3DRenderer &operator=( const QgsPointCloudLayer3DRenderer & );
diff --git a/python/3d/class_map.yaml b/python/3d/class_map.yaml
index 2765c634891d..f743afb443cf 100644
--- a/python/3d/class_map.yaml
+++ b/python/3d/class_map.yaml
@@ -245,40 +245,43 @@ QgsAbstractVectorLayer3DRenderer.setTilingSettings: src/3d/qgsabstractvectorlaye
QgsAbstractVectorLayer3DRenderer.tilingSettings: src/3d/qgsabstractvectorlayer3drenderer.h#L89
QgsAbstractVectorLayer3DRenderer.writeXmlBaseProperties: src/3d/qgsabstractvectorlayer3drenderer.h#L97
QgsAbstractVectorLayer3DRenderer: src/3d/qgsabstractvectorlayer3drenderer.h#L76
-QgsCameraController.cameraChanged: src/3d/qgscameracontroller.h#L259
+QgsCameraController.cameraChanged: src/3d/qgscameracontroller.h#L280
QgsCameraController.cameraMovementSpeed: src/3d/qgscameracontroller.h#L89
-QgsCameraController.cameraMovementSpeedChanged: src/3d/qgscameracontroller.h#L267
+QgsCameraController.cameraMovementSpeedChanged: src/3d/qgscameracontroller.h#L288
QgsCameraController.cameraNavigationMode: src/3d/qgscameracontroller.h#L83
QgsCameraController.cameraPose: src/3d/qgscameracontroller.h#L139
-QgsCameraController.cameraRotationCenterChanged: src/3d/qgscameracontroller.h#L285
-QgsCameraController.depthBufferCaptured: src/3d/qgscameracontroller.h#L219
+QgsCameraController.cameraRotationCenterChanged: src/3d/qgscameracontroller.h#L306
+QgsCameraController.depthBufferCaptured: src/3d/qgscameracontroller.h#L240
QgsCameraController.distance: src/3d/qgscameracontroller.h#L146
QgsCameraController.frameTriggered: src/3d/qgscameracontroller.h#L110
QgsCameraController.lookingAtPoint: src/3d/qgscameracontroller.h#L119
QgsCameraController.moveView: src/3d/qgscameracontroller.h#L176
-QgsCameraController.navigationModeChanged: src/3d/qgscameracontroller.h#L262
+QgsCameraController.navigationModeChanged: src/3d/qgscameracontroller.h#L283
QgsCameraController.pitch: src/3d/qgscameracontroller.h#L153
QgsCameraController.readXml: src/3d/qgscameracontroller.h#L165
-QgsCameraController.requestDepthBufferCapture: src/3d/qgscameracontroller.h#L279
+QgsCameraController.requestDepthBufferCapture: src/3d/qgscameracontroller.h#L300
QgsCameraController.resetView: src/3d/qgscameracontroller.h#L113
QgsCameraController.rotateAroundViewCenter: src/3d/qgscameracontroller.h#L172
QgsCameraController.rotateCamera: src/3d/qgscameracontroller.h#L190
+QgsCameraController.rotateCameraAroundPivot: src/3d/qgscameracontroller.h#L197
QgsCameraController.setCameraHeadingAngle: src/3d/qgscameracontroller.h#L174
QgsCameraController.setCameraMovementSpeed: src/3d/qgscameracontroller.h#L95
-QgsCameraController.setCameraNavigationMode: src/3d/qgscameracontroller.h#L213
+QgsCameraController.setCameraNavigationMode: src/3d/qgscameracontroller.h#L234
QgsCameraController.setCameraPose: src/3d/qgscameracontroller.h#L133
-QgsCameraController.setCursorPosition: src/3d/qgscameracontroller.h#L273
+QgsCameraController.setCursorPosition: src/3d/qgscameracontroller.h#L294
+QgsCameraController.setInputHandlersEnabled: src/3d/qgscameracontroller.h#L226
QgsCameraController.setLookingAtPoint: src/3d/qgscameracontroller.h#L127
-QgsCameraController.setOrigin: src/3d/qgscameracontroller.h#L205
+QgsCameraController.setOrigin: src/3d/qgscameracontroller.h#L220
QgsCameraController.setVerticalAxisInversion: src/3d/qgscameracontroller.h#L107
QgsCameraController.setViewFromTop: src/3d/qgscameracontroller.h#L116
QgsCameraController.tiltUpAroundViewCenter: src/3d/qgscameracontroller.h#L170
QgsCameraController.verticalAxisInversion: src/3d/qgscameracontroller.h#L101
QgsCameraController.walkView: src/3d/qgscameracontroller.h#L182
-QgsCameraController.willHandleKeyEvent: src/3d/qgscameracontroller.h#L197
+QgsCameraController.willHandleKeyEvent: src/3d/qgscameracontroller.h#L212
QgsCameraController.writeXml: src/3d/qgscameracontroller.h#L163
QgsCameraController.yaw: src/3d/qgscameracontroller.h#L160
QgsCameraController.zoom: src/3d/qgscameracontroller.h#L168
+QgsCameraController.zoomCameraAroundPivot: src/3d/qgscameracontroller.h#L205
QgsCameraController: src/3d/qgscameracontroller.h#L60
QgsCameraPose.centerPoint: src/3d/qgscamerapose.h#L50
QgsCameraPose.distanceFromCenterPoint: src/3d/qgscamerapose.h#L55
@@ -619,10 +622,12 @@ QgsPointCloudLayer3DRenderer.setMaximumScreenError: src/3d/qgspointcloudlayer3dr
QgsPointCloudLayer3DRenderer.setPointRenderingBudget: src/3d/qgspointcloudlayer3drenderer.h#L302
QgsPointCloudLayer3DRenderer.setShowBoundingBoxes: src/3d/qgspointcloudlayer3drenderer.h#L292
QgsPointCloudLayer3DRenderer.setSymbol: src/3d/qgspointcloudlayer3drenderer.h#L254
+QgsPointCloudLayer3DRenderer.setZoomOutBehavior: src/3d/qgspointcloudlayer3drenderer.h#L310
QgsPointCloudLayer3DRenderer.showBoundingBoxes: src/3d/qgspointcloudlayer3drenderer.h#L285
QgsPointCloudLayer3DRenderer.symbol: src/3d/qgspointcloudlayer3drenderer.h#L256
QgsPointCloudLayer3DRenderer.type: src/3d/qgspointcloudlayer3drenderer.h#L245
QgsPointCloudLayer3DRenderer.writeXml: src/3d/qgspointcloudlayer3drenderer.h#L258
+QgsPointCloudLayer3DRenderer.zoomOutBehavior: src/3d/qgspointcloudlayer3drenderer.h#L316
QgsPointCloudLayer3DRenderer: src/3d/qgspointcloudlayer3drenderer.h#L234
QgsPointLightSettings.clone: src/3d/lights/qgspointlightsettings.h#L46
QgsPointLightSettings.color: src/3d/lights/qgspointlightsettings.h#L57
diff --git a/python/PyQt/CMakeLists.txt b/python/PyQt/CMakeLists.txt
index a3e3d81a419f..2a8916ee52b6 100644
--- a/python/PyQt/CMakeLists.txt
+++ b/python/PyQt/CMakeLists.txt
@@ -13,6 +13,7 @@ set(PYQT_COMPAT_FILES
QtWebEngineCore.py
QtWebEngineQuick.py
QtWebEngineWidgets.py
+ QtMultimedia.py
QtNetwork.py
QtXml.py
QtQuickWidgets.py
diff --git a/python/PyQt/PyQt/QtMultimedia.py.in b/python/PyQt/PyQt/QtMultimedia.py.in
new file mode 100644
index 000000000000..3e21c5377689
--- /dev/null
+++ b/python/PyQt/PyQt/QtMultimedia.py.in
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+ QtMultimedia.py
+ ---------------------
+ Date : January 2025
+ Copyright : (C) 2025 by Julien Cabieces
+ Email : julien dot cabieces at oslandia dot com
+***************************************************************************
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+***************************************************************************
+"""
+
+__author__ = 'Julien Cabieces'
+__date__ = 'January 2025'
+__copyright__ = '(C) 2025, Julien Cabieces'
+
+from PyQt@QT_VERSION_MAJOR@.QtMultimedia import *
diff --git a/python/PyQt6/3d/auto_generated/qgscameracontroller.sip.in b/python/PyQt6/3d/auto_generated/qgscameracontroller.sip.in
index 65524ad0ace6..a06948f69d27 100644
--- a/python/PyQt6/3d/auto_generated/qgscameracontroller.sip.in
+++ b/python/PyQt6/3d/auto_generated/qgscameracontroller.sip.in
@@ -173,6 +173,23 @@ Rotates the camera on itself.
:param diffYaw: the yaw difference
.. versionadded:: 3.30
+%End
+
+ void rotateCameraAroundPivot( float newPitch, float newHeading, const QVector3D &pivotPoint );
+%Docstring
+Rotates the camera around the pivot point (in world coordinates)
+to the given new pitch and heading angle.
+
+.. versionadded:: 3.42
+%End
+
+ void zoomCameraAroundPivot( const QVector3D &oldCameraPosition, double zoomFactor, const QVector3D &pivotPoint );
+%Docstring
+Zooms camera by given zoom factor (>1 one means zoom in)
+while keeping the pivot point (given in world coordinates) at the
+same screen coordinates after the zoom.
+
+.. versionadded:: 3.42
%End
bool willHandleKeyEvent( QKeyEvent *event );
@@ -188,6 +205,13 @@ Reacts to the shift of origin of the scene, updating camera pose and
any other member variables so that the origin stays at the same position
relative to other entities.
+.. versionadded:: 3.42
+%End
+
+ void setInputHandlersEnabled( bool enable );
+%Docstring
+Sets whether the camera controller responds to mouse and keyboard events
+
.. versionadded:: 3.42
%End
diff --git a/python/PyQt6/3d/auto_generated/qgspointcloudlayer3drenderer.sip.in b/python/PyQt6/3d/auto_generated/qgspointcloudlayer3drenderer.sip.in
index 333b4926dcad..c38bad182225 100644
--- a/python/PyQt6/3d/auto_generated/qgspointcloudlayer3drenderer.sip.in
+++ b/python/PyQt6/3d/auto_generated/qgspointcloudlayer3drenderer.sip.in
@@ -104,6 +104,20 @@ Sets the maximum number of points to be rendered in the scene
virtual bool convertFrom2DRenderer( QgsPointCloudRenderer *renderer );
+ void setZoomOutBehavior( const Qgis::PointCloudZoomOutRenderBehavior behavior );
+%Docstring
+Sets the renderer behavior when zoomed out
+
+.. versionadded:: 3.42
+%End
+
+ Qgis::PointCloudZoomOutRenderBehavior zoomOutBehavior() const;
+%Docstring
+Returns the renderer behavior when zoomed out
+
+.. versionadded:: 3.42
+%End
+
private:
QgsPointCloudLayer3DRenderer( const QgsPointCloudLayer3DRenderer & );
QgsPointCloudLayer3DRenderer &operator=( const QgsPointCloudLayer3DRenderer & );
diff --git a/python/PyQt6/3d/class_map.yaml b/python/PyQt6/3d/class_map.yaml
index 2765c634891d..f743afb443cf 100644
--- a/python/PyQt6/3d/class_map.yaml
+++ b/python/PyQt6/3d/class_map.yaml
@@ -245,40 +245,43 @@ QgsAbstractVectorLayer3DRenderer.setTilingSettings: src/3d/qgsabstractvectorlaye
QgsAbstractVectorLayer3DRenderer.tilingSettings: src/3d/qgsabstractvectorlayer3drenderer.h#L89
QgsAbstractVectorLayer3DRenderer.writeXmlBaseProperties: src/3d/qgsabstractvectorlayer3drenderer.h#L97
QgsAbstractVectorLayer3DRenderer: src/3d/qgsabstractvectorlayer3drenderer.h#L76
-QgsCameraController.cameraChanged: src/3d/qgscameracontroller.h#L259
+QgsCameraController.cameraChanged: src/3d/qgscameracontroller.h#L280
QgsCameraController.cameraMovementSpeed: src/3d/qgscameracontroller.h#L89
-QgsCameraController.cameraMovementSpeedChanged: src/3d/qgscameracontroller.h#L267
+QgsCameraController.cameraMovementSpeedChanged: src/3d/qgscameracontroller.h#L288
QgsCameraController.cameraNavigationMode: src/3d/qgscameracontroller.h#L83
QgsCameraController.cameraPose: src/3d/qgscameracontroller.h#L139
-QgsCameraController.cameraRotationCenterChanged: src/3d/qgscameracontroller.h#L285
-QgsCameraController.depthBufferCaptured: src/3d/qgscameracontroller.h#L219
+QgsCameraController.cameraRotationCenterChanged: src/3d/qgscameracontroller.h#L306
+QgsCameraController.depthBufferCaptured: src/3d/qgscameracontroller.h#L240
QgsCameraController.distance: src/3d/qgscameracontroller.h#L146
QgsCameraController.frameTriggered: src/3d/qgscameracontroller.h#L110
QgsCameraController.lookingAtPoint: src/3d/qgscameracontroller.h#L119
QgsCameraController.moveView: src/3d/qgscameracontroller.h#L176
-QgsCameraController.navigationModeChanged: src/3d/qgscameracontroller.h#L262
+QgsCameraController.navigationModeChanged: src/3d/qgscameracontroller.h#L283
QgsCameraController.pitch: src/3d/qgscameracontroller.h#L153
QgsCameraController.readXml: src/3d/qgscameracontroller.h#L165
-QgsCameraController.requestDepthBufferCapture: src/3d/qgscameracontroller.h#L279
+QgsCameraController.requestDepthBufferCapture: src/3d/qgscameracontroller.h#L300
QgsCameraController.resetView: src/3d/qgscameracontroller.h#L113
QgsCameraController.rotateAroundViewCenter: src/3d/qgscameracontroller.h#L172
QgsCameraController.rotateCamera: src/3d/qgscameracontroller.h#L190
+QgsCameraController.rotateCameraAroundPivot: src/3d/qgscameracontroller.h#L197
QgsCameraController.setCameraHeadingAngle: src/3d/qgscameracontroller.h#L174
QgsCameraController.setCameraMovementSpeed: src/3d/qgscameracontroller.h#L95
-QgsCameraController.setCameraNavigationMode: src/3d/qgscameracontroller.h#L213
+QgsCameraController.setCameraNavigationMode: src/3d/qgscameracontroller.h#L234
QgsCameraController.setCameraPose: src/3d/qgscameracontroller.h#L133
-QgsCameraController.setCursorPosition: src/3d/qgscameracontroller.h#L273
+QgsCameraController.setCursorPosition: src/3d/qgscameracontroller.h#L294
+QgsCameraController.setInputHandlersEnabled: src/3d/qgscameracontroller.h#L226
QgsCameraController.setLookingAtPoint: src/3d/qgscameracontroller.h#L127
-QgsCameraController.setOrigin: src/3d/qgscameracontroller.h#L205
+QgsCameraController.setOrigin: src/3d/qgscameracontroller.h#L220
QgsCameraController.setVerticalAxisInversion: src/3d/qgscameracontroller.h#L107
QgsCameraController.setViewFromTop: src/3d/qgscameracontroller.h#L116
QgsCameraController.tiltUpAroundViewCenter: src/3d/qgscameracontroller.h#L170
QgsCameraController.verticalAxisInversion: src/3d/qgscameracontroller.h#L101
QgsCameraController.walkView: src/3d/qgscameracontroller.h#L182
-QgsCameraController.willHandleKeyEvent: src/3d/qgscameracontroller.h#L197
+QgsCameraController.willHandleKeyEvent: src/3d/qgscameracontroller.h#L212
QgsCameraController.writeXml: src/3d/qgscameracontroller.h#L163
QgsCameraController.yaw: src/3d/qgscameracontroller.h#L160
QgsCameraController.zoom: src/3d/qgscameracontroller.h#L168
+QgsCameraController.zoomCameraAroundPivot: src/3d/qgscameracontroller.h#L205
QgsCameraController: src/3d/qgscameracontroller.h#L60
QgsCameraPose.centerPoint: src/3d/qgscamerapose.h#L50
QgsCameraPose.distanceFromCenterPoint: src/3d/qgscamerapose.h#L55
@@ -619,10 +622,12 @@ QgsPointCloudLayer3DRenderer.setMaximumScreenError: src/3d/qgspointcloudlayer3dr
QgsPointCloudLayer3DRenderer.setPointRenderingBudget: src/3d/qgspointcloudlayer3drenderer.h#L302
QgsPointCloudLayer3DRenderer.setShowBoundingBoxes: src/3d/qgspointcloudlayer3drenderer.h#L292
QgsPointCloudLayer3DRenderer.setSymbol: src/3d/qgspointcloudlayer3drenderer.h#L254
+QgsPointCloudLayer3DRenderer.setZoomOutBehavior: src/3d/qgspointcloudlayer3drenderer.h#L310
QgsPointCloudLayer3DRenderer.showBoundingBoxes: src/3d/qgspointcloudlayer3drenderer.h#L285
QgsPointCloudLayer3DRenderer.symbol: src/3d/qgspointcloudlayer3drenderer.h#L256
QgsPointCloudLayer3DRenderer.type: src/3d/qgspointcloudlayer3drenderer.h#L245
QgsPointCloudLayer3DRenderer.writeXml: src/3d/qgspointcloudlayer3drenderer.h#L258
+QgsPointCloudLayer3DRenderer.zoomOutBehavior: src/3d/qgspointcloudlayer3drenderer.h#L316
QgsPointCloudLayer3DRenderer: src/3d/qgspointcloudlayer3drenderer.h#L234
QgsPointLightSettings.clone: src/3d/lights/qgspointlightsettings.h#L46
QgsPointLightSettings.color: src/3d/lights/qgspointlightsettings.h#L57
diff --git a/python/PyQt6/analysis/auto_generated/raster/qgsrastercalculator.sip.in b/python/PyQt6/analysis/auto_generated/raster/qgsrastercalculator.sip.in
index da86915358f2..2d8483b60c77 100644
--- a/python/PyQt6/analysis/auto_generated/raster/qgsrastercalculator.sip.in
+++ b/python/PyQt6/analysis/auto_generated/raster/qgsrastercalculator.sip.in
@@ -63,14 +63,15 @@ Performs raster layer calculations.
};
- QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector &rasterEntries, const QgsCoordinateTransformContext &transformContext );
+ QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector &rasterEntries, const QgsCoordinateTransformContext &transformContext );
%Docstring
QgsRasterCalculator constructor.
:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
-:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
+:param outputExtent: output extent, CRS is specified by outputCrs parameter
+:param outputCrs: destination CRS for output raster
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
@@ -79,15 +80,14 @@ QgsRasterCalculator constructor.
.. versionadded:: 3.8
%End
- QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector &rasterEntries, const QgsCoordinateTransformContext &transformContext );
+ QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector &rasterEntries, const QgsCoordinateTransformContext &transformContext );
%Docstring
QgsRasterCalculator constructor.
:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
-:param outputExtent: output extent, CRS is specified by outputCrs parameter
-:param outputCrs: destination CRS for output raster
+:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
@@ -96,15 +96,15 @@ QgsRasterCalculator constructor.
.. versionadded:: 3.8
%End
-
- QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
+ QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
%Docstring
QgsRasterCalculator constructor.
:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
-:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
+:param outputExtent: output extent, CRS is specified by outputCrs parameter
+:param outputCrs: destination CRS for output raster
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
@@ -114,15 +114,14 @@ QgsRasterCalculator constructor.
Use the version with transformContext instead.
%End
- QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
+ QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
%Docstring
QgsRasterCalculator constructor.
:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
-:param outputExtent: output extent, CRS is specified by outputCrs parameter
-:param outputCrs: destination CRS for output raster
+:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
diff --git a/python/PyQt6/analysis/class_map.yaml b/python/PyQt6/analysis/class_map.yaml
index a916853fc0ba..0aacf66aafd6 100644
--- a/python/PyQt6/analysis/class_map.yaml
+++ b/python/PyQt6/analysis/class_map.yaml
@@ -289,8 +289,8 @@ QgsRasterCalcNode.setRight: src/analysis/raster/qgsrastercalcnode.h#L108
QgsRasterCalcNode.toString: src/analysis/raster/qgsrastercalcnode.h#L125
QgsRasterCalcNode.type: src/analysis/raster/qgsrastercalcnode.h#L96
QgsRasterCalcNode: src/analysis/raster/qgsrastercalcnode.h#L38
-QgsRasterCalculator.lastError: src/analysis/raster/qgsrastercalculator.h#L162
-QgsRasterCalculator.processCalculation: src/analysis/raster/qgsrastercalculator.h#L156
+QgsRasterCalculator.lastError: src/analysis/raster/qgsrastercalculator.h#L161
+QgsRasterCalculator.processCalculation: src/analysis/raster/qgsrastercalculator.h#L155
QgsRasterCalculator: src/analysis/raster/qgsrastercalculator.h#L74
QgsRasterCalculatorEntry: src/analysis/raster/qgsrastercalculator.h#L39
QgsRasterMatrix.absoluteValue: src/analysis/raster/qgsrastermatrix.h#L147
diff --git a/python/PyQt6/core/__init__.py.in b/python/PyQt6/core/__init__.py.in
index 3f94fa431fad..b57fc3eea27c 100644
--- a/python/PyQt6/core/__init__.py.in
+++ b/python/PyQt6/core/__init__.py.in
@@ -569,11 +569,15 @@ try:
raise ValueError(f"The raster block data type '{str(self.dataType())}' is not compatible with NumPy arrays.")
src_array = _numpy.frombuffer(self.data(), dtype=raster_dtype)
src_array = src_array.reshape((self.height(), self.width()))
- if not self.hasNoDataValue() or not use_masking:
- return src_array
- else:
- no_data_value = self.noDataValue() if isinstance(self.noDataValue(), raster_dtype) else 0
+ if use_masking:
+ if not self.hasNoDataValue():
+ # Default to 0 as noDataValue if none is set
+ no_data_value = 0
+ else:
+ no_data_value = self.noDataValue()
return _numpy.ma.masked_equal(src_array, no_data_value)
+ else:
+ return src_array
QgsRasterBlock.as_numpy = _raster_block_as_numpy
@@ -586,7 +590,10 @@ try:
src_array = block.as_numpy(use_masking=use_masking)
arrays.append(src_array)
- return _numpy.array(arrays) # This converts any maskedArrays to numpy.array
+ if use_masking:
+ return _numpy.ma.stack(arrays, axis=0)
+ else:
+ return _numpy.array(arrays)
QgsRasterLayer.as_numpy = _raster_layer_as_numpy
@@ -646,7 +653,7 @@ try:
QgsGeometry.as_numpy = _qgsgeometry_as_numpy
-
+
except ModuleNotFoundError:
def _raster_block_as_numpy(self, use_masking:bool = True):
raise QgsNotSupportedException('QgsRasterBlock.as_numpy is not available, numpy is not installed on the system')
@@ -657,7 +664,7 @@ except ModuleNotFoundError:
raise QgsNotSupportedException('QgsRasterLayer.as_numpy is not available, numpy is not installed on the system')
QgsRasterLayer.as_numpy = _raster_layer_as_numpy
-
+
def _geometry_as_numpy(self):
raise QgsNotSupportedException('QgsGeometry.as_numpy is not available, numpy is not installed on the system')
diff --git a/python/PyQt6/core/auto_additions/qgis.py b/python/PyQt6/core/auto_additions/qgis.py
index 6402003184f9..3f0acb5a87d7 100644
--- a/python/PyQt6/core/auto_additions/qgis.py
+++ b/python/PyQt6/core/auto_additions/qgis.py
@@ -2549,6 +2549,22 @@
# --
Qgis.FileFilterType.baseClass = Qgis
# monkey patching scoped based enum
+Qgis.UriCleaningFlag.RemoveCredentials.__doc__ = "Completely remove credentials (eg passwords) from the URI. This flag is not compatible with the RedactCredentials flag."
+Qgis.UriCleaningFlag.RedactCredentials.__doc__ = "Replace the value of credentials (eg passwords) with 'xxxxxxxx'. This flag is not compatible with the RemoveCredentials flag."
+Qgis.UriCleaningFlag.__doc__ = """Flags for cleaning layer URIs.
+
+.. versionadded:: 3.42
+
+* ``RemoveCredentials``: Completely remove credentials (eg passwords) from the URI. This flag is not compatible with the RedactCredentials flag.
+* ``RedactCredentials``: Replace the value of credentials (eg passwords) with 'xxxxxxxx'. This flag is not compatible with the RemoveCredentials flag.
+
+"""
+# --
+Qgis.UriCleaningFlag.baseClass = Qgis
+Qgis.UriCleaningFlags = lambda flags=0: Qgis.UriCleaningFlag(flags)
+Qgis.UriCleaningFlags.baseClass = Qgis
+UriCleaningFlags = Qgis # dirty hack since SIP seems to introduce the flags in module
+# monkey patching scoped based enum
Qgis.SublayerQueryFlag.FastScan.__doc__ = "Indicates that the provider must scan for sublayers using the fastest possible approach -- e.g. by first checking that a uri has an extension which is known to be readable by the provider"
Qgis.SublayerQueryFlag.ResolveGeometryType.__doc__ = "Attempt to resolve the geometry type for vector sublayers"
Qgis.SublayerQueryFlag.CountFeatures.__doc__ = "Count features in vector sublayers"
diff --git a/python/PyQt6/core/auto_additions/qgsabstractcontentcache.py b/python/PyQt6/core/auto_additions/qgsabstractcontentcache.py
index bf5b43ab27ff..bcc41b6ff594 100644
--- a/python/PyQt6/core/auto_additions/qgsabstractcontentcache.py
+++ b/python/PyQt6/core/auto_additions/qgsabstractcontentcache.py
@@ -6,6 +6,7 @@
try:
QgsAbstractContentCacheBase.__attribute_docs__ = {'remoteContentFetched': 'Emitted when the cache has finished retrieving content from a remote ``url``.\n'}
QgsAbstractContentCacheBase.parseBase64DataUrl = staticmethod(QgsAbstractContentCacheBase.parseBase64DataUrl)
+ QgsAbstractContentCacheBase.parseEmbeddedStringData = staticmethod(QgsAbstractContentCacheBase.parseEmbeddedStringData)
QgsAbstractContentCacheBase.isBase64Data = staticmethod(QgsAbstractContentCacheBase.isBase64Data)
QgsAbstractContentCacheBase.__signal_arguments__ = {'remoteContentFetched': ['url: str']}
except (NameError, AttributeError):
diff --git a/python/PyQt6/core/auto_additions/qgsauthmanager.py b/python/PyQt6/core/auto_additions/qgsauthmanager.py
index e13b6ac99a78..65b3e64821ea 100644
--- a/python/PyQt6/core/auto_additions/qgsauthmanager.py
+++ b/python/PyQt6/core/auto_additions/qgsauthmanager.py
@@ -4,10 +4,11 @@
QgsAuthManager.CRITICAL = QgsAuthManager.MessageLevel.CRITICAL
QgsAuthManager.MessageLevel.baseClass = QgsAuthManager
try:
- QgsAuthManager.__attribute_docs__ = {'AUTH_PASSWORD_HELPER_DISPLAY_NAME': 'The display name of the password helper (platform dependent)', 'AUTH_MAN_TAG': 'The display name of the Authentication Manager', 'passwordHelperFailure': 'Signals emitted on password helper failure,\nmainly used in the tests to exit main application loop\n', 'passwordHelperSuccess': 'Signals emitted on password helper success,\nmainly used in the tests to exit main application loop\n', 'messageOut': 'Custom logging signal to relay to console output and :py:class:`QgsMessageLog`\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. deprecated:: 3.40\n\n Use :py:func:`~QgsAuthManager.messageLog` instead.\n', 'messageLog': 'Custom logging signal to relay to console output and :py:class:`QgsMessageLog`\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. versionadded:: 3.40\n', 'passwordHelperMessageOut': 'Custom logging signal to inform the user about master password <-> password manager interactions\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. deprecated:: 3.40\n\n Use :py:func:`~QgsAuthManager.passwordHelperMessageLog` instead.\n', 'passwordHelperMessageLog': 'Custom logging signal to inform the user about master password <-> password manager interactions\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. versionadded:: 3.40\n', 'masterPasswordVerified': "Emitted when a password has been verify (or not)\n\n:param verified: The state of password's verification\n", 'authDatabaseEraseRequested': 'Emitted when a user has indicated they may want to erase the authentication db.\n', 'authDatabaseChanged': 'Emitted when the authentication db is significantly changed, e.g. large record removal, erased, etc.\n'}
+ QgsAuthManager.__attribute_docs__ = {'AUTH_PASSWORD_HELPER_DISPLAY_NAME': 'The display name of the password helper (platform dependent).\n\nThis is deprecated, use :py:func:`~QgsAuthManager.passwordHelperDisplayName` instead.', 'AUTH_MAN_TAG': 'The display name of the Authentication Manager', 'passwordHelperFailure': 'Signals emitted on password helper failure,\nmainly used in the tests to exit main application loop\n', 'passwordHelperSuccess': 'Signals emitted on password helper success,\nmainly used in the tests to exit main application loop\n', 'messageOut': 'Custom logging signal to relay to console output and :py:class:`QgsMessageLog`\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. deprecated:: 3.40\n\n Use :py:func:`~QgsAuthManager.messageLog` instead.\n', 'messageLog': 'Custom logging signal to relay to console output and :py:class:`QgsMessageLog`\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. versionadded:: 3.40\n', 'passwordHelperMessageOut': 'Custom logging signal to inform the user about master password <-> password manager interactions\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. deprecated:: 3.40\n\n Use :py:func:`~QgsAuthManager.passwordHelperMessageLog` instead.\n', 'passwordHelperMessageLog': 'Custom logging signal to inform the user about master password <-> password manager interactions\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. versionadded:: 3.40\n', 'masterPasswordVerified': "Emitted when a password has been verify (or not)\n\n:param verified: The state of password's verification\n", 'authDatabaseEraseRequested': 'Emitted when a user has indicated they may want to erase the authentication db.\n', 'authDatabaseChanged': 'Emitted when the authentication db is significantly changed, e.g. large record removal, erased, etc.\n'}
QgsAuthManager.isFilesystemBasedDatabase = staticmethod(QgsAuthManager.isFilesystemBasedDatabase)
QgsAuthManager.hasConfigId = staticmethod(QgsAuthManager.hasConfigId)
QgsAuthManager.passwordHelperEnabled = staticmethod(QgsAuthManager.passwordHelperEnabled)
+ QgsAuthManager.passwordHelperDisplayName = staticmethod(QgsAuthManager.passwordHelperDisplayName)
QgsAuthManager.__signal_arguments__ = {'passwordHelperMessageLog': ['message: str', 'tag: str = QgsAuthManager.AUTH_MAN_TAG', 'level: Qgis.MessageLevel = Qgis.MessageLevel.Info'], 'masterPasswordVerified': ['verified: bool']}
QgsAuthManager.__group__ = ['auth']
except (NameError, AttributeError):
diff --git a/python/PyQt6/core/auto_additions/qgslayoutexporter.py b/python/PyQt6/core/auto_additions/qgslayoutexporter.py
index 810b46db94d5..88c923732f3d 100644
--- a/python/PyQt6/core/auto_additions/qgslayoutexporter.py
+++ b/python/PyQt6/core/auto_additions/qgslayoutexporter.py
@@ -19,7 +19,7 @@
except (NameError, AttributeError):
pass
try:
- QgsLayoutExporter.PdfExportSettings.__attribute_docs__ = {'dpi': 'Resolution to export layout at. If dpi <= 0 the default layout dpi will be used.', 'rasterizeWholeImage': 'Set to ``True`` to force whole layout to be rasterized while exporting.\n\nThis option is mutually exclusive with forceVectorOutput.', 'forceVectorOutput': 'Set to ``True`` to force vector object exports, even when the resultant appearance will differ\nfrom the layout. If ``False``, some items may be rasterized in order to maintain their\ncorrect appearance in the output.\n\nThis option is mutually exclusive with rasterizeWholeImage.', 'appendGeoreference': 'Indicates whether PDF export should append georeference data\n\n.. versionadded:: 3.10', 'exportMetadata': "Indicates whether PDF export should include metadata generated\nfrom the layout's project's metadata.\n\n.. versionadded:: 3.2", 'flags': 'Layout context flags, which control how the export will be created.', 'textRenderFormat': 'Text rendering format, which controls how text should be rendered in the export (e.g.\nas paths or real text objects).\n\n.. versionadded:: 3.4.3', 'simplifyGeometries': 'Indicates whether vector geometries should be simplified to avoid redundant extraneous detail,\nsuch as vertices which are not visible at the specified dpi of the output.\n\n.. versionadded:: 3.10', 'writeGeoPdf': '``True`` if geospatial PDF files should be created, instead of normal PDF files.\n\nWhilst geospatial PDF files can include some desirable properties like the ability to interactively\nquery map features, they also can result in lower-quality output files, or forced rasterization\nof layers.\n\n.. note::\n\n Requires builds based on GDAL 3.0 or greater.\n\n.. versionadded:: 3.10', 'exportLayersAsSeperateFiles': '``True`` if individual layers from the layout should be rendered to separate PDF files.\n\nThis option allows for separation of logic layout layers to individual PDF files. For instance,\nif this option is ``True``, then a separate PDF file will be created per layer per map item in the\nlayout. Additionally, separate PDF files may be created for other complex layout items, resulting\nin a set of PDF files which contain logical atomic components of the layout.\n\nThis option is designed to allow the PDF files to be composited back together in an external\napplication (e.g. Adobe Illustrator) as a non-QGIS, post-production step.\n\n.. versionadded:: 3.14', 'useIso32000ExtensionFormatGeoreferencing': '``True`` if ISO3200 extension format georeferencing should be used.\n\nThis is a recommended setting which results in Geospatial PDF files compatible\nwith the built-in Acrobat geospatial tools.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'useOgcBestPracticeFormatGeoreferencing': '``True`` if OGC "best practice" format georeferencing should be used.\n\n.. warning::\n\n This results in geospatial PDF files compatible with a unnamed suite of tools starting with Terra and ending with Go, but\n can break compatibility with the built-in Acrobat geospatial tools (yes, Geospatial PDF\n format is a mess!).\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'includeGeoPdfFeatures': '``True`` if feature vector information (such as attributes) should be exported during Geospatial PDF exports.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'exportThemes': "Optional list of map themes to export as Geospatial PDF layer groups.\n\nIf set, map item's which are not assigned a specific map theme will iterate through all listed\nthemes and a Geospatial PDF layer group will be created for each.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.", 'predefinedMapScales': 'A list of predefined scales to use with the layout. This is used\nfor maps which are set to the predefined atlas scaling mode.\n\n.. versionadded:: 3.10'}
+ QgsLayoutExporter.PdfExportSettings.__attribute_docs__ = {'dpi': 'Resolution to export layout at. If dpi <= 0 the default layout dpi will be used.', 'rasterizeWholeImage': 'Set to ``True`` to force whole layout to be rasterized while exporting.\n\nThis option is mutually exclusive with forceVectorOutput.', 'forceVectorOutput': 'Set to ``True`` to force vector object exports, even when the resultant appearance will differ\nfrom the layout. If ``False``, some items may be rasterized in order to maintain their\ncorrect appearance in the output.\n\nThis option is mutually exclusive with rasterizeWholeImage.', 'appendGeoreference': 'Indicates whether PDF export should append georeference data\n\n.. versionadded:: 3.10', 'exportMetadata': "Indicates whether PDF export should include metadata generated\nfrom the layout's project's metadata.\n\n.. versionadded:: 3.2", 'flags': 'Layout context flags, which control how the export will be created.', 'textRenderFormat': 'Text rendering format, which controls how text should be rendered in the export (e.g.\nas paths or real text objects).\n\n.. versionadded:: 3.4.3', 'simplifyGeometries': 'Indicates whether vector geometries should be simplified to avoid redundant extraneous detail,\nsuch as vertices which are not visible at the specified dpi of the output.\n\n.. versionadded:: 3.10', 'writeGeoPdf': '``True`` if geospatial PDF files should be created, instead of normal PDF files.\n\nWhilst geospatial PDF files can include some desirable properties like the ability to interactively\nquery map features, they also can result in lower-quality output files, or forced rasterization\nof layers.\n\n.. note::\n\n Requires builds based on GDAL 3.0 or greater.\n\n.. versionadded:: 3.10', 'exportLayersAsSeperateFiles': '``True`` if individual layers from the layout should be rendered to separate PDF files.\n\nThis option allows for separation of logic layout layers to individual PDF files. For instance,\nif this option is ``True``, then a separate PDF file will be created per layer per map item in the\nlayout. Additionally, separate PDF files may be created for other complex layout items, resulting\nin a set of PDF files which contain logical atomic components of the layout.\n\nThis option is designed to allow the PDF files to be composited back together in an external\napplication (e.g. Adobe Illustrator) as a non-QGIS, post-production step.\n\n.. versionadded:: 3.14', 'useIso32000ExtensionFormatGeoreferencing': '``True`` if ISO3200 extension format georeferencing should be used.\n\nThis is a recommended setting which results in Geospatial PDF files compatible\nwith the built-in Acrobat geospatial tools.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'useOgcBestPracticeFormatGeoreferencing': '``True`` if OGC "best practice" format georeferencing should be used.\n\n.. warning::\n\n This results in geospatial PDF files compatible with a unnamed suite of tools starting with Terra and ending with Go, but\n can break compatibility with the built-in Acrobat geospatial tools (yes, Geospatial PDF\n format is a mess!).\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.\n\n.. deprecated:: 3.42\n\n This parameter has no longer any effect. Only ISO 32000 georeferencing is handled.', 'includeGeoPdfFeatures': '``True`` if feature vector information (such as attributes) should be exported during Geospatial PDF exports.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'exportThemes': "Optional list of map themes to export as Geospatial PDF layer groups.\n\nIf set, map item's which are not assigned a specific map theme will iterate through all listed\nthemes and a Geospatial PDF layer group will be created for each.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.", 'predefinedMapScales': 'A list of predefined scales to use with the layout. This is used\nfor maps which are set to the predefined atlas scaling mode.\n\n.. versionadded:: 3.10'}
QgsLayoutExporter.PdfExportSettings.__doc__ = """Contains settings relating to exporting layouts to PDF"""
QgsLayoutExporter.PdfExportSettings.__group__ = ['layout']
except (NameError, AttributeError):
diff --git a/python/PyQt6/core/auto_additions/qgsmimedatautils.py b/python/PyQt6/core/auto_additions/qgsmimedatautils.py
index 551f882dfd1b..8a8d3661c499 100644
--- a/python/PyQt6/core/auto_additions/qgsmimedatautils.py
+++ b/python/PyQt6/core/auto_additions/qgsmimedatautils.py
@@ -1,6 +1,6 @@
# The following has been generated automatically from src/core/qgsmimedatautils.h
try:
- QgsMimeDataUtils.Uri.__attribute_docs__ = {'layerType': 'Type of URI.\n\nRecognized types include\n\n- "vector": vector layers\n- "raster": raster layers\n- "mesh": mesh layers\n- "pointcloud": point cloud layers\n- "vector-tile": vector tile layers\n- "tiled-scene": tiled scene layers\n- "plugin": plugin layers\n- "custom": custom types\n- "project": QGS/QGZ project file\n- "directory": directory path\n\nMime data from plugins may use additional custom layer types.', 'providerKey': 'For "vector" / "raster" type: provider id.\nFor "plugin" type: plugin layer type name.\nFor "custom" type: key of its :py:class:`QgsCustomDropHandler`\nFor "project" and "directory" types: unused', 'name': 'Human readable name to be used e.g. in layer tree', 'uri': 'Identifier of the data source recognized by its providerKey', 'layerId': 'Layer ID, if uri is associated with a layer from a :py:class:`QgsProject`.\n\n.. versionadded:: 3.8', 'pId': 'Unique ID associated with application instance. Can be used to identify\nif mime data was created inside the current application instance or not.\n\n.. versionadded:: 3.8', 'wkbType': 'WKB type, if associated with a vector layer, or :py:class:`QgsWkbTypes`.Unknown if not\nyet known.\n\n.. versionadded:: 3.8', 'filePath': 'Path to file, if uri is associated with a file.\n\n.. versionadded:: 3.22'}
+ QgsMimeDataUtils.Uri.__attribute_docs__ = {'layerType': 'Type of URI.\n\nRecognized types include\n\n- "vector": vector layers\n- "raster": raster layers\n- "mesh": mesh layers\n- "point-cloud": point cloud layers (spelled with a dash since QGIS 3.42.0. In prior versions, there was no dash)\n- "vector-tile": vector tile layers\n- "tiled-scene": tiled scene layers\n- "annotation": annotation layers\n- "group": group layers\n- "plugin": plugin layers\n- "custom": custom types\n- "project": QGS/QGZ project file\n- "directory": directory path\n\nNote: use :py:func:`QgsMapLayerFactory.typeToString()` to convert from a\n:py:class:`Qgis`.LayerType to a string (except for "custom", "project" and\n"directory")\n\nMime data from plugins may use additional custom layer types.', 'providerKey': 'For "vector" / "raster" type: provider id.\nFor "plugin" type: plugin layer type name.\nFor "custom" type: key of its :py:class:`QgsCustomDropHandler`\nFor "project" and "directory" types: unused', 'name': 'Human readable name to be used e.g. in layer tree', 'uri': 'Identifier of the data source recognized by its providerKey', 'layerId': 'Layer ID, if uri is associated with a layer from a :py:class:`QgsProject`.\n\n.. versionadded:: 3.8', 'pId': 'Unique ID associated with application instance. Can be used to identify\nif mime data was created inside the current application instance or not.\n\n.. versionadded:: 3.8', 'wkbType': 'WKB type, if associated with a vector layer, or :py:class:`QgsWkbTypes`.Unknown if not\nyet known.\n\n.. versionadded:: 3.8', 'filePath': 'Path to file, if uri is associated with a file.\n\n.. versionadded:: 3.22'}
except (NameError, AttributeError):
pass
try:
diff --git a/python/PyQt6/core/auto_additions/qgspointcloudlayer.py b/python/PyQt6/core/auto_additions/qgspointcloudlayer.py
index b1931c3c06fd..3305db2e09ad 100644
--- a/python/PyQt6/core/auto_additions/qgspointcloudlayer.py
+++ b/python/PyQt6/core/auto_additions/qgspointcloudlayer.py
@@ -21,8 +21,8 @@
except (NameError, AttributeError):
pass
try:
- QgsPointCloudLayer.__attribute_docs__ = {'subsetStringChanged': "Emitted when the layer's subset string has changed.\n\n.. versionadded:: 3.26\n", 'raiseError': 'Signals an error related to this point cloud layer.\n\n.. versionadded:: 3.26\n', 'statisticsCalculationStateChanged': 'Emitted when statistics calculation state has changed\n\n.. versionadded:: 3.26\n'}
- QgsPointCloudLayer.__signal_arguments__ = {'raiseError': ['msg: str'], 'statisticsCalculationStateChanged': ['state: QgsPointCloudLayer.PointCloudStatisticsCalculationState']}
+ QgsPointCloudLayer.__attribute_docs__ = {'subsetStringChanged': "Emitted when the layer's subset string has changed.\n\n.. versionadded:: 3.26\n", 'raiseError': 'Signals an error related to this point cloud layer.\n\n.. versionadded:: 3.26\n', 'statisticsCalculationStateChanged': 'Emitted when statistics calculation state has changed\n\n.. versionadded:: 3.26\n', 'chunkAttributeValuesChanged': 'Emitted when a node gets some attribute values of some points changed\n\n.. versionadded:: 3.42\n'}
+ QgsPointCloudLayer.__signal_arguments__ = {'raiseError': ['msg: str'], 'statisticsCalculationStateChanged': ['state: QgsPointCloudLayer.PointCloudStatisticsCalculationState'], 'chunkAttributeValuesChanged': ['n: QgsPointCloudNodeId']}
QgsPointCloudLayer.__group__ = ['pointcloud']
except (NameError, AttributeError):
pass
diff --git a/python/PyQt6/core/auto_additions/qgssymbollayerutils.py b/python/PyQt6/core/auto_additions/qgssymbollayerutils.py
index de49d5e3840c..58e412ae6838 100644
--- a/python/PyQt6/core/auto_additions/qgssymbollayerutils.py
+++ b/python/PyQt6/core/auto_additions/qgssymbollayerutils.py
@@ -161,6 +161,7 @@
QgsSymbolLayerUtils.tileSize = staticmethod(QgsSymbolLayerUtils.tileSize)
QgsSymbolLayerUtils.clearSymbolLayerIds = staticmethod(QgsSymbolLayerUtils.clearSymbolLayerIds)
QgsSymbolLayerUtils.resetSymbolLayerIds = staticmethod(QgsSymbolLayerUtils.resetSymbolLayerIds)
+ QgsSymbolLayerUtils.clearSymbolLayerMasks = staticmethod(QgsSymbolLayerUtils.clearSymbolLayerMasks)
QgsSymbolLayerUtils.collectSymbolLayerClipGeometries = staticmethod(QgsSymbolLayerUtils.collectSymbolLayerClipGeometries)
QgsSymbolLayerUtils.__group__ = ['symbology']
except (NameError, AttributeError):
diff --git a/python/PyQt6/core/auto_additions/qgstransaction.py b/python/PyQt6/core/auto_additions/qgstransaction.py
index 180403b80ca6..284cc9fa4347 100644
--- a/python/PyQt6/core/auto_additions/qgstransaction.py
+++ b/python/PyQt6/core/auto_additions/qgstransaction.py
@@ -1,8 +1,8 @@
# The following has been generated automatically from src/core/qgstransaction.h
try:
- QgsTransaction.__attribute_docs__ = {'afterRollback': 'Emitted after a rollback\n', 'dirtied': 'Emitted if a sql query is executed and the underlying data is modified\n'}
+ QgsTransaction.__attribute_docs__ = {'afterRollback': 'Emitted after a rollback\n', 'afterRollbackToSavepoint': 'Emitted after a rollback to savepoint\n\n.. versionadded:: 3.42\n', 'dirtied': 'Emitted if a sql query is executed and the underlying data is modified\n'}
QgsTransaction.create = staticmethod(QgsTransaction.create)
QgsTransaction.supportsTransaction = staticmethod(QgsTransaction.supportsTransaction)
- QgsTransaction.__signal_arguments__ = {'dirtied': ['sql: str', 'name: str']}
+ QgsTransaction.__signal_arguments__ = {'afterRollbackToSavepoint': ['savepointName: str'], 'dirtied': ['sql: str', 'name: str']}
except (NameError, AttributeError):
pass
diff --git a/python/PyQt6/core/auto_generated/auth/qgsauthmanager.sip.in b/python/PyQt6/core/auto_generated/auth/qgsauthmanager.sip.in
index 2178f12e176f..d6376e29d36d 100644
--- a/python/PyQt6/core/auto_generated/auth/qgsauthmanager.sip.in
+++ b/python/PyQt6/core/auto_generated/auth/qgsauthmanager.sip.in
@@ -27,6 +27,7 @@ and to utilize configurations through various authentication method plugins
%End
public:
+
enum MessageLevel /BaseType=IntEnum/
{
INFO,
@@ -161,6 +162,7 @@ Returns the authentication database connection URI with the password stripped.
.. versionadded:: 3.40
%End
+
bool setMasterPassword( bool verify = false );
%Docstring
Main call to initially set or continually check master password is set
@@ -223,17 +225,18 @@ Check whether supplied password is the same as the one already set
bool resetMasterPassword( const QString &newpass, const QString &oldpass, bool keepbackup, QString *backuppath /In,Out/ = 0 );
%Docstring
-Reset the master password to a new one, then re-encrypt all previous
-configs in a new database file, optionally backup current database
+Reset the master password to a new one, then re-encrypts all previous
+configs with the new password.
:param newpass: New master password to replace existing
:param oldpass: Current master password to replace existing
-:param keepbackup: Whether to keep the generated backup of current database
+:param keepbackup: Whether to keep the generated backup of current database (if using file-based storage)
:param backuppath: Where the backup is located, if kept
%End
+
void setScheduledAuthDatabaseEraseRequestEmitted( bool emitted );
%Docstring
Re-emit a signal to schedule an optional erase of authentication database.
@@ -810,8 +813,20 @@ Store the password manager into the wallet
Available in Python bindings since QGIS 3.8.0
%End
+
+
static const QString AUTH_PASSWORD_HELPER_DISPLAY_NAME;
+ static QString passwordHelperDisplayName( bool titleCase = false );
+%Docstring
+Returns a translated display name of the password helper (platform dependent).
+
+If ``titleCase`` is ``True`` then a title case version of the string will be returned. Otherwise
+a mid-sentence case version will be returned.
+
+.. versionadded:: 3.42
+%End
+
static const QString AUTH_MAN_TAG;
diff --git a/python/PyQt6/core/auto_generated/effects/qgspainteffect.sip.in b/python/PyQt6/core/auto_generated/effects/qgspainteffect.sip.in
index 71dbb9100561..39dbc35ea9e3 100644
--- a/python/PyQt6/core/auto_generated/effects/qgspainteffect.sip.in
+++ b/python/PyQt6/core/auto_generated/effects/qgspainteffect.sip.in
@@ -149,7 +149,7 @@ Restores the effect to the state described by a DOM element.
.. seealso:: :py:func:`saveProperties`
%End
- virtual void render( QPicture &picture, QgsRenderContext &context );
+ virtual void render( const QPicture &picture, QgsRenderContext &context );
%Docstring
Renders a picture using the effect.
@@ -246,7 +246,7 @@ to account for the destination painter's DPI.
.. seealso:: :py:func:`sourceAsImage`
%End
- const QPicture *source() const;
+ const QPicture &source() const;
%Docstring
Returns the source QPicture. The :py:func:`~QgsPaintEffect.draw` member can utilize this when
drawing the effect.
@@ -258,14 +258,14 @@ drawing the effect.
.. seealso:: :py:func:`sourceAsImage`
%End
- QImage *sourceAsImage( QgsRenderContext &context );
+ QImage sourceAsImage( QgsRenderContext &context );
%Docstring
Returns the source QPicture rendered to a new QImage. The :py:func:`~QgsPaintEffect.draw` member can
utilize this when drawing the effect. The image will be padded or cropped from the original
source QPicture by the results of the :py:func:`~QgsPaintEffect.boundingRect` method.
The result is cached to speed up subsequent calls to sourceAsImage.
-:return: source QPicture rendered to an image
+:return: source QPicture rendered to an image, or a null image if source could not be rendered
.. seealso:: :py:func:`drawSource`
diff --git a/python/PyQt6/core/auto_generated/geometry/qgsbox3d.sip.in b/python/PyQt6/core/auto_generated/geometry/qgsbox3d.sip.in
index c3205eeb8b43..18edcd44c9c2 100644
--- a/python/PyQt6/core/auto_generated/geometry/qgsbox3d.sip.in
+++ b/python/PyQt6/core/auto_generated/geometry/qgsbox3d.sip.in
@@ -375,12 +375,24 @@ Expands the bbox so that it covers both the original rectangle and the given poi
Converts the box to a 2D rectangle.
%End
- double distanceTo( const QVector3D &point ) const /HoldGIL/;
+ double distanceTo( const QVector3D &point ) const /Deprecated="Since 3.42. Use distanceTo() with QgsVector3D instead (QVector3D uses floats)."/;
%Docstring
Returns the smallest distance between the box and the point ``point``
(returns 0 if the point is inside the box)
.. versionadded:: 3.18
+
+.. deprecated:: 3.42
+
+ Use :py:func:`~QgsBox3D.distanceTo` with :py:class:`QgsVector3D` instead (QVector3D uses floats).
+%End
+
+ double distanceTo( const QgsVector3D &point ) const /HoldGIL/;
+%Docstring
+Returns the smallest distance between the box and the point ``point``
+(returns 0 if the point is inside the box)
+
+.. versionadded:: 3.42
%End
bool operator==( const QgsBox3D &other ) const /HoldGIL/;
diff --git a/python/PyQt6/core/auto_generated/geometry/qgsmultipoint.sip.in b/python/PyQt6/core/auto_generated/geometry/qgsmultipoint.sip.in
index 5fd56c1ab2f0..d6c56daea4f1 100644
--- a/python/PyQt6/core/auto_generated/geometry/qgsmultipoint.sip.in
+++ b/python/PyQt6/core/auto_generated/geometry/qgsmultipoint.sip.in
@@ -120,7 +120,7 @@ The multipoint Z and M type will be set based on the type of the first point in
break;
}
- std::unique_ptr< QgsPoint > point = std::make_unique< QgsPoint >( x, y );
+ auto point = std::make_unique< QgsPoint >( x, y );
if ( elementSize > 2 )
{
element = PySequence_GetItem( value, 2 );
diff --git a/python/PyQt6/core/auto_generated/geometry/qgsrectangle.sip.in b/python/PyQt6/core/auto_generated/geometry/qgsrectangle.sip.in
index b4b1d09716da..d24acb66d00b 100644
--- a/python/PyQt6/core/auto_generated/geometry/qgsrectangle.sip.in
+++ b/python/PyQt6/core/auto_generated/geometry/qgsrectangle.sip.in
@@ -11,6 +11,8 @@
+
+
class QgsRectangle
{
%Docstring(signature="appended")
diff --git a/python/PyQt6/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in b/python/PyQt6/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in
index 48a23be1819c..48eac1b038b1 100644
--- a/python/PyQt6/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in
+++ b/python/PyQt6/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in
@@ -21,7 +21,7 @@ Rule based labeling for a vector layer.
%End
public:
typedef QList RuleList;
- typedef QMap RuleToProviderMap;
+ public:
class Rule
{
@@ -219,9 +219,13 @@ Try to find a rule given its unique key
%End
- QgsRuleBasedLabeling::Rule *clone() const /Factory/;
+ QgsRuleBasedLabeling::Rule *clone( bool resetRuleKey = true ) const /Factory/;
%Docstring
-clone this rule, return new instance
+clone this rule
+
+:param resetRuleKey: ``True`` if this rule and its children rule key need to be reset to new unique ones.
+
+:return: new instance
%End
@@ -312,8 +316,6 @@ Set pal settings for a specific provider (takes ownership).
protected:
-
-
};
diff --git a/python/PyQt6/core/auto_generated/layertree/qgslayertreeregistrybridge.sip.in b/python/PyQt6/core/auto_generated/layertree/qgslayertreeregistrybridge.sip.in
index 47de54bfeeba..b614ba15fe46 100644
--- a/python/PyQt6/core/auto_generated/layertree/qgslayertreeregistrybridge.sip.in
+++ b/python/PyQt6/core/auto_generated/layertree/qgslayertreeregistrybridge.sip.in
@@ -66,6 +66,13 @@ Set where the new layers should be inserted - can be used to follow current sele
By default it is root group with zero index.
.. versionadded:: 3.10
+%End
+
+ InsertionPoint layerInsertionPoint() const;
+%Docstring
+Returns the insertion point used to add layers to the tree
+
+.. versionadded:: 3.42
%End
void setLayerInsertionMethod( Qgis::LayerTreeInsertionMethod method );
@@ -100,6 +107,7 @@ Tell others we have just added layers to the tree (used in QGIS to auto-select f
protected:
+
};
/************************************************************************
diff --git a/python/PyQt6/core/auto_generated/mesh/qgsmeshlayer.sip.in b/python/PyQt6/core/auto_generated/mesh/qgsmeshlayer.sip.in
index 6a2cafa579ac..6a5b6bb46558 100644
--- a/python/PyQt6/core/auto_generated/mesh/qgsmeshlayer.sip.in
+++ b/python/PyQt6/core/auto_generated/mesh/qgsmeshlayer.sip.in
@@ -234,9 +234,13 @@ Gets native mesh and updates (creates if it doesn't exist) the base triangular m
%Docstring
Returns renderer settings
%End
- void setRendererSettings( const QgsMeshRendererSettings &settings );
+
+ void setRendererSettings( const QgsMeshRendererSettings &settings, const bool repaint = true );
%Docstring
Sets new renderer settings
+
+:param settings:
+:param repaint: should the update of renderer settings trigger repaint and emit rendererChanged signal
%End
QgsMeshTimeSettings timeSettings() const;
diff --git a/python/PyQt6/core/auto_generated/network/qgshttpheaders.sip.in b/python/PyQt6/core/auto_generated/network/qgshttpheaders.sip.in
index 3428ece4f42b..c4e72e65a521 100644
--- a/python/PyQt6/core/auto_generated/network/qgshttpheaders.sip.in
+++ b/python/PyQt6/core/auto_generated/network/qgshttpheaders.sip.in
@@ -109,15 +109,22 @@ KEY_REFERER value will be available at key "KEY_PREFIX+KEY_REFERER" and key "KEY
:return: ``True`` if the update succeed
%End
- bool updateDomElement( QDomElement &el ) const;
+ bool updateDomElement( QDomElement &el ) const /Deprecated="Since 3.42. Will be removed in QGIS 4.0."/;
%Docstring
-Updates a ``map`` by adding all the HTTP headers
+Updates a DOM element by adding all the HTTP headers
KEY_REFERER value will be available at attribute "KEY_PREFIX+KEY_REFERER" and attribute "KEY_REFERER" (for backward compatibility)
+:param el: DOM element
+
:return: ``True`` if the update succeed
+
+.. deprecated:: 3.42
+
+ Will be removed in QGIS 4.0.
%End
+
void setFromSettings( const QgsSettings &settings, const QString &key = QString() );
%Docstring
Loads headers from the ``settings``
@@ -185,6 +192,7 @@ Returns key/value pairs as strings separated by space
};
+
/************************************************************************
* This file has been generated automatically from *
* *
diff --git a/python/PyQt6/core/auto_generated/pointcloud/qgspointcloudindex.sip.in b/python/PyQt6/core/auto_generated/pointcloud/qgspointcloudindex.sip.in
index 18cbe8b42976..cdaf1cfdeda5 100644
--- a/python/PyQt6/core/auto_generated/pointcloud/qgspointcloudindex.sip.in
+++ b/python/PyQt6/core/auto_generated/pointcloud/qgspointcloudindex.sip.in
@@ -169,6 +169,7 @@ index is memory safe.
operator bool() const;
+
void load( const QString &fileName );
%Docstring
Loads the index from the file
@@ -355,9 +356,11 @@ in an implementation-specific dynamic structure.
.. seealso:: :py:func:`QgsAbstractPointCloudIndex.extraMetadata`
%End
- bool commitChanges();
+ bool commitChanges( QString *errorMessage /Out/ = 0 );
%Docstring
Tries to store pending changes to the data provider.
+If errorMessage is not a null pointer, it will receive
+an error message in case the call failed.
:return: ``True`` on success, otherwise ``False``
%End
@@ -365,6 +368,11 @@ Tries to store pending changes to the data provider.
bool isModified() const;
%Docstring
Returns ``True`` if there are uncommitted changes, ``False`` otherwise
+%End
+
+ QList updatedNodes() const;
+%Docstring
+Returns a list of node IDs that have been modified
%End
};
diff --git a/python/PyQt6/core/auto_generated/pointcloud/qgspointcloudlayer.sip.in b/python/PyQt6/core/auto_generated/pointcloud/qgspointcloudlayer.sip.in
index 090caa36c2ee..bcb66314bd45 100644
--- a/python/PyQt6/core/auto_generated/pointcloud/qgspointcloudlayer.sip.in
+++ b/python/PyQt6/core/auto_generated/pointcloud/qgspointcloudlayer.sip.in
@@ -305,6 +305,13 @@ Signals an error related to this point cloud layer.
Emitted when statistics calculation state has changed
.. versionadded:: 3.26
+%End
+
+ void chunkAttributeValuesChanged( const QgsPointCloudNodeId &n );
+%Docstring
+Emitted when a node gets some attribute values of some points changed
+
+.. versionadded:: 3.42
%End
private:
diff --git a/python/PyQt6/core/auto_generated/processing/qgsprocessingcontext.sip.in b/python/PyQt6/core/auto_generated/processing/qgsprocessingcontext.sip.in
index 99c99c858917..3058f23c53cf 100644
--- a/python/PyQt6/core/auto_generated/processing/qgsprocessingcontext.sip.in
+++ b/python/PyQt6/core/auto_generated/processing/qgsprocessingcontext.sip.in
@@ -662,6 +662,13 @@ Returns the model results, populated when the context is used to run a model alg
%End
+ void clearModelResult();
+%Docstring
+Clears model results previously populated when the context was used to run a model algorithm.
+
+.. versionadded:: 3.42
+%End
+
private:
QgsProcessingContext( const QgsProcessingContext &other );
};
diff --git a/python/PyQt6/core/auto_generated/processing/qgsprocessingutils.sip.in b/python/PyQt6/core/auto_generated/processing/qgsprocessingutils.sip.in
index d84309490db0..d4f215798021 100644
--- a/python/PyQt6/core/auto_generated/processing/qgsprocessingutils.sip.in
+++ b/python/PyQt6/core/auto_generated/processing/qgsprocessingutils.sip.in
@@ -335,7 +335,7 @@ Normalizes a layer ``source`` string for safe comparison across different
operating system environments.
%End
- static QString layerToStringIdentifier( const QgsMapLayer *layer ) /HoldGIL/;
+ static QString layerToStringIdentifier( const QgsMapLayer *layer, const QString &layerName = QString() ) /HoldGIL/;
%Docstring
Returns a string representation of the source for a ``layer``. The returned
value is suitable for storage for subsequent executions of an algorithm
diff --git a/python/PyQt6/core/auto_generated/proj/qgscoordinatereferencesystem.sip.in b/python/PyQt6/core/auto_generated/proj/qgscoordinatereferencesystem.sip.in
index 1ffebdd7f58a..9c5d7453ab1e 100644
--- a/python/PyQt6/core/auto_generated/proj/qgscoordinatereferencesystem.sip.in
+++ b/python/PyQt6/core/auto_generated/proj/qgscoordinatereferencesystem.sip.in
@@ -850,12 +850,6 @@ be returned.
In the case of a compound crs, this method will always return the datum ensemble for the horizontal component.
-.. warning::
-
- This method requires PROJ 8.0 or later
-
-:raises QgsNotSupportedException: on QGIS builds based on PROJ 7 or earlier.
-
.. versionadded:: 3.20
%End
@@ -863,12 +857,6 @@ be returned.
%Docstring
Attempts to retrieve the name of the celestial body associated with the CRS (e.g. "Earth").
-.. warning::
-
- This method requires PROJ 8.1 or later
-
-:raises QgsNotSupportedException: on QGIS builds based on PROJ 8.0 or earlier.
-
.. versionadded:: 3.20
%End
diff --git a/python/PyQt6/core/auto_generated/proj/qgscoordinatereferencesystemregistry.sip.in b/python/PyQt6/core/auto_generated/proj/qgscoordinatereferencesystemregistry.sip.in
index 1df531255497..55044defbf28 100644
--- a/python/PyQt6/core/auto_generated/proj/qgscoordinatereferencesystemregistry.sip.in
+++ b/python/PyQt6/core/auto_generated/proj/qgscoordinatereferencesystemregistry.sip.in
@@ -128,12 +128,6 @@ The map keys correspond to PROJ operation IDs.
%Docstring
Returns a list of all known celestial bodies.
-.. warning::
-
- This method requires PROJ 8.1 or later
-
-:raises QgsNotSupportedException: on QGIS builds based on PROJ 8.0 or earlier.
-
.. versionadded:: 3.20
%End
diff --git a/python/PyQt6/core/auto_generated/proj/qgscoordinatetransform.sip.in b/python/PyQt6/core/auto_generated/proj/qgscoordinatetransform.sip.in
index 2e48272838b0..c747ddcd9617 100644
--- a/python/PyQt6/core/auto_generated/proj/qgscoordinatetransform.sip.in
+++ b/python/PyQt6/core/auto_generated/proj/qgscoordinatetransform.sip.in
@@ -280,6 +280,10 @@ the returned rectangle.
:return: rectangle in destination CRS
+.. warning::
+
+ Do not call this method if the transformation involves geocentric CRS -- in this situation transformation of a 2D bounding box is meaningless! Calling this method with a geocentric CRS will result in a :py:class:`QgsCsException` being thrown.
+
:raises QgsCsException: if the transformation fails
%End
diff --git a/python/PyQt6/core/auto_generated/providers/qgsabstractdatabaseproviderconnection.sip.in b/python/PyQt6/core/auto_generated/providers/qgsabstractdatabaseproviderconnection.sip.in
index 062c8075b354..c4daa90471e5 100644
--- a/python/PyQt6/core/auto_generated/providers/qgsabstractdatabaseproviderconnection.sip.in
+++ b/python/PyQt6/core/auto_generated/providers/qgsabstractdatabaseproviderconnection.sip.in
@@ -1033,6 +1033,8 @@ Checks if ``capability`` is supported.
+
+
};
QFlags operator|(QgsAbstractDatabaseProviderConnection::Capability f1, QFlags f2);
diff --git a/python/PyQt6/core/auto_generated/providers/qgsprovidermetadata.sip.in b/python/PyQt6/core/auto_generated/providers/qgsprovidermetadata.sip.in
index 0c70076cad60..8a7724505ce3 100644
--- a/python/PyQt6/core/auto_generated/providers/qgsprovidermetadata.sip.in
+++ b/python/PyQt6/core/auto_generated/providers/qgsprovidermetadata.sip.in
@@ -573,6 +573,13 @@ If a provider does not work with paths, unmodified URI will be returned.
.. seealso:: :py:func:`absoluteToRelativeUri`
.. versionadded:: 3.30
+%End
+
+ virtual QString cleanUri( const QString &uri, Qgis::UriCleaningFlags flags = Qgis::UriCleaningFlag::RemoveCredentials ) const;
+%Docstring
+Cleans a layer ``uri``, e.g. to remove or hide sensitive information from the URI.
+
+.. versionadded:: 3.42
%End
virtual QList< QgsDataItemProvider * > dataItemProviders() const /Factory/;
diff --git a/python/PyQt6/core/auto_generated/providers/sensorthings/qgssensorthingsutils.sip.in b/python/PyQt6/core/auto_generated/providers/sensorthings/qgssensorthingsutils.sip.in
index 45b049c4c7e4..394e736ba268 100644
--- a/python/PyQt6/core/auto_generated/providers/sensorthings/qgssensorthingsutils.sip.in
+++ b/python/PyQt6/core/auto_generated/providers/sensorthings/qgssensorthingsutils.sip.in
@@ -56,9 +56,12 @@ Returns the SensorThings properties which correspond to a specified entity ``typ
.. versionadded:: 3.38
%End
- static QgsFields fieldsForEntityType( Qgis::SensorThingsEntity type );
+ static QgsFields fieldsForEntityType( Qgis::SensorThingsEntity type, bool includeRangeFieldProxies = true );
%Docstring
Returns the fields which correspond to a specified entity ``type``.
+
+Since QGIS 3.42 the ``includeRangeFieldProxies`` argument can be used to hide the "start"/"end" fields
+which are proxies for the date time range field types which are not natively supported in QGIS.
%End
static QgsFields fieldsForExpandedEntityType( Qgis::SensorThingsEntity baseType, const QList< Qgis::SensorThingsEntity > &expandedTypes );
diff --git a/python/PyQt6/core/auto_generated/qgis.sip.in b/python/PyQt6/core/auto_generated/qgis.sip.in
index 4d30981e6609..2c8ae9e630eb 100644
--- a/python/PyQt6/core/auto_generated/qgis.sip.in
+++ b/python/PyQt6/core/auto_generated/qgis.sip.in
@@ -783,6 +783,15 @@ The development version
TiledScene,
};
+ enum class UriCleaningFlag /BaseType=IntFlag/
+ {
+ RemoveCredentials,
+ RedactCredentials,
+ };
+
+ typedef QFlags UriCleaningFlags;
+
+
enum class SublayerQueryFlag /BaseType=IntFlag/
{
FastScan,
@@ -3406,6 +3415,8 @@ QFlags operator|(Qgis::SnappingType f1, QFlags operator|(Qgis::SqlLayerDefinitionCapability f1, QFlags f2);
+QFlags operator|(Qgis::UriCleaningFlag f1, QFlags f2);
+
QFlags operator|(Qgis::SublayerFlag f1, QFlags f2);
QFlags operator|(Qgis::SublayerQueryFlag f1, QFlags f2);
diff --git a/python/PyQt6/core/auto_generated/qgsabstractcontentcache.sip.in b/python/PyQt6/core/auto_generated/qgsabstractcontentcache.sip.in
index d65dc29a2c09..2d5694ae3f06 100644
--- a/python/PyQt6/core/auto_generated/qgsabstractcontentcache.sip.in
+++ b/python/PyQt6/core/auto_generated/qgsabstractcontentcache.sip.in
@@ -108,6 +108,23 @@ Data URLs are of the form ``data:[;]base64,``.
.. versionadded:: 3.40
%End
+
+ static bool parseEmbeddedStringData( const QString &path, QString *mimeType /Out/ = 0, QString *data /Out/ = 0 );
+%Docstring
+Parses a ``path`` to determine if it represents a embedded string data, and if so, extracts the components
+of the URL.
+
+Data URLs are of the form ``data:[;]utf8,``.
+
+:param path: path to test
+
+:return: - ``True`` if ``path`` is an embedded string data URL
+ - mimeType: the extracted mime type if the ``path`` is a data URL
+ - data: the extracted string data if the ``path`` is a data URL
+
+.. versionadded:: 3.42
+%End
+
static bool isBase64Data( const QString &path );
%Docstring
Returns ``True`` if ``path`` represents base64 encoded data.
diff --git a/python/PyQt6/core/auto_generated/qgserror.sip.in b/python/PyQt6/core/auto_generated/qgserror.sip.in
index 058fe87d89a4..8978ebf40b68 100644
--- a/python/PyQt6/core/auto_generated/qgserror.sip.in
+++ b/python/PyQt6/core/auto_generated/qgserror.sip.in
@@ -88,9 +88,9 @@ Append new error message.
bool isEmpty() const;
%Docstring
-Test if any error is set.
+Test if no error is set.
-:return: ``True`` if contains error
+:return: ``False`` if contains error
%End
QString message( QgsErrorMessage::Format format = QgsErrorMessage::Html ) const;
diff --git a/python/PyQt6/core/auto_generated/qgsfeatureiterator.sip.in b/python/PyQt6/core/auto_generated/qgsfeatureiterator.sip.in
index f77128560fce..a8a2d2890fcc 100644
--- a/python/PyQt6/core/auto_generated/qgsfeatureiterator.sip.in
+++ b/python/PyQt6/core/auto_generated/qgsfeatureiterator.sip.in
@@ -222,7 +222,7 @@ Wrapper for iterator of features from vector data provider or vector layer
SIP_PYOBJECT __next__() /TypeHint="QgsFeature"/;
%MethodCode
- std::unique_ptr< QgsFeature > f = std::make_unique< QgsFeature >();
+ auto f = std::make_unique< QgsFeature >();
bool result = false;
Py_BEGIN_ALLOW_THREADS
result = ( sipCpp->nextFeature( *f ) );
diff --git a/python/PyQt6/core/auto_generated/qgsmaplayer.sip.in b/python/PyQt6/core/auto_generated/qgsmaplayer.sip.in
index 73545c5cd377..f185105e38a3 100644
--- a/python/PyQt6/core/auto_generated/qgsmaplayer.sip.in
+++ b/python/PyQt6/core/auto_generated/qgsmaplayer.sip.in
@@ -567,13 +567,14 @@ or other problem. Child classes set this flag when initialized.
:return: ``True`` if the layer is valid and can be accessed
%End
+
QString publicSource( bool hidePassword = false ) const;
%Docstring
Gets a version of the internal layer definition that has sensitive
bits removed (for example, the password). This function should
be used when displaying the source name for general viewing.
-:param hidePassword: False, if the password should be removed or replaced by an arbitrary string, since QGIS 3.34
+:param hidePassword: ``True`` to replace the value of credentials with 'xxxxxxxx', ``False`` to completely remove credentials (key and value). Since QGIS 3.34
.. seealso:: :py:func:`source`
%End
diff --git a/python/PyQt6/core/auto_generated/qgsmessagelog.sip.in b/python/PyQt6/core/auto_generated/qgsmessagelog.sip.in
index 191fedee7791..dae700f6b340 100644
--- a/python/PyQt6/core/auto_generated/qgsmessagelog.sip.in
+++ b/python/PyQt6/core/auto_generated/qgsmessagelog.sip.in
@@ -32,14 +32,8 @@ window for the user.
QgsMessageLog();
- static void logMessage( const QString &message, const QString &tag = QString(), Qgis::MessageLevel level = Qgis::MessageLevel::Warning, bool notifyUser = true );
-%Docstring
-Adds a ``message`` to the log instance (and creates it if necessary).
-
-If ``notifyUser`` is ``True``, then the message should be brought to the user's attention by various UI hints.
-If it is ``False``, the message should appear in logs silently. Note that log viewer implementations may
-only respect notification hints for certain message levels.
-%End
+ static void logMessage( const QString &message, const QString &tag = QString(), Qgis::MessageLevel level = Qgis::MessageLevel::Warning, bool notifyUser = true,
+ const char *file = __builtin_FILE(), const char *function = __builtin_FUNCTION(), int line = __builtin_LINE() );
signals:
diff --git a/python/PyQt6/core/auto_generated/qgsspatialindex.sip.in b/python/PyQt6/core/auto_generated/qgsspatialindex.sip.in
index 9e3ef92e480c..371168fceff4 100644
--- a/python/PyQt6/core/auto_generated/qgsspatialindex.sip.in
+++ b/python/PyQt6/core/auto_generated/qgsspatialindex.sip.in
@@ -205,7 +205,7 @@ Geometry is only stored if the QgsSpatialIndex was created with the FlagStoreFea
.. versionadded:: 3.6
%End
%MethodCode
- std::unique_ptr< QgsGeometry > g = std::make_unique< QgsGeometry >( sipCpp->geometry( a0 ) );
+ auto g = std::make_unique< QgsGeometry >( sipCpp->geometry( a0 ) );
if ( g->isNull() )
{
PyErr_SetString( PyExc_KeyError, QStringLiteral( "No geometry with feature id %1 exists in the index." ).arg( a0 ).toUtf8().constData() );
diff --git a/python/PyQt6/core/auto_generated/qgstransaction.sip.in b/python/PyQt6/core/auto_generated/qgstransaction.sip.in
index 412929f07859..b5f528812390 100644
--- a/python/PyQt6/core/auto_generated/qgstransaction.sip.in
+++ b/python/PyQt6/core/auto_generated/qgstransaction.sip.in
@@ -152,6 +152,13 @@ returns the last created savepoint
void afterRollback();
%Docstring
Emitted after a rollback
+%End
+
+ void afterRollbackToSavepoint( const QString &savepointName );
+%Docstring
+Emitted after a rollback to savepoint
+
+.. versionadded:: 3.42
%End
void dirtied( const QString &sql, const QString &name );
diff --git a/python/PyQt6/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in b/python/PyQt6/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in
index 458d2c810456..a7cedd17f041 100644
--- a/python/PyQt6/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in
+++ b/python/PyQt6/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in
@@ -36,6 +36,8 @@ Double box with alternating colors.
const QgsScaleBarSettings &settings,
const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const;
+ virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;
+
};
/************************************************************************
diff --git a/python/PyQt6/core/auto_generated/scalebar/qgshollowscalebarrenderer.sip.in b/python/PyQt6/core/auto_generated/scalebar/qgshollowscalebarrenderer.sip.in
index 0a8ad51a02c6..fd669e79b5be 100644
--- a/python/PyQt6/core/auto_generated/scalebar/qgshollowscalebarrenderer.sip.in
+++ b/python/PyQt6/core/auto_generated/scalebar/qgshollowscalebarrenderer.sip.in
@@ -40,7 +40,6 @@ alternating segments. AKA "South African" style.
const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const;
virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;
-
};
/************************************************************************
diff --git a/python/PyQt6/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in b/python/PyQt6/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in
index 30e8ed6d403f..4a828b2e55e8 100644
--- a/python/PyQt6/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in
+++ b/python/PyQt6/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in
@@ -37,6 +37,8 @@ color for the segments.
const QgsScaleBarSettings &settings,
const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const;
+ virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;
+
};
/************************************************************************
diff --git a/python/PyQt6/core/auto_generated/symbology/qgsmasksymbollayer.sip.in b/python/PyQt6/core/auto_generated/symbology/qgsmasksymbollayer.sip.in
index 03583d69ad2c..1ee80706775d 100644
--- a/python/PyQt6/core/auto_generated/symbology/qgsmasksymbollayer.sip.in
+++ b/python/PyQt6/core/auto_generated/symbology/qgsmasksymbollayer.sip.in
@@ -85,6 +85,15 @@ Returns a list of references to symbol layers that are masked by the sub symbol'
:return: a list of references to masked symbol layers
.. seealso:: :py:func:`setMasks`
+%End
+
+ void clearMasks();
+%Docstring
+Remove masks defined by this symbol layer.
+
+.. seealso:: :py:func:`masks`
+
+.. versionadded:: 3.42
%End
void setMasks( const QList &maskedLayers );
@@ -100,8 +109,6 @@ Sets the symbol layers that will be masked by the sub symbol's shape.
QgsMaskMarkerSymbolLayer( const QgsMaskMarkerSymbolLayer & );
};
-
-
/************************************************************************
* This file has been generated automatically from *
* *
diff --git a/python/PyQt6/core/auto_generated/symbology/qgssymbollayerutils.sip.in b/python/PyQt6/core/auto_generated/symbology/qgssymbollayerutils.sip.in
index 4e60a056d2dc..5dfda106322a 100644
--- a/python/PyQt6/core/auto_generated/symbology/qgssymbollayerutils.sip.in
+++ b/python/PyQt6/core/auto_generated/symbology/qgssymbollayerutils.sip.in
@@ -1020,6 +1020,13 @@ Regenerate recursively unique id from all ``symbol`` symbol layers
Regenerate recursively unique id from ``symbolLayer`` and its children
.. versionadded:: 3.30
+%End
+
+ static void clearSymbolLayerMasks( QgsSymbol *symbol );
+%Docstring
+Remove recursively masks from all ``symbol`` symbol layers
+
+.. versionadded:: 3.42
%End
static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
diff --git a/python/PyQt6/core/auto_generated/vector/qgsvectorlayereditbuffer.sip.in b/python/PyQt6/core/auto_generated/vector/qgsvectorlayereditbuffer.sip.in
index 422d7a2470d4..96f6588d7038 100644
--- a/python/PyQt6/core/auto_generated/vector/qgsvectorlayereditbuffer.sip.in
+++ b/python/PyQt6/core/auto_generated/vector/qgsvectorlayereditbuffer.sip.in
@@ -321,7 +321,7 @@ Update feature with uncommitted geometry updates
Update feature with uncommitted attribute updates
%End
- void handleAttributeAdded( int index );
+ void handleAttributeAdded( int index, const QgsField &field );
%Docstring
Update added and changed features after addition of an attribute
%End
diff --git a/python/PyQt6/core/auto_generated/vector/qgsvectorlayereditutils.sip.in b/python/PyQt6/core/auto_generated/vector/qgsvectorlayereditutils.sip.in
index 2a7e6a972eca..63643833dfe2 100644
--- a/python/PyQt6/core/auto_generated/vector/qgsvectorlayereditutils.sip.in
+++ b/python/PyQt6/core/auto_generated/vector/qgsvectorlayereditutils.sip.in
@@ -332,6 +332,7 @@ Merge features into a single one.
.. versionadded:: 3.30
%End
+
};
/************************************************************************
diff --git a/python/PyQt6/core/class_map.yaml b/python/PyQt6/core/class_map.yaml
index f82eb16d4aee..ba37124a4985 100644
--- a/python/PyQt6/core/class_map.yaml
+++ b/python/PyQt6/core/class_map.yaml
@@ -1,10 +1,10 @@
-Qgis.defaultProjectScales: src/core/qgis.h#L5817
+Qgis.defaultProjectScales: src/core/qgis.h#L5837
Qgis.devVersion: src/core/qgis.h#L89
-Qgis.geosVersion: src/core/qgis.h#L5852
-Qgis.geosVersionInt: src/core/qgis.h#L5824
-Qgis.geosVersionMajor: src/core/qgis.h#L5831
-Qgis.geosVersionMinor: src/core/qgis.h#L5838
-Qgis.geosVersionPatch: src/core/qgis.h#L5845
+Qgis.geosVersion: src/core/qgis.h#L5872
+Qgis.geosVersionInt: src/core/qgis.h#L5844
+Qgis.geosVersionMajor: src/core/qgis.h#L5851
+Qgis.geosVersionMinor: src/core/qgis.h#L5858
+Qgis.geosVersionPatch: src/core/qgis.h#L5865
Qgis.releaseName: src/core/qgis.h#L79
Qgis.version: src/core/qgis.h#L65
Qgis.versionInt: src/core/qgis.h#L72
@@ -108,11 +108,12 @@ QgsAbstractCacheIndex.flushFeature: src/core/qgscacheindex.h#L42
QgsAbstractCacheIndex.getCacheIterator: src/core/qgscacheindex.h#L76
QgsAbstractCacheIndex.requestCompleted: src/core/qgscacheindex.h#L59
QgsAbstractCacheIndex: src/core/qgscacheindex.h#L31
-QgsAbstractContentCacheBase.checkReply: src/core/qgsabstractcontentcache.h#L184
-QgsAbstractContentCacheBase.isBase64Data: src/core/qgsabstractcontentcache.h#L164
-QgsAbstractContentCacheBase.onRemoteContentFetched: src/core/qgsabstractcontentcache.h#L194
+QgsAbstractContentCacheBase.checkReply: src/core/qgsabstractcontentcache.h#L201
+QgsAbstractContentCacheBase.isBase64Data: src/core/qgsabstractcontentcache.h#L181
+QgsAbstractContentCacheBase.onRemoteContentFetched: src/core/qgsabstractcontentcache.h#L211
QgsAbstractContentCacheBase.parseBase64DataUrl: src/core/qgsabstractcontentcache.h#L157
-QgsAbstractContentCacheBase.remoteContentFetched: src/core/qgsabstractcontentcache.h#L171
+QgsAbstractContentCacheBase.parseEmbeddedStringData: src/core/qgsabstractcontentcache.h#L174
+QgsAbstractContentCacheBase.remoteContentFetched: src/core/qgsabstractcontentcache.h#L188
QgsAbstractContentCacheBase: src/core/qgsabstractcontentcache.h#L132
QgsAbstractContentCacheEntry.dataSize: src/core/qgsabstractcontentcache.h#L99
QgsAbstractContentCacheEntry.dump: src/core/qgsabstractcontentcache.h#L104
@@ -1485,108 +1486,109 @@ QgsAuthConfigurationStorageRegistry.storageAdded: src/core/auth/qgsauthconfigura
QgsAuthConfigurationStorageRegistry.storageChanged: src/core/auth/qgsauthconfigurationstorageregistry.h#L120
QgsAuthConfigurationStorageRegistry.storageRemoved: src/core/auth/qgsauthconfigurationstorageregistry.h#L126
QgsAuthConfigurationStorageRegistry: src/core/auth/qgsauthconfigurationstorageregistry.h#L41
-QgsAuthManager.authConfigurationStorageRegistry: src/core/auth/qgsauthmanager.h#L123
-QgsAuthManager.authDatabaseChanged: src/core/auth/qgsauthmanager.h#L830
-QgsAuthManager.authDatabaseConfigTable: src/core/auth/qgsauthmanager.h#L136
-QgsAuthManager.authDatabaseConnection: src/core/auth/qgsauthmanager.h#L130
-QgsAuthManager.authDatabaseEraseRequested: src/core/auth/qgsauthmanager.h#L827
-QgsAuthManager.authDatabaseServersTable: src/core/auth/qgsauthmanager.h#L149
-QgsAuthManager.authManTag: src/core/auth/qgsauthmanager.h#L270
-QgsAuthManager.authMethod: src/core/auth/qgsauthmanager.h#L302
-QgsAuthManager.authMethodEditWidget: src/core/auth/qgsauthmanager.h#L326
-QgsAuthManager.authMethodsKeys: src/core/auth/qgsauthmanager.h#L296
-QgsAuthManager.authSetting: src/core/auth/qgsauthmanager.h#L481
-QgsAuthManager.authenticationDatabasePath: src/core/auth/qgsauthmanager.h#L163
-QgsAuthManager.authenticationDatabaseUri: src/core/auth/qgsauthmanager.h#L181
-QgsAuthManager.authenticationDatabaseUriStripped: src/core/auth/qgsauthmanager.h#L187
-QgsAuthManager.availableAuthMethodConfigs: src/core/auth/qgsauthmanager.h#L276
-QgsAuthManager.backupAuthenticationDatabase: src/core/auth/qgsauthmanager.h#L416
-QgsAuthManager.certAuthority: src/core/auth/qgsauthmanager.h#L604
-QgsAuthManager.certIdentity: src/core/auth/qgsauthmanager.h#L503
-QgsAuthManager.certIdentityBundleToPem: src/core/auth/qgsauthmanager.h#L518
-QgsAuthManager.certIdentityIds: src/core/auth/qgsauthmanager.h#L532
-QgsAuthManager.certTrustPolicy: src/core/auth/qgsauthmanager.h#L657
-QgsAuthManager.certificateTrustPolicy: src/core/auth/qgsauthmanager.h#L670
-QgsAuthManager.clearAllCachedConfigs: src/core/auth/qgsauthmanager.h#L834
-QgsAuthManager.clearCachedConfig: src/core/auth/qgsauthmanager.h#L837
-QgsAuthManager.clearMasterPassword: src/core/auth/qgsauthmanager.h#L221
-QgsAuthManager.configAuthMethod: src/core/auth/qgsauthmanager.h#L285
-QgsAuthManager.configAuthMethodKey: src/core/auth/qgsauthmanager.h#L291
-QgsAuthManager.configIdRegex: src/core/auth/qgsauthmanager.h#L352
-QgsAuthManager.configIdUnique: src/core/auth/qgsauthmanager.h#L343
-QgsAuthManager.configIds: src/core/auth/qgsauthmanager.h#L355
-QgsAuthManager.defaultCertTrustPolicy: src/core/auth/qgsauthmanager.h#L676
-QgsAuthManager.disabledMessage: src/core/auth/qgsauthmanager.h#L156
-QgsAuthManager.dumpIgnoredSslErrorsCache_: src/core/auth/qgsauthmanager.h#L579
-QgsAuthManager.ensureInitialized: src/core/auth/qgsauthmanager.h#L115
-QgsAuthManager.eraseAuthenticationDatabase: src/core/auth/qgsauthmanager.h#L424
-QgsAuthManager.existsAuthSetting: src/core/auth/qgsauthmanager.h#L484
-QgsAuthManager.existsCertAuthority: src/core/auth/qgsauthmanager.h#L607
-QgsAuthManager.existsCertIdentity: src/core/auth/qgsauthmanager.h#L535
-QgsAuthManager.existsSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L566
-QgsAuthManager.exportAuthenticationConfigsToXml: src/core/auth/qgsauthmanager.h#L395
-QgsAuthManager.hasConfigId: src/core/auth/qgsauthmanager.h#L349
-QgsAuthManager.importAuthenticationConfigsFromXml: src/core/auth/qgsauthmanager.h#L404
-QgsAuthManager.init: src/core/auth/qgsauthmanager.h#L94
-QgsAuthManager.initSslCaches: src/core/auth/qgsauthmanager.h#L493
-QgsAuthManager.isDisabled: src/core/auth/qgsauthmanager.h#L153
-QgsAuthManager.isFilesystemBasedDatabase: src/core/auth/qgsauthmanager.h#L168
-QgsAuthManager.loadAuthenticationConfig: src/core/auth/qgsauthmanager.h#L379
-QgsAuthManager.masterPasswordHashInDatabase: src/core/auth/qgsauthmanager.h#L215
-QgsAuthManager.masterPasswordIsSet: src/core/auth/qgsauthmanager.h#L212
-QgsAuthManager.masterPasswordSame: src/core/auth/qgsauthmanager.h#L227
-QgsAuthManager.masterPasswordVerified: src/core/auth/qgsauthmanager.h#L824
-QgsAuthManager.messageLog: src/core/auth/qgsauthmanager.h#L798
-QgsAuthManager.messageOut: src/core/auth/qgsauthmanager.h#L788
-QgsAuthManager.methodConfigTableName: src/core/auth/qgsauthmanager.h#L143
-QgsAuthManager.passwordHelperEnabled: src/core/auth/qgsauthmanager.h#L733
-QgsAuthManager.passwordHelperFailure: src/core/auth/qgsauthmanager.h#L772
-QgsAuthManager.passwordHelperMessageLog: src/core/auth/qgsauthmanager.h#L818
-QgsAuthManager.passwordHelperMessageOut: src/core/auth/qgsauthmanager.h#L808
-QgsAuthManager.passwordHelperSuccess: src/core/auth/qgsauthmanager.h#L778
-QgsAuthManager.passwordHelperSync: src/core/auth/qgsauthmanager.h#L757
-QgsAuthManager.rebuildCaCertsCache: src/core/auth/qgsauthmanager.h#L647
-QgsAuthManager.rebuildCertTrustCache: src/core/auth/qgsauthmanager.h#L685
-QgsAuthManager.rebuildIgnoredSslErrorCache: src/core/auth/qgsauthmanager.h#L588
-QgsAuthManager.rebuildTrustedCaCertsCache: src/core/auth/qgsauthmanager.h#L701
-QgsAuthManager.registerCoreAuthMethods: src/core/auth/qgsauthmanager.h#L273
-QgsAuthManager.removeAllAuthenticationConfigs: src/core/auth/qgsauthmanager.h#L410
-QgsAuthManager.removeAuthSetting: src/core/auth/qgsauthmanager.h#L487
-QgsAuthManager.removeAuthenticationConfig: src/core/auth/qgsauthmanager.h#L386
-QgsAuthManager.removeCertAuthority: src/core/auth/qgsauthmanager.h#L610
-QgsAuthManager.removeCertIdentity: src/core/auth/qgsauthmanager.h#L538
-QgsAuthManager.removeCertTrustPolicies: src/core/auth/qgsauthmanager.h#L660
-QgsAuthManager.removeCertTrustPolicy: src/core/auth/qgsauthmanager.h#L663
-QgsAuthManager.removeSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L569
-QgsAuthManager.resetMasterPassword: src/core/auth/qgsauthmanager.h#L237
-QgsAuthManager.setDefaultCertTrustPolicy: src/core/auth/qgsauthmanager.h#L673
-QgsAuthManager.setMasterPassword: src/core/auth/qgsauthmanager.h#L194
-QgsAuthManager.setMasterPassword: src/core/auth/qgsauthmanager.h#L202
-QgsAuthManager.setPasswordHelperEnabled: src/core/auth/qgsauthmanager.h#L739
-QgsAuthManager.setScheduledAuthDatabaseEraseRequestEmitted: src/core/auth/qgsauthmanager.h#L267
-QgsAuthManager.setup: src/core/auth/qgsauthmanager.h#L106
-QgsAuthManager.sslCertCustomConfig: src/core/auth/qgsauthmanager.h#L550
-QgsAuthManager.sslCertCustomConfigByHost: src/core/auth/qgsauthmanager.h#L557
-QgsAuthManager.storeAuthSetting: src/core/auth/qgsauthmanager.h#L472
-QgsAuthManager.storeAuthenticationConfig: src/core/auth/qgsauthmanager.h#L363
-QgsAuthManager.storeCertAuthorities: src/core/auth/qgsauthmanager.h#L592
-QgsAuthManager.storeCertAuthority: src/core/auth/qgsauthmanager.h#L595
-QgsAuthManager.storeCertIdentity: src/core/auth/qgsauthmanager.h#L496
-QgsAuthManager.storeCertTrustPolicy: src/core/auth/qgsauthmanager.h#L650
-QgsAuthManager.storeSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L542
-QgsAuthManager.supportedAuthMethodExpansions: src/core/auth/qgsauthmanager.h#L334
-QgsAuthManager.trustedCaCertsPemText: src/core/auth/qgsauthmanager.h#L713
-QgsAuthManager.uniqueConfigId: src/core/auth/qgsauthmanager.h#L337
-QgsAuthManager.updateAuthenticationConfig: src/core/auth/qgsauthmanager.h#L370
-QgsAuthManager.updateConfigAuthMethods: src/core/auth/qgsauthmanager.h#L279
-QgsAuthManager.updateDataSourceUriItems: src/core/auth/qgsauthmanager.h#L456
-QgsAuthManager.updateIgnoredSslErrorsCache: src/core/auth/qgsauthmanager.h#L585
-QgsAuthManager.updateIgnoredSslErrorsCacheFromConfig: src/core/auth/qgsauthmanager.h#L582
-QgsAuthManager.updateNetworkProxy: src/core/auth/qgsauthmanager.h#L466
-QgsAuthManager.updateNetworkReply: src/core/auth/qgsauthmanager.h#L446
-QgsAuthManager.updateNetworkRequest: src/core/auth/qgsauthmanager.h#L436
-QgsAuthManager.verifyMasterPassword: src/core/auth/qgsauthmanager.h#L209
-QgsAuthManager: src/core/auth/qgsauthmanager.h#L70
+QgsAuthManager.authConfigurationStorageRegistry: src/core/auth/qgsauthmanager.h#L127
+QgsAuthManager.authDatabaseChanged: src/core/auth/qgsauthmanager.h#L889
+QgsAuthManager.authDatabaseConfigTable: src/core/auth/qgsauthmanager.h#L140
+QgsAuthManager.authDatabaseConnection: src/core/auth/qgsauthmanager.h#L134
+QgsAuthManager.authDatabaseEraseRequested: src/core/auth/qgsauthmanager.h#L886
+QgsAuthManager.authDatabaseServersTable: src/core/auth/qgsauthmanager.h#L153
+QgsAuthManager.authManTag: src/core/auth/qgsauthmanager.h#L299
+QgsAuthManager.authMethod: src/core/auth/qgsauthmanager.h#L331
+QgsAuthManager.authMethodEditWidget: src/core/auth/qgsauthmanager.h#L355
+QgsAuthManager.authMethodsKeys: src/core/auth/qgsauthmanager.h#L325
+QgsAuthManager.authSetting: src/core/auth/qgsauthmanager.h#L510
+QgsAuthManager.authenticationDatabasePath: src/core/auth/qgsauthmanager.h#L167
+QgsAuthManager.authenticationDatabaseUri: src/core/auth/qgsauthmanager.h#L185
+QgsAuthManager.authenticationDatabaseUriStripped: src/core/auth/qgsauthmanager.h#L191
+QgsAuthManager.availableAuthMethodConfigs: src/core/auth/qgsauthmanager.h#L305
+QgsAuthManager.backupAuthenticationDatabase: src/core/auth/qgsauthmanager.h#L445
+QgsAuthManager.certAuthority: src/core/auth/qgsauthmanager.h#L633
+QgsAuthManager.certIdentity: src/core/auth/qgsauthmanager.h#L532
+QgsAuthManager.certIdentityBundleToPem: src/core/auth/qgsauthmanager.h#L547
+QgsAuthManager.certIdentityIds: src/core/auth/qgsauthmanager.h#L561
+QgsAuthManager.certTrustPolicy: src/core/auth/qgsauthmanager.h#L686
+QgsAuthManager.certificateTrustPolicy: src/core/auth/qgsauthmanager.h#L699
+QgsAuthManager.clearAllCachedConfigs: src/core/auth/qgsauthmanager.h#L893
+QgsAuthManager.clearCachedConfig: src/core/auth/qgsauthmanager.h#L896
+QgsAuthManager.clearMasterPassword: src/core/auth/qgsauthmanager.h#L234
+QgsAuthManager.configAuthMethod: src/core/auth/qgsauthmanager.h#L314
+QgsAuthManager.configAuthMethodKey: src/core/auth/qgsauthmanager.h#L320
+QgsAuthManager.configIdRegex: src/core/auth/qgsauthmanager.h#L381
+QgsAuthManager.configIdUnique: src/core/auth/qgsauthmanager.h#L372
+QgsAuthManager.configIds: src/core/auth/qgsauthmanager.h#L384
+QgsAuthManager.defaultCertTrustPolicy: src/core/auth/qgsauthmanager.h#L705
+QgsAuthManager.disabledMessage: src/core/auth/qgsauthmanager.h#L160
+QgsAuthManager.dumpIgnoredSslErrorsCache_: src/core/auth/qgsauthmanager.h#L608
+QgsAuthManager.ensureInitialized: src/core/auth/qgsauthmanager.h#L119
+QgsAuthManager.eraseAuthenticationDatabase: src/core/auth/qgsauthmanager.h#L453
+QgsAuthManager.existsAuthSetting: src/core/auth/qgsauthmanager.h#L513
+QgsAuthManager.existsCertAuthority: src/core/auth/qgsauthmanager.h#L636
+QgsAuthManager.existsCertIdentity: src/core/auth/qgsauthmanager.h#L564
+QgsAuthManager.existsSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L595
+QgsAuthManager.exportAuthenticationConfigsToXml: src/core/auth/qgsauthmanager.h#L424
+QgsAuthManager.hasConfigId: src/core/auth/qgsauthmanager.h#L378
+QgsAuthManager.importAuthenticationConfigsFromXml: src/core/auth/qgsauthmanager.h#L433
+QgsAuthManager.init: src/core/auth/qgsauthmanager.h#L98
+QgsAuthManager.initSslCaches: src/core/auth/qgsauthmanager.h#L522
+QgsAuthManager.isDisabled: src/core/auth/qgsauthmanager.h#L157
+QgsAuthManager.isFilesystemBasedDatabase: src/core/auth/qgsauthmanager.h#L172
+QgsAuthManager.loadAuthenticationConfig: src/core/auth/qgsauthmanager.h#L408
+QgsAuthManager.masterPasswordHashInDatabase: src/core/auth/qgsauthmanager.h#L228
+QgsAuthManager.masterPasswordIsSet: src/core/auth/qgsauthmanager.h#L225
+QgsAuthManager.masterPasswordSame: src/core/auth/qgsauthmanager.h#L240
+QgsAuthManager.masterPasswordVerified: src/core/auth/qgsauthmanager.h#L883
+QgsAuthManager.messageLog: src/core/auth/qgsauthmanager.h#L857
+QgsAuthManager.messageOut: src/core/auth/qgsauthmanager.h#L847
+QgsAuthManager.methodConfigTableName: src/core/auth/qgsauthmanager.h#L147
+QgsAuthManager.passwordHelperDisplayName: src/core/auth/qgsauthmanager.h#L813
+QgsAuthManager.passwordHelperEnabled: src/core/auth/qgsauthmanager.h#L762
+QgsAuthManager.passwordHelperFailure: src/core/auth/qgsauthmanager.h#L831
+QgsAuthManager.passwordHelperMessageLog: src/core/auth/qgsauthmanager.h#L877
+QgsAuthManager.passwordHelperMessageOut: src/core/auth/qgsauthmanager.h#L867
+QgsAuthManager.passwordHelperSuccess: src/core/auth/qgsauthmanager.h#L837
+QgsAuthManager.passwordHelperSync: src/core/auth/qgsauthmanager.h#L786
+QgsAuthManager.rebuildCaCertsCache: src/core/auth/qgsauthmanager.h#L676
+QgsAuthManager.rebuildCertTrustCache: src/core/auth/qgsauthmanager.h#L714
+QgsAuthManager.rebuildIgnoredSslErrorCache: src/core/auth/qgsauthmanager.h#L617
+QgsAuthManager.rebuildTrustedCaCertsCache: src/core/auth/qgsauthmanager.h#L730
+QgsAuthManager.registerCoreAuthMethods: src/core/auth/qgsauthmanager.h#L302
+QgsAuthManager.removeAllAuthenticationConfigs: src/core/auth/qgsauthmanager.h#L439
+QgsAuthManager.removeAuthSetting: src/core/auth/qgsauthmanager.h#L516
+QgsAuthManager.removeAuthenticationConfig: src/core/auth/qgsauthmanager.h#L415
+QgsAuthManager.removeCertAuthority: src/core/auth/qgsauthmanager.h#L639
+QgsAuthManager.removeCertIdentity: src/core/auth/qgsauthmanager.h#L567
+QgsAuthManager.removeCertTrustPolicies: src/core/auth/qgsauthmanager.h#L689
+QgsAuthManager.removeCertTrustPolicy: src/core/auth/qgsauthmanager.h#L692
+QgsAuthManager.removeSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L598
+QgsAuthManager.resetMasterPassword: src/core/auth/qgsauthmanager.h#L251
+QgsAuthManager.setDefaultCertTrustPolicy: src/core/auth/qgsauthmanager.h#L702
+QgsAuthManager.setMasterPassword: src/core/auth/qgsauthmanager.h#L207
+QgsAuthManager.setMasterPassword: src/core/auth/qgsauthmanager.h#L215
+QgsAuthManager.setPasswordHelperEnabled: src/core/auth/qgsauthmanager.h#L768
+QgsAuthManager.setScheduledAuthDatabaseEraseRequestEmitted: src/core/auth/qgsauthmanager.h#L296
+QgsAuthManager.setup: src/core/auth/qgsauthmanager.h#L110
+QgsAuthManager.sslCertCustomConfig: src/core/auth/qgsauthmanager.h#L579
+QgsAuthManager.sslCertCustomConfigByHost: src/core/auth/qgsauthmanager.h#L586
+QgsAuthManager.storeAuthSetting: src/core/auth/qgsauthmanager.h#L501
+QgsAuthManager.storeAuthenticationConfig: src/core/auth/qgsauthmanager.h#L392
+QgsAuthManager.storeCertAuthorities: src/core/auth/qgsauthmanager.h#L621
+QgsAuthManager.storeCertAuthority: src/core/auth/qgsauthmanager.h#L624
+QgsAuthManager.storeCertIdentity: src/core/auth/qgsauthmanager.h#L525
+QgsAuthManager.storeCertTrustPolicy: src/core/auth/qgsauthmanager.h#L679
+QgsAuthManager.storeSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L571
+QgsAuthManager.supportedAuthMethodExpansions: src/core/auth/qgsauthmanager.h#L363
+QgsAuthManager.trustedCaCertsPemText: src/core/auth/qgsauthmanager.h#L742
+QgsAuthManager.uniqueConfigId: src/core/auth/qgsauthmanager.h#L366
+QgsAuthManager.updateAuthenticationConfig: src/core/auth/qgsauthmanager.h#L399
+QgsAuthManager.updateConfigAuthMethods: src/core/auth/qgsauthmanager.h#L308
+QgsAuthManager.updateDataSourceUriItems: src/core/auth/qgsauthmanager.h#L485
+QgsAuthManager.updateIgnoredSslErrorsCache: src/core/auth/qgsauthmanager.h#L614
+QgsAuthManager.updateIgnoredSslErrorsCacheFromConfig: src/core/auth/qgsauthmanager.h#L611
+QgsAuthManager.updateNetworkProxy: src/core/auth/qgsauthmanager.h#L495
+QgsAuthManager.updateNetworkReply: src/core/auth/qgsauthmanager.h#L475
+QgsAuthManager.updateNetworkRequest: src/core/auth/qgsauthmanager.h#L465
+QgsAuthManager.verifyMasterPassword: src/core/auth/qgsauthmanager.h#L222
+QgsAuthManager: src/core/auth/qgsauthmanager.h#L71
QgsAuthMethod.QgsAuthMethod: src/core/auth/qgsauthmethod.h#L189
QgsAuthMethod.authMethodTag: src/core/auth/qgsauthmethod.h#L192
QgsAuthMethod.clearCachedConfig: src/core/auth/qgsauthmethod.h#L175
@@ -1844,7 +1846,7 @@ QgsBookmarkManagerModel.rowCount: src/core/qgsbookmarkmodel.h#L87
QgsBookmarkManagerModel.setData: src/core/qgsbookmarkmodel.h#L91
QgsBookmarkManagerModel: src/core/qgsbookmarkmodel.h#L41
QgsBookmarkManagerProxyModel: src/core/qgsbookmarkmodel.h#L119
-QgsBox3D.__repr__: src/core/geometry/qgsbox3d.h#L489
+QgsBox3D.__repr__: src/core/geometry/qgsbox3d.h#L498
QgsBox3D.area: src/core/geometry/qgsbox3d.h#L321
QgsBox3D.center: src/core/geometry/qgsbox3d.h#L314
QgsBox3D.combineWith: src/core/geometry/qgsbox3d.h#L382
@@ -1853,18 +1855,19 @@ QgsBox3D.contains: src/core/geometry/qgsbox3d.h#L356
QgsBox3D.contains: src/core/geometry/qgsbox3d.h#L364
QgsBox3D.contains: src/core/geometry/qgsbox3d.h#L375
QgsBox3D.depth: src/core/geometry/qgsbox3d.h#L307
-QgsBox3D.distanceTo: src/core/geometry/qgsbox3d.h#L402
-QgsBox3D.grow: src/core/geometry/qgsbox3d.h#L426
+QgsBox3D.distanceTo: src/core/geometry/qgsbox3d.h#L403
+QgsBox3D.distanceTo: src/core/geometry/qgsbox3d.h#L411
+QgsBox3D.grow: src/core/geometry/qgsbox3d.h#L435
QgsBox3D.height: src/core/geometry/qgsbox3d.h#L300
QgsBox3D.intersect: src/core/geometry/qgsbox3d.h#L331
QgsBox3D.intersects: src/core/geometry/qgsbox3d.h#L351
QgsBox3D.is2d: src/core/geometry/qgsbox3d.h#L337
QgsBox3D.is3D: src/core/geometry/qgsbox3d.h#L346
-QgsBox3D.isEmpty: src/core/geometry/qgsbox3d.h#L447
-QgsBox3D.isNull: src/core/geometry/qgsbox3d.h#L437
+QgsBox3D.isEmpty: src/core/geometry/qgsbox3d.h#L456
+QgsBox3D.isNull: src/core/geometry/qgsbox3d.h#L446
QgsBox3D.normalize: src/core/geometry/qgsbox3d.h#L286
-QgsBox3D.scale: src/core/geometry/qgsbox3d.h#L413
-QgsBox3D.scale: src/core/geometry/qgsbox3d.h#L420
+QgsBox3D.scale: src/core/geometry/qgsbox3d.h#L422
+QgsBox3D.scale: src/core/geometry/qgsbox3d.h#L429
QgsBox3D.set: src/core/geometry/qgsbox3d.h#L190
QgsBox3D.setNull: src/core/geometry/qgsbox3d.h#L281
QgsBox3D.setXMaximum: src/core/geometry/qgsbox3d.h#L204
@@ -1874,7 +1877,7 @@ QgsBox3D.setYMinimum: src/core/geometry/qgsbox3d.h#L225
QgsBox3D.setZMaximum: src/core/geometry/qgsbox3d.h#L260
QgsBox3D.setZMinimum: src/core/geometry/qgsbox3d.h#L253
QgsBox3D.toRectangle: src/core/geometry/qgsbox3d.h#L394
-QgsBox3D.toString: src/core/geometry/qgsbox3d.h#L456
+QgsBox3D.toString: src/core/geometry/qgsbox3d.h#L465
QgsBox3D.volume: src/core/geometry/qgsbox3d.h#L326
QgsBox3D.width: src/core/geometry/qgsbox3d.h#L293
QgsBox3D.xMaximum: src/core/geometry/qgsbox3d.h#L218
@@ -2619,91 +2622,91 @@ QgsCoordinateFormatter.formatX: src/core/qgscoordinateformatter.h#L75
QgsCoordinateFormatter.formatY: src/core/qgscoordinateformatter.h#L88
QgsCoordinateFormatter.separator: src/core/qgscoordinateformatter.h#L116
QgsCoordinateFormatter: src/core/qgscoordinateformatter.h#L39
-QgsCoordinateReferenceSystem.QVariant: src/core/proj/qgscoordinatereferencesystem.h#L280
-QgsCoordinateReferenceSystem.QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L256
-QgsCoordinateReferenceSystem.QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L271
-QgsCoordinateReferenceSystem.__repr__: src/core/proj/qgscoordinatereferencesystem.h#L1079
-QgsCoordinateReferenceSystem.authid: src/core/proj/qgscoordinatereferencesystem.h#L658
-QgsCoordinateReferenceSystem.axisOrdering: src/core/proj/qgscoordinatereferencesystem.h#L886
-QgsCoordinateReferenceSystem.bounds: src/core/proj/qgscoordinatereferencesystem.h#L937
-QgsCoordinateReferenceSystem.celestialBodyName: src/core/proj/qgscoordinatereferencesystem.h#L796
-QgsCoordinateReferenceSystem.clearRecentCoordinateReferenceSystems: src/core/proj/qgscoordinatereferencesystem.h#L1158
-QgsCoordinateReferenceSystem.coordinateEpoch: src/core/proj/qgscoordinatereferencesystem.h#L846
-QgsCoordinateReferenceSystem.createCompoundCrs: src/core/proj/qgscoordinatereferencesystem.h#L376
-QgsCoordinateReferenceSystem.createFromId: src/core/proj/qgscoordinatereferencesystem.h#L387
-QgsCoordinateReferenceSystem.createFromOgcWmsCrs: src/core/proj/qgscoordinatereferencesystem.h#L404
-QgsCoordinateReferenceSystem.createFromProj4: src/core/proj/qgscoordinatereferencesystem.h#L477
-QgsCoordinateReferenceSystem.createFromProj: src/core/proj/qgscoordinatereferencesystem.h#L511
-QgsCoordinateReferenceSystem.createFromSrid: src/core/proj/qgscoordinatereferencesystem.h#L415
-QgsCoordinateReferenceSystem.createFromSrsId: src/core/proj/qgscoordinatereferencesystem.h#L449
-QgsCoordinateReferenceSystem.createFromString: src/core/proj/qgscoordinatereferencesystem.h#L533
-QgsCoordinateReferenceSystem.createFromUserInput: src/core/proj/qgscoordinatereferencesystem.h#L555
-QgsCoordinateReferenceSystem.createFromWkt: src/core/proj/qgscoordinatereferencesystem.h#L432
-QgsCoordinateReferenceSystem.datumEnsemble: src/core/proj/qgscoordinatereferencesystem.h#L785
-QgsCoordinateReferenceSystem.description: src/core/proj/qgscoordinatereferencesystem.h#L667
-QgsCoordinateReferenceSystem.ellipsoidAcronym: src/core/proj/qgscoordinatereferencesystem.h#L698
-QgsCoordinateReferenceSystem.factors: src/core/proj/qgscoordinatereferencesystem.h#L859
-QgsCoordinateReferenceSystem.findMatchingProj: src/core/proj/qgscoordinatereferencesystem.h#L596
-QgsCoordinateReferenceSystem.fromEpsgId: src/core/proj/qgscoordinatereferencesystem.h#L313
-QgsCoordinateReferenceSystem.fromOgcWmsCrs: src/core/proj/qgscoordinatereferencesystem.h#L302
-QgsCoordinateReferenceSystem.fromProj4: src/core/proj/qgscoordinatereferencesystem.h#L325
-QgsCoordinateReferenceSystem.fromProj: src/core/proj/qgscoordinatereferencesystem.h#L334
-QgsCoordinateReferenceSystem.fromSrsId: src/core/proj/qgscoordinatereferencesystem.h#L359
-QgsCoordinateReferenceSystem.fromWkt: src/core/proj/qgscoordinatereferencesystem.h#L346
-QgsCoordinateReferenceSystem.geographicCrsAuthId: src/core/proj/qgscoordinatereferencesystem.h#L1076
-QgsCoordinateReferenceSystem.hasAxisInverted: src/core/proj/qgscoordinatereferencesystem.h#L876
-QgsCoordinateReferenceSystem.hasVerticalAxis: src/core/proj/qgscoordinatereferencesystem.h#L1073
-QgsCoordinateReferenceSystem.horizontalCrs: src/core/proj/qgscoordinatereferencesystem.h#L1051
-QgsCoordinateReferenceSystem.invalidateCache: src/core/proj/qgscoordinatereferencesystem.h#L1180
-QgsCoordinateReferenceSystem.isDeprecated: src/core/proj/qgscoordinatereferencesystem.h#L753
-QgsCoordinateReferenceSystem.isDynamic: src/core/proj/qgscoordinatereferencesystem.h#L769
-QgsCoordinateReferenceSystem.isGeographic: src/core/proj/qgscoordinatereferencesystem.h#L759
-QgsCoordinateReferenceSystem.isValid: src/core/proj/qgscoordinatereferencesystem.h#L570
-QgsCoordinateReferenceSystem.mapUnits: src/core/proj/qgscoordinatereferencesystem.h#L928
-QgsCoordinateReferenceSystem.nativeFormat: src/core/proj/qgscoordinatereferencesystem.h#L1028
-QgsCoordinateReferenceSystem.operation: src/core/proj/qgscoordinatereferencesystem.h#L867
-QgsCoordinateReferenceSystem.postgisSrid: src/core/proj/qgscoordinatereferencesystem.h#L644
-QgsCoordinateReferenceSystem.projectionAcronym: src/core/proj/qgscoordinatereferencesystem.h#L690
-QgsCoordinateReferenceSystem.pushRecentCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L1144
-QgsCoordinateReferenceSystem.readXml: src/core/proj/qgscoordinatereferencesystem.h#L607
-QgsCoordinateReferenceSystem.recentProjections: src/core/proj/qgscoordinatereferencesystem.h#L1130
-QgsCoordinateReferenceSystem.removeRecentCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L1151
-QgsCoordinateReferenceSystem.saveAsUserCrs: src/core/proj/qgscoordinatereferencesystem.h#L1006
-QgsCoordinateReferenceSystem.setCoordinateEpoch: src/core/proj/qgscoordinatereferencesystem.h#L821
-QgsCoordinateReferenceSystem.setNativeFormat: src/core/proj/qgscoordinatereferencesystem.h#L1017
-QgsCoordinateReferenceSystem.setValidationHint: src/core/proj/qgscoordinatereferencesystem.h#L978
-QgsCoordinateReferenceSystem.setupESRIWktFix: src/core/proj/qgscoordinatereferencesystem.h#L567
-QgsCoordinateReferenceSystem.srsid: src/core/proj/qgscoordinatereferencesystem.h#L636
-QgsCoordinateReferenceSystem.syncDatabase: src/core/proj/qgscoordinatereferencesystem.h#L991
-QgsCoordinateReferenceSystem.toGeographicCrs: src/core/proj/qgscoordinatereferencesystem.h#L1039
-QgsCoordinateReferenceSystem.toOgcUri: src/core/proj/qgscoordinatereferencesystem.h#L945
-QgsCoordinateReferenceSystem.toOgcUrn: src/core/proj/qgscoordinatereferencesystem.h#L953
-QgsCoordinateReferenceSystem.toProj4: src/core/proj/qgscoordinatereferencesystem.h#L725
-QgsCoordinateReferenceSystem.toProj: src/core/proj/qgscoordinatereferencesystem.h#L739
-QgsCoordinateReferenceSystem.toWkt: src/core/proj/qgscoordinatereferencesystem.h#L711
-QgsCoordinateReferenceSystem.type: src/core/proj/qgscoordinatereferencesystem.h#L746
-QgsCoordinateReferenceSystem.updateDefinition: src/core/proj/qgscoordinatereferencesystem.h#L973
-QgsCoordinateReferenceSystem.userFriendlyIdentifier: src/core/proj/qgscoordinatereferencesystem.h#L682
-QgsCoordinateReferenceSystem.validate: src/core/proj/qgscoordinatereferencesystem.h#L584
-QgsCoordinateReferenceSystem.validationHint: src/core/proj/qgscoordinatereferencesystem.h#L983
-QgsCoordinateReferenceSystem.verticalCrs: src/core/proj/qgscoordinatereferencesystem.h#L1065
-QgsCoordinateReferenceSystem.writeXml: src/core/proj/qgscoordinatereferencesystem.h#L615
-QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L211
+QgsCoordinateReferenceSystem.QVariant: src/core/proj/qgscoordinatereferencesystem.h#L275
+QgsCoordinateReferenceSystem.QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L251
+QgsCoordinateReferenceSystem.QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L266
+QgsCoordinateReferenceSystem.__repr__: src/core/proj/qgscoordinatereferencesystem.h#L1066
+QgsCoordinateReferenceSystem.authid: src/core/proj/qgscoordinatereferencesystem.h#L653
+QgsCoordinateReferenceSystem.axisOrdering: src/core/proj/qgscoordinatereferencesystem.h#L873
+QgsCoordinateReferenceSystem.bounds: src/core/proj/qgscoordinatereferencesystem.h#L924
+QgsCoordinateReferenceSystem.celestialBodyName: src/core/proj/qgscoordinatereferencesystem.h#L783
+QgsCoordinateReferenceSystem.clearRecentCoordinateReferenceSystems: src/core/proj/qgscoordinatereferencesystem.h#L1145
+QgsCoordinateReferenceSystem.coordinateEpoch: src/core/proj/qgscoordinatereferencesystem.h#L833
+QgsCoordinateReferenceSystem.createCompoundCrs: src/core/proj/qgscoordinatereferencesystem.h#L371
+QgsCoordinateReferenceSystem.createFromId: src/core/proj/qgscoordinatereferencesystem.h#L382
+QgsCoordinateReferenceSystem.createFromOgcWmsCrs: src/core/proj/qgscoordinatereferencesystem.h#L399
+QgsCoordinateReferenceSystem.createFromProj4: src/core/proj/qgscoordinatereferencesystem.h#L472
+QgsCoordinateReferenceSystem.createFromProj: src/core/proj/qgscoordinatereferencesystem.h#L506
+QgsCoordinateReferenceSystem.createFromSrid: src/core/proj/qgscoordinatereferencesystem.h#L410
+QgsCoordinateReferenceSystem.createFromSrsId: src/core/proj/qgscoordinatereferencesystem.h#L444
+QgsCoordinateReferenceSystem.createFromString: src/core/proj/qgscoordinatereferencesystem.h#L528
+QgsCoordinateReferenceSystem.createFromUserInput: src/core/proj/qgscoordinatereferencesystem.h#L550
+QgsCoordinateReferenceSystem.createFromWkt: src/core/proj/qgscoordinatereferencesystem.h#L427
+QgsCoordinateReferenceSystem.datumEnsemble: src/core/proj/qgscoordinatereferencesystem.h#L776
+QgsCoordinateReferenceSystem.description: src/core/proj/qgscoordinatereferencesystem.h#L662
+QgsCoordinateReferenceSystem.ellipsoidAcronym: src/core/proj/qgscoordinatereferencesystem.h#L693
+QgsCoordinateReferenceSystem.factors: src/core/proj/qgscoordinatereferencesystem.h#L846
+QgsCoordinateReferenceSystem.findMatchingProj: src/core/proj/qgscoordinatereferencesystem.h#L591
+QgsCoordinateReferenceSystem.fromEpsgId: src/core/proj/qgscoordinatereferencesystem.h#L308
+QgsCoordinateReferenceSystem.fromOgcWmsCrs: src/core/proj/qgscoordinatereferencesystem.h#L297
+QgsCoordinateReferenceSystem.fromProj4: src/core/proj/qgscoordinatereferencesystem.h#L320
+QgsCoordinateReferenceSystem.fromProj: src/core/proj/qgscoordinatereferencesystem.h#L329
+QgsCoordinateReferenceSystem.fromSrsId: src/core/proj/qgscoordinatereferencesystem.h#L354
+QgsCoordinateReferenceSystem.fromWkt: src/core/proj/qgscoordinatereferencesystem.h#L341
+QgsCoordinateReferenceSystem.geographicCrsAuthId: src/core/proj/qgscoordinatereferencesystem.h#L1063
+QgsCoordinateReferenceSystem.hasAxisInverted: src/core/proj/qgscoordinatereferencesystem.h#L863
+QgsCoordinateReferenceSystem.hasVerticalAxis: src/core/proj/qgscoordinatereferencesystem.h#L1060
+QgsCoordinateReferenceSystem.horizontalCrs: src/core/proj/qgscoordinatereferencesystem.h#L1038
+QgsCoordinateReferenceSystem.invalidateCache: src/core/proj/qgscoordinatereferencesystem.h#L1167
+QgsCoordinateReferenceSystem.isDeprecated: src/core/proj/qgscoordinatereferencesystem.h#L748
+QgsCoordinateReferenceSystem.isDynamic: src/core/proj/qgscoordinatereferencesystem.h#L764
+QgsCoordinateReferenceSystem.isGeographic: src/core/proj/qgscoordinatereferencesystem.h#L754
+QgsCoordinateReferenceSystem.isValid: src/core/proj/qgscoordinatereferencesystem.h#L565
+QgsCoordinateReferenceSystem.mapUnits: src/core/proj/qgscoordinatereferencesystem.h#L915
+QgsCoordinateReferenceSystem.nativeFormat: src/core/proj/qgscoordinatereferencesystem.h#L1015
+QgsCoordinateReferenceSystem.operation: src/core/proj/qgscoordinatereferencesystem.h#L854
+QgsCoordinateReferenceSystem.postgisSrid: src/core/proj/qgscoordinatereferencesystem.h#L639
+QgsCoordinateReferenceSystem.projectionAcronym: src/core/proj/qgscoordinatereferencesystem.h#L685
+QgsCoordinateReferenceSystem.pushRecentCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L1131
+QgsCoordinateReferenceSystem.readXml: src/core/proj/qgscoordinatereferencesystem.h#L602
+QgsCoordinateReferenceSystem.recentProjections: src/core/proj/qgscoordinatereferencesystem.h#L1117
+QgsCoordinateReferenceSystem.removeRecentCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L1138
+QgsCoordinateReferenceSystem.saveAsUserCrs: src/core/proj/qgscoordinatereferencesystem.h#L993
+QgsCoordinateReferenceSystem.setCoordinateEpoch: src/core/proj/qgscoordinatereferencesystem.h#L808
+QgsCoordinateReferenceSystem.setNativeFormat: src/core/proj/qgscoordinatereferencesystem.h#L1004
+QgsCoordinateReferenceSystem.setValidationHint: src/core/proj/qgscoordinatereferencesystem.h#L965
+QgsCoordinateReferenceSystem.setupESRIWktFix: src/core/proj/qgscoordinatereferencesystem.h#L562
+QgsCoordinateReferenceSystem.srsid: src/core/proj/qgscoordinatereferencesystem.h#L631
+QgsCoordinateReferenceSystem.syncDatabase: src/core/proj/qgscoordinatereferencesystem.h#L978
+QgsCoordinateReferenceSystem.toGeographicCrs: src/core/proj/qgscoordinatereferencesystem.h#L1026
+QgsCoordinateReferenceSystem.toOgcUri: src/core/proj/qgscoordinatereferencesystem.h#L932
+QgsCoordinateReferenceSystem.toOgcUrn: src/core/proj/qgscoordinatereferencesystem.h#L940
+QgsCoordinateReferenceSystem.toProj4: src/core/proj/qgscoordinatereferencesystem.h#L720
+QgsCoordinateReferenceSystem.toProj: src/core/proj/qgscoordinatereferencesystem.h#L734
+QgsCoordinateReferenceSystem.toWkt: src/core/proj/qgscoordinatereferencesystem.h#L706
+QgsCoordinateReferenceSystem.type: src/core/proj/qgscoordinatereferencesystem.h#L741
+QgsCoordinateReferenceSystem.updateDefinition: src/core/proj/qgscoordinatereferencesystem.h#L960
+QgsCoordinateReferenceSystem.userFriendlyIdentifier: src/core/proj/qgscoordinatereferencesystem.h#L677
+QgsCoordinateReferenceSystem.validate: src/core/proj/qgscoordinatereferencesystem.h#L579
+QgsCoordinateReferenceSystem.validationHint: src/core/proj/qgscoordinatereferencesystem.h#L970
+QgsCoordinateReferenceSystem.verticalCrs: src/core/proj/qgscoordinatereferencesystem.h#L1052
+QgsCoordinateReferenceSystem.writeXml: src/core/proj/qgscoordinatereferencesystem.h#L610
+QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L206
QgsCoordinateReferenceSystemRegistry.QgsCoordinateReferenceSystemRegistry: src/core/proj/qgscoordinatereferencesystemregistry.h#L72
QgsCoordinateReferenceSystemRegistry.UserCrsDetails: src/core/proj/qgscoordinatereferencesystemregistry.h#L81
QgsCoordinateReferenceSystemRegistry.addUserCrs: src/core/proj/qgscoordinatereferencesystemregistry.h#L124
-QgsCoordinateReferenceSystemRegistry.clearRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L222
-QgsCoordinateReferenceSystemRegistry.crsDefinitionsChanged: src/core/proj/qgscoordinatereferencesystemregistry.h#L262
-QgsCoordinateReferenceSystemRegistry.pushRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L204
-QgsCoordinateReferenceSystemRegistry.recentCrsCleared: src/core/proj/qgscoordinatereferencesystemregistry.h#L289
-QgsCoordinateReferenceSystemRegistry.recentCrsPushed: src/core/proj/qgscoordinatereferencesystemregistry.h#L271
-QgsCoordinateReferenceSystemRegistry.recentCrsRemoved: src/core/proj/qgscoordinatereferencesystemregistry.h#L280
-QgsCoordinateReferenceSystemRegistry.removeRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L213
+QgsCoordinateReferenceSystemRegistry.clearRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L218
+QgsCoordinateReferenceSystemRegistry.crsDefinitionsChanged: src/core/proj/qgscoordinatereferencesystemregistry.h#L258
+QgsCoordinateReferenceSystemRegistry.pushRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L200
+QgsCoordinateReferenceSystemRegistry.recentCrsCleared: src/core/proj/qgscoordinatereferencesystemregistry.h#L285
+QgsCoordinateReferenceSystemRegistry.recentCrsPushed: src/core/proj/qgscoordinatereferencesystemregistry.h#L267
+QgsCoordinateReferenceSystemRegistry.recentCrsRemoved: src/core/proj/qgscoordinatereferencesystemregistry.h#L276
+QgsCoordinateReferenceSystemRegistry.removeRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L209
QgsCoordinateReferenceSystemRegistry.removeUserCrs: src/core/proj/qgscoordinatereferencesystemregistry.h#L151
QgsCoordinateReferenceSystemRegistry.updateUserCrs: src/core/proj/qgscoordinatereferencesystemregistry.h#L142
-QgsCoordinateReferenceSystemRegistry.userCrsAdded: src/core/proj/qgscoordinatereferencesystemregistry.h#L248
-QgsCoordinateReferenceSystemRegistry.userCrsChanged: src/core/proj/qgscoordinatereferencesystemregistry.h#L238
-QgsCoordinateReferenceSystemRegistry.userCrsRemoved: src/core/proj/qgscoordinatereferencesystemregistry.h#L256
+QgsCoordinateReferenceSystemRegistry.userCrsAdded: src/core/proj/qgscoordinatereferencesystemregistry.h#L244
+QgsCoordinateReferenceSystemRegistry.userCrsChanged: src/core/proj/qgscoordinatereferencesystemregistry.h#L234
+QgsCoordinateReferenceSystemRegistry.userCrsRemoved: src/core/proj/qgscoordinatereferencesystemregistry.h#L252
QgsCoordinateReferenceSystemRegistry: src/core/proj/qgscoordinatereferencesystemregistry.h#L64
QgsCoordinateReferenceSystemUtils.axisDirectionToAbbreviatedString: src/core/proj/qgscoordinatereferencesystemutils.h#L47
QgsCoordinateReferenceSystemUtils.crsTypeToString: src/core/proj/qgscoordinatereferencesystemutils.h#L53
@@ -2713,41 +2716,41 @@ QgsCoordinateReferenceSystemUtils: src/core/proj/qgscoordinatereferencesystemuti
QgsCoordinateTransform.QgsCoordinateTransform: src/core/proj/qgscoordinatetransform.h#L121
QgsCoordinateTransform.QgsCoordinateTransform: src/core/proj/qgscoordinatetransform.h#L133
QgsCoordinateTransform.QgsCoordinateTransform: src/core/proj/qgscoordinatetransform.h#L91
-QgsCoordinateTransform.__repr__: src/core/proj/qgscoordinatetransform.h#L616
-QgsCoordinateTransform.allowFallbackTransforms: src/core/proj/qgscoordinatetransform.h#L460
+QgsCoordinateTransform.__repr__: src/core/proj/qgscoordinatetransform.h#L617
+QgsCoordinateTransform.allowFallbackTransforms: src/core/proj/qgscoordinatetransform.h#L461
QgsCoordinateTransform.context: src/core/proj/qgscoordinatetransform.h#L195
-QgsCoordinateTransform.coordinateOperation: src/core/proj/qgscoordinatetransform.h#L401
+QgsCoordinateTransform.coordinateOperation: src/core/proj/qgscoordinatetransform.h#L402
QgsCoordinateTransform.destinationCrs: src/core/proj/qgscoordinatetransform.h#L211
-QgsCoordinateTransform.destinationDatumTransformId: src/core/proj/qgscoordinatetransform.h#L564
-QgsCoordinateTransform.disableFallbackOperationHandler: src/core/proj/qgscoordinatetransform.h#L509
-QgsCoordinateTransform.fallbackOperationOccurred: src/core/proj/qgscoordinatetransform.h#L519
-QgsCoordinateTransform.hasVerticalComponent: src/core/proj/qgscoordinatetransform.h#L383
-QgsCoordinateTransform.instantiatedCoordinateOperationDetails: src/core/proj/qgscoordinatetransform.h#L416
-QgsCoordinateTransform.invalidateCache: src/core/proj/qgscoordinatetransform.h#L601
-QgsCoordinateTransform.isShortCircuited: src/core/proj/qgscoordinatetransform.h#L375
+QgsCoordinateTransform.destinationDatumTransformId: src/core/proj/qgscoordinatetransform.h#L565
+QgsCoordinateTransform.disableFallbackOperationHandler: src/core/proj/qgscoordinatetransform.h#L510
+QgsCoordinateTransform.fallbackOperationOccurred: src/core/proj/qgscoordinatetransform.h#L520
+QgsCoordinateTransform.hasVerticalComponent: src/core/proj/qgscoordinatetransform.h#L384
+QgsCoordinateTransform.instantiatedCoordinateOperationDetails: src/core/proj/qgscoordinatetransform.h#L417
+QgsCoordinateTransform.invalidateCache: src/core/proj/qgscoordinatetransform.h#L602
+QgsCoordinateTransform.isShortCircuited: src/core/proj/qgscoordinatetransform.h#L376
QgsCoordinateTransform.isTransformationPossible: src/core/proj/qgscoordinatetransform.h#L158
QgsCoordinateTransform.isValid: src/core/proj/qgscoordinatetransform.h#L164
-QgsCoordinateTransform.scaleFactor: src/core/proj/qgscoordinatetransform.h#L613
-QgsCoordinateTransform.setAllowFallbackTransforms: src/core/proj/qgscoordinatetransform.h#L447
-QgsCoordinateTransform.setBallparkTransformsAreAppropriate: src/core/proj/qgscoordinatetransform.h#L493
+QgsCoordinateTransform.scaleFactor: src/core/proj/qgscoordinatetransform.h#L614
+QgsCoordinateTransform.setAllowFallbackTransforms: src/core/proj/qgscoordinatetransform.h#L448
+QgsCoordinateTransform.setBallparkTransformsAreAppropriate: src/core/proj/qgscoordinatetransform.h#L494
QgsCoordinateTransform.setContext: src/core/proj/qgscoordinatetransform.h#L187
-QgsCoordinateTransform.setCoordinateOperation: src/core/proj/qgscoordinatetransform.h#L431
+QgsCoordinateTransform.setCoordinateOperation: src/core/proj/qgscoordinatetransform.h#L432
QgsCoordinateTransform.setDestinationCrs: src/core/proj/qgscoordinatetransform.h#L180
-QgsCoordinateTransform.setDestinationDatumTransformId: src/core/proj/qgscoordinatetransform.h#L579
+QgsCoordinateTransform.setDestinationDatumTransformId: src/core/proj/qgscoordinatetransform.h#L580
QgsCoordinateTransform.setSourceCrs: src/core/proj/qgscoordinatetransform.h#L172
-QgsCoordinateTransform.setSourceDatumTransformId: src/core/proj/qgscoordinatetransform.h#L549
+QgsCoordinateTransform.setSourceDatumTransformId: src/core/proj/qgscoordinatetransform.h#L550
QgsCoordinateTransform.sourceCrs: src/core/proj/qgscoordinatetransform.h#L203
-QgsCoordinateTransform.sourceDatumTransformId: src/core/proj/qgscoordinatetransform.h#L534
+QgsCoordinateTransform.sourceDatumTransformId: src/core/proj/qgscoordinatetransform.h#L535
QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L222
QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L234
QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L246
-QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L357
-QgsCoordinateTransform.transformBoundingBox: src/core/proj/qgscoordinatetransform.h#L262
-QgsCoordinateTransform.transformCoords: src/core/proj/qgscoordinatetransform.h#L370
-QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L276
-QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L321
-QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L337
-QgsCoordinateTransform.transformPolygon: src/core/proj/qgscoordinatetransform.h#L346
+QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L358
+QgsCoordinateTransform.transformBoundingBox: src/core/proj/qgscoordinatetransform.h#L263
+QgsCoordinateTransform.transformCoords: src/core/proj/qgscoordinatetransform.h#L371
+QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L277
+QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L322
+QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L338
+QgsCoordinateTransform.transformPolygon: src/core/proj/qgscoordinatetransform.h#L347
QgsCoordinateTransform: src/core/proj/qgscoordinatetransform.h#L57
QgsCoordinateTransformContext.addCoordinateOperation: src/core/proj/qgscoordinatetransformcontext.h#L159
QgsCoordinateTransformContext.addSourceDestinationDatumTransform: src/core/proj/qgscoordinatetransformcontext.h#L126
@@ -3518,6 +3521,7 @@ QgsDistanceArea.sourceCrs: src/core/qgsdistancearea.h#L80
QgsDistanceArea.splitGeometryAtAntimeridian: src/core/qgsdistancearea.h#L359
QgsDistanceArea.willUseEllipsoid: src/core/qgsdistancearea.h#L67
QgsDistanceArea: src/core/qgsdistancearea.h#L52
+QgsDoubleBoxScaleBarRenderer.applyDefaultSettings: src/core/scalebar/qgsdoubleboxscalebarrenderer.h#L45
QgsDoubleBoxScaleBarRenderer.clone: src/core/scalebar/qgsdoubleboxscalebarrenderer.h#L39
QgsDoubleBoxScaleBarRenderer.draw: src/core/scalebar/qgsdoubleboxscalebarrenderer.h#L41
QgsDoubleBoxScaleBarRenderer.flags: src/core/scalebar/qgsdoubleboxscalebarrenderer.h#L37
@@ -5816,14 +5820,14 @@ QgsHtmlAnnotation: src/core/annotations/qgshtmlannotation.h#L34
QgsHtmlUtils.buildBulletList: src/core/qgshtmlutils.h#L38
QgsHtmlUtils: src/core/qgshtmlutils.h#L30
QgsHttpHeaders.headers: src/core/network/qgshttpheaders.h#L93
-QgsHttpHeaders.insert: src/core/network/qgshttpheaders.h#L190
-QgsHttpHeaders.sanitizeKey: src/core/network/qgshttpheaders.h#L175
-QgsHttpHeaders.setFromDomElement: src/core/network/qgshttpheaders.h#L169
-QgsHttpHeaders.setFromMap: src/core/network/qgshttpheaders.h#L160
-QgsHttpHeaders.setFromSettings: src/core/network/qgshttpheaders.h#L145
-QgsHttpHeaders.setFromUrlQuery: src/core/network/qgshttpheaders.h#L151
-QgsHttpHeaders.toSpacedString: src/core/network/qgshttpheaders.h#L198
-QgsHttpHeaders.updateDomElement: src/core/network/qgshttpheaders.h#L135
+QgsHttpHeaders.insert: src/core/network/qgshttpheaders.h#L203
+QgsHttpHeaders.sanitizeKey: src/core/network/qgshttpheaders.h#L188
+QgsHttpHeaders.setFromDomElement: src/core/network/qgshttpheaders.h#L182
+QgsHttpHeaders.setFromMap: src/core/network/qgshttpheaders.h#L173
+QgsHttpHeaders.setFromSettings: src/core/network/qgshttpheaders.h#L158
+QgsHttpHeaders.setFromUrlQuery: src/core/network/qgshttpheaders.h#L164
+QgsHttpHeaders.toSpacedString: src/core/network/qgshttpheaders.h#L211
+QgsHttpHeaders.updateDomElement: src/core/network/qgshttpheaders.h#L137
QgsHttpHeaders.updateMap: src/core/network/qgshttpheaders.h#L126
QgsHttpHeaders.updateNetworkRequest: src/core/network/qgshttpheaders.h#L111
QgsHttpHeaders.updateSettings: src/core/network/qgshttpheaders.h#L105
@@ -6605,22 +6609,23 @@ QgsLayerTreeNode.willRemoveChildren: src/core/layertree/qgslayertreenode.h#L247
QgsLayerTreeNode.writeCommonXml: src/core/layertree/qgslayertreenode.h#L273
QgsLayerTreeNode.writeXml: src/core/layertree/qgslayertreenode.h#L156
QgsLayerTreeNode: src/core/layertree/qgslayertreenode.h#L76
-QgsLayerTreeRegistryBridge.QgsLayerTreeRegistryBridge: src/core/layertree/qgslayertreeregistrybridge.h#L65
-QgsLayerTreeRegistryBridge.addedLayersToLayerTree: src/core/layertree/qgslayertreeregistrybridge.h#L104
-QgsLayerTreeRegistryBridge.groupRemovedChildren: src/core/layertree/qgslayertreeregistrybridge.h#L111
-QgsLayerTreeRegistryBridge.groupWillRemoveChildren: src/core/layertree/qgslayertreeregistrybridge.h#L110
-QgsLayerTreeRegistryBridge.isEnabled: src/core/layertree/qgslayertreeregistrybridge.h#L68
-QgsLayerTreeRegistryBridge.layerInsertionMethod: src/core/layertree/qgslayertreeregistrybridge.h#L97
-QgsLayerTreeRegistryBridge.layersAdded: src/core/layertree/qgslayertreeregistrybridge.h#L107
-QgsLayerTreeRegistryBridge.layersWillBeRemoved: src/core/layertree/qgslayertreeregistrybridge.h#L108
-QgsLayerTreeRegistryBridge.newLayersVisible: src/core/layertree/qgslayertreeregistrybridge.h#L71
-QgsLayerTreeRegistryBridge.removeLayersFromRegistry: src/core/layertree/qgslayertreeregistrybridge.h#L113
-QgsLayerTreeRegistryBridge.setEnabled: src/core/layertree/qgslayertreeregistrybridge.h#L67
-QgsLayerTreeRegistryBridge.setLayerInsertionMethod: src/core/layertree/qgslayertreeregistrybridge.h#L91
-QgsLayerTreeRegistryBridge.setLayerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L78
-QgsLayerTreeRegistryBridge.setLayerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L85
-QgsLayerTreeRegistryBridge.setNewLayersVisible: src/core/layertree/qgslayertreeregistrybridge.h#L70
-QgsLayerTreeRegistryBridge: src/core/layertree/qgslayertreeregistrybridge.h#L44
+QgsLayerTreeRegistryBridge.QgsLayerTreeRegistryBridge: src/core/layertree/qgslayertreeregistrybridge.h#L66
+QgsLayerTreeRegistryBridge.addedLayersToLayerTree: src/core/layertree/qgslayertreeregistrybridge.h#L111
+QgsLayerTreeRegistryBridge.groupRemovedChildren: src/core/layertree/qgslayertreeregistrybridge.h#L118
+QgsLayerTreeRegistryBridge.groupWillRemoveChildren: src/core/layertree/qgslayertreeregistrybridge.h#L117
+QgsLayerTreeRegistryBridge.isEnabled: src/core/layertree/qgslayertreeregistrybridge.h#L69
+QgsLayerTreeRegistryBridge.layerInsertionMethod: src/core/layertree/qgslayertreeregistrybridge.h#L104
+QgsLayerTreeRegistryBridge.layerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L92
+QgsLayerTreeRegistryBridge.layersAdded: src/core/layertree/qgslayertreeregistrybridge.h#L114
+QgsLayerTreeRegistryBridge.layersWillBeRemoved: src/core/layertree/qgslayertreeregistrybridge.h#L115
+QgsLayerTreeRegistryBridge.newLayersVisible: src/core/layertree/qgslayertreeregistrybridge.h#L72
+QgsLayerTreeRegistryBridge.removeLayersFromRegistry: src/core/layertree/qgslayertreeregistrybridge.h#L120
+QgsLayerTreeRegistryBridge.setEnabled: src/core/layertree/qgslayertreeregistrybridge.h#L68
+QgsLayerTreeRegistryBridge.setLayerInsertionMethod: src/core/layertree/qgslayertreeregistrybridge.h#L98
+QgsLayerTreeRegistryBridge.setLayerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L79
+QgsLayerTreeRegistryBridge.setLayerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L86
+QgsLayerTreeRegistryBridge.setNewLayersVisible: src/core/layertree/qgslayertreeregistrybridge.h#L71
+QgsLayerTreeRegistryBridge: src/core/layertree/qgslayertreeregistrybridge.h#L45
QgsLayerTreeUtils.checkStateFromXml: src/core/layertree/qgslayertreeutils.h#L53
QgsLayerTreeUtils.checkStateToXml: src/core/layertree/qgslayertreeutils.h#L51
QgsLayerTreeUtils.countMapLayerInTree: src/core/layertree/qgslayertreeutils.h#L121
@@ -6758,28 +6763,28 @@ QgsLayoutEffect.compositionMode: src/core/layout/qgslayouteffect.h#L60
QgsLayoutEffect.draw: src/core/layout/qgslayouteffect.h#L64
QgsLayoutEffect.setCompositionMode: src/core/layout/qgslayouteffect.h#L51
QgsLayoutEffect: src/core/layout/qgslayouteffect.h#L36
-QgsLayoutExporter.computeWorldFileParameters: src/core/layout/qgslayoutexporter.h#L676
-QgsLayoutExporter.computeWorldFileParameters: src/core/layout/qgslayoutexporter.h#L683
-QgsLayoutExporter.containsAdvancedEffects: src/core/layout/qgslayoutexporter.h#L702
-QgsLayoutExporter.errorFile: src/core/layout/qgslayoutexporter.h#L620
-QgsLayoutExporter.errorMessage: src/core/layout/qgslayoutexporter.h#L627
+QgsLayoutExporter.computeWorldFileParameters: src/core/layout/qgslayoutexporter.h#L678
+QgsLayoutExporter.computeWorldFileParameters: src/core/layout/qgslayoutexporter.h#L685
+QgsLayoutExporter.containsAdvancedEffects: src/core/layout/qgslayoutexporter.h#L704
+QgsLayoutExporter.errorFile: src/core/layout/qgslayoutexporter.h#L622
+QgsLayoutExporter.errorMessage: src/core/layout/qgslayoutexporter.h#L629
QgsLayoutExporter.exportToImage: src/core/layout/qgslayoutexporter.h#L258
QgsLayoutExporter.exportToImage: src/core/layout/qgslayoutexporter.h#L271
-QgsLayoutExporter.exportToPdf: src/core/layout/qgslayoutexporter.h#L418
-QgsLayoutExporter.exportToPdf: src/core/layout/qgslayoutexporter.h#L431
-QgsLayoutExporter.exportToPdfs: src/core/layout/qgslayoutexporter.h#L447
-QgsLayoutExporter.exportToSvg: src/core/layout/qgslayoutexporter.h#L599
-QgsLayoutExporter.exportToSvg: src/core/layout/qgslayoutexporter.h#L611
-QgsLayoutExporter.generateFileName: src/core/layout/qgslayoutexporter.h#L711
-QgsLayoutExporter.georeferenceOutput: src/core/layout/qgslayoutexporter.h#L667
+QgsLayoutExporter.exportToPdf: src/core/layout/qgslayoutexporter.h#L420
+QgsLayoutExporter.exportToPdf: src/core/layout/qgslayoutexporter.h#L433
+QgsLayoutExporter.exportToPdfs: src/core/layout/qgslayoutexporter.h#L449
+QgsLayoutExporter.exportToSvg: src/core/layout/qgslayoutexporter.h#L601
+QgsLayoutExporter.exportToSvg: src/core/layout/qgslayoutexporter.h#L613
+QgsLayoutExporter.generateFileName: src/core/layout/qgslayoutexporter.h#L713
+QgsLayoutExporter.georeferenceOutput: src/core/layout/qgslayoutexporter.h#L669
QgsLayoutExporter.layout: src/core/layout/qgslayoutexporter.h#L94
-QgsLayoutExporter.print: src/core/layout/qgslayoutexporter.h#L492
-QgsLayoutExporter.print: src/core/layout/qgslayoutexporter.h#L501
+QgsLayoutExporter.print: src/core/layout/qgslayoutexporter.h#L494
+QgsLayoutExporter.print: src/core/layout/qgslayoutexporter.h#L503
QgsLayoutExporter.renderPage: src/core/layout/qgslayoutexporter.h#L104
QgsLayoutExporter.renderPageToImage: src/core/layout/qgslayoutexporter.h#L124
QgsLayoutExporter.renderRegion: src/core/layout/qgslayoutexporter.h#L133
QgsLayoutExporter.renderRegionToImage: src/core/layout/qgslayoutexporter.h#L151
-QgsLayoutExporter.requiresRasterization: src/core/layout/qgslayoutexporter.h#L693
+QgsLayoutExporter.requiresRasterization: src/core/layout/qgslayoutexporter.h#L695
QgsLayoutExporter: src/core/layout/qgslayoutexporter.h#L51
QgsLayoutFrame.cleanup: src/core/layout/qgslayoutframe.h#L54
QgsLayoutFrame.create: src/core/layout/qgslayoutframe.h#L46
@@ -8743,15 +8748,15 @@ QgsLocatorProxyModel: src/core/locator/qgslocatormodel.h#L212
QgsLocatorResult.setUserData: src/core/locator/qgslocatorfilter.h#L73
QgsLocatorResult.userData: src/core/locator/qgslocatorfilter.h#L66
QgsLocatorResult: src/core/locator/qgslocatorfilter.h#L37
-QgsLogger.critical: src/core/qgslogger.h#L99
-QgsLogger.debug: src/core/qgslogger.h#L72
-QgsLogger.debug: src/core/qgslogger.h#L75
-QgsLogger.debugLevel: src/core/qgslogger.h#L113
-QgsLogger.fatal: src/core/qgslogger.h#L102
-QgsLogger.logFile: src/core/qgslogger.h#L122
-QgsLogger.logMessageToFile: src/core/qgslogger.h#L116
-QgsLogger.warning: src/core/qgslogger.h#L96
-QgsLogger: src/core/qgslogger.h#L60
+QgsLogger.critical: src/core/qgslogger.h#L103
+QgsLogger.debug: src/core/qgslogger.h#L76
+QgsLogger.debug: src/core/qgslogger.h#L79
+QgsLogger.debugLevel: src/core/qgslogger.h#L117
+QgsLogger.fatal: src/core/qgslogger.h#L106
+QgsLogger.logFile: src/core/qgslogger.h#L126
+QgsLogger.logMessageToFile: src/core/qgslogger.h#L120
+QgsLogger.warning: src/core/qgslogger.h#L100
+QgsLogger: src/core/qgslogger.h#L64
QgsManhattanLineCallout.clone: src/core/callouts/qgscallout.h#L765
QgsManhattanLineCallout.create: src/core/callouts/qgscallout.h#L762
QgsManhattanLineCallout.createCalloutLine: src/core/callouts/qgscallout.h#L768
@@ -8862,218 +8867,218 @@ QgsMapInfoSymbolConverter.convertFillSymbol: src/core/symbology/qgsmapinfosymbol
QgsMapInfoSymbolConverter.convertLineSymbol: src/core/symbology/qgsmapinfosymbolconverter.h#L75
QgsMapInfoSymbolConverter.convertMarkerSymbol: src/core/symbology/qgsmapinfosymbolconverter.h#L91
QgsMapInfoSymbolConverter: src/core/symbology/qgsmapinfosymbolconverter.h#L66
-QgsMapLayer.__repr__: src/core/qgsmaplayer.h#L1893
+QgsMapLayer.__repr__: src/core/qgsmaplayer.h#L1896
QgsMapLayer.abstract: src/core/qgsmaplayer.h#L355
-QgsMapLayer.accept: src/core/qgsmaplayer.h#L1720
-QgsMapLayer.appendError: src/core/qgsmaplayer.h#L2257
+QgsMapLayer.accept: src/core/qgsmaplayer.h#L1723
+QgsMapLayer.appendError: src/core/qgsmaplayer.h#L2260
QgsMapLayer.attribution: src/core/qgsmaplayer.h#L411
QgsMapLayer.attributionUrl: src/core/qgsmaplayer.h#L425
-QgsMapLayer.autoRefreshInterval: src/core/qgsmaplayer.h#L1614
-QgsMapLayer.autoRefreshIntervalChanged: src/core/qgsmaplayer.h#L2058
-QgsMapLayer.autoRefreshMode: src/core/qgsmaplayer.h#L1606
-QgsMapLayer.beforeResolveReferences: src/core/qgsmaplayer.h#L1916
+QgsMapLayer.autoRefreshInterval: src/core/qgsmaplayer.h#L1617
+QgsMapLayer.autoRefreshIntervalChanged: src/core/qgsmaplayer.h#L2061
+QgsMapLayer.autoRefreshMode: src/core/qgsmaplayer.h#L1609
+QgsMapLayer.beforeResolveReferences: src/core/qgsmaplayer.h#L1919
QgsMapLayer.blendMode: src/core/qgsmaplayer.h#L515
-QgsMapLayer.blendModeChanged: src/core/qgsmaplayer.h#L1989
+QgsMapLayer.blendModeChanged: src/core/qgsmaplayer.h#L1992
QgsMapLayer.clone: src/core/qgsmaplayer.h#L213
-QgsMapLayer.clone: src/core/qgsmaplayer.h#L2165
-QgsMapLayer.configChanged: src/core/qgsmaplayer.h#L2040
+QgsMapLayer.clone: src/core/qgsmaplayer.h#L2168
+QgsMapLayer.configChanged: src/core/qgsmaplayer.h#L2043
QgsMapLayer.createMapRenderer: src/core/qgsmaplayer.h#L548
-QgsMapLayer.crs3D: src/core/qgsmaplayer.h#L1030
-QgsMapLayer.crs3DChanged: src/core/qgsmaplayer.h#L1955
-QgsMapLayer.crs: src/core/qgsmaplayer.h#L990
-QgsMapLayer.crsChanged: src/core/qgsmaplayer.h#L1944
-QgsMapLayer.customProperty: src/core/qgsmaplayer.h#L717
-QgsMapLayer.customPropertyChanged: src/core/qgsmaplayer.h#L2103
-QgsMapLayer.customPropertyKeys: src/core/qgsmaplayer.h#L704
-QgsMapLayer.dataChanged: src/core/qgsmaplayer.h#L1986
+QgsMapLayer.crs3D: src/core/qgsmaplayer.h#L1033
+QgsMapLayer.crs3DChanged: src/core/qgsmaplayer.h#L1958
+QgsMapLayer.crs: src/core/qgsmaplayer.h#L993
+QgsMapLayer.crsChanged: src/core/qgsmaplayer.h#L1947
+QgsMapLayer.customProperty: src/core/qgsmaplayer.h#L720
+QgsMapLayer.customPropertyChanged: src/core/qgsmaplayer.h#L2106
+QgsMapLayer.customPropertyKeys: src/core/qgsmaplayer.h#L707
+QgsMapLayer.dataChanged: src/core/qgsmaplayer.h#L1989
QgsMapLayer.dataProvider: src/core/qgsmaplayer.h#L301
-QgsMapLayer.dataSourceChanged: src/core/qgsmaplayer.h#L2082
+QgsMapLayer.dataSourceChanged: src/core/qgsmaplayer.h#L2085
QgsMapLayer.dataUrl: src/core/qgsmaplayer.h#L383
QgsMapLayer.dataUrlFormat: src/core/qgsmaplayer.h#L397
-QgsMapLayer.decodedSource: src/core/qgsmaplayer.h#L2216
-QgsMapLayer.deleteStyleFromDatabase: src/core/qgsmaplayer.h#L754
-QgsMapLayer.dependenciesChanged: src/core/qgsmaplayer.h#L2045
-QgsMapLayer.editingStarted: src/core/qgsmaplayer.h#L2109
-QgsMapLayer.editingStopped: src/core/qgsmaplayer.h#L2115
-QgsMapLayer.elevationProperties: src/core/qgsmaplayer.h#L1741
-QgsMapLayer.emitStyleChanged: src/core/qgsmaplayer.h#L1860
-QgsMapLayer.encodedSource: src/core/qgsmaplayer.h#L2202
-QgsMapLayer.error: src/core/qgsmaplayer.h#L977
-QgsMapLayer.exportNamedMetadata: src/core/qgsmaplayer.h#L1092
-QgsMapLayer.exportNamedStyle: src/core/qgsmaplayer.h#L1240
-QgsMapLayer.exportSldStyle: src/core/qgsmaplayer.h#L1251
-QgsMapLayer.exportSldStyleV2: src/core/qgsmaplayer.h#L1261
+QgsMapLayer.decodedSource: src/core/qgsmaplayer.h#L2219
+QgsMapLayer.deleteStyleFromDatabase: src/core/qgsmaplayer.h#L757
+QgsMapLayer.dependenciesChanged: src/core/qgsmaplayer.h#L2048
+QgsMapLayer.editingStarted: src/core/qgsmaplayer.h#L2112
+QgsMapLayer.editingStopped: src/core/qgsmaplayer.h#L2118
+QgsMapLayer.elevationProperties: src/core/qgsmaplayer.h#L1744
+QgsMapLayer.emitStyleChanged: src/core/qgsmaplayer.h#L1863
+QgsMapLayer.encodedSource: src/core/qgsmaplayer.h#L2205
+QgsMapLayer.error: src/core/qgsmaplayer.h#L980
+QgsMapLayer.exportNamedMetadata: src/core/qgsmaplayer.h#L1095
+QgsMapLayer.exportNamedStyle: src/core/qgsmaplayer.h#L1243
+QgsMapLayer.exportSldStyle: src/core/qgsmaplayer.h#L1254
+QgsMapLayer.exportSldStyleV2: src/core/qgsmaplayer.h#L1264
QgsMapLayer.extensionPropertyType: src/core/qgsmaplayer.h#L259
QgsMapLayer.extent3D: src/core/qgsmaplayer.h#L557
QgsMapLayer.extent: src/core/qgsmaplayer.h#L551
QgsMapLayer.flags: src/core/qgsmaplayer.h#L230
-QgsMapLayer.flagsChanged: src/core/qgsmaplayer.h#L2073
-QgsMapLayer.formatLayerName: src/core/qgsmaplayer.h#L1077
-QgsMapLayer.generateId: src/core/qgsmaplayer.h#L1709
-QgsMapLayer.getStyleFromDatabase: src/core/qgsmaplayer.h#L746
-QgsMapLayer.hasAutoRefreshEnabled: src/core/qgsmaplayer.h#L1598
-QgsMapLayer.hasDependencyCycle: src/core/qgsmaplayer.h#L2293
-QgsMapLayer.hasMapTips: src/core/qgsmaplayer.h#L1763
-QgsMapLayer.hasScaleBasedVisibility: src/core/qgsmaplayer.h#L1590
-QgsMapLayer.htmlMetadata: src/core/qgsmaplayer.h#L1661
+QgsMapLayer.flagsChanged: src/core/qgsmaplayer.h#L2076
+QgsMapLayer.formatLayerName: src/core/qgsmaplayer.h#L1080
+QgsMapLayer.generateId: src/core/qgsmaplayer.h#L1712
+QgsMapLayer.getStyleFromDatabase: src/core/qgsmaplayer.h#L749
+QgsMapLayer.hasAutoRefreshEnabled: src/core/qgsmaplayer.h#L1601
+QgsMapLayer.hasDependencyCycle: src/core/qgsmaplayer.h#L2296
+QgsMapLayer.hasMapTips: src/core/qgsmaplayer.h#L1766
+QgsMapLayer.hasScaleBasedVisibility: src/core/qgsmaplayer.h#L1593
+QgsMapLayer.htmlMetadata: src/core/qgsmaplayer.h#L1664
QgsMapLayer.id: src/core/qgsmaplayer.h#L267
-QgsMapLayer.idChanged: src/core/qgsmaplayer.h#L1929
-QgsMapLayer.importNamedMetadata: src/core/qgsmaplayer.h#L1165
-QgsMapLayer.importNamedStyle: src/core/qgsmaplayer.h#L1229
-QgsMapLayer.invalidateWgs84Extent: src/core/qgsmaplayer.h#L2267
-QgsMapLayer.isEditable: src/core/qgsmaplayer.h#L620
-QgsMapLayer.isInScaleRange: src/core/qgsmaplayer.h#L1556
-QgsMapLayer.isModified: src/core/qgsmaplayer.h#L627
-QgsMapLayer.isRefreshOnNotifyEnabled: src/core/qgsmaplayer.h#L1684
-QgsMapLayer.isSpatial: src/core/qgsmaplayer.h#L632
-QgsMapLayer.isTemporary: src/core/qgsmaplayer.h#L643
+QgsMapLayer.idChanged: src/core/qgsmaplayer.h#L1932
+QgsMapLayer.importNamedMetadata: src/core/qgsmaplayer.h#L1168
+QgsMapLayer.importNamedStyle: src/core/qgsmaplayer.h#L1232
+QgsMapLayer.invalidateWgs84Extent: src/core/qgsmaplayer.h#L2270
+QgsMapLayer.isEditable: src/core/qgsmaplayer.h#L623
+QgsMapLayer.isInScaleRange: src/core/qgsmaplayer.h#L1559
+QgsMapLayer.isModified: src/core/qgsmaplayer.h#L630
+QgsMapLayer.isRefreshOnNotifyEnabled: src/core/qgsmaplayer.h#L1687
+QgsMapLayer.isSpatial: src/core/qgsmaplayer.h#L635
+QgsMapLayer.isTemporary: src/core/qgsmaplayer.h#L646
QgsMapLayer.isValid: src/core/qgsmaplayer.h#L574
-QgsMapLayer.isValidChanged: src/core/qgsmaplayer.h#L2096
+QgsMapLayer.isValidChanged: src/core/qgsmaplayer.h#L2099
QgsMapLayer.keywordList: src/core/qgsmaplayer.h#L369
-QgsMapLayer.layerModified: src/core/qgsmaplayer.h#L2121
-QgsMapLayer.legend: src/core/qgsmaplayer.h#L1531
-QgsMapLayer.legendChanged: src/core/qgsmaplayer.h#L2022
-QgsMapLayer.legendPlaceholderImage: src/core/qgsmaplayer.h#L1748
-QgsMapLayer.legendUrl: src/core/qgsmaplayer.h#L1510
-QgsMapLayer.legendUrlFormat: src/core/qgsmaplayer.h#L1520
-QgsMapLayer.listStylesInDatabase: src/core/qgsmaplayer.h#L740
-QgsMapLayer.loadDefaultMetadata: src/core/qgsmaplayer.h#L1148
-QgsMapLayer.loadDefaultStyle: src/core/qgsmaplayer.h#L1189
-QgsMapLayer.loadNamedMetadata: src/core/qgsmaplayer.h#L1135
-QgsMapLayer.loadNamedMetadataFromDatabase: src/core/qgsmaplayer.h#L1157
-QgsMapLayer.loadNamedStyle: src/core/qgsmaplayer.h#L1210
-QgsMapLayer.loadNamedStyle: src/core/qgsmaplayer.h#L791
-QgsMapLayer.loadNamedStyleFromDatabase: src/core/qgsmaplayer.h#L1219
-QgsMapLayer.loadSldStyle: src/core/qgsmaplayer.h#L1337
-QgsMapLayer.mapTipTemplate: src/core/qgsmaplayer.h#L1772
-QgsMapLayer.mapTipTemplateChanged: src/core/qgsmaplayer.h#L2128
-QgsMapLayer.mapTipsEnabled: src/core/qgsmaplayer.h#L1795
-QgsMapLayer.mapTipsEnabledChanged: src/core/qgsmaplayer.h#L2136
-QgsMapLayer.maximumScale: src/core/qgsmaplayer.h#L1580
-QgsMapLayer.metadataChanged: src/core/qgsmaplayer.h#L2065
-QgsMapLayer.metadataUri: src/core/qgsmaplayer.h#L1085
+QgsMapLayer.layerModified: src/core/qgsmaplayer.h#L2124
+QgsMapLayer.legend: src/core/qgsmaplayer.h#L1534
+QgsMapLayer.legendChanged: src/core/qgsmaplayer.h#L2025
+QgsMapLayer.legendPlaceholderImage: src/core/qgsmaplayer.h#L1751
+QgsMapLayer.legendUrl: src/core/qgsmaplayer.h#L1513
+QgsMapLayer.legendUrlFormat: src/core/qgsmaplayer.h#L1523
+QgsMapLayer.listStylesInDatabase: src/core/qgsmaplayer.h#L743
+QgsMapLayer.loadDefaultMetadata: src/core/qgsmaplayer.h#L1151
+QgsMapLayer.loadDefaultStyle: src/core/qgsmaplayer.h#L1192
+QgsMapLayer.loadNamedMetadata: src/core/qgsmaplayer.h#L1138
+QgsMapLayer.loadNamedMetadataFromDatabase: src/core/qgsmaplayer.h#L1160
+QgsMapLayer.loadNamedStyle: src/core/qgsmaplayer.h#L1213
+QgsMapLayer.loadNamedStyle: src/core/qgsmaplayer.h#L794
+QgsMapLayer.loadNamedStyleFromDatabase: src/core/qgsmaplayer.h#L1222
+QgsMapLayer.loadSldStyle: src/core/qgsmaplayer.h#L1340
+QgsMapLayer.mapTipTemplate: src/core/qgsmaplayer.h#L1775
+QgsMapLayer.mapTipTemplateChanged: src/core/qgsmaplayer.h#L2131
+QgsMapLayer.mapTipsEnabled: src/core/qgsmaplayer.h#L1798
+QgsMapLayer.mapTipsEnabledChanged: src/core/qgsmaplayer.h#L2139
+QgsMapLayer.maximumScale: src/core/qgsmaplayer.h#L1583
+QgsMapLayer.metadataChanged: src/core/qgsmaplayer.h#L2068
+QgsMapLayer.metadataUri: src/core/qgsmaplayer.h#L1088
QgsMapLayer.metadataUrl: src/core/qgsmaplayer.h#L460
QgsMapLayer.metadataUrlFormat: src/core/qgsmaplayer.h#L502
QgsMapLayer.metadataUrlType: src/core/qgsmaplayer.h#L481
-QgsMapLayer.minimumScale: src/core/qgsmaplayer.h#L1568
+QgsMapLayer.minimumScale: src/core/qgsmaplayer.h#L1571
QgsMapLayer.name: src/core/qgsmaplayer.h#L296
-QgsMapLayer.nameChanged: src/core/qgsmaplayer.h#L1934
+QgsMapLayer.nameChanged: src/core/qgsmaplayer.h#L1937
QgsMapLayer.opacity: src/core/qgsmaplayer.h#L535
-QgsMapLayer.opacityChanged: src/core/qgsmaplayer.h#L1999
-QgsMapLayer.originalXmlProperties: src/core/qgsmaplayer.h#L1694
-QgsMapLayer.project: src/core/qgsmaplayer.h#L1906
+QgsMapLayer.opacityChanged: src/core/qgsmaplayer.h#L2002
+QgsMapLayer.originalXmlProperties: src/core/qgsmaplayer.h#L1697
+QgsMapLayer.project: src/core/qgsmaplayer.h#L1909
QgsMapLayer.properties: src/core/qgsmaplayer.h#L253
QgsMapLayer.providerMetadata: src/core/qgsmaplayer.h#L313
-QgsMapLayer.providerReadFlags: src/core/qgsmaplayer.h#L1804
-QgsMapLayer.providerType: src/core/qgsmaplayer.h#L1492
-QgsMapLayer.publicSource: src/core/qgsmaplayer.h#L583
-QgsMapLayer.readCommonStyle: src/core/qgsmaplayer.h#L2243
-QgsMapLayer.readCustomProperties: src/core/qgsmaplayer.h#L2223
-QgsMapLayer.readLayerXml: src/core/qgsmaplayer.h#L675
+QgsMapLayer.providerReadFlags: src/core/qgsmaplayer.h#L1807
+QgsMapLayer.providerType: src/core/qgsmaplayer.h#L1495
+QgsMapLayer.publicSource: src/core/qgsmaplayer.h#L586
+QgsMapLayer.readCommonStyle: src/core/qgsmaplayer.h#L2246
+QgsMapLayer.readCustomProperties: src/core/qgsmaplayer.h#L2226
+QgsMapLayer.readLayerXml: src/core/qgsmaplayer.h#L678
QgsMapLayer.readOnly: src/core/qgsmaplayer.h#L538
-QgsMapLayer.readSld: src/core/qgsmaplayer.h#L1340
-QgsMapLayer.readStyle: src/core/qgsmaplayer.h#L1364
-QgsMapLayer.readStyleManager: src/core/qgsmaplayer.h#L2229
-QgsMapLayer.readSymbology: src/core/qgsmaplayer.h#L1352
-QgsMapLayer.readXml: src/core/qgsmaplayer.h#L2183
-QgsMapLayer.recalculateExtents: src/core/qgsmaplayer.h#L1983
-QgsMapLayer.refreshOnNotifyMessage: src/core/qgsmaplayer.h#L1678
+QgsMapLayer.readSld: src/core/qgsmaplayer.h#L1343
+QgsMapLayer.readStyle: src/core/qgsmaplayer.h#L1367
+QgsMapLayer.readStyleManager: src/core/qgsmaplayer.h#L2232
+QgsMapLayer.readSymbology: src/core/qgsmaplayer.h#L1355
+QgsMapLayer.readXml: src/core/qgsmaplayer.h#L2186
+QgsMapLayer.recalculateExtents: src/core/qgsmaplayer.h#L1986
+QgsMapLayer.refreshOnNotifyMessage: src/core/qgsmaplayer.h#L1681
QgsMapLayer.reload: src/core/qgsmaplayer.h#L543
-QgsMapLayer.removeCustomProperty: src/core/qgsmaplayer.h#L970
-QgsMapLayer.renderer3D: src/core/qgsmaplayer.h#L1546
-QgsMapLayer.renderer3DChanged: src/core/qgsmaplayer.h#L2027
-QgsMapLayer.rendererChanged: src/core/qgsmaplayer.h#L2005
-QgsMapLayer.repaintRequested: src/core/qgsmaplayer.h#L1980
-QgsMapLayer.request3DUpdate: src/core/qgsmaplayer.h#L2034
-QgsMapLayer.resolveReferences: src/core/qgsmaplayer.h#L698
-QgsMapLayer.saveDefaultMetadata: src/core/qgsmaplayer.h#L1102
-QgsMapLayer.saveDefaultStyle: src/core/qgsmaplayer.h#L1274
-QgsMapLayer.saveDefaultStyle: src/core/qgsmaplayer.h#L1287
-QgsMapLayer.saveNamedMetadata: src/core/qgsmaplayer.h#L1117
-QgsMapLayer.saveNamedStyle: src/core/qgsmaplayer.h#L1304
-QgsMapLayer.saveSldStyle: src/core/qgsmaplayer.h#L1315
-QgsMapLayer.saveSldStyleV2: src/core/qgsmaplayer.h#L1327
-QgsMapLayer.saveStyleToDatabase: src/core/qgsmaplayer.h#L772
-QgsMapLayer.selectionProperties: src/core/qgsmaplayer.h#L1727
+QgsMapLayer.removeCustomProperty: src/core/qgsmaplayer.h#L973
+QgsMapLayer.renderer3D: src/core/qgsmaplayer.h#L1549
+QgsMapLayer.renderer3DChanged: src/core/qgsmaplayer.h#L2030
+QgsMapLayer.rendererChanged: src/core/qgsmaplayer.h#L2008
+QgsMapLayer.repaintRequested: src/core/qgsmaplayer.h#L1983
+QgsMapLayer.request3DUpdate: src/core/qgsmaplayer.h#L2037
+QgsMapLayer.resolveReferences: src/core/qgsmaplayer.h#L701
+QgsMapLayer.saveDefaultMetadata: src/core/qgsmaplayer.h#L1105
+QgsMapLayer.saveDefaultStyle: src/core/qgsmaplayer.h#L1277
+QgsMapLayer.saveDefaultStyle: src/core/qgsmaplayer.h#L1290
+QgsMapLayer.saveNamedMetadata: src/core/qgsmaplayer.h#L1120
+QgsMapLayer.saveNamedStyle: src/core/qgsmaplayer.h#L1307
+QgsMapLayer.saveSldStyle: src/core/qgsmaplayer.h#L1318
+QgsMapLayer.saveSldStyleV2: src/core/qgsmaplayer.h#L1330
+QgsMapLayer.saveStyleToDatabase: src/core/qgsmaplayer.h#L775
+QgsMapLayer.selectionProperties: src/core/qgsmaplayer.h#L1730
QgsMapLayer.serverProperties: src/core/qgsmaplayer.h#L434
QgsMapLayer.setAbstract: src/core/qgsmaplayer.h#L348
QgsMapLayer.setAttribution: src/core/qgsmaplayer.h#L404
QgsMapLayer.setAttributionUrl: src/core/qgsmaplayer.h#L418
-QgsMapLayer.setAutoRefreshEnabled: src/core/qgsmaplayer.h#L1634
-QgsMapLayer.setAutoRefreshInterval: src/core/qgsmaplayer.h#L1626
-QgsMapLayer.setAutoRefreshMode: src/core/qgsmaplayer.h#L1642
+QgsMapLayer.setAutoRefreshEnabled: src/core/qgsmaplayer.h#L1637
+QgsMapLayer.setAutoRefreshInterval: src/core/qgsmaplayer.h#L1629
+QgsMapLayer.setAutoRefreshMode: src/core/qgsmaplayer.h#L1645
QgsMapLayer.setBlendMode: src/core/qgsmaplayer.h#L509
-QgsMapLayer.setCrs: src/core/qgsmaplayer.h#L1042
-QgsMapLayer.setCustomProperties: src/core/qgsmaplayer.h#L722
-QgsMapLayer.setCustomProperty: src/core/qgsmaplayer.h#L711
-QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1425
-QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1456
-QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1487
+QgsMapLayer.setCrs: src/core/qgsmaplayer.h#L1045
+QgsMapLayer.setCustomProperties: src/core/qgsmaplayer.h#L725
+QgsMapLayer.setCustomProperty: src/core/qgsmaplayer.h#L714
+QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1428
+QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1459
+QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1490
QgsMapLayer.setDataUrl: src/core/qgsmaplayer.h#L376
QgsMapLayer.setDataUrlFormat: src/core/qgsmaplayer.h#L390
-QgsMapLayer.setDependencies: src/core/qgsmaplayer.h#L1869
-QgsMapLayer.setError: src/core/qgsmaplayer.h#L2259
-QgsMapLayer.setExtent3D: src/core/qgsmaplayer.h#L2174
-QgsMapLayer.setExtent: src/core/qgsmaplayer.h#L2168
+QgsMapLayer.setDependencies: src/core/qgsmaplayer.h#L1872
+QgsMapLayer.setError: src/core/qgsmaplayer.h#L2262
+QgsMapLayer.setExtent3D: src/core/qgsmaplayer.h#L2177
+QgsMapLayer.setExtent: src/core/qgsmaplayer.h#L2171
QgsMapLayer.setFlags: src/core/qgsmaplayer.h#L242
QgsMapLayer.setId: src/core/qgsmaplayer.h#L284
QgsMapLayer.setKeywordList: src/core/qgsmaplayer.h#L362
-QgsMapLayer.setLayerOrder: src/core/qgsmaplayer.h#L602
-QgsMapLayer.setLegend: src/core/qgsmaplayer.h#L1526
-QgsMapLayer.setLegendPlaceholderImage: src/core/qgsmaplayer.h#L1755
-QgsMapLayer.setLegendUrl: src/core/qgsmaplayer.h#L1505
-QgsMapLayer.setLegendUrlFormat: src/core/qgsmaplayer.h#L1515
-QgsMapLayer.setMapTipTemplate: src/core/qgsmaplayer.h#L1781
-QgsMapLayer.setMapTipsEnabled: src/core/qgsmaplayer.h#L1789
-QgsMapLayer.setMaximumScale: src/core/qgsmaplayer.h#L1828
-QgsMapLayer.setMetadata: src/core/qgsmaplayer.h#L1656
+QgsMapLayer.setLayerOrder: src/core/qgsmaplayer.h#L605
+QgsMapLayer.setLegend: src/core/qgsmaplayer.h#L1529
+QgsMapLayer.setLegendPlaceholderImage: src/core/qgsmaplayer.h#L1758
+QgsMapLayer.setLegendUrl: src/core/qgsmaplayer.h#L1508
+QgsMapLayer.setLegendUrlFormat: src/core/qgsmaplayer.h#L1518
+QgsMapLayer.setMapTipTemplate: src/core/qgsmaplayer.h#L1784
+QgsMapLayer.setMapTipsEnabled: src/core/qgsmaplayer.h#L1792
+QgsMapLayer.setMaximumScale: src/core/qgsmaplayer.h#L1831
+QgsMapLayer.setMetadata: src/core/qgsmaplayer.h#L1659
QgsMapLayer.setMetadataUrl: src/core/qgsmaplayer.h#L449
QgsMapLayer.setMetadataUrlFormat: src/core/qgsmaplayer.h#L491
QgsMapLayer.setMetadataUrlType: src/core/qgsmaplayer.h#L470
-QgsMapLayer.setMinimumScale: src/core/qgsmaplayer.h#L1817
+QgsMapLayer.setMinimumScale: src/core/qgsmaplayer.h#L1820
QgsMapLayer.setName: src/core/qgsmaplayer.h#L290
QgsMapLayer.setOpacity: src/core/qgsmaplayer.h#L525
-QgsMapLayer.setOriginalXmlProperties: src/core/qgsmaplayer.h#L1703
-QgsMapLayer.setProviderType: src/core/qgsmaplayer.h#L2247
-QgsMapLayer.setRefreshOnNofifyMessage: src/core/qgsmaplayer.h#L1883
-QgsMapLayer.setRefreshOnNotifyEnabled: src/core/qgsmaplayer.h#L1875
-QgsMapLayer.setRenderer3D: src/core/qgsmaplayer.h#L1541
-QgsMapLayer.setScaleBasedVisibility: src/core/qgsmaplayer.h#L1837
+QgsMapLayer.setOriginalXmlProperties: src/core/qgsmaplayer.h#L1706
+QgsMapLayer.setProviderType: src/core/qgsmaplayer.h#L2250
+QgsMapLayer.setRefreshOnNofifyMessage: src/core/qgsmaplayer.h#L1886
+QgsMapLayer.setRefreshOnNotifyEnabled: src/core/qgsmaplayer.h#L1878
+QgsMapLayer.setRenderer3D: src/core/qgsmaplayer.h#L1544
+QgsMapLayer.setScaleBasedVisibility: src/core/qgsmaplayer.h#L1840
QgsMapLayer.setShortName: src/core/qgsmaplayer.h#L320
-QgsMapLayer.setSubLayerVisibility: src/core/qgsmaplayer.h#L609
+QgsMapLayer.setSubLayerVisibility: src/core/qgsmaplayer.h#L612
QgsMapLayer.setTitle: src/core/qgsmaplayer.h#L334
-QgsMapLayer.setTransformContext: src/core/qgsmaplayer.h#L1890
-QgsMapLayer.setValid: src/core/qgsmaplayer.h#L2177
-QgsMapLayer.setVerticalCrs: src/core/qgsmaplayer.h#L1063
+QgsMapLayer.setTransformContext: src/core/qgsmaplayer.h#L1893
+QgsMapLayer.setValid: src/core/qgsmaplayer.h#L2180
+QgsMapLayer.setVerticalCrs: src/core/qgsmaplayer.h#L1066
QgsMapLayer.shortName: src/core/qgsmaplayer.h#L327
-QgsMapLayer.source: src/core/qgsmaplayer.h#L590
-QgsMapLayer.statusChanged: src/core/qgsmaplayer.h#L1919
-QgsMapLayer.styleChanged: src/core/qgsmaplayer.h#L2017
-QgsMapLayer.styleLoaded: src/core/qgsmaplayer.h#L2089
-QgsMapLayer.styleManager: src/core/qgsmaplayer.h#L1536
-QgsMapLayer.styleURI: src/core/qgsmaplayer.h#L1175
-QgsMapLayer.subLayers: src/core/qgsmaplayer.h#L596
-QgsMapLayer.supportsEditing: src/core/qgsmaplayer.h#L617
-QgsMapLayer.temporalProperties: src/core/qgsmaplayer.h#L1734
-QgsMapLayer.timestamp: src/core/qgsmaplayer.h#L1664
+QgsMapLayer.source: src/core/qgsmaplayer.h#L593
+QgsMapLayer.statusChanged: src/core/qgsmaplayer.h#L1922
+QgsMapLayer.styleChanged: src/core/qgsmaplayer.h#L2020
+QgsMapLayer.styleLoaded: src/core/qgsmaplayer.h#L2092
+QgsMapLayer.styleManager: src/core/qgsmaplayer.h#L1539
+QgsMapLayer.styleURI: src/core/qgsmaplayer.h#L1178
+QgsMapLayer.subLayers: src/core/qgsmaplayer.h#L599
+QgsMapLayer.supportsEditing: src/core/qgsmaplayer.h#L620
+QgsMapLayer.temporalProperties: src/core/qgsmaplayer.h#L1737
+QgsMapLayer.timestamp: src/core/qgsmaplayer.h#L1667
QgsMapLayer.title: src/core/qgsmaplayer.h#L341
-QgsMapLayer.transformContext: src/core/qgsmaplayer.h#L1070
-QgsMapLayer.trigger3DUpdate: src/core/qgsmaplayer.h#L1855
-QgsMapLayer.triggerRepaint: src/core/qgsmaplayer.h#L1847
+QgsMapLayer.transformContext: src/core/qgsmaplayer.h#L1073
+QgsMapLayer.trigger3DUpdate: src/core/qgsmaplayer.h#L1858
+QgsMapLayer.triggerRepaint: src/core/qgsmaplayer.h#L1850
QgsMapLayer.type: src/core/qgsmaplayer.h#L218
-QgsMapLayer.undoStack: src/core/qgsmaplayer.h#L1495
-QgsMapLayer.undoStackStyles: src/core/qgsmaplayer.h#L1500
-QgsMapLayer.verticalCrs: src/core/qgsmaplayer.h#L1010
-QgsMapLayer.verticalCrsChanged: src/core/qgsmaplayer.h#L1972
+QgsMapLayer.undoStack: src/core/qgsmaplayer.h#L1498
+QgsMapLayer.undoStackStyles: src/core/qgsmaplayer.h#L1503
+QgsMapLayer.verticalCrs: src/core/qgsmaplayer.h#L1013
+QgsMapLayer.verticalCrsChanged: src/core/qgsmaplayer.h#L1975
QgsMapLayer.wgs84Extent: src/core/qgsmaplayer.h#L567
-QgsMapLayer.willBeDeleted: src/core/qgsmaplayer.h#L2052
-QgsMapLayer.writeCommonStyle: src/core/qgsmaplayer.h#L2236
-QgsMapLayer.writeCustomProperties: src/core/qgsmaplayer.h#L2226
-QgsMapLayer.writeLayerXml: src/core/qgsmaplayer.h#L693
-QgsMapLayer.writeStyle: src/core/qgsmaplayer.h#L1391
-QgsMapLayer.writeStyleManager: src/core/qgsmaplayer.h#L2231
-QgsMapLayer.writeSymbology: src/core/qgsmaplayer.h#L1377
-QgsMapLayer.writeXml: src/core/qgsmaplayer.h#L2189
+QgsMapLayer.willBeDeleted: src/core/qgsmaplayer.h#L2055
+QgsMapLayer.writeCommonStyle: src/core/qgsmaplayer.h#L2239
+QgsMapLayer.writeCustomProperties: src/core/qgsmaplayer.h#L2229
+QgsMapLayer.writeLayerXml: src/core/qgsmaplayer.h#L696
+QgsMapLayer.writeStyle: src/core/qgsmaplayer.h#L1394
+QgsMapLayer.writeStyleManager: src/core/qgsmaplayer.h#L2234
+QgsMapLayer.writeSymbology: src/core/qgsmaplayer.h#L1380
+QgsMapLayer.writeXml: src/core/qgsmaplayer.h#L2192
QgsMapLayer: src/core/qgsmaplayer.h#L75
QgsMapLayerDependency.__hash__: src/core/qgsmaplayerdependency.h#L78
QgsMapLayerDependency.layerId: src/core/qgsmaplayerdependency.h#L67
@@ -9650,6 +9655,7 @@ QgsMaskIdProvider.maskId: src/core/qgsmaskidprovider.h#L56
QgsMaskIdProvider.size: src/core/qgsmaskidprovider.h#L61
QgsMaskIdProvider: src/core/qgsmaskidprovider.h#L39
QgsMaskMarkerSymbolLayer.bounds: src/core/symbology/qgsmasksymbollayer.h#L63
+QgsMaskMarkerSymbolLayer.clearMasks: src/core/symbology/qgsmasksymbollayer.h#L87
QgsMaskMarkerSymbolLayer.clone: src/core/symbology/qgsmasksymbollayer.h#L51
QgsMaskMarkerSymbolLayer.color: src/core/symbology/qgsmasksymbollayer.h#L66
QgsMaskMarkerSymbolLayer.create: src/core/symbology/qgsmasksymbollayer.h#L49
@@ -9659,7 +9665,7 @@ QgsMaskMarkerSymbolLayer.hasDataDefinedProperties: src/core/symbology/qgsmasksym
QgsMaskMarkerSymbolLayer.layerType: src/core/symbology/qgsmasksymbollayer.h#L59
QgsMaskMarkerSymbolLayer.properties: src/core/symbology/qgsmasksymbollayer.h#L57
QgsMaskMarkerSymbolLayer.renderPoint: src/core/symbology/qgsmasksymbollayer.h#L62
-QgsMaskMarkerSymbolLayer.setMasks: src/core/symbology/qgsmasksymbollayer.h#L87
+QgsMaskMarkerSymbolLayer.setMasks: src/core/symbology/qgsmasksymbollayer.h#L94
QgsMaskMarkerSymbolLayer.setOutputUnit: src/core/symbology/qgsmasksymbollayer.h#L65
QgsMaskMarkerSymbolLayer.setSubSymbol: src/core/symbology/qgsmasksymbollayer.h#L53
QgsMaskMarkerSymbolLayer.startRender: src/core/symbology/qgsmasksymbollayer.h#L60
@@ -9964,86 +9970,86 @@ QgsMeshElevationAveragingMethod: src/core/mesh/qgsmesh3daveraging.h#L368
QgsMeshLayer.QgsMeshLayer.LayerOptions: src/core/mesh/qgsmeshlayer.h#L117
QgsMeshLayer.QgsMeshLayer: src/core/mesh/qgsmeshlayer.h#L159
QgsMeshLayer.__repr__: src/core/mesh/qgsmeshlayer.h#L168
-QgsMeshLayer.activeScalarDatasetAtTime: src/core/mesh/qgsmeshlayer.h#L626
-QgsMeshLayer.activeScalarDatasetGroupChanged: src/core/mesh/qgsmeshlayer.h#L990
-QgsMeshLayer.activeScalarDatasetIndex: src/core/mesh/qgsmeshlayer.h#L961
-QgsMeshLayer.activeVectorDatasetAtTime: src/core/mesh/qgsmeshlayer.h#L639
-QgsMeshLayer.activeVectorDatasetGroupChanged: src/core/mesh/qgsmeshlayer.h#L997
+QgsMeshLayer.activeScalarDatasetAtTime: src/core/mesh/qgsmeshlayer.h#L632
+QgsMeshLayer.activeScalarDatasetGroupChanged: src/core/mesh/qgsmeshlayer.h#L996
+QgsMeshLayer.activeScalarDatasetIndex: src/core/mesh/qgsmeshlayer.h#L967
+QgsMeshLayer.activeVectorDatasetAtTime: src/core/mesh/qgsmeshlayer.h#L645
+QgsMeshLayer.activeVectorDatasetGroupChanged: src/core/mesh/qgsmeshlayer.h#L1003
QgsMeshLayer.addDatasets: src/core/mesh/qgsmeshlayer.h#L212
QgsMeshLayer.addDatasets: src/core/mesh/qgsmeshlayer.h#L232
-QgsMeshLayer.areFacesActive: src/core/mesh/qgsmeshlayer.h#L497
+QgsMeshLayer.areFacesActive: src/core/mesh/qgsmeshlayer.h#L503
QgsMeshLayer.clone: src/core/mesh/qgsmeshlayer.h#L177
-QgsMeshLayer.commitFrameEditing: src/core/mesh/qgsmeshlayer.h#L822
-QgsMeshLayer.contains: src/core/mesh/qgsmeshlayer.h#L872
+QgsMeshLayer.commitFrameEditing: src/core/mesh/qgsmeshlayer.h#L828
+QgsMeshLayer.contains: src/core/mesh/qgsmeshlayer.h#L878
QgsMeshLayer.createMapRenderer: src/core/mesh/qgsmeshlayer.h#L179
QgsMeshLayer.createProfileGenerator: src/core/mesh/qgsmeshlayer.h#L180
QgsMeshLayer.dataProvider: src/core/mesh/qgsmeshlayer.h#L175
-QgsMeshLayer.dataset1dValue: src/core/mesh/qgsmeshlayer.h#L563
-QgsMeshLayer.dataset3dValue: src/core/mesh/qgsmeshlayer.h#L542
-QgsMeshLayer.dataset3dValues: src/core/mesh/qgsmeshlayer.h#L474
-QgsMeshLayer.datasetCount: src/core/mesh/qgsmeshlayer.h#L405
-QgsMeshLayer.datasetGroupCount: src/core/mesh/qgsmeshlayer.h#L356
-QgsMeshLayer.datasetGroupMetadata: src/core/mesh/qgsmeshlayer.h#L393
-QgsMeshLayer.datasetGroupTreeRootItem: src/core/mesh/qgsmeshlayer.h#L747
-QgsMeshLayer.datasetIndexAtRelativeTime: src/core/mesh/qgsmeshlayer.h#L597
-QgsMeshLayer.datasetIndexAtTime: src/core/mesh/qgsmeshlayer.h#L580
-QgsMeshLayer.datasetMetadata: src/core/mesh/qgsmeshlayer.h#L417
-QgsMeshLayer.datasetRelativeTime: src/core/mesh/qgsmeshlayer.h#L783
-QgsMeshLayer.datasetRelativeTimeInMilliseconds: src/core/mesh/qgsmeshlayer.h#L790
-QgsMeshLayer.datasetValue: src/core/mesh/qgsmeshlayer.h#L436
-QgsMeshLayer.datasetValue: src/core/mesh/qgsmeshlayer.h#L521
-QgsMeshLayer.datasetValues: src/core/mesh/qgsmeshlayer.h#L456
-QgsMeshLayer.datasetsPathUnique: src/core/mesh/qgsmeshlayer.h#L972
+QgsMeshLayer.dataset1dValue: src/core/mesh/qgsmeshlayer.h#L569
+QgsMeshLayer.dataset3dValue: src/core/mesh/qgsmeshlayer.h#L548
+QgsMeshLayer.dataset3dValues: src/core/mesh/qgsmeshlayer.h#L480
+QgsMeshLayer.datasetCount: src/core/mesh/qgsmeshlayer.h#L411
+QgsMeshLayer.datasetGroupCount: src/core/mesh/qgsmeshlayer.h#L362
+QgsMeshLayer.datasetGroupMetadata: src/core/mesh/qgsmeshlayer.h#L399
+QgsMeshLayer.datasetGroupTreeRootItem: src/core/mesh/qgsmeshlayer.h#L753
+QgsMeshLayer.datasetIndexAtRelativeTime: src/core/mesh/qgsmeshlayer.h#L603
+QgsMeshLayer.datasetIndexAtTime: src/core/mesh/qgsmeshlayer.h#L586
+QgsMeshLayer.datasetMetadata: src/core/mesh/qgsmeshlayer.h#L423
+QgsMeshLayer.datasetRelativeTime: src/core/mesh/qgsmeshlayer.h#L789
+QgsMeshLayer.datasetRelativeTimeInMilliseconds: src/core/mesh/qgsmeshlayer.h#L796
+QgsMeshLayer.datasetValue: src/core/mesh/qgsmeshlayer.h#L442
+QgsMeshLayer.datasetValue: src/core/mesh/qgsmeshlayer.h#L527
+QgsMeshLayer.datasetValues: src/core/mesh/qgsmeshlayer.h#L462
+QgsMeshLayer.datasetsPathUnique: src/core/mesh/qgsmeshlayer.h#L978
QgsMeshLayer.decodedSource: src/core/mesh/qgsmeshlayer.h#L188
QgsMeshLayer.elevationProperties: src/core/mesh/qgsmeshlayer.h#L192
QgsMeshLayer.encodedSource: src/core/mesh/qgsmeshlayer.h#L187
QgsMeshLayer.extent: src/core/mesh/qgsmeshlayer.h#L178
-QgsMeshLayer.extraDatasetGroupCount: src/core/mesh/qgsmeshlayer.h#L363
-QgsMeshLayer.firstValidTimeStep: src/core/mesh/qgsmeshlayer.h#L776
-QgsMeshLayer.formatTime: src/core/mesh/qgsmeshlayer.h#L349
+QgsMeshLayer.extraDatasetGroupCount: src/core/mesh/qgsmeshlayer.h#L369
+QgsMeshLayer.firstValidTimeStep: src/core/mesh/qgsmeshlayer.h#L782
+QgsMeshLayer.formatTime: src/core/mesh/qgsmeshlayer.h#L355
QgsMeshLayer.htmlMetadata: src/core/mesh/qgsmeshlayer.h#L195
QgsMeshLayer.isEditable: src/core/mesh/qgsmeshlayer.h#L196
-QgsMeshLayer.isFaceActive: src/core/mesh/qgsmeshlayer.h#L483
-QgsMeshLayer.isModified: src/core/mesh/qgsmeshlayer.h#L866
-QgsMeshLayer.labeling: src/core/mesh/qgsmeshlayer.h#L937
-QgsMeshLayer.labelsEnabled: src/core/mesh/qgsmeshlayer.h#L907
+QgsMeshLayer.isFaceActive: src/core/mesh/qgsmeshlayer.h#L489
+QgsMeshLayer.isModified: src/core/mesh/qgsmeshlayer.h#L872
+QgsMeshLayer.labeling: src/core/mesh/qgsmeshlayer.h#L943
+QgsMeshLayer.labelsEnabled: src/core/mesh/qgsmeshlayer.h#L913
QgsMeshLayer.loadDefaultStyle: src/core/mesh/qgsmeshlayer.h#L198
-QgsMeshLayer.meshEdgeCount: src/core/mesh/qgsmeshlayer.h#L897
-QgsMeshLayer.meshEditor: src/core/mesh/qgsmeshlayer.h#L859
-QgsMeshLayer.meshFaceCount: src/core/mesh/qgsmeshlayer.h#L890
-QgsMeshLayer.meshVertexCount: src/core/mesh/qgsmeshlayer.h#L881
-QgsMeshLayer.minimumMaximumActiveScalarDataset: src/core/mesh/qgsmeshlayer.h#L954
+QgsMeshLayer.meshEdgeCount: src/core/mesh/qgsmeshlayer.h#L903
+QgsMeshLayer.meshEditor: src/core/mesh/qgsmeshlayer.h#L865
+QgsMeshLayer.meshFaceCount: src/core/mesh/qgsmeshlayer.h#L896
+QgsMeshLayer.meshVertexCount: src/core/mesh/qgsmeshlayer.h#L887
+QgsMeshLayer.minimumMaximumActiveScalarDataset: src/core/mesh/qgsmeshlayer.h#L960
QgsMeshLayer.providerType: src/core/mesh/qgsmeshlayer.h#L201
QgsMeshLayer.readStyle: src/core/mesh/qgsmeshlayer.h#L186
QgsMeshLayer.readSymbology: src/core/mesh/qgsmeshlayer.h#L181
QgsMeshLayer.readXml: src/core/mesh/qgsmeshlayer.h#L189
-QgsMeshLayer.reindex: src/core/mesh/qgsmeshlayer.h#L852
+QgsMeshLayer.reindex: src/core/mesh/qgsmeshlayer.h#L858
QgsMeshLayer.reload: src/core/mesh/qgsmeshlayer.h#L193
-QgsMeshLayer.reloaded: src/core/mesh/qgsmeshlayer.h#L1011
+QgsMeshLayer.reloaded: src/core/mesh/qgsmeshlayer.h#L1017
QgsMeshLayer.removeDatasets: src/core/mesh/qgsmeshlayer.h#L222
QgsMeshLayer.rendererSettings: src/core/mesh/qgsmeshlayer.h#L311
-QgsMeshLayer.resetDatasetGroupTreeItem: src/core/mesh/qgsmeshlayer.h#L769
-QgsMeshLayer.rollBackFrameEditing: src/core/mesh/qgsmeshlayer.h#L832
+QgsMeshLayer.resetDatasetGroupTreeItem: src/core/mesh/qgsmeshlayer.h#L775
+QgsMeshLayer.rollBackFrameEditing: src/core/mesh/qgsmeshlayer.h#L838
QgsMeshLayer.saveDataset: src/core/mesh/qgsmeshlayer.h#L244
-QgsMeshLayer.setDatasetGroupTreeRootItem: src/core/mesh/qgsmeshlayer.h#L762
-QgsMeshLayer.setLabeling: src/core/mesh/qgsmeshlayer.h#L943
-QgsMeshLayer.setLabelsEnabled: src/core/mesh/qgsmeshlayer.h#L919
-QgsMeshLayer.setReferenceTime: src/core/mesh/qgsmeshlayer.h#L686
-QgsMeshLayer.setRendererSettings: src/core/mesh/qgsmeshlayer.h#L313
-QgsMeshLayer.setTemporalMatchingMethod: src/core/mesh/qgsmeshlayer.h#L695
-QgsMeshLayer.setTimeSettings: src/core/mesh/qgsmeshlayer.h#L327
-QgsMeshLayer.setTransformContext: src/core/mesh/qgsmeshlayer.h#L981
-QgsMeshLayer.snapOnElement: src/core/mesh/qgsmeshlayer.h#L718
-QgsMeshLayer.startFrameEditing: src/core/mesh/qgsmeshlayer.h#L799
-QgsMeshLayer.startFrameEditing: src/core/mesh/qgsmeshlayer.h#L811
-QgsMeshLayer.staticScalarDatasetIndex: src/core/mesh/qgsmeshlayer.h#L667
-QgsMeshLayer.staticVectorDatasetIndex: src/core/mesh/qgsmeshlayer.h#L677
-QgsMeshLayer.stopFrameEditing: src/core/mesh/qgsmeshlayer.h#L841
+QgsMeshLayer.setDatasetGroupTreeRootItem: src/core/mesh/qgsmeshlayer.h#L768
+QgsMeshLayer.setLabeling: src/core/mesh/qgsmeshlayer.h#L949
+QgsMeshLayer.setLabelsEnabled: src/core/mesh/qgsmeshlayer.h#L925
+QgsMeshLayer.setReferenceTime: src/core/mesh/qgsmeshlayer.h#L692
+QgsMeshLayer.setRendererSettings: src/core/mesh/qgsmeshlayer.h#L319
+QgsMeshLayer.setTemporalMatchingMethod: src/core/mesh/qgsmeshlayer.h#L701
+QgsMeshLayer.setTimeSettings: src/core/mesh/qgsmeshlayer.h#L333
+QgsMeshLayer.setTransformContext: src/core/mesh/qgsmeshlayer.h#L987
+QgsMeshLayer.snapOnElement: src/core/mesh/qgsmeshlayer.h#L724
+QgsMeshLayer.startFrameEditing: src/core/mesh/qgsmeshlayer.h#L805
+QgsMeshLayer.startFrameEditing: src/core/mesh/qgsmeshlayer.h#L817
+QgsMeshLayer.staticScalarDatasetIndex: src/core/mesh/qgsmeshlayer.h#L673
+QgsMeshLayer.staticVectorDatasetIndex: src/core/mesh/qgsmeshlayer.h#L683
+QgsMeshLayer.stopFrameEditing: src/core/mesh/qgsmeshlayer.h#L847
QgsMeshLayer.subLayers: src/core/mesh/qgsmeshlayer.h#L194
QgsMeshLayer.supportsEditing: src/core/mesh/qgsmeshlayer.h#L197
QgsMeshLayer.temporalProperties: src/core/mesh/qgsmeshlayer.h#L191
-QgsMeshLayer.timeSettings: src/core/mesh/qgsmeshlayer.h#L320
-QgsMeshLayer.timeSettingsChanged: src/core/mesh/qgsmeshlayer.h#L1004
+QgsMeshLayer.timeSettings: src/core/mesh/qgsmeshlayer.h#L326
+QgsMeshLayer.timeSettingsChanged: src/core/mesh/qgsmeshlayer.h#L1010
QgsMeshLayer.updateTriangularMesh: src/core/mesh/qgsmeshlayer.h#L301
QgsMeshLayer.writeStyle: src/core/mesh/qgsmeshlayer.h#L185
QgsMeshLayer.writeSymbology: src/core/mesh/qgsmeshlayer.h#L183
@@ -10144,106 +10150,106 @@ QgsMeshRendererScalarSettings.setLimits: src/core/mesh/qgsmeshrenderersettings.h
QgsMeshRendererScalarSettings.setOpacity: src/core/mesh/qgsmeshrenderersettings.h#L132
QgsMeshRendererScalarSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L207
QgsMeshRendererScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L92
-QgsMeshRendererSettings.activeScalarDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L817
-QgsMeshRendererSettings.activeVectorDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L829
-QgsMeshRendererSettings.averagingMethod: src/core/mesh/qgsmeshrenderersettings.h#L799
-QgsMeshRendererSettings.edgeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L751
-QgsMeshRendererSettings.hasScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L769
-QgsMeshRendererSettings.hasSettings: src/core/mesh/qgsmeshrenderersettings.h#L842
-QgsMeshRendererSettings.hasVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L786
-QgsMeshRendererSettings.nativeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L738
-QgsMeshRendererSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L811
-QgsMeshRendererSettings.removeScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L775
-QgsMeshRendererSettings.removeVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L792
-QgsMeshRendererSettings.scalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L760
-QgsMeshRendererSettings.setActiveScalarDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L823
-QgsMeshRendererSettings.setActiveVectorDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L835
-QgsMeshRendererSettings.setAveragingMethod: src/core/mesh/qgsmeshrenderersettings.h#L806
-QgsMeshRendererSettings.setEdgeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L757
-QgsMeshRendererSettings.setNativeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L740
-QgsMeshRendererSettings.setScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L763
-QgsMeshRendererSettings.setTriangularMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L745
-QgsMeshRendererSettings.setVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L780
-QgsMeshRendererSettings.triangularMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L743
-QgsMeshRendererSettings.vectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L778
-QgsMeshRendererSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L809
-QgsMeshRendererSettings: src/core/mesh/qgsmeshrenderersettings.h#L727
-QgsMeshRendererVectorArrowSettings.arrowHeadLengthRatio: src/core/mesh/qgsmeshrenderersettings.h#L340
-QgsMeshRendererVectorArrowSettings.arrowHeadWidthRatio: src/core/mesh/qgsmeshrenderersettings.h#L335
-QgsMeshRendererVectorArrowSettings.fixedShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L325
-QgsMeshRendererVectorArrowSettings.maxShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L297
-QgsMeshRendererVectorArrowSettings.minShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L283
-QgsMeshRendererVectorArrowSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L347
-QgsMeshRendererVectorArrowSettings.scaleFactor: src/core/mesh/qgsmeshrenderersettings.h#L311
-QgsMeshRendererVectorArrowSettings.setArrowHeadLengthRatio: src/core/mesh/qgsmeshrenderersettings.h#L342
-QgsMeshRendererVectorArrowSettings.setArrowHeadWidthRatio: src/core/mesh/qgsmeshrenderersettings.h#L337
-QgsMeshRendererVectorArrowSettings.setFixedShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L332
-QgsMeshRendererVectorArrowSettings.setMaxShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L304
-QgsMeshRendererVectorArrowSettings.setMinShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L290
-QgsMeshRendererVectorArrowSettings.setScaleFactor: src/core/mesh/qgsmeshrenderersettings.h#L318
-QgsMeshRendererVectorArrowSettings.setShaftLengthMethod: src/core/mesh/qgsmeshrenderersettings.h#L276
-QgsMeshRendererVectorArrowSettings.shaftLengthMethod: src/core/mesh/qgsmeshrenderersettings.h#L274
-QgsMeshRendererVectorArrowSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L345
-QgsMeshRendererVectorArrowSettings: src/core/mesh/qgsmeshrenderersettings.h#L249
-QgsMeshRendererVectorSettings.arrowSettings: src/core/mesh/qgsmeshrenderersettings.h#L649
-QgsMeshRendererVectorSettings.color: src/core/mesh/qgsmeshrenderersettings.h#L558
-QgsMeshRendererVectorSettings.colorRampShader: src/core/mesh/qgsmeshrenderersettings.h#L631
-QgsMeshRendererVectorSettings.coloringMethod: src/core/mesh/qgsmeshrenderersettings.h#L619
-QgsMeshRendererVectorSettings.filterMax: src/core/mesh/qgsmeshrenderersettings.h#L582
-QgsMeshRendererVectorSettings.filterMin: src/core/mesh/qgsmeshrenderersettings.h#L568
-QgsMeshRendererVectorSettings.isOnUserDefinedGrid: src/core/mesh/qgsmeshrenderersettings.h#L591
-QgsMeshRendererVectorSettings.lineWidth: src/core/mesh/qgsmeshrenderersettings.h#L553
-QgsMeshRendererVectorSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L696
-QgsMeshRendererVectorSettings.setArrowsSettings: src/core/mesh/qgsmeshrenderersettings.h#L655
-QgsMeshRendererVectorSettings.setColor: src/core/mesh/qgsmeshrenderersettings.h#L560
-QgsMeshRendererVectorSettings.setColorRampShader: src/core/mesh/qgsmeshrenderersettings.h#L637
-QgsMeshRendererVectorSettings.setColoringMethod: src/core/mesh/qgsmeshrenderersettings.h#L625
-QgsMeshRendererVectorSettings.setFilterMax: src/core/mesh/qgsmeshrenderersettings.h#L588
-QgsMeshRendererVectorSettings.setFilterMin: src/core/mesh/qgsmeshrenderersettings.h#L574
-QgsMeshRendererVectorSettings.setLineWidth: src/core/mesh/qgsmeshrenderersettings.h#L555
-QgsMeshRendererVectorSettings.setOnUserDefinedGrid: src/core/mesh/qgsmeshrenderersettings.h#L593
-QgsMeshRendererVectorSettings.setStreamLinesSettings: src/core/mesh/qgsmeshrenderersettings.h#L667
-QgsMeshRendererVectorSettings.setSymbology: src/core/mesh/qgsmeshrenderersettings.h#L613
-QgsMeshRendererVectorSettings.setTracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L679
-QgsMeshRendererVectorSettings.setUserGridCellHeight: src/core/mesh/qgsmeshrenderersettings.h#L601
-QgsMeshRendererVectorSettings.setUserGridCellWidth: src/core/mesh/qgsmeshrenderersettings.h#L597
-QgsMeshRendererVectorSettings.setWindBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L691
-QgsMeshRendererVectorSettings.streamLinesSettings: src/core/mesh/qgsmeshrenderersettings.h#L661
-QgsMeshRendererVectorSettings.symbology: src/core/mesh/qgsmeshrenderersettings.h#L607
-QgsMeshRendererVectorSettings.tracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L673
-QgsMeshRendererVectorSettings.userGridCellHeight: src/core/mesh/qgsmeshrenderersettings.h#L599
-QgsMeshRendererVectorSettings.userGridCellWidth: src/core/mesh/qgsmeshrenderersettings.h#L595
-QgsMeshRendererVectorSettings.vectorStrokeColoring: src/core/mesh/qgsmeshrenderersettings.h#L643
-QgsMeshRendererVectorSettings.windBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L685
-QgsMeshRendererVectorSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L694
-QgsMeshRendererVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L532
-QgsMeshRendererVectorStreamlineSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L395
-QgsMeshRendererVectorStreamlineSettings.seedingDensity: src/core/mesh/qgsmeshrenderersettings.h#L391
-QgsMeshRendererVectorStreamlineSettings.seedingMethod: src/core/mesh/qgsmeshrenderersettings.h#L387
-QgsMeshRendererVectorStreamlineSettings.setSeedingDensity: src/core/mesh/qgsmeshrenderersettings.h#L393
-QgsMeshRendererVectorStreamlineSettings.setSeedingMethod: src/core/mesh/qgsmeshrenderersettings.h#L389
-QgsMeshRendererVectorStreamlineSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L397
-QgsMeshRendererVectorStreamlineSettings: src/core/mesh/qgsmeshrenderersettings.h#L368
-QgsMeshRendererVectorTracesSettings.maximumTailLength: src/core/mesh/qgsmeshrenderersettings.h#L419
-QgsMeshRendererVectorTracesSettings.maximumTailLengthUnit: src/core/mesh/qgsmeshrenderersettings.h#L427
-QgsMeshRendererVectorTracesSettings.particlesCount: src/core/mesh/qgsmeshrenderersettings.h#L423
-QgsMeshRendererVectorTracesSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L432
-QgsMeshRendererVectorTracesSettings.setMaximumTailLength: src/core/mesh/qgsmeshrenderersettings.h#L421
-QgsMeshRendererVectorTracesSettings.setMaximumTailLengthUnit: src/core/mesh/qgsmeshrenderersettings.h#L429
-QgsMeshRendererVectorTracesSettings.setParticlesCount: src/core/mesh/qgsmeshrenderersettings.h#L425
-QgsMeshRendererVectorTracesSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L434
-QgsMeshRendererVectorTracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L414
-QgsMeshRendererVectorWindBarbSettings.magnitudeMultiplier: src/core/mesh/qgsmeshrenderersettings.h#L470
-QgsMeshRendererVectorWindBarbSettings.magnitudeUnits: src/core/mesh/qgsmeshrenderersettings.h#L504
-QgsMeshRendererVectorWindBarbSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L514
-QgsMeshRendererVectorWindBarbSettings.setMagnitudeMultiplier: src/core/mesh/qgsmeshrenderersettings.h#L475
-QgsMeshRendererVectorWindBarbSettings.setMagnitudeUnits: src/core/mesh/qgsmeshrenderersettings.h#L509
-QgsMeshRendererVectorWindBarbSettings.setShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L485
-QgsMeshRendererVectorWindBarbSettings.setShaftLengthUnits: src/core/mesh/qgsmeshrenderersettings.h#L499
-QgsMeshRendererVectorWindBarbSettings.shaftLength: src/core/mesh/qgsmeshrenderersettings.h#L480
-QgsMeshRendererVectorWindBarbSettings.shaftLengthUnits: src/core/mesh/qgsmeshrenderersettings.h#L492
-QgsMeshRendererVectorWindBarbSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L512
-QgsMeshRendererVectorWindBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L452
+QgsMeshRendererSettings.activeScalarDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L804
+QgsMeshRendererSettings.activeVectorDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L816
+QgsMeshRendererSettings.averagingMethod: src/core/mesh/qgsmeshrenderersettings.h#L786
+QgsMeshRendererSettings.edgeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L738
+QgsMeshRendererSettings.hasScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L756
+QgsMeshRendererSettings.hasSettings: src/core/mesh/qgsmeshrenderersettings.h#L829
+QgsMeshRendererSettings.hasVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L773
+QgsMeshRendererSettings.nativeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L725
+QgsMeshRendererSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L798
+QgsMeshRendererSettings.removeScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L762
+QgsMeshRendererSettings.removeVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L779
+QgsMeshRendererSettings.scalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L747
+QgsMeshRendererSettings.setActiveScalarDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L810
+QgsMeshRendererSettings.setActiveVectorDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L822
+QgsMeshRendererSettings.setAveragingMethod: src/core/mesh/qgsmeshrenderersettings.h#L793
+QgsMeshRendererSettings.setEdgeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L744
+QgsMeshRendererSettings.setNativeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L727
+QgsMeshRendererSettings.setScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L750
+QgsMeshRendererSettings.setTriangularMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L732
+QgsMeshRendererSettings.setVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L767
+QgsMeshRendererSettings.triangularMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L730
+QgsMeshRendererSettings.vectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L765
+QgsMeshRendererSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L796
+QgsMeshRendererSettings: src/core/mesh/qgsmeshrenderersettings.h#L714
+QgsMeshRendererVectorArrowSettings.arrowHeadLengthRatio: src/core/mesh/qgsmeshrenderersettings.h#L327
+QgsMeshRendererVectorArrowSettings.arrowHeadWidthRatio: src/core/mesh/qgsmeshrenderersettings.h#L322
+QgsMeshRendererVectorArrowSettings.fixedShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L312
+QgsMeshRendererVectorArrowSettings.maxShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L284
+QgsMeshRendererVectorArrowSettings.minShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L270
+QgsMeshRendererVectorArrowSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L334
+QgsMeshRendererVectorArrowSettings.scaleFactor: src/core/mesh/qgsmeshrenderersettings.h#L298
+QgsMeshRendererVectorArrowSettings.setArrowHeadLengthRatio: src/core/mesh/qgsmeshrenderersettings.h#L329
+QgsMeshRendererVectorArrowSettings.setArrowHeadWidthRatio: src/core/mesh/qgsmeshrenderersettings.h#L324
+QgsMeshRendererVectorArrowSettings.setFixedShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L319
+QgsMeshRendererVectorArrowSettings.setMaxShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L291
+QgsMeshRendererVectorArrowSettings.setMinShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L277
+QgsMeshRendererVectorArrowSettings.setScaleFactor: src/core/mesh/qgsmeshrenderersettings.h#L305
+QgsMeshRendererVectorArrowSettings.setShaftLengthMethod: src/core/mesh/qgsmeshrenderersettings.h#L263
+QgsMeshRendererVectorArrowSettings.shaftLengthMethod: src/core/mesh/qgsmeshrenderersettings.h#L261
+QgsMeshRendererVectorArrowSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L332
+QgsMeshRendererVectorArrowSettings: src/core/mesh/qgsmeshrenderersettings.h#L236
+QgsMeshRendererVectorSettings.arrowSettings: src/core/mesh/qgsmeshrenderersettings.h#L636
+QgsMeshRendererVectorSettings.color: src/core/mesh/qgsmeshrenderersettings.h#L545
+QgsMeshRendererVectorSettings.colorRampShader: src/core/mesh/qgsmeshrenderersettings.h#L618
+QgsMeshRendererVectorSettings.coloringMethod: src/core/mesh/qgsmeshrenderersettings.h#L606
+QgsMeshRendererVectorSettings.filterMax: src/core/mesh/qgsmeshrenderersettings.h#L569
+QgsMeshRendererVectorSettings.filterMin: src/core/mesh/qgsmeshrenderersettings.h#L555
+QgsMeshRendererVectorSettings.isOnUserDefinedGrid: src/core/mesh/qgsmeshrenderersettings.h#L578
+QgsMeshRendererVectorSettings.lineWidth: src/core/mesh/qgsmeshrenderersettings.h#L540
+QgsMeshRendererVectorSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L683
+QgsMeshRendererVectorSettings.setArrowsSettings: src/core/mesh/qgsmeshrenderersettings.h#L642
+QgsMeshRendererVectorSettings.setColor: src/core/mesh/qgsmeshrenderersettings.h#L547
+QgsMeshRendererVectorSettings.setColorRampShader: src/core/mesh/qgsmeshrenderersettings.h#L624
+QgsMeshRendererVectorSettings.setColoringMethod: src/core/mesh/qgsmeshrenderersettings.h#L612
+QgsMeshRendererVectorSettings.setFilterMax: src/core/mesh/qgsmeshrenderersettings.h#L575
+QgsMeshRendererVectorSettings.setFilterMin: src/core/mesh/qgsmeshrenderersettings.h#L561
+QgsMeshRendererVectorSettings.setLineWidth: src/core/mesh/qgsmeshrenderersettings.h#L542
+QgsMeshRendererVectorSettings.setOnUserDefinedGrid: src/core/mesh/qgsmeshrenderersettings.h#L580
+QgsMeshRendererVectorSettings.setStreamLinesSettings: src/core/mesh/qgsmeshrenderersettings.h#L654
+QgsMeshRendererVectorSettings.setSymbology: src/core/mesh/qgsmeshrenderersettings.h#L600
+QgsMeshRendererVectorSettings.setTracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L666
+QgsMeshRendererVectorSettings.setUserGridCellHeight: src/core/mesh/qgsmeshrenderersettings.h#L588
+QgsMeshRendererVectorSettings.setUserGridCellWidth: src/core/mesh/qgsmeshrenderersettings.h#L584
+QgsMeshRendererVectorSettings.setWindBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L678
+QgsMeshRendererVectorSettings.streamLinesSettings: src/core/mesh/qgsmeshrenderersettings.h#L648
+QgsMeshRendererVectorSettings.symbology: src/core/mesh/qgsmeshrenderersettings.h#L594
+QgsMeshRendererVectorSettings.tracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L660
+QgsMeshRendererVectorSettings.userGridCellHeight: src/core/mesh/qgsmeshrenderersettings.h#L586
+QgsMeshRendererVectorSettings.userGridCellWidth: src/core/mesh/qgsmeshrenderersettings.h#L582
+QgsMeshRendererVectorSettings.vectorStrokeColoring: src/core/mesh/qgsmeshrenderersettings.h#L630
+QgsMeshRendererVectorSettings.windBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L672
+QgsMeshRendererVectorSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L681
+QgsMeshRendererVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L519
+QgsMeshRendererVectorStreamlineSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L382
+QgsMeshRendererVectorStreamlineSettings.seedingDensity: src/core/mesh/qgsmeshrenderersettings.h#L378
+QgsMeshRendererVectorStreamlineSettings.seedingMethod: src/core/mesh/qgsmeshrenderersettings.h#L374
+QgsMeshRendererVectorStreamlineSettings.setSeedingDensity: src/core/mesh/qgsmeshrenderersettings.h#L380
+QgsMeshRendererVectorStreamlineSettings.setSeedingMethod: src/core/mesh/qgsmeshrenderersettings.h#L376
+QgsMeshRendererVectorStreamlineSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L384
+QgsMeshRendererVectorStreamlineSettings: src/core/mesh/qgsmeshrenderersettings.h#L355
+QgsMeshRendererVectorTracesSettings.maximumTailLength: src/core/mesh/qgsmeshrenderersettings.h#L406
+QgsMeshRendererVectorTracesSettings.maximumTailLengthUnit: src/core/mesh/qgsmeshrenderersettings.h#L414
+QgsMeshRendererVectorTracesSettings.particlesCount: src/core/mesh/qgsmeshrenderersettings.h#L410
+QgsMeshRendererVectorTracesSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L419
+QgsMeshRendererVectorTracesSettings.setMaximumTailLength: src/core/mesh/qgsmeshrenderersettings.h#L408
+QgsMeshRendererVectorTracesSettings.setMaximumTailLengthUnit: src/core/mesh/qgsmeshrenderersettings.h#L416
+QgsMeshRendererVectorTracesSettings.setParticlesCount: src/core/mesh/qgsmeshrenderersettings.h#L412
+QgsMeshRendererVectorTracesSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L421
+QgsMeshRendererVectorTracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L401
+QgsMeshRendererVectorWindBarbSettings.magnitudeMultiplier: src/core/mesh/qgsmeshrenderersettings.h#L457
+QgsMeshRendererVectorWindBarbSettings.magnitudeUnits: src/core/mesh/qgsmeshrenderersettings.h#L491
+QgsMeshRendererVectorWindBarbSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L501
+QgsMeshRendererVectorWindBarbSettings.setMagnitudeMultiplier: src/core/mesh/qgsmeshrenderersettings.h#L462
+QgsMeshRendererVectorWindBarbSettings.setMagnitudeUnits: src/core/mesh/qgsmeshrenderersettings.h#L496
+QgsMeshRendererVectorWindBarbSettings.setShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L472
+QgsMeshRendererVectorWindBarbSettings.setShaftLengthUnits: src/core/mesh/qgsmeshrenderersettings.h#L486
+QgsMeshRendererVectorWindBarbSettings.shaftLength: src/core/mesh/qgsmeshrenderersettings.h#L467
+QgsMeshRendererVectorWindBarbSettings.shaftLengthUnits: src/core/mesh/qgsmeshrenderersettings.h#L479
+QgsMeshRendererVectorWindBarbSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L499
+QgsMeshRendererVectorWindBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L439
QgsMeshSigmaAveragingMethod.clone: src/core/mesh/qgsmesh3daveraging.h#L258
QgsMeshSigmaAveragingMethod.endFraction: src/core/mesh/qgsmesh3daveraging.h#L274
QgsMeshSigmaAveragingMethod.equals: src/core/mesh/qgsmesh3daveraging.h#L257
@@ -10291,14 +10297,14 @@ QgsMeshVectorTraceAnimationGenerator.setParticlesSize: src/core/mesh/qgsmeshtrac
QgsMeshVectorTraceAnimationGenerator.setTailFactor: src/core/mesh/qgsmeshtracerenderer.h#L642
QgsMeshVectorTraceAnimationGenerator.setTailPersitence: src/core/mesh/qgsmeshtracerenderer.h#L648
QgsMeshVectorTraceAnimationGenerator: src/core/mesh/qgsmeshtracerenderer.h#L599
-QgsMessageLog.logMessage: src/core/qgsmessagelog.h#L54
-QgsMessageLog.messageReceived: src/core/qgsmessagelog.h#L64
-QgsMessageLog.messageReceived: src/core/qgsmessagelog.h#L76
+QgsMessageLog.logMessage: src/core/qgsmessagelog.h#L62
+QgsMessageLog.messageReceived: src/core/qgsmessagelog.h#L73
+QgsMessageLog.messageReceived: src/core/qgsmessagelog.h#L85
QgsMessageLog: src/core/qgsmessagelog.h#L39
-QgsMessageLogConsole.formatLogMessage: src/core/qgsmessagelog.h#L152
-QgsMessageLogConsole.logMessage: src/core/qgsmessagelog.h#L163
-QgsMessageLogConsole: src/core/qgsmessagelog.h#L131
-QgsMessageLogNotifyBlocker: src/core/qgsmessagelog.h#L101
+QgsMessageLogConsole.formatLogMessage: src/core/qgsmessagelog.h#L161
+QgsMessageLogConsole.logMessage: src/core/qgsmessagelog.h#L172
+QgsMessageLogConsole: src/core/qgsmessagelog.h#L140
+QgsMessageLogNotifyBlocker: src/core/qgsmessagelog.h#L110
QgsMessageOutput.appendMessage: src/core/qgsmessageoutput.h#L56
QgsMessageOutput.createMessageOutput: src/core/qgsmessageoutput.h#L81
QgsMessageOutput.setMessage: src/core/qgsmessageoutput.h#L53
@@ -10316,18 +10322,18 @@ QgsMetadataUtils.convertFromEsri: src/core/metadata/qgsmetadatautils.h#L41
QgsMetadataUtils: src/core/metadata/qgsmetadatautils.h#L34
QgsMimeDataUtils.QgsMimeDataUtils.Uri: src/core/qgsmimedatautils.h#L46
QgsMimeDataUtils.QgsMimeDataUtils.Uri: src/core/qgsmimedatautils.h#L53
-QgsMimeDataUtils.QgsMimeDataUtils.__repr__: src/core/qgsmimedatautils.h#L158
+QgsMimeDataUtils.QgsMimeDataUtils.__repr__: src/core/qgsmimedatautils.h#L164
QgsMimeDataUtils.QgsMimeDataUtils.data: src/core/qgsmimedatautils.h#L61
QgsMimeDataUtils.QgsMimeDataUtils.isValid: src/core/qgsmimedatautils.h#L58
QgsMimeDataUtils.QgsMimeDataUtils.mapLayer: src/core/qgsmimedatautils.h#L93
QgsMimeDataUtils.QgsMimeDataUtils.meshLayer: src/core/qgsmimedatautils.h#L82
QgsMimeDataUtils.QgsMimeDataUtils.rasterLayer: src/core/qgsmimedatautils.h#L75
QgsMimeDataUtils.QgsMimeDataUtils.vectorLayer: src/core/qgsmimedatautils.h#L68
-QgsMimeDataUtils.decodeUriList: src/core/qgsmimedatautils.h#L174
-QgsMimeDataUtils.encodeUriList: src/core/qgsmimedatautils.h#L170
-QgsMimeDataUtils.hasOriginatedFromCurrentAppInstance: src/core/qgsmimedatautils.h#L187
-QgsMimeDataUtils.isUriList: src/core/qgsmimedatautils.h#L172
-QgsMimeDataUtils.layerTreeNodesToUriList: src/core/qgsmimedatautils.h#L179
+QgsMimeDataUtils.decodeUriList: src/core/qgsmimedatautils.h#L180
+QgsMimeDataUtils.encodeUriList: src/core/qgsmimedatautils.h#L176
+QgsMimeDataUtils.hasOriginatedFromCurrentAppInstance: src/core/qgsmimedatautils.h#L193
+QgsMimeDataUtils.isUriList: src/core/qgsmimedatautils.h#L178
+QgsMimeDataUtils.layerTreeNodesToUriList: src/core/qgsmimedatautils.h#L185
QgsMimeDataUtils: src/core/qgsmimedatautils.h#L37
QgsMultiBandColorRenderer.block: src/core/raster/qgsmultibandcolorrenderer.h#L50
QgsMultiBandColorRenderer.blueBand: src/core/raster/qgsmultibandcolorrenderer.h#L56
@@ -10727,27 +10733,26 @@ QgsPageSizeRegistry.add: src/core/layout/qgspagesizeregistry.h#L83
QgsPageSizeRegistry.decodePageSize: src/core/layout/qgspagesizeregistry.h#L110
QgsPageSizeRegistry.find: src/core/layout/qgspagesizeregistry.h#L103
QgsPageSizeRegistry: src/core/layout/qgspagesizeregistry.h#L71
-QgsPaintEffect.begin: src/core/effects/qgspainteffect.h#L178
-QgsPaintEffect.boundingRect: src/core/effects/qgspainteffect.h#L282
-QgsPaintEffect.clone: src/core/effects/qgspainteffect.h#L124
-QgsPaintEffect.draw: src/core/effects/qgspainteffect.h#L231
-QgsPaintEffect.drawMode: src/core/effects/qgspainteffect.h#L208
-QgsPaintEffect.drawSource: src/core/effects/qgspainteffect.h#L240
-QgsPaintEffect.enabled: src/core/effects/qgspainteffect.h#L193
-QgsPaintEffect.end: src/core/effects/qgspainteffect.h#L186
-QgsPaintEffect.fixQPictureDpi: src/core/effects/qgspainteffect.h#L292
-QgsPaintEffect.imageOffset: src/core/effects/qgspainteffect.h#L271
-QgsPaintEffect.properties: src/core/effects/qgspainteffect.h#L133
-QgsPaintEffect.readProperties: src/core/effects/qgspainteffect.h#L141
-QgsPaintEffect.readProperties: src/core/effects/qgspainteffect.h#L160
-QgsPaintEffect.render: src/core/effects/qgspainteffect.h#L168
-QgsPaintEffect.saveProperties: src/core/effects/qgspainteffect.h#L152
-QgsPaintEffect.setDrawMode: src/core/effects/qgspainteffect.h#L216
-QgsPaintEffect.setEnabled: src/core/effects/qgspainteffect.h#L200
-QgsPaintEffect.source: src/core/effects/qgspainteffect.h#L249
-QgsPaintEffect.sourceAsImage: src/core/effects/qgspainteffect.h#L262
-QgsPaintEffect.type: src/core/effects/qgspainteffect.h#L118
-QgsPaintEffect: src/core/effects/qgspainteffect.h#L51
+QgsPaintEffect.begin: src/core/effects/qgspainteffect.h#L179
+QgsPaintEffect.boundingRect: src/core/effects/qgspainteffect.h#L283
+QgsPaintEffect.clone: src/core/effects/qgspainteffect.h#L125
+QgsPaintEffect.draw: src/core/effects/qgspainteffect.h#L232
+QgsPaintEffect.drawMode: src/core/effects/qgspainteffect.h#L209
+QgsPaintEffect.drawSource: src/core/effects/qgspainteffect.h#L241
+QgsPaintEffect.enabled: src/core/effects/qgspainteffect.h#L194
+QgsPaintEffect.end: src/core/effects/qgspainteffect.h#L187
+QgsPaintEffect.fixQPictureDpi: src/core/effects/qgspainteffect.h#L293
+QgsPaintEffect.imageOffset: src/core/effects/qgspainteffect.h#L272
+QgsPaintEffect.properties: src/core/effects/qgspainteffect.h#L134
+QgsPaintEffect.readProperties: src/core/effects/qgspainteffect.h#L142
+QgsPaintEffect.readProperties: src/core/effects/qgspainteffect.h#L161
+QgsPaintEffect.render: src/core/effects/qgspainteffect.h#L169
+QgsPaintEffect.saveProperties: src/core/effects/qgspainteffect.h#L153
+QgsPaintEffect.setDrawMode: src/core/effects/qgspainteffect.h#L217
+QgsPaintEffect.setEnabled: src/core/effects/qgspainteffect.h#L201
+QgsPaintEffect.sourceAsImage: src/core/effects/qgspainteffect.h#L263
+QgsPaintEffect.type: src/core/effects/qgspainteffect.h#L119
+QgsPaintEffect: src/core/effects/qgspainteffect.h#L52
QgsPaintEffectAbstractMetadata.createPaintEffect: src/core/effects/qgspainteffectregistry.h#L71
QgsPaintEffectAbstractMetadata.createWidget: src/core/effects/qgspainteffectregistry.h#L78
QgsPaintEffectAbstractMetadata.name: src/core/effects/qgspainteffectregistry.h#L57
@@ -11136,38 +11141,39 @@ QgsPointCloudExtentRenderer.startRender: src/core/pointcloud/qgspointcloudextent
QgsPointCloudExtentRenderer.stopRender: src/core/pointcloud/qgspointcloudextentrenderer.h#L52
QgsPointCloudExtentRenderer.type: src/core/pointcloud/qgspointcloudextentrenderer.h#L46
QgsPointCloudExtentRenderer: src/core/pointcloud/qgspointcloudextentrenderer.h#L33
-QgsPointCloudIndex.accessType: src/core/pointcloud/qgspointcloudindex.h#L454
-QgsPointCloudIndex.attributes: src/core/pointcloud/qgspointcloudindex.h#L518
+QgsPointCloudIndex.accessType: src/core/pointcloud/qgspointcloudindex.h#L457
+QgsPointCloudIndex.attributes: src/core/pointcloud/qgspointcloudindex.h#L521
QgsPointCloudIndex.bool: src/core/pointcloud/qgspointcloudindex.h#L423
-QgsPointCloudIndex.commitChanges: src/core/pointcloud/qgspointcloudindex.h#L648
-QgsPointCloudIndex.crs: src/core/pointcloud/qgspointcloudindex.h#L461
-QgsPointCloudIndex.error: src/core/pointcloud/qgspointcloudindex.h#L444
-QgsPointCloudIndex.extent: src/core/pointcloud/qgspointcloudindex.h#L558
-QgsPointCloudIndex.extraMetadata: src/core/pointcloud/qgspointcloudindex.h#L642
-QgsPointCloudIndex.getNode: src/core/pointcloud/qgspointcloudindex.h#L511
-QgsPointCloudIndex.hasNode: src/core/pointcloud/qgspointcloudindex.h#L504
-QgsPointCloudIndex.isModified: src/core/pointcloud/qgspointcloudindex.h#L651
-QgsPointCloudIndex.isValid: src/core/pointcloud/qgspointcloudindex.h#L437
-QgsPointCloudIndex.load: src/core/pointcloud/qgspointcloudindex.h#L430
-QgsPointCloudIndex.metadataStatistics: src/core/pointcloud/qgspointcloudindex.h#L482
-QgsPointCloudIndex.offset: src/core/pointcloud/qgspointcloudindex.h#L593
-QgsPointCloudIndex.originalMetadata: src/core/pointcloud/qgspointcloudindex.h#L475
-QgsPointCloudIndex.pointCount: src/core/pointcloud/qgspointcloudindex.h#L468
-QgsPointCloudIndex.root: src/core/pointcloud/qgspointcloudindex.h#L497
-QgsPointCloudIndex.rootNodeBounds: src/core/pointcloud/qgspointcloudindex.h#L579
-QgsPointCloudIndex.scale: src/core/pointcloud/qgspointcloudindex.h#L586
-QgsPointCloudIndex.setSubsetString: src/core/pointcloud/qgspointcloudindex.h#L609
-QgsPointCloudIndex.span: src/core/pointcloud/qgspointcloudindex.h#L600
-QgsPointCloudIndex.subsetString: src/core/pointcloud/qgspointcloudindex.h#L618
-QgsPointCloudIndex.updateNodeData: src/core/pointcloud/qgspointcloudindex.h#L551
-QgsPointCloudIndex.writeStatistics: src/core/pointcloud/qgspointcloudindex.h#L490
-QgsPointCloudIndex.zMax: src/core/pointcloud/qgspointcloudindex.h#L572
-QgsPointCloudIndex.zMin: src/core/pointcloud/qgspointcloudindex.h#L565
+QgsPointCloudIndex.commitChanges: src/core/pointcloud/qgspointcloudindex.h#L653
+QgsPointCloudIndex.crs: src/core/pointcloud/qgspointcloudindex.h#L464
+QgsPointCloudIndex.error: src/core/pointcloud/qgspointcloudindex.h#L447
+QgsPointCloudIndex.extent: src/core/pointcloud/qgspointcloudindex.h#L561
+QgsPointCloudIndex.extraMetadata: src/core/pointcloud/qgspointcloudindex.h#L645
+QgsPointCloudIndex.getNode: src/core/pointcloud/qgspointcloudindex.h#L514
+QgsPointCloudIndex.hasNode: src/core/pointcloud/qgspointcloudindex.h#L507
+QgsPointCloudIndex.isModified: src/core/pointcloud/qgspointcloudindex.h#L656
+QgsPointCloudIndex.isValid: src/core/pointcloud/qgspointcloudindex.h#L440
+QgsPointCloudIndex.load: src/core/pointcloud/qgspointcloudindex.h#L433
+QgsPointCloudIndex.metadataStatistics: src/core/pointcloud/qgspointcloudindex.h#L485
+QgsPointCloudIndex.offset: src/core/pointcloud/qgspointcloudindex.h#L596
+QgsPointCloudIndex.originalMetadata: src/core/pointcloud/qgspointcloudindex.h#L478
+QgsPointCloudIndex.pointCount: src/core/pointcloud/qgspointcloudindex.h#L471
+QgsPointCloudIndex.root: src/core/pointcloud/qgspointcloudindex.h#L500
+QgsPointCloudIndex.rootNodeBounds: src/core/pointcloud/qgspointcloudindex.h#L582
+QgsPointCloudIndex.scale: src/core/pointcloud/qgspointcloudindex.h#L589
+QgsPointCloudIndex.setSubsetString: src/core/pointcloud/qgspointcloudindex.h#L612
+QgsPointCloudIndex.span: src/core/pointcloud/qgspointcloudindex.h#L603
+QgsPointCloudIndex.subsetString: src/core/pointcloud/qgspointcloudindex.h#L621
+QgsPointCloudIndex.updateNodeData: src/core/pointcloud/qgspointcloudindex.h#L554
+QgsPointCloudIndex.writeStatistics: src/core/pointcloud/qgspointcloudindex.h#L493
+QgsPointCloudIndex.zMax: src/core/pointcloud/qgspointcloudindex.h#L575
+QgsPointCloudIndex.zMin: src/core/pointcloud/qgspointcloudindex.h#L568
QgsPointCloudIndex: src/core/pointcloud/qgspointcloudindex.h#L416
QgsPointCloudLayer.QgsPointCloudLayer.LayerOptions: src/core/pointcloud/qgspointcloudlayer.h#L61
QgsPointCloudLayer.QgsPointCloudLayer: src/core/pointcloud/qgspointcloudlayer.h#L112
QgsPointCloudLayer.__repr__: src/core/pointcloud/qgspointcloudlayer.h#L123
QgsPointCloudLayer.attributes: src/core/pointcloud/qgspointcloudlayer.h#L165
+QgsPointCloudLayer.chunkAttributeValuesChanged: src/core/pointcloud/qgspointcloudlayer.h#L359
QgsPointCloudLayer.clone: src/core/pointcloud/qgspointcloudlayer.h#L130
QgsPointCloudLayer.commitChanges: src/core/pointcloud/qgspointcloudlayer.h#L286
QgsPointCloudLayer.commitError: src/core/pointcloud/qgspointcloudlayer.h#L294
@@ -11856,6 +11862,7 @@ QgsProcessingContext.LayerDetails: src/core/processing/qgsprocessingcontext.h#L2
QgsProcessingContext.addLayerToLoadOnCompletion: src/core/processing/qgsprocessingcontext.h#L383
QgsProcessingContext.areaUnit: src/core/processing/qgsprocessingcontext.h#L208
QgsProcessingContext.asQgisProcessArguments: src/core/processing/qgsprocessingcontext.h#L731
+QgsProcessingContext.clearModelResult: src/core/processing/qgsprocessingcontext.h#L802
QgsProcessingContext.copyThreadSafeSettings: src/core/processing/qgsprocessingcontext.h#L89
QgsProcessingContext.currentTimeRange: src/core/processing/qgsprocessingcontext.h#L227
QgsProcessingContext.defaultEncoding: src/core/processing/qgsprocessingcontext.h#L492
@@ -11968,8 +11975,8 @@ QgsProcessingFeedback.reportError: src/core/processing/qgsprocessingfeedback.h#L
QgsProcessingFeedback.setProgressText: src/core/processing/qgsprocessingfeedback.h#L57
QgsProcessingFeedback.textLog: src/core/processing/qgsprocessingfeedback.h#L165
QgsProcessingFeedback: src/core/processing/qgsprocessingfeedback.h#L37
-QgsProcessingLayerPostProcessorInterface.postProcessLayer: src/core/processing/qgsprocessingcontext.h#L875
-QgsProcessingLayerPostProcessorInterface: src/core/processing/qgsprocessingcontext.h#L855
+QgsProcessingLayerPostProcessorInterface.postProcessLayer: src/core/processing/qgsprocessingcontext.h#L882
+QgsProcessingLayerPostProcessorInterface: src/core/processing/qgsprocessingcontext.h#L862
QgsProcessingModelAlgorithm.VariableDefinition: src/core/processing/models/qgsprocessingmodelalgorithm.h#L466
QgsProcessingModelAlgorithm.activateChildAlgorithm: src/core/processing/models/qgsprocessingmodelalgorithm.h#L158
QgsProcessingModelAlgorithm.addChildAlgorithm: src/core/processing/models/qgsprocessingmodelalgorithm.h#L124
@@ -13762,47 +13769,48 @@ QgsProviderConnectionModel.parent: src/core/qgsproviderconnectionmodel.h#L83
QgsProviderConnectionModel.rowCount: src/core/qgsproviderconnectionmodel.h#L84
QgsProviderConnectionModel.setAllowEmptyConnection: src/core/qgsproviderconnectionmodel.h#L74
QgsProviderConnectionModel: src/core/qgsproviderconnectionmodel.h#L38
-QgsProviderMetadata.__repr__: src/core/providers/qgsprovidermetadata.h#L802
+QgsProviderMetadata.__repr__: src/core/providers/qgsprovidermetadata.h#L809
QgsProviderMetadata.absoluteToRelativeUri: src/core/providers/qgsprovidermetadata.h#L600
QgsProviderMetadata.boolParameter: src/core/providers/qgsprovidermetadata.h#L479
QgsProviderMetadata.capabilities: src/core/providers/qgsprovidermetadata.h#L257
+QgsProviderMetadata.cleanUri: src/core/providers/qgsprovidermetadata.h#L620
QgsProviderMetadata.cleanupProvider: src/core/providers/qgsprovidermetadata.h#L338
-QgsProviderMetadata.connectionChanged: src/core/providers/qgsprovidermetadata.h#L834
-QgsProviderMetadata.connectionCreated: src/core/providers/qgsprovidermetadata.h#L817
-QgsProviderMetadata.connectionDeleted: src/core/providers/qgsprovidermetadata.h#L825
-QgsProviderMetadata.createConnection: src/core/providers/qgsprovidermetadata.h#L774
-QgsProviderMetadata.createConnection: src/core/providers/qgsprovidermetadata.h#L782
+QgsProviderMetadata.connectionChanged: src/core/providers/qgsprovidermetadata.h#L841
+QgsProviderMetadata.connectionCreated: src/core/providers/qgsprovidermetadata.h#L824
+QgsProviderMetadata.connectionDeleted: src/core/providers/qgsprovidermetadata.h#L832
+QgsProviderMetadata.createConnection: src/core/providers/qgsprovidermetadata.h#L781
+QgsProviderMetadata.createConnection: src/core/providers/qgsprovidermetadata.h#L789
QgsProviderMetadata.createDatabase: src/core/providers/qgsprovidermetadata.h#L514
-QgsProviderMetadata.createDb: src/core/providers/qgsprovidermetadata.h#L710
+QgsProviderMetadata.createDb: src/core/providers/qgsprovidermetadata.h#L717
QgsProviderMetadata.createMeshData: src/core/providers/qgsprovidermetadata.h#L536
QgsProviderMetadata.createMeshData: src/core/providers/qgsprovidermetadata.h#L548
QgsProviderMetadata.createProvider: src/core/providers/qgsprovidermetadata.h#L461
QgsProviderMetadata.createRasterDataProvider: src/core/providers/qgsprovidermetadata.h#L520
-QgsProviderMetadata.createTransaction: src/core/providers/qgsprovidermetadata.h#L716
+QgsProviderMetadata.createTransaction: src/core/providers/qgsprovidermetadata.h#L723
QgsProviderMetadata.decodeUri: src/core/providers/qgsprovidermetadata.h#L577
-QgsProviderMetadata.deleteConnection: src/core/providers/qgsprovidermetadata.h#L790
-QgsProviderMetadata.deleteStyleById: src/core/providers/qgsprovidermetadata.h#L657
+QgsProviderMetadata.deleteConnection: src/core/providers/qgsprovidermetadata.h#L797
+QgsProviderMetadata.deleteStyleById: src/core/providers/qgsprovidermetadata.h#L664
QgsProviderMetadata.description: src/core/providers/qgsprovidermetadata.h#L243
QgsProviderMetadata.encodeUri: src/core/providers/qgsprovidermetadata.h#L587
QgsProviderMetadata.filters: src/core/providers/qgsprovidermetadata.h#L347
-QgsProviderMetadata.findConnection: src/core/providers/qgsprovidermetadata.h#L749
-QgsProviderMetadata.getStyleById: src/core/providers/qgsprovidermetadata.h#L651
+QgsProviderMetadata.findConnection: src/core/providers/qgsprovidermetadata.h#L756
+QgsProviderMetadata.getStyleById: src/core/providers/qgsprovidermetadata.h#L658
QgsProviderMetadata.icon: src/core/providers/qgsprovidermetadata.h#L250
QgsProviderMetadata.initProvider: src/core/providers/qgsprovidermetadata.h#L332
QgsProviderMetadata.key: src/core/providers/qgsprovidermetadata.h#L236
QgsProviderMetadata.library: src/core/providers/qgsprovidermetadata.h#L318
-QgsProviderMetadata.listStyles: src/core/providers/qgsprovidermetadata.h#L628
-QgsProviderMetadata.loadStoredStyle: src/core/providers/qgsprovidermetadata.h#L688
-QgsProviderMetadata.loadStyle: src/core/providers/qgsprovidermetadata.h#L678
+QgsProviderMetadata.listStyles: src/core/providers/qgsprovidermetadata.h#L635
+QgsProviderMetadata.loadStoredStyle: src/core/providers/qgsprovidermetadata.h#L695
+QgsProviderMetadata.loadStyle: src/core/providers/qgsprovidermetadata.h#L685
QgsProviderMetadata.priorityForUri: src/core/providers/qgsprovidermetadata.h#L371
QgsProviderMetadata.providerCapabilities: src/core/providers/qgsprovidermetadata.h#L264
QgsProviderMetadata.relativeToAbsoluteUri: src/core/providers/qgsprovidermetadata.h#L613
-QgsProviderMetadata.saveConnection: src/core/providers/qgsprovidermetadata.h#L799
-QgsProviderMetadata.saveLayerMetadata: src/core/providers/qgsprovidermetadata.h#L704
-QgsProviderMetadata.saveStyle: src/core/providers/qgsprovidermetadata.h#L670
+QgsProviderMetadata.saveConnection: src/core/providers/qgsprovidermetadata.h#L806
+QgsProviderMetadata.saveLayerMetadata: src/core/providers/qgsprovidermetadata.h#L711
+QgsProviderMetadata.saveStyle: src/core/providers/qgsprovidermetadata.h#L677
QgsProviderMetadata.setBoolParameter: src/core/providers/qgsprovidermetadata.h#L471
QgsProviderMetadata.sidecarFilesForUri: src/core/providers/qgsprovidermetadata.h#L424
-QgsProviderMetadata.styleExists: src/core/providers/qgsprovidermetadata.h#L642
+QgsProviderMetadata.styleExists: src/core/providers/qgsprovidermetadata.h#L649
QgsProviderMetadata.suggestGroupNameForUri: src/core/providers/qgsprovidermetadata.h#L450
QgsProviderMetadata.supportedLayerTypes: src/core/providers/qgsprovidermetadata.h#L274
QgsProviderMetadata.uriIsBlocklisted: src/core/providers/qgsprovidermetadata.h#L401
@@ -14867,56 +14875,56 @@ QgsRecentColorScheme: src/core/qgscolorscheme.h#L218
QgsRecentStyleHandler.pushRecentSymbol: src/core/qgsrecentstylehandler.h#L75
QgsRecentStyleHandler.recentSymbol: src/core/qgsrecentstylehandler.h#L85
QgsRecentStyleHandler: src/core/qgsrecentstylehandler.h#L38
-QgsRectangle.QVariant: src/core/geometry/qgsrectangle.h#L626
-QgsRectangle.QgsRectangle: src/core/geometry/qgsrectangle.h#L76
-QgsRectangle.__repr__: src/core/geometry/qgsrectangle.h#L637
-QgsRectangle.area: src/core/geometry/qgsrectangle.h#L264
-QgsRectangle.asPolygon: src/core/geometry/qgsrectangle.h#L560
-QgsRectangle.asWktCoordinates: src/core/geometry/qgsrectangle.h#L535
-QgsRectangle.asWktPolygon: src/core/geometry/qgsrectangle.h#L540
-QgsRectangle.buffered: src/core/geometry/qgsrectangle.h#L363
-QgsRectangle.center: src/core/geometry/qgsrectangle.h#L275
-QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L442
-QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L459
-QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L468
-QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L406
-QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L415
-QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L426
-QgsRectangle.distance: src/core/geometry/qgsrectangle.h#L479
-QgsRectangle.fromCenterAndSize: src/core/geometry/qgsrectangle.h#L125
-QgsRectangle.fromWkt: src/core/geometry/qgsrectangle.h#L119
-QgsRectangle.grow: src/core/geometry/qgsrectangle.h#L328
-QgsRectangle.height: src/core/geometry/qgsrectangle.h#L256
-QgsRectangle.include: src/core/geometry/qgsrectangle.h#L351
-QgsRectangle.intersect: src/core/geometry/qgsrectangle.h#L379
-QgsRectangle.intersects: src/core/geometry/qgsrectangle.h#L398
-QgsRectangle.invert: src/core/geometry/qgsrectangle.h#L614
-QgsRectangle.isEmpty: src/core/geometry/qgsrectangle.h#L513
-QgsRectangle.isFinite: src/core/geometry/qgsrectangle.h#L605
-QgsRectangle.isNull: src/core/geometry/qgsrectangle.h#L530
-QgsRectangle.normalize: src/core/geometry/qgsrectangle.h#L242
-QgsRectangle.perimeter: src/core/geometry/qgsrectangle.h#L270
-QgsRectangle.scale: src/core/geometry/qgsrectangle.h#L295
-QgsRectangle.scale: src/core/geometry/qgsrectangle.h#L308
-QgsRectangle.scaled: src/core/geometry/qgsrectangle.h#L314
-QgsRectangle.set: src/core/geometry/qgsrectangle.h#L141
-QgsRectangle.set: src/core/geometry/qgsrectangle.h#L157
-QgsRectangle.setMinimal: src/core/geometry/qgsrectangle.h#L204
-QgsRectangle.setNull: src/core/geometry/qgsrectangle.h#L193
-QgsRectangle.setXMaximum: src/core/geometry/qgsrectangle.h#L167
-QgsRectangle.setXMinimum: src/core/geometry/qgsrectangle.h#L162
-QgsRectangle.setYMaximum: src/core/geometry/qgsrectangle.h#L177
-QgsRectangle.setYMinimum: src/core/geometry/qgsrectangle.h#L172
-QgsRectangle.snappedToGrid: src/core/geometry/qgsrectangle.h#L634
-QgsRectangle.toBox3d: src/core/geometry/qgsrectangle.h#L620
-QgsRectangle.toRectF: src/core/geometry/qgsrectangle.h#L548
-QgsRectangle.toString: src/core/geometry/qgsrectangle.h#L555
-QgsRectangle.width: src/core/geometry/qgsrectangle.h#L249
-QgsRectangle.xMaximum: src/core/geometry/qgsrectangle.h#L209
-QgsRectangle.xMinimum: src/core/geometry/qgsrectangle.h#L214
-QgsRectangle.yMaximum: src/core/geometry/qgsrectangle.h#L219
-QgsRectangle.yMinimum: src/core/geometry/qgsrectangle.h#L224
-QgsRectangle: src/core/geometry/qgsrectangle.h#L41
+QgsRectangle.QVariant: src/core/geometry/qgsrectangle.h#L628
+QgsRectangle.QgsRectangle: src/core/geometry/qgsrectangle.h#L78
+QgsRectangle.__repr__: src/core/geometry/qgsrectangle.h#L639
+QgsRectangle.area: src/core/geometry/qgsrectangle.h#L266
+QgsRectangle.asPolygon: src/core/geometry/qgsrectangle.h#L562
+QgsRectangle.asWktCoordinates: src/core/geometry/qgsrectangle.h#L537
+QgsRectangle.asWktPolygon: src/core/geometry/qgsrectangle.h#L542
+QgsRectangle.buffered: src/core/geometry/qgsrectangle.h#L365
+QgsRectangle.center: src/core/geometry/qgsrectangle.h#L277
+QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L444
+QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L461
+QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L470
+QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L408
+QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L417
+QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L428
+QgsRectangle.distance: src/core/geometry/qgsrectangle.h#L481
+QgsRectangle.fromCenterAndSize: src/core/geometry/qgsrectangle.h#L127
+QgsRectangle.fromWkt: src/core/geometry/qgsrectangle.h#L121
+QgsRectangle.grow: src/core/geometry/qgsrectangle.h#L330
+QgsRectangle.height: src/core/geometry/qgsrectangle.h#L258
+QgsRectangle.include: src/core/geometry/qgsrectangle.h#L353
+QgsRectangle.intersect: src/core/geometry/qgsrectangle.h#L381
+QgsRectangle.intersects: src/core/geometry/qgsrectangle.h#L400
+QgsRectangle.invert: src/core/geometry/qgsrectangle.h#L616
+QgsRectangle.isEmpty: src/core/geometry/qgsrectangle.h#L515
+QgsRectangle.isFinite: src/core/geometry/qgsrectangle.h#L607
+QgsRectangle.isNull: src/core/geometry/qgsrectangle.h#L532
+QgsRectangle.normalize: src/core/geometry/qgsrectangle.h#L244
+QgsRectangle.perimeter: src/core/geometry/qgsrectangle.h#L272
+QgsRectangle.scale: src/core/geometry/qgsrectangle.h#L297
+QgsRectangle.scale: src/core/geometry/qgsrectangle.h#L310
+QgsRectangle.scaled: src/core/geometry/qgsrectangle.h#L316
+QgsRectangle.set: src/core/geometry/qgsrectangle.h#L143
+QgsRectangle.set: src/core/geometry/qgsrectangle.h#L159
+QgsRectangle.setMinimal: src/core/geometry/qgsrectangle.h#L206
+QgsRectangle.setNull: src/core/geometry/qgsrectangle.h#L195
+QgsRectangle.setXMaximum: src/core/geometry/qgsrectangle.h#L169
+QgsRectangle.setXMinimum: src/core/geometry/qgsrectangle.h#L164
+QgsRectangle.setYMaximum: src/core/geometry/qgsrectangle.h#L179
+QgsRectangle.setYMinimum: src/core/geometry/qgsrectangle.h#L174
+QgsRectangle.snappedToGrid: src/core/geometry/qgsrectangle.h#L636
+QgsRectangle.toBox3d: src/core/geometry/qgsrectangle.h#L622
+QgsRectangle.toRectF: src/core/geometry/qgsrectangle.h#L550
+QgsRectangle.toString: src/core/geometry/qgsrectangle.h#L557
+QgsRectangle.width: src/core/geometry/qgsrectangle.h#L251
+QgsRectangle.xMaximum: src/core/geometry/qgsrectangle.h#L211
+QgsRectangle.xMinimum: src/core/geometry/qgsrectangle.h#L216
+QgsRectangle.yMaximum: src/core/geometry/qgsrectangle.h#L221
+QgsRectangle.yMinimum: src/core/geometry/qgsrectangle.h#L226
+QgsRectangle: src/core/geometry/qgsrectangle.h#L43
QgsReferencedGeometry.QVariant: src/core/geometry/qgsreferencedgeometry.h#L164
QgsReferencedGeometry.__repr__: src/core/geometry/qgsreferencedgeometry.h#L181
QgsReferencedGeometry.fromReferencedPointXY: src/core/geometry/qgsreferencedgeometry.h#L172
@@ -15320,48 +15328,48 @@ QgsReportSectionLayout.setBodyEnabled: src/core/layout/qgsreportsectionlayout.h#
QgsReportSectionLayout.type: src/core/layout/qgsreportsectionlayout.h#L43
QgsReportSectionLayout.writePropertiesToElement: src/core/layout/qgsreportsectionlayout.h#L87
QgsReportSectionLayout: src/core/layout/qgsreportsectionlayout.h#L33
-QgsRuleBasedLabeling.QgsRuleBasedLabeling: src/core/labeling/qgsrulebasedlabeling.h#L359
-QgsRuleBasedLabeling.Rule.accept: src/core/labeling/qgsrulebasedlabeling.h#L304
-QgsRuleBasedLabeling.Rule.active: src/core/labeling/qgsrulebasedlabeling.h#L119
-QgsRuleBasedLabeling.Rule.appendChild: src/core/labeling/qgsrulebasedlabeling.h#L220
-QgsRuleBasedLabeling.Rule.clone: src/core/labeling/qgsrulebasedlabeling.h#L242
-QgsRuleBasedLabeling.Rule.create: src/core/labeling/qgsrulebasedlabeling.h#L253
-QgsRuleBasedLabeling.Rule.dependsOnScale: src/core/labeling/qgsrulebasedlabeling.h#L81
-QgsRuleBasedLabeling.Rule.descendants: src/core/labeling/qgsrulebasedlabeling.h#L203
-QgsRuleBasedLabeling.Rule.description: src/core/labeling/qgsrulebasedlabeling.h#L112
-QgsRuleBasedLabeling.Rule.filterExpression: src/core/labeling/qgsrulebasedlabeling.h#L105
-QgsRuleBasedLabeling.Rule.findRuleByKey: src/core/labeling/qgsrulebasedlabeling.h#L229
-QgsRuleBasedLabeling.Rule.insertChild: src/core/labeling/qgsrulebasedlabeling.h#L223
-QgsRuleBasedLabeling.Rule.isElse: src/core/labeling/qgsrulebasedlabeling.h#L126
-QgsRuleBasedLabeling.Rule.maximumScale: src/core/labeling/qgsrulebasedlabeling.h#L90
-QgsRuleBasedLabeling.Rule.minimumScale: src/core/labeling/qgsrulebasedlabeling.h#L99
-QgsRuleBasedLabeling.Rule.parent: src/core/labeling/qgsrulebasedlabeling.h#L217
-QgsRuleBasedLabeling.Rule.removeChildAt: src/core/labeling/qgsrulebasedlabeling.h#L226
-QgsRuleBasedLabeling.Rule.requiresAdvancedEffects: src/core/labeling/qgsrulebasedlabeling.h#L293
-QgsRuleBasedLabeling.Rule.ruleKey: src/core/labeling/qgsrulebasedlabeling.h#L129
-QgsRuleBasedLabeling.Rule.save: src/core/labeling/qgsrulebasedlabeling.h#L256
-QgsRuleBasedLabeling.Rule.setActive: src/core/labeling/qgsrulebasedlabeling.h#L170
-QgsRuleBasedLabeling.Rule.setDescription: src/core/labeling/qgsrulebasedlabeling.h#L164
-QgsRuleBasedLabeling.Rule.setFilterExpression: src/core/labeling/qgsrulebasedlabeling.h#L157
-QgsRuleBasedLabeling.Rule.setIsElse: src/core/labeling/qgsrulebasedlabeling.h#L177
-QgsRuleBasedLabeling.Rule.setMaximumScale: src/core/labeling/qgsrulebasedlabeling.h#L150
-QgsRuleBasedLabeling.Rule.setMinimumScale: src/core/labeling/qgsrulebasedlabeling.h#L141
-QgsRuleBasedLabeling.Rule.setRuleKey: src/core/labeling/qgsrulebasedlabeling.h#L180
-QgsRuleBasedLabeling.Rule.setSettings: src/core/labeling/qgsrulebasedlabeling.h#L132
-QgsRuleBasedLabeling.Rule.settings: src/core/labeling/qgsrulebasedlabeling.h#L74
-QgsRuleBasedLabeling.Rule: src/core/labeling/qgsrulebasedlabeling.h#L53
-QgsRuleBasedLabeling.accept: src/core/labeling/qgsrulebasedlabeling.h#L377
-QgsRuleBasedLabeling.clone: src/core/labeling/qgsrulebasedlabeling.h#L371
-QgsRuleBasedLabeling.create: src/core/labeling/qgsrulebasedlabeling.h#L366
-QgsRuleBasedLabeling.multiplyOpacity: src/core/labeling/qgsrulebasedlabeling.h#L389
-QgsRuleBasedLabeling.requiresAdvancedEffects: src/core/labeling/qgsrulebasedlabeling.h#L387
-QgsRuleBasedLabeling.rootRule: src/core/labeling/qgsrulebasedlabeling.h#L362
-QgsRuleBasedLabeling.save: src/core/labeling/qgsrulebasedlabeling.h#L372
-QgsRuleBasedLabeling.setSettings: src/core/labeling/qgsrulebasedlabeling.h#L386
-QgsRuleBasedLabeling.settings: src/core/labeling/qgsrulebasedlabeling.h#L376
-QgsRuleBasedLabeling.subProviders: src/core/labeling/qgsrulebasedlabeling.h#L375
-QgsRuleBasedLabeling.toSld: src/core/labeling/qgsrulebasedlabeling.h#L388
-QgsRuleBasedLabeling.type: src/core/labeling/qgsrulebasedlabeling.h#L370
+QgsRuleBasedLabeling.QgsRuleBasedLabeling: src/core/labeling/qgsrulebasedlabeling.h#L366
+QgsRuleBasedLabeling.Rule.accept: src/core/labeling/qgsrulebasedlabeling.h#L311
+QgsRuleBasedLabeling.Rule.active: src/core/labeling/qgsrulebasedlabeling.h#L122
+QgsRuleBasedLabeling.Rule.appendChild: src/core/labeling/qgsrulebasedlabeling.h#L223
+QgsRuleBasedLabeling.Rule.clone: src/core/labeling/qgsrulebasedlabeling.h#L249
+QgsRuleBasedLabeling.Rule.create: src/core/labeling/qgsrulebasedlabeling.h#L260
+QgsRuleBasedLabeling.Rule.dependsOnScale: src/core/labeling/qgsrulebasedlabeling.h#L84
+QgsRuleBasedLabeling.Rule.descendants: src/core/labeling/qgsrulebasedlabeling.h#L206
+QgsRuleBasedLabeling.Rule.description: src/core/labeling/qgsrulebasedlabeling.h#L115
+QgsRuleBasedLabeling.Rule.filterExpression: src/core/labeling/qgsrulebasedlabeling.h#L108
+QgsRuleBasedLabeling.Rule.findRuleByKey: src/core/labeling/qgsrulebasedlabeling.h#L232
+QgsRuleBasedLabeling.Rule.insertChild: src/core/labeling/qgsrulebasedlabeling.h#L226
+QgsRuleBasedLabeling.Rule.isElse: src/core/labeling/qgsrulebasedlabeling.h#L129
+QgsRuleBasedLabeling.Rule.maximumScale: src/core/labeling/qgsrulebasedlabeling.h#L93
+QgsRuleBasedLabeling.Rule.minimumScale: src/core/labeling/qgsrulebasedlabeling.h#L102
+QgsRuleBasedLabeling.Rule.parent: src/core/labeling/qgsrulebasedlabeling.h#L220
+QgsRuleBasedLabeling.Rule.removeChildAt: src/core/labeling/qgsrulebasedlabeling.h#L229
+QgsRuleBasedLabeling.Rule.requiresAdvancedEffects: src/core/labeling/qgsrulebasedlabeling.h#L300
+QgsRuleBasedLabeling.Rule.ruleKey: src/core/labeling/qgsrulebasedlabeling.h#L132
+QgsRuleBasedLabeling.Rule.save: src/core/labeling/qgsrulebasedlabeling.h#L263
+QgsRuleBasedLabeling.Rule.setActive: src/core/labeling/qgsrulebasedlabeling.h#L173
+QgsRuleBasedLabeling.Rule.setDescription: src/core/labeling/qgsrulebasedlabeling.h#L167
+QgsRuleBasedLabeling.Rule.setFilterExpression: src/core/labeling/qgsrulebasedlabeling.h#L160
+QgsRuleBasedLabeling.Rule.setIsElse: src/core/labeling/qgsrulebasedlabeling.h#L180
+QgsRuleBasedLabeling.Rule.setMaximumScale: src/core/labeling/qgsrulebasedlabeling.h#L153
+QgsRuleBasedLabeling.Rule.setMinimumScale: src/core/labeling/qgsrulebasedlabeling.h#L144
+QgsRuleBasedLabeling.Rule.setRuleKey: src/core/labeling/qgsrulebasedlabeling.h#L183
+QgsRuleBasedLabeling.Rule.setSettings: src/core/labeling/qgsrulebasedlabeling.h#L135
+QgsRuleBasedLabeling.Rule.settings: src/core/labeling/qgsrulebasedlabeling.h#L77
+QgsRuleBasedLabeling.Rule: src/core/labeling/qgsrulebasedlabeling.h#L56
+QgsRuleBasedLabeling.accept: src/core/labeling/qgsrulebasedlabeling.h#L384
+QgsRuleBasedLabeling.clone: src/core/labeling/qgsrulebasedlabeling.h#L378
+QgsRuleBasedLabeling.create: src/core/labeling/qgsrulebasedlabeling.h#L373
+QgsRuleBasedLabeling.multiplyOpacity: src/core/labeling/qgsrulebasedlabeling.h#L396
+QgsRuleBasedLabeling.requiresAdvancedEffects: src/core/labeling/qgsrulebasedlabeling.h#L394
+QgsRuleBasedLabeling.rootRule: src/core/labeling/qgsrulebasedlabeling.h#L369
+QgsRuleBasedLabeling.save: src/core/labeling/qgsrulebasedlabeling.h#L379
+QgsRuleBasedLabeling.setSettings: src/core/labeling/qgsrulebasedlabeling.h#L393
+QgsRuleBasedLabeling.settings: src/core/labeling/qgsrulebasedlabeling.h#L383
+QgsRuleBasedLabeling.subProviders: src/core/labeling/qgsrulebasedlabeling.h#L382
+QgsRuleBasedLabeling.toSld: src/core/labeling/qgsrulebasedlabeling.h#L395
+QgsRuleBasedLabeling.type: src/core/labeling/qgsrulebasedlabeling.h#L377
QgsRuleBasedLabeling: src/core/labeling/qgsrulebasedlabeling.h#L41
QgsRuleBasedRenderer.QgsRuleBasedRenderer.RenderLevel: src/core/symbology/qgsrulebasedrenderer.h#L102
QgsRuleBasedRenderer.Rule.accept: src/core/symbology/qgsrulebasedrenderer.h#L460
@@ -15797,7 +15805,7 @@ QgsScientificNumericFormat.setNumberDecimalPlaces: src/core/numericformats/qgssc
QgsScientificNumericFormat.sortKey: src/core/numericformats/qgsscientificnumericformat.h#L39
QgsScientificNumericFormat.visibleName: src/core/numericformats/qgsscientificnumericformat.h#L38
QgsScientificNumericFormat: src/core/numericformats/qgsscientificnumericformat.h#L28
-QgsScopeLogger: src/core/qgslogger.h#L135
+QgsScopeLogger: src/core/qgslogger.h#L139
QgsScopedExpressionFunction.clone: src/core/qgsexpressioncontext.h#L87
QgsScopedExpressionFunction.func: src/core/qgsexpressioncontext.h#L82
QgsScopedExpressionFunction.isStatic: src/core/qgsexpressioncontext.h#L93
@@ -15856,37 +15864,37 @@ QgsSensorRegistry.removeSensorType: src/core/sensor/qgssensorregistry.h#L187
QgsSensorRegistry.sensorAdded: src/core/sensor/qgssensorregistry.h#L205
QgsSensorRegistry.sensorMetadata: src/core/sensor/qgssensorregistry.h#L161
QgsSensorRegistry: src/core/sensor/qgssensorregistry.h#L131
-QgsSensorThingsExpansionDefinition.__repr__: src/core/providers/sensorthings/qgssensorthingsutils.h#L314
-QgsSensorThingsExpansionDefinition.asQueryString: src/core/providers/sensorthings/qgssensorthingsutils.h#L308
-QgsSensorThingsExpansionDefinition.childEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L214
-QgsSensorThingsExpansionDefinition.defaultDefinitionForEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L202
-QgsSensorThingsExpansionDefinition.filter: src/core/providers/sensorthings/qgssensorthingsutils.h#L278
-QgsSensorThingsExpansionDefinition.fromString: src/core/providers/sensorthings/qgssensorthingsutils.h#L299
-QgsSensorThingsExpansionDefinition.isValid: src/core/providers/sensorthings/qgssensorthingsutils.h#L207
-QgsSensorThingsExpansionDefinition.limit: src/core/providers/sensorthings/qgssensorthingsutils.h#L262
-QgsSensorThingsExpansionDefinition.orderBy: src/core/providers/sensorthings/qgssensorthingsutils.h#L229
-QgsSensorThingsExpansionDefinition.setChildEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L221
-QgsSensorThingsExpansionDefinition.setFilter: src/core/providers/sensorthings/qgssensorthingsutils.h#L285
-QgsSensorThingsExpansionDefinition.setLimit: src/core/providers/sensorthings/qgssensorthingsutils.h#L271
-QgsSensorThingsExpansionDefinition.setOrderBy: src/core/providers/sensorthings/qgssensorthingsutils.h#L237
-QgsSensorThingsExpansionDefinition.setSortOrder: src/core/providers/sensorthings/qgssensorthingsutils.h#L253
-QgsSensorThingsExpansionDefinition.sortOrder: src/core/providers/sensorthings/qgssensorthingsutils.h#L245
-QgsSensorThingsExpansionDefinition.toString: src/core/providers/sensorthings/qgssensorthingsutils.h#L292
-QgsSensorThingsExpansionDefinition: src/core/providers/sensorthings/qgssensorthingsutils.h#L185
-QgsSensorThingsUtils.asQueryString: src/core/providers/sensorthings/qgssensorthingsutils.h#L174
-QgsSensorThingsUtils.combineFilters: src/core/providers/sensorthings/qgssensorthingsutils.h#L137
+QgsSensorThingsExpansionDefinition.__repr__: src/core/providers/sensorthings/qgssensorthingsutils.h#L317
+QgsSensorThingsExpansionDefinition.asQueryString: src/core/providers/sensorthings/qgssensorthingsutils.h#L311
+QgsSensorThingsExpansionDefinition.childEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L217
+QgsSensorThingsExpansionDefinition.defaultDefinitionForEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L205
+QgsSensorThingsExpansionDefinition.filter: src/core/providers/sensorthings/qgssensorthingsutils.h#L281
+QgsSensorThingsExpansionDefinition.fromString: src/core/providers/sensorthings/qgssensorthingsutils.h#L302
+QgsSensorThingsExpansionDefinition.isValid: src/core/providers/sensorthings/qgssensorthingsutils.h#L210
+QgsSensorThingsExpansionDefinition.limit: src/core/providers/sensorthings/qgssensorthingsutils.h#L265
+QgsSensorThingsExpansionDefinition.orderBy: src/core/providers/sensorthings/qgssensorthingsutils.h#L232
+QgsSensorThingsExpansionDefinition.setChildEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L224
+QgsSensorThingsExpansionDefinition.setFilter: src/core/providers/sensorthings/qgssensorthingsutils.h#L288
+QgsSensorThingsExpansionDefinition.setLimit: src/core/providers/sensorthings/qgssensorthingsutils.h#L274
+QgsSensorThingsExpansionDefinition.setOrderBy: src/core/providers/sensorthings/qgssensorthingsutils.h#L240
+QgsSensorThingsExpansionDefinition.setSortOrder: src/core/providers/sensorthings/qgssensorthingsutils.h#L256
+QgsSensorThingsExpansionDefinition.sortOrder: src/core/providers/sensorthings/qgssensorthingsutils.h#L248
+QgsSensorThingsExpansionDefinition.toString: src/core/providers/sensorthings/qgssensorthingsutils.h#L295
+QgsSensorThingsExpansionDefinition: src/core/providers/sensorthings/qgssensorthingsutils.h#L188
+QgsSensorThingsUtils.asQueryString: src/core/providers/sensorthings/qgssensorthingsutils.h#L177
+QgsSensorThingsUtils.combineFilters: src/core/providers/sensorthings/qgssensorthingsutils.h#L140
QgsSensorThingsUtils.displayString: src/core/providers/sensorthings/qgssensorthingsutils.h#L59
QgsSensorThingsUtils.entitySetStringToEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L66
QgsSensorThingsUtils.entityToSetString: src/core/providers/sensorthings/qgssensorthingsutils.h#L73
-QgsSensorThingsUtils.entityTypeHasGeometry: src/core/providers/sensorthings/qgssensorthingsutils.h#L103
-QgsSensorThingsUtils.fieldsForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L85
-QgsSensorThingsUtils.fieldsForExpandedEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L93
-QgsSensorThingsUtils.filterForExtent: src/core/providers/sensorthings/qgssensorthingsutils.h#L128
-QgsSensorThingsUtils.filterForWkbType: src/core/providers/sensorthings/qgssensorthingsutils.h#L118
-QgsSensorThingsUtils.geometryFieldForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L98
-QgsSensorThingsUtils.geometryTypeForEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L112
+QgsSensorThingsUtils.entityTypeHasGeometry: src/core/providers/sensorthings/qgssensorthingsutils.h#L106
+QgsSensorThingsUtils.fieldsForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L88
+QgsSensorThingsUtils.fieldsForExpandedEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L96
+QgsSensorThingsUtils.filterForExtent: src/core/providers/sensorthings/qgssensorthingsutils.h#L131
+QgsSensorThingsUtils.filterForWkbType: src/core/providers/sensorthings/qgssensorthingsutils.h#L121
+QgsSensorThingsUtils.geometryFieldForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L101
+QgsSensorThingsUtils.geometryTypeForEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L115
QgsSensorThingsUtils.propertiesForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L80
-QgsSensorThingsUtils.relationshipCardinality: src/core/providers/sensorthings/qgssensorthingsutils.h#L165
+QgsSensorThingsUtils.relationshipCardinality: src/core/providers/sensorthings/qgssensorthingsutils.h#L168
QgsSensorThingsUtils.stringToEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L52
QgsSensorThingsUtils: src/core/providers/sensorthings/qgssensorthingsutils.h#L33
QgsSerialPortSensor.QgsSerialPortSensor: src/core/sensor/qgsiodevicesensor.h#L241
@@ -16042,10 +16050,10 @@ QgsSettingsRegistry.removeSubRegistry: src/core/settings/qgssettingsregistry.h#L
QgsSettingsRegistry.settingsEntry: src/core/settings/qgssettingsregistry.h#L55
QgsSettingsRegistry: src/core/settings/qgssettingsregistry.h#L38
QgsSettingsRegistryCore: src/core/settings/qgssettingsregistrycore.h#L43
-QgsSettingsTree.createPluginTreeNode: src/core/settings/qgssettingstree.h#L81
-QgsSettingsTree.node: src/core/settings/qgssettingstree.h#L76
+QgsSettingsTree.createPluginTreeNode: src/core/settings/qgssettingstree.h#L82
+QgsSettingsTree.node: src/core/settings/qgssettingstree.h#L77
QgsSettingsTree.treeRoot: src/core/settings/qgssettingstree.h#L38
-QgsSettingsTree.unregisterPluginTreeNode: src/core/settings/qgssettingstree.h#L87
+QgsSettingsTree.unregisterPluginTreeNode: src/core/settings/qgssettingstree.h#L88
QgsSettingsTree: src/core/settings/qgssettingstree.h#L30
QgsSettingsTreeNamedListNode.deleteAllItems: src/core/settings/qgssettingstreenode.h#L240
QgsSettingsTreeNamedListNode.deleteItem: src/core/settings/qgssettingstreenode.h#L232
@@ -16378,6 +16386,7 @@ QgsSingleBandPseudoColorRenderer.shader: src/core/raster/qgssinglebandpseudocolo
QgsSingleBandPseudoColorRenderer.toSld: src/core/raster/qgssinglebandpseudocolorrenderer.h#L84
QgsSingleBandPseudoColorRenderer.writeXml: src/core/raster/qgssinglebandpseudocolorrenderer.h#L80
QgsSingleBandPseudoColorRenderer: src/core/raster/qgssinglebandpseudocolorrenderer.h#L34
+QgsSingleBoxScaleBarRenderer.applyDefaultSettings: src/core/scalebar/qgssingleboxscalebarrenderer.h#L46
QgsSingleBoxScaleBarRenderer.clone: src/core/scalebar/qgssingleboxscalebarrenderer.h#L40
QgsSingleBoxScaleBarRenderer.draw: src/core/scalebar/qgssingleboxscalebarrenderer.h#L42
QgsSingleBoxScaleBarRenderer.flags: src/core/scalebar/qgssingleboxscalebarrenderer.h#L39
@@ -17138,6 +17147,7 @@ QgsSymbolLayerUtils.applyScaleDependency: src/core/symbology/qgssymbollayerutils
QgsSymbolLayerUtils.blurImageInPlace: src/core/symbology/qgssymbollayerutils.h#L711
QgsSymbolLayerUtils.clearSymbolLayerIds: src/core/symbology/qgssymbollayerutils.h#L932
QgsSymbolLayerUtils.clearSymbolLayerIds: src/core/symbology/qgssymbollayerutils.h#L938
+QgsSymbolLayerUtils.clearSymbolLayerMasks: src/core/symbology/qgssymbollayerutils.h#L956
QgsSymbolLayerUtils.clearSymbolMap: src/core/symbology/qgssymbollayerutils.h#L568
QgsSymbolLayerUtils.colorFromMimeData: src/core/symbology/qgssymbollayerutils.h#L649
QgsSymbolLayerUtils.colorListFromMimeData: src/core/symbology/qgssymbollayerutils.h#L656
@@ -18161,6 +18171,7 @@ QgsTrackedVectorLayerTools.stopEditing: src/core/qgstrackedvectorlayertools.h#L4
QgsTrackedVectorLayerTools: src/core/qgstrackedvectorlayertools.h#L27
QgsTransaction.addLayer: src/core/qgstransaction.h#L90
QgsTransaction.afterRollback: src/core/qgstransaction.h#L174
+QgsTransaction.afterRollbackToSavepoint: src/core/qgstransaction.h#L180
QgsTransaction.begin: src/core/qgstransaction.h#L102
QgsTransaction.commit: src/core/qgstransaction.h#L107
QgsTransaction.connectionString: src/core/qgstransaction.h#L81
@@ -18168,7 +18179,7 @@ QgsTransaction.create: src/core/qgstransaction.h#L66
QgsTransaction.create: src/core/qgstransaction.h#L73
QgsTransaction.createSavepoint: src/core/qgstransaction.h#L136
QgsTransaction.createSavepoint: src/core/qgstransaction.h#L142
-QgsTransaction.dirtied: src/core/qgstransaction.h#L179
+QgsTransaction.dirtied: src/core/qgstransaction.h#L185
QgsTransaction.dirtyLastSavePoint: src/core/qgstransaction.h#L152
QgsTransaction.executeSql: src/core/qgstransaction.h#L124
QgsTransaction.lastSavePointIsDirty: src/core/qgstransaction.h#L162
diff --git a/python/PyQt6/gui/auto_additions/qgsplotrubberband.py b/python/PyQt6/gui/auto_additions/qgsplotrubberband.py
index 9a49316800bf..e9bfb798644f 100644
--- a/python/PyQt6/gui/auto_additions/qgsplotrubberband.py
+++ b/python/PyQt6/gui/auto_additions/qgsplotrubberband.py
@@ -7,3 +7,7 @@
QgsPlotRectangularRubberBand.__group__ = ['plot']
except (NameError, AttributeError):
pass
+try:
+ QgsPlotPointRubberBand.__group__ = ['plot']
+except (NameError, AttributeError):
+ pass
diff --git a/python/PyQt6/gui/auto_generated/auth/qgsauthsettingswidget.sip.in b/python/PyQt6/gui/auto_generated/auth/qgsauthsettingswidget.sip.in
index 3d604f327b15..c6df7f3d0b2f 100644
--- a/python/PyQt6/gui/auto_generated/auth/qgsauthsettingswidget.sip.in
+++ b/python/PyQt6/gui/auto_generated/auth/qgsauthsettingswidget.sip.in
@@ -39,6 +39,13 @@ from existing configs, or creating/removing them from auth database
:param username:
:param password:
:param dataprovider: The key of the calling layer provider, if applicable
+%End
+
+ void removeBasicSettings();
+%Docstring
+Removes the basic authentication tab from the widget.
+
+.. versionadded:: 3.42
%End
void setWarningText( const QString &warningText );
diff --git a/python/PyQt6/gui/auto_generated/elevation/qgselevationprofilecanvas.sip.in b/python/PyQt6/gui/auto_generated/elevation/qgselevationprofilecanvas.sip.in
index 7cb9766d6283..d1cbf04ac720 100644
--- a/python/PyQt6/gui/auto_generated/elevation/qgselevationprofilecanvas.sip.in
+++ b/python/PyQt6/gui/auto_generated/elevation/qgselevationprofilecanvas.sip.in
@@ -249,6 +249,13 @@ The chart text, border and axis color will be automatically updated to ensure
readability with the new background color.
.. versionadded:: 3.34
+%End
+
+ void setInflectionLinesEnabled( bool enabled );
+%Docstring
+Sets whether inflection lines are displayed.
+
+.. versionadded:: 3.44
%End
signals:
@@ -280,6 +287,57 @@ Clears the current profile.
void setSnappingEnabled( bool enabled );
%Docstring
Sets whether snapping of cursor points is enabled.
+%End
+
+ void setCrossHairsItemIsDelegate( bool enabled );
+%Docstring
+Sets wether the cross hairs item is controlled externally
+
+.. versionadded:: 3.42
+%End
+
+ bool crossHairsItemIsDelegate();
+%Docstring
+Returns wether the cross hairs item is controlled externally
+
+.. versionadded:: 3.42
+%End
+
+ void setCrossHairsItemPoint( QPoint point );
+%Docstring
+Sets the cross hairs item point (if cross hairs items is controlled externally)
+
+.. seealso:: :py:func:`setCrossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`crossHairsItemIsDelegate`
+
+.. versionadded:: 3.42
+%End
+
+ void showCrossHairsItem();
+%Docstring
+Show the cross hairs item if cross hairs items is controlled externally)
+
+.. seealso:: :py:func:`setCrossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`crossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`hideCrossHairsItem`
+
+.. versionadded:: 3.42
+%End
+
+ void hideCrossHairsItem();
+%Docstring
+Hide the cross hairs item if cross hairs items is controlled externally)
+
+.. seealso:: :py:func:`setCrossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`crossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`showCrossHairsItem`
+
+.. versionadded:: 3.42
%End
};
diff --git a/python/PyQt6/gui/auto_generated/maptools/qgsmaptoolcapture.sip.in b/python/PyQt6/gui/auto_generated/maptools/qgsmaptoolcapture.sip.in
index 70187fc939ef..470255173d7e 100644
--- a/python/PyQt6/gui/auto_generated/maptools/qgsmaptoolcapture.sip.in
+++ b/python/PyQt6/gui/auto_generated/maptools/qgsmaptoolcapture.sip.in
@@ -222,14 +222,13 @@ Converts a point to map coordinates and layer coordinates
int fetchLayerPoint( const QgsPointLocator::Match &match, QgsPoint &layerPoint );
%Docstring
-Fetches the original point from the source layer if it has the same
-CRS as the current layer.
-If topological editing is activated, the points are projected to the
-current layer CRS.
+Fetches the original point from the source layer.
+If topological editing is activated.
+The points are projected to the current layer CRS.
:return:
0 in case of success
- 1 if not applicable (CRS mismatch / invalid layer)
+ 1 if not applicable (invalid layer)
2 in case of failure
%End
diff --git a/python/PyQt6/gui/auto_generated/plot/qgsplotrubberband.sip.in b/python/PyQt6/gui/auto_generated/plot/qgsplotrubberband.sip.in
index 2e74d7bd951c..570c9402b102 100644
--- a/python/PyQt6/gui/auto_generated/plot/qgsplotrubberband.sip.in
+++ b/python/PyQt6/gui/auto_generated/plot/qgsplotrubberband.sip.in
@@ -128,6 +128,35 @@ Constructor for QgsPlotRectangularRubberBand.
virtual QRectF finish( QPointF position = QPointF(), Qt::KeyboardModifiers modifiers = Qt::KeyboardModifiers() );
+};
+
+class QgsPlotPointRubberBand : QgsPlotRubberBand
+{
+%Docstring(signature="appended")
+:py:class:`QgsPlotPointRubberBand` is a point rubber band for use within :py:class:`QgsPlotCanvas` widgets.
+
+.. versionadded:: 3.42
+%End
+
+%TypeHeaderCode
+#include "qgsplotrubberband.h"
+%End
+ public:
+
+ QgsPlotPointRubberBand( QgsPlotCanvas *canvas = 0 );
+%Docstring
+Constructor for QgsPlotPointRubberBand.
+%End
+
+ ~QgsPlotPointRubberBand();
+
+ virtual void start( QPointF position, Qt::KeyboardModifiers modifiers );
+
+ virtual void update( QPointF position, Qt::KeyboardModifiers modifiers );
+
+ virtual QRectF finish( QPointF position = QPointF(), Qt::KeyboardModifiers modifiers = Qt::KeyboardModifiers() );
+
+
};
/************************************************************************
diff --git a/python/PyQt6/gui/class_map.yaml b/python/PyQt6/gui/class_map.yaml
index 36159cfac9fb..ae44d8f23fae 100644
--- a/python/PyQt6/gui/class_map.yaml
+++ b/python/PyQt6/gui/class_map.yaml
@@ -1022,28 +1022,29 @@ QgsAuthServersEditor.QgsAuthServersEditor: src/gui/auth/qgsauthserverseditor.h#L
QgsAuthServersEditor.showEvent: src/gui/auth/qgsauthserverseditor.h#L69
QgsAuthServersEditor: src/gui/auth/qgsauthserverseditor.h#L33
QgsAuthSettingsWidget.QgsAuthSettingsWidget: src/gui/auth/qgsauthsettingswidget.h#L63
-QgsAuthSettingsWidget.btnConvertToEncryptedIsEnabled: src/gui/auth/qgsauthsettingswidget.h#L137
-QgsAuthSettingsWidget.configId: src/gui/auth/qgsauthsettingswidget.h#L106
-QgsAuthSettingsWidget.configIdChanged: src/gui/auth/qgsauthsettingswidget.h#L211
-QgsAuthSettingsWidget.configurationTabIsSelected: src/gui/auth/qgsauthsettingswidget.h#L178
-QgsAuthSettingsWidget.convertToEncrypted: src/gui/auth/qgsauthsettingswidget.h#L188
-QgsAuthSettingsWidget.dataprovider: src/gui/auth/qgsauthsettingswidget.h#L124
-QgsAuthSettingsWidget.formattedWarning: src/gui/auth/qgsauthsettingswidget.h#L131
-QgsAuthSettingsWidget.password: src/gui/auth/qgsauthsettingswidget.h#L94
-QgsAuthSettingsWidget.passwordChanged: src/gui/auth/qgsauthsettingswidget.h#L204
-QgsAuthSettingsWidget.setBasicText: src/gui/auth/qgsauthsettingswidget.h#L76
-QgsAuthSettingsWidget.setConfigId: src/gui/auth/qgsauthsettingswidget.h#L112
-QgsAuthSettingsWidget.setDataprovider: src/gui/auth/qgsauthsettingswidget.h#L118
-QgsAuthSettingsWidget.setPassword: src/gui/auth/qgsauthsettingswidget.h#L100
-QgsAuthSettingsWidget.setStorePasswordChecked: src/gui/auth/qgsauthsettingswidget.h#L160
-QgsAuthSettingsWidget.setStoreUsernameChecked: src/gui/auth/qgsauthsettingswidget.h#L153
-QgsAuthSettingsWidget.setUsername: src/gui/auth/qgsauthsettingswidget.h#L88
-QgsAuthSettingsWidget.setWarningText: src/gui/auth/qgsauthsettingswidget.h#L70
-QgsAuthSettingsWidget.showStoreCheckboxes: src/gui/auth/qgsauthsettingswidget.h#L146
-QgsAuthSettingsWidget.storePasswordIsChecked: src/gui/auth/qgsauthsettingswidget.h#L166
-QgsAuthSettingsWidget.storeUsernameIsChecked: src/gui/auth/qgsauthsettingswidget.h#L172
-QgsAuthSettingsWidget.username: src/gui/auth/qgsauthsettingswidget.h#L82
-QgsAuthSettingsWidget.usernameChanged: src/gui/auth/qgsauthsettingswidget.h#L197
+QgsAuthSettingsWidget.btnConvertToEncryptedIsEnabled: src/gui/auth/qgsauthsettingswidget.h#L144
+QgsAuthSettingsWidget.configId: src/gui/auth/qgsauthsettingswidget.h#L113
+QgsAuthSettingsWidget.configIdChanged: src/gui/auth/qgsauthsettingswidget.h#L218
+QgsAuthSettingsWidget.configurationTabIsSelected: src/gui/auth/qgsauthsettingswidget.h#L185
+QgsAuthSettingsWidget.convertToEncrypted: src/gui/auth/qgsauthsettingswidget.h#L195
+QgsAuthSettingsWidget.dataprovider: src/gui/auth/qgsauthsettingswidget.h#L131
+QgsAuthSettingsWidget.formattedWarning: src/gui/auth/qgsauthsettingswidget.h#L138
+QgsAuthSettingsWidget.password: src/gui/auth/qgsauthsettingswidget.h#L101
+QgsAuthSettingsWidget.passwordChanged: src/gui/auth/qgsauthsettingswidget.h#L211
+QgsAuthSettingsWidget.removeBasicSettings: src/gui/auth/qgsauthsettingswidget.h#L70
+QgsAuthSettingsWidget.setBasicText: src/gui/auth/qgsauthsettingswidget.h#L83
+QgsAuthSettingsWidget.setConfigId: src/gui/auth/qgsauthsettingswidget.h#L119
+QgsAuthSettingsWidget.setDataprovider: src/gui/auth/qgsauthsettingswidget.h#L125
+QgsAuthSettingsWidget.setPassword: src/gui/auth/qgsauthsettingswidget.h#L107
+QgsAuthSettingsWidget.setStorePasswordChecked: src/gui/auth/qgsauthsettingswidget.h#L167
+QgsAuthSettingsWidget.setStoreUsernameChecked: src/gui/auth/qgsauthsettingswidget.h#L160
+QgsAuthSettingsWidget.setUsername: src/gui/auth/qgsauthsettingswidget.h#L95
+QgsAuthSettingsWidget.setWarningText: src/gui/auth/qgsauthsettingswidget.h#L77
+QgsAuthSettingsWidget.showStoreCheckboxes: src/gui/auth/qgsauthsettingswidget.h#L153
+QgsAuthSettingsWidget.storePasswordIsChecked: src/gui/auth/qgsauthsettingswidget.h#L173
+QgsAuthSettingsWidget.storeUsernameIsChecked: src/gui/auth/qgsauthsettingswidget.h#L179
+QgsAuthSettingsWidget.username: src/gui/auth/qgsauthsettingswidget.h#L89
+QgsAuthSettingsWidget.usernameChanged: src/gui/auth/qgsauthsettingswidget.h#L204
QgsAuthSettingsWidget: src/gui/auth/qgsauthsettingswidget.h#L35
QgsAuthSslConfigDialog.QgsAuthSslConfigDialog: src/gui/auth/qgsauthsslconfigwidget.h#L198
QgsAuthSslConfigDialog.accept: src/gui/auth/qgsauthsslconfigwidget.h#L204
@@ -3565,7 +3566,7 @@ QgsLayerMetadataSearchWidget.addButtonClicked: src/gui/qgslayermetadatasearchwid
QgsLayerMetadataSearchWidget.refresh: src/gui/qgslayermetadatasearchwidget.h#L52
QgsLayerMetadataSearchWidget.reset: src/gui/qgslayermetadatasearchwidget.h#L54
QgsLayerMetadataSearchWidget.setMapCanvas: src/gui/qgslayermetadatasearchwidget.h#L45
-QgsLayerMetadataSearchWidget.showEvent: src/gui/qgslayermetadatasearchwidget.h#L66
+QgsLayerMetadataSearchWidget.showEvent: src/gui/qgslayermetadatasearchwidget.h#L67
QgsLayerMetadataSearchWidget.updateExtentFilter: src/gui/qgslayermetadatasearchwidget.h#L50
QgsLayerMetadataSearchWidget: src/gui/qgslayermetadatasearchwidget.h#L36
QgsLayerPropertiesDialog.addPropertiesPageFactory: src/gui/qgslayerpropertiesdialog.h#L81
@@ -4555,42 +4556,42 @@ QgsMapToolAdvancedDigitizing.useSnappingIndicator: src/gui/maptools/qgsmaptoolad
QgsMapToolAdvancedDigitizing: src/gui/maptools/qgsmaptooladvanceddigitizing.h#L38
QgsMapToolCapture.activate: src/gui/maptools/qgsmaptoolcapture.h#L108
QgsMapToolCapture.addCurve: src/gui/maptools/qgsmaptoolcapture.h#L119
-QgsMapToolCapture.addVertex: src/gui/maptools/qgsmaptoolcapture.h#L259
-QgsMapToolCapture.addVertex: src/gui/maptools/qgsmaptoolcapture.h#L266
+QgsMapToolCapture.addVertex: src/gui/maptools/qgsmaptoolcapture.h#L258
+QgsMapToolCapture.addVertex: src/gui/maptools/qgsmaptoolcapture.h#L265
QgsMapToolCapture.cadCanvasMoveEvent: src/gui/maptools/qgsmaptoolcapture.h#L140
QgsMapToolCapture.cadCanvasReleaseEvent: src/gui/maptools/qgsmaptoolcapture.h#L141
QgsMapToolCapture.capabilities: src/gui/maptools/qgsmaptoolcapture.h#L80
QgsMapToolCapture.captureCurve: src/gui/maptools/qgsmaptoolcapture.h#L132
QgsMapToolCapture.clean: src/gui/maptools/qgsmaptoolcapture.h#L155
QgsMapToolCapture.clearCurve: src/gui/maptools/qgsmaptoolcapture.h#L125
-QgsMapToolCapture.closePolygon: src/gui/maptools/qgsmaptoolcapture.h#L330
+QgsMapToolCapture.closePolygon: src/gui/maptools/qgsmaptoolcapture.h#L329
QgsMapToolCapture.currentCaptureTechnique: src/gui/maptools/qgsmaptoolcapture.h#L99
QgsMapToolCapture.deactivate: src/gui/maptools/qgsmaptoolcapture.h#L109
QgsMapToolCapture.deleteTempRubberBand: src/gui/maptools/qgsmaptoolcapture.h#L152
-QgsMapToolCapture.fetchLayerPoint: src/gui/maptools/qgsmaptoolcapture.h#L253
-QgsMapToolCapture.geometryCaptured: src/gui/maptools/qgsmaptoolcapture.h#L345
-QgsMapToolCapture.isCapturing: src/gui/maptools/qgsmaptoolcapture.h#L286
+QgsMapToolCapture.fetchLayerPoint: src/gui/maptools/qgsmaptoolcapture.h#L252
+QgsMapToolCapture.geometryCaptured: src/gui/maptools/qgsmaptoolcapture.h#L344
+QgsMapToolCapture.isCapturing: src/gui/maptools/qgsmaptoolcapture.h#L285
QgsMapToolCapture.keyPressEvent: src/gui/maptools/qgsmaptoolcapture.h#L147
-QgsMapToolCapture.lineCaptured: src/gui/maptools/qgsmaptoolcapture.h#L359
+QgsMapToolCapture.lineCaptured: src/gui/maptools/qgsmaptoolcapture.h#L358
QgsMapToolCapture.mapPoint: src/gui/maptools/qgsmaptoolcapture.h#L177
QgsMapToolCapture.mapPoint: src/gui/maptools/qgsmaptoolcapture.h#L188
QgsMapToolCapture.mode: src/gui/maptools/qgsmaptoolcapture.h#L116
QgsMapToolCapture.nextPoint: src/gui/maptools/qgsmaptoolcapture.h#L225
QgsMapToolCapture.nextPoint: src/gui/maptools/qgsmaptoolcapture.h#L239
-QgsMapToolCapture.pointCaptured: src/gui/maptools/qgsmaptoolcapture.h#L352
-QgsMapToolCapture.pointsZM: src/gui/maptools/qgsmaptoolcapture.h#L309
-QgsMapToolCapture.polygonCaptured: src/gui/maptools/qgsmaptoolcapture.h#L366
+QgsMapToolCapture.pointCaptured: src/gui/maptools/qgsmaptoolcapture.h#L351
+QgsMapToolCapture.pointsZM: src/gui/maptools/qgsmaptoolcapture.h#L308
+QgsMapToolCapture.polygonCaptured: src/gui/maptools/qgsmaptoolcapture.h#L365
QgsMapToolCapture.setCircularDigitizingEnabled: src/gui/maptools/qgsmaptoolcapture.h#L198
QgsMapToolCapture.setCurrentCaptureTechnique: src/gui/maptools/qgsmaptoolcapture.h#L93
-QgsMapToolCapture.setPoints: src/gui/maptools/qgsmaptoolcapture.h#L317
-QgsMapToolCapture.setPoints: src/gui/maptools/qgsmaptoolcapture.h#L325
+QgsMapToolCapture.setPoints: src/gui/maptools/qgsmaptoolcapture.h#L316
+QgsMapToolCapture.setPoints: src/gui/maptools/qgsmaptoolcapture.h#L324
QgsMapToolCapture.setStreamDigitizingEnabled: src/gui/maptools/qgsmaptoolcapture.h#L205
-QgsMapToolCapture.size: src/gui/maptools/qgsmaptoolcapture.h#L293
-QgsMapToolCapture.startCapturing: src/gui/maptools/qgsmaptoolcapture.h#L279
-QgsMapToolCapture.stopCapturing: src/gui/maptools/qgsmaptoolcapture.h#L337
+QgsMapToolCapture.size: src/gui/maptools/qgsmaptoolcapture.h#L292
+QgsMapToolCapture.startCapturing: src/gui/maptools/qgsmaptoolcapture.h#L278
+QgsMapToolCapture.stopCapturing: src/gui/maptools/qgsmaptoolcapture.h#L336
QgsMapToolCapture.supportsTechnique: src/gui/maptools/qgsmaptoolcapture.h#L87
QgsMapToolCapture.takeRubberBand: src/gui/maptools/qgsmaptoolcapture.h#L165
-QgsMapToolCapture.undo: src/gui/maptools/qgsmaptoolcapture.h#L274
+QgsMapToolCapture.undo: src/gui/maptools/qgsmaptoolcapture.h#L273
QgsMapToolCapture: src/gui/maptools/qgsmaptoolcapture.h#L48
QgsMapToolCaptureLayerGeometry.layerGeometryCaptured: src/gui/maptools/qgsmaptoolcapturelayergeometry.h#L46
QgsMapToolCaptureLayerGeometry.layerLineCaptured: src/gui/maptools/qgsmaptoolcapturelayergeometry.h#L58
diff --git a/python/PyQt6/server/auto_generated/qgsserverparameters.sip.in b/python/PyQt6/server/auto_generated/qgsserverparameters.sip.in
index 973004e5bfe8..fc32f831f0a2 100644
--- a/python/PyQt6/server/auto_generated/qgsserverparameters.sip.in
+++ b/python/PyQt6/server/auto_generated/qgsserverparameters.sip.in
@@ -70,42 +70,46 @@ Converts the parameter into a list of strings
:return: A list of strings
%End
- QList toIntList( bool &ok, char delimiter = ',' ) const;
+ QList toIntList( bool &ok, char delimiter = ',', bool skipEmptyParts = true ) const;
%Docstring
Converts the parameter into a list of integers.
:param ok: ``True`` if there's no error during the conversion, ``False`` otherwise
:param delimiter: The character used for delimiting
+:param skipEmptyParts: for splitting
:return: A list of integers
%End
- QList toDoubleList( bool &ok, char delimiter = ',' ) const;
+ QList toDoubleList( bool &ok, char delimiter = ',', bool skipEmptyParts = true ) const;
%Docstring
Converts the parameter into a list of doubles.
:param ok: ``True`` if there's no error during the conversion, ``False`` otherwise
:param delimiter: The character used for delimiting
+:param skipEmptyParts: for splitting
:return: A list of doubles
%End
- QList toColorList( bool &ok, char delimiter = ',' ) const;
+ QList toColorList( bool &ok, char delimiter = ',', bool skipEmptyParts = true ) const;
%Docstring
Converts the parameter into a list of colors.
:param ok: ``True`` if there's no error during the conversion, ``False`` otherwise
:param delimiter: The character used for delimiting
+:param skipEmptyParts: for splitting
:return: A list of colors
%End
- QList toGeomList( bool &ok, char delimiter = ',' ) const;
+ QList toGeomList( bool &ok, char delimiter = ',', bool skipEmptyParts = true ) const;
%Docstring
Converts the parameter into a list of geometries.
:param ok: ``True`` if there's no error during the conversion, ``False`` otherwise
:param delimiter: The character used for delimiting
+:param skipEmptyParts: for splitting
:return: A list of geometries
%End
diff --git a/python/PyQt6/server/class_map.yaml b/python/PyQt6/server/class_map.yaml
index f05c7ccdfd29..60ea87ccb1e5 100644
--- a/python/PyQt6/server/class_map.yaml
+++ b/python/PyQt6/server/class_map.yaml
@@ -217,39 +217,39 @@ QgsServerOgcApiHandler.templatePath: src/server/qgsserverogcapihandler.h#L332
QgsServerOgcApiHandler.values: src/server/qgsserverogcapihandler.h#L191
QgsServerOgcApiHandler.write: src/server/qgsserverogcapihandler.h#L313
QgsServerOgcApiHandler: src/server/qgsserverogcapihandler.h#L94
-QgsServerParameter.name: src/server/qgsserverparameters.h#L236
-QgsServerParameter.name: src/server/qgsserverparameters.h#L242
-QgsServerParameter.raiseError: src/server/qgsserverparameters.h#L231
-QgsServerParameter: src/server/qgsserverparameters.h#L193
+QgsServerParameter.name: src/server/qgsserverparameters.h#L240
+QgsServerParameter.name: src/server/qgsserverparameters.h#L246
+QgsServerParameter.raiseError: src/server/qgsserverparameters.h#L235
+QgsServerParameter: src/server/qgsserverparameters.h#L197
QgsServerParameterDefinition.isValid: src/server/qgsserverparameters.h#L63
-QgsServerParameterDefinition.loadUrl: src/server/qgsserverparameters.h#L173
-QgsServerParameterDefinition.raiseError: src/server/qgsserverparameters.h#L180
-QgsServerParameterDefinition.toBool: src/server/qgsserverparameters.h#L150
-QgsServerParameterDefinition.toColor: src/server/qgsserverparameters.h#L157
-QgsServerParameterDefinition.toDouble: src/server/qgsserverparameters.h#L144
-QgsServerParameterDefinition.toExpressionList: src/server/qgsserverparameters.h#L123
-QgsServerParameterDefinition.toInt: src/server/qgsserverparameters.h#L137
-QgsServerParameterDefinition.toOgcFilterList: src/server/qgsserverparameters.h#L116
-QgsServerParameterDefinition.toRectangle: src/server/qgsserverparameters.h#L130
+QgsServerParameterDefinition.loadUrl: src/server/qgsserverparameters.h#L177
+QgsServerParameterDefinition.raiseError: src/server/qgsserverparameters.h#L184
+QgsServerParameterDefinition.toBool: src/server/qgsserverparameters.h#L154
+QgsServerParameterDefinition.toColor: src/server/qgsserverparameters.h#L161
+QgsServerParameterDefinition.toDouble: src/server/qgsserverparameters.h#L148
+QgsServerParameterDefinition.toExpressionList: src/server/qgsserverparameters.h#L127
+QgsServerParameterDefinition.toInt: src/server/qgsserverparameters.h#L141
+QgsServerParameterDefinition.toOgcFilterList: src/server/qgsserverparameters.h#L120
+QgsServerParameterDefinition.toRectangle: src/server/qgsserverparameters.h#L134
QgsServerParameterDefinition.toString: src/server/qgsserverparameters.h#L69
QgsServerParameterDefinition.toStringList: src/server/qgsserverparameters.h#L77
-QgsServerParameterDefinition.toUrl: src/server/qgsserverparameters.h#L165
+QgsServerParameterDefinition.toUrl: src/server/qgsserverparameters.h#L169
QgsServerParameterDefinition.typeName: src/server/qgsserverparameters.h#L58
QgsServerParameterDefinition: src/server/qgsserverparameters.h#L34
-QgsServerParameters.add: src/server/qgsserverparameters.h#L286
-QgsServerParameters.clear: src/server/qgsserverparameters.h#L279
-QgsServerParameters.fileName: src/server/qgsserverparameters.h#L343
-QgsServerParameters.load: src/server/qgsserverparameters.h#L274
-QgsServerParameters.loadParameter: src/server/qgsserverparameters.h#L357
-QgsServerParameters.map: src/server/qgsserverparameters.h#L336
-QgsServerParameters.remove: src/server/qgsserverparameters.h#L292
-QgsServerParameters.remove: src/server/qgsserverparameters.h#L299
-QgsServerParameters.request: src/server/qgsserverparameters.h#L329
-QgsServerParameters.service: src/server/qgsserverparameters.h#L322
-QgsServerParameters.urlQuery: src/server/qgsserverparameters.h#L310
-QgsServerParameters.value: src/server/qgsserverparameters.h#L305
-QgsServerParameters.version: src/server/qgsserverparameters.h#L350
-QgsServerParameters: src/server/qgsserverparameters.h#L253
+QgsServerParameters.add: src/server/qgsserverparameters.h#L290
+QgsServerParameters.clear: src/server/qgsserverparameters.h#L283
+QgsServerParameters.fileName: src/server/qgsserverparameters.h#L347
+QgsServerParameters.load: src/server/qgsserverparameters.h#L278
+QgsServerParameters.loadParameter: src/server/qgsserverparameters.h#L361
+QgsServerParameters.map: src/server/qgsserverparameters.h#L340
+QgsServerParameters.remove: src/server/qgsserverparameters.h#L296
+QgsServerParameters.remove: src/server/qgsserverparameters.h#L303
+QgsServerParameters.request: src/server/qgsserverparameters.h#L333
+QgsServerParameters.service: src/server/qgsserverparameters.h#L326
+QgsServerParameters.urlQuery: src/server/qgsserverparameters.h#L314
+QgsServerParameters.value: src/server/qgsserverparameters.h#L309
+QgsServerParameters.version: src/server/qgsserverparameters.h#L354
+QgsServerParameters: src/server/qgsserverparameters.h#L257
QgsServerQueryStringParameter.description: src/server/qgsserverquerystringparameter.h#L120
QgsServerQueryStringParameter.hidden: src/server/qgsserverquerystringparameter.h#L145
QgsServerQueryStringParameter.name: src/server/qgsserverquerystringparameter.h#L130
diff --git a/python/analysis/auto_generated/raster/qgsrastercalculator.sip.in b/python/analysis/auto_generated/raster/qgsrastercalculator.sip.in
index 2caddfecc613..95338847590f 100644
--- a/python/analysis/auto_generated/raster/qgsrastercalculator.sip.in
+++ b/python/analysis/auto_generated/raster/qgsrastercalculator.sip.in
@@ -63,14 +63,15 @@ Performs raster layer calculations.
};
- QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector &rasterEntries, const QgsCoordinateTransformContext &transformContext );
+ QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector &rasterEntries, const QgsCoordinateTransformContext &transformContext );
%Docstring
QgsRasterCalculator constructor.
:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
-:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
+:param outputExtent: output extent, CRS is specified by outputCrs parameter
+:param outputCrs: destination CRS for output raster
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
@@ -79,15 +80,14 @@ QgsRasterCalculator constructor.
.. versionadded:: 3.8
%End
- QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector &rasterEntries, const QgsCoordinateTransformContext &transformContext );
+ QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector &rasterEntries, const QgsCoordinateTransformContext &transformContext );
%Docstring
QgsRasterCalculator constructor.
:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
-:param outputExtent: output extent, CRS is specified by outputCrs parameter
-:param outputCrs: destination CRS for output raster
+:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
@@ -96,15 +96,15 @@ QgsRasterCalculator constructor.
.. versionadded:: 3.8
%End
-
- QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
+ QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
%Docstring
QgsRasterCalculator constructor.
:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
-:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
+:param outputExtent: output extent, CRS is specified by outputCrs parameter
+:param outputCrs: destination CRS for output raster
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
@@ -114,15 +114,14 @@ QgsRasterCalculator constructor.
Use the version with transformContext instead.
%End
- QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
+ QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector &rasterEntries ) /Deprecated="Since 3.8. Use the version with transformContext instead."/;
%Docstring
QgsRasterCalculator constructor.
:param formulaString: formula for raster calculation
:param outputFile: output file path
:param outputFormat: output file format
-:param outputExtent: output extent, CRS is specified by outputCrs parameter
-:param outputCrs: destination CRS for output raster
+:param outputExtent: output extent. CRS for output is taken from first entry in rasterEntries.
:param nOutputColumns: number of columns in output raster
:param nOutputRows: number of rows in output raster
:param rasterEntries: list of referenced raster layers
diff --git a/python/analysis/class_map.yaml b/python/analysis/class_map.yaml
index a916853fc0ba..0aacf66aafd6 100644
--- a/python/analysis/class_map.yaml
+++ b/python/analysis/class_map.yaml
@@ -289,8 +289,8 @@ QgsRasterCalcNode.setRight: src/analysis/raster/qgsrastercalcnode.h#L108
QgsRasterCalcNode.toString: src/analysis/raster/qgsrastercalcnode.h#L125
QgsRasterCalcNode.type: src/analysis/raster/qgsrastercalcnode.h#L96
QgsRasterCalcNode: src/analysis/raster/qgsrastercalcnode.h#L38
-QgsRasterCalculator.lastError: src/analysis/raster/qgsrastercalculator.h#L162
-QgsRasterCalculator.processCalculation: src/analysis/raster/qgsrastercalculator.h#L156
+QgsRasterCalculator.lastError: src/analysis/raster/qgsrastercalculator.h#L161
+QgsRasterCalculator.processCalculation: src/analysis/raster/qgsrastercalculator.h#L155
QgsRasterCalculator: src/analysis/raster/qgsrastercalculator.h#L74
QgsRasterCalculatorEntry: src/analysis/raster/qgsrastercalculator.h#L39
QgsRasterMatrix.absoluteValue: src/analysis/raster/qgsrastermatrix.h#L147
diff --git a/python/console/console.py b/python/console/console.py
index ba15c4460f1a..3e495bc66ce3 100644
--- a/python/console/console.py
+++ b/python/console/console.py
@@ -46,7 +46,7 @@
QApplication,
QShortcut,
)
-from qgis.PyQt.QtGui import QDesktopServices, QKeySequence
+from qgis.PyQt.QtGui import QDesktopServices, QKeySequence, QColor, QPalette
from qgis.PyQt.QtWidgets import QVBoxLayout, QMessageBox
from qgis.utils import iface
from .console_sci import ShellScintilla
@@ -320,7 +320,10 @@ def __init__(self, parent=None):
self.toggleCommentEditorButton.setCheckable(False)
self.toggleCommentEditorButton.setEnabled(True)
self.toggleCommentEditorButton.setIcon(
- QgsApplication.getThemeIcon("console/iconCommentEditorConsole.svg")
+ QgsApplication.getThemeIcon(
+ "console/iconCommentEditorConsole.svg",
+ self.palette().color(QPalette.ColorRole.WindowText),
+ ),
)
self.toggleCommentEditorButton.setMenuRole(QAction.MenuRole.PreferencesRole)
self.toggleCommentEditorButton.setIconVisibleInMenu(True)
diff --git a/python/console/console_editor.py b/python/console/console_editor.py
index c7e868372c52..9503f6f92e2c 100644
--- a/python/console/console_editor.py
+++ b/python/console/console_editor.py
@@ -48,7 +48,7 @@
Qt,
QUrl,
)
-from qgis.PyQt.QtGui import QKeySequence
+from qgis.PyQt.QtGui import QKeySequence, QColor, QPalette
from qgis.PyQt.QtNetwork import QNetworkRequest
from qgis.PyQt.QtWidgets import (
QAction,
@@ -261,7 +261,10 @@ def contextMenuEvent(self, e):
menu.addSeparator()
toggle_comment_action = QAction(
- QgsApplication.getThemeIcon("console/iconCommentEditorConsole.svg"),
+ QgsApplication.getThemeIcon(
+ "console/iconCommentEditorConsole.svg",
+ self.palette().color(QPalette.ColorRole.WindowText),
+ ),
QCoreApplication.translate("PythonConsole", "Toggle Comment"),
menu,
)
diff --git a/python/core/__init__.py.in b/python/core/__init__.py.in
index 3e0c9045d231..3a2be42fff18 100644
--- a/python/core/__init__.py.in
+++ b/python/core/__init__.py.in
@@ -579,11 +579,15 @@ try:
raise ValueError(f"The raster block data type '{str(self.dataType())}' is not compatible with NumPy arrays.")
src_array = _numpy.frombuffer(self.data(), dtype=raster_dtype)
src_array = src_array.reshape((self.height(), self.width()))
- if not self.hasNoDataValue() or not use_masking:
- return src_array
- else:
- no_data_value = self.noDataValue() if isinstance(self.noDataValue(), raster_dtype) else 0
+ if use_masking:
+ if not self.hasNoDataValue():
+ # Default to 0 as noDataValue if none is set
+ no_data_value = 0
+ else:
+ no_data_value = self.noDataValue()
return _numpy.ma.masked_equal(src_array, no_data_value)
+ else:
+ return src_array
QgsRasterBlock.as_numpy = _raster_block_as_numpy
@@ -596,7 +600,10 @@ try:
src_array = block.as_numpy(use_masking=use_masking)
arrays.append(src_array)
- return _numpy.array(arrays) # This converts any maskedArrays to numpy.array
+ if use_masking:
+ return _numpy.ma.stack(arrays, axis=0)
+ else:
+ return _numpy.array(arrays)
QgsRasterLayer.as_numpy = _raster_layer_as_numpy
diff --git a/python/core/auto_additions/qgis.py b/python/core/auto_additions/qgis.py
index 0f9f1168ba09..a45fb29ec11d 100644
--- a/python/core/auto_additions/qgis.py
+++ b/python/core/auto_additions/qgis.py
@@ -2521,6 +2521,21 @@
# --
Qgis.FileFilterType.baseClass = Qgis
# monkey patching scoped based enum
+Qgis.UriCleaningFlag.RemoveCredentials.__doc__ = "Completely remove credentials (eg passwords) from the URI. This flag is not compatible with the RedactCredentials flag."
+Qgis.UriCleaningFlag.RedactCredentials.__doc__ = "Replace the value of credentials (eg passwords) with 'xxxxxxxx'. This flag is not compatible with the RemoveCredentials flag."
+Qgis.UriCleaningFlag.__doc__ = """Flags for cleaning layer URIs.
+
+.. versionadded:: 3.42
+
+* ``RemoveCredentials``: Completely remove credentials (eg passwords) from the URI. This flag is not compatible with the RedactCredentials flag.
+* ``RedactCredentials``: Replace the value of credentials (eg passwords) with 'xxxxxxxx'. This flag is not compatible with the RemoveCredentials flag.
+
+"""
+# --
+Qgis.UriCleaningFlag.baseClass = Qgis
+Qgis.UriCleaningFlags.baseClass = Qgis
+UriCleaningFlags = Qgis # dirty hack since SIP seems to introduce the flags in module
+# monkey patching scoped based enum
Qgis.SublayerQueryFlag.FastScan.__doc__ = "Indicates that the provider must scan for sublayers using the fastest possible approach -- e.g. by first checking that a uri has an extension which is known to be readable by the provider"
Qgis.SublayerQueryFlag.ResolveGeometryType.__doc__ = "Attempt to resolve the geometry type for vector sublayers"
Qgis.SublayerQueryFlag.CountFeatures.__doc__ = "Count features in vector sublayers"
diff --git a/python/core/auto_additions/qgsabstractcontentcache.py b/python/core/auto_additions/qgsabstractcontentcache.py
index bf5b43ab27ff..bcc41b6ff594 100644
--- a/python/core/auto_additions/qgsabstractcontentcache.py
+++ b/python/core/auto_additions/qgsabstractcontentcache.py
@@ -6,6 +6,7 @@
try:
QgsAbstractContentCacheBase.__attribute_docs__ = {'remoteContentFetched': 'Emitted when the cache has finished retrieving content from a remote ``url``.\n'}
QgsAbstractContentCacheBase.parseBase64DataUrl = staticmethod(QgsAbstractContentCacheBase.parseBase64DataUrl)
+ QgsAbstractContentCacheBase.parseEmbeddedStringData = staticmethod(QgsAbstractContentCacheBase.parseEmbeddedStringData)
QgsAbstractContentCacheBase.isBase64Data = staticmethod(QgsAbstractContentCacheBase.isBase64Data)
QgsAbstractContentCacheBase.__signal_arguments__ = {'remoteContentFetched': ['url: str']}
except (NameError, AttributeError):
diff --git a/python/core/auto_additions/qgsauthmanager.py b/python/core/auto_additions/qgsauthmanager.py
index 431aee78d187..3aa1626756e0 100644
--- a/python/core/auto_additions/qgsauthmanager.py
+++ b/python/core/auto_additions/qgsauthmanager.py
@@ -1,10 +1,11 @@
# The following has been generated automatically from src/core/auth/qgsauthmanager.h
QgsAuthManager.MessageLevel.baseClass = QgsAuthManager
try:
- QgsAuthManager.__attribute_docs__ = {'AUTH_PASSWORD_HELPER_DISPLAY_NAME': 'The display name of the password helper (platform dependent)', 'AUTH_MAN_TAG': 'The display name of the Authentication Manager', 'passwordHelperFailure': 'Signals emitted on password helper failure,\nmainly used in the tests to exit main application loop\n', 'passwordHelperSuccess': 'Signals emitted on password helper success,\nmainly used in the tests to exit main application loop\n', 'messageOut': 'Custom logging signal to relay to console output and :py:class:`QgsMessageLog`\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. deprecated:: 3.40\n\n Use :py:func:`~QgsAuthManager.messageLog` instead.\n', 'messageLog': 'Custom logging signal to relay to console output and :py:class:`QgsMessageLog`\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. versionadded:: 3.40\n', 'passwordHelperMessageOut': 'Custom logging signal to inform the user about master password <-> password manager interactions\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. deprecated:: 3.40\n\n Use :py:func:`~QgsAuthManager.passwordHelperMessageLog` instead.\n', 'passwordHelperMessageLog': 'Custom logging signal to inform the user about master password <-> password manager interactions\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. versionadded:: 3.40\n', 'masterPasswordVerified': "Emitted when a password has been verify (or not)\n\n:param verified: The state of password's verification\n", 'authDatabaseEraseRequested': 'Emitted when a user has indicated they may want to erase the authentication db.\n', 'authDatabaseChanged': 'Emitted when the authentication db is significantly changed, e.g. large record removal, erased, etc.\n'}
+ QgsAuthManager.__attribute_docs__ = {'AUTH_PASSWORD_HELPER_DISPLAY_NAME': 'The display name of the password helper (platform dependent).\n\nThis is deprecated, use :py:func:`~QgsAuthManager.passwordHelperDisplayName` instead.', 'AUTH_MAN_TAG': 'The display name of the Authentication Manager', 'passwordHelperFailure': 'Signals emitted on password helper failure,\nmainly used in the tests to exit main application loop\n', 'passwordHelperSuccess': 'Signals emitted on password helper success,\nmainly used in the tests to exit main application loop\n', 'messageOut': 'Custom logging signal to relay to console output and :py:class:`QgsMessageLog`\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. deprecated:: 3.40\n\n Use :py:func:`~QgsAuthManager.messageLog` instead.\n', 'messageLog': 'Custom logging signal to relay to console output and :py:class:`QgsMessageLog`\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. versionadded:: 3.40\n', 'passwordHelperMessageOut': 'Custom logging signal to inform the user about master password <-> password manager interactions\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. deprecated:: 3.40\n\n Use :py:func:`~QgsAuthManager.passwordHelperMessageLog` instead.\n', 'passwordHelperMessageLog': 'Custom logging signal to inform the user about master password <-> password manager interactions\n\n:param message: Message to send\n:param tag: Associated tag (title)\n:param level: Message log level\n\n.. seealso:: :py:class:`QgsMessageLog`\n\n.. versionadded:: 3.40\n', 'masterPasswordVerified': "Emitted when a password has been verify (or not)\n\n:param verified: The state of password's verification\n", 'authDatabaseEraseRequested': 'Emitted when a user has indicated they may want to erase the authentication db.\n', 'authDatabaseChanged': 'Emitted when the authentication db is significantly changed, e.g. large record removal, erased, etc.\n'}
QgsAuthManager.isFilesystemBasedDatabase = staticmethod(QgsAuthManager.isFilesystemBasedDatabase)
QgsAuthManager.hasConfigId = staticmethod(QgsAuthManager.hasConfigId)
QgsAuthManager.passwordHelperEnabled = staticmethod(QgsAuthManager.passwordHelperEnabled)
+ QgsAuthManager.passwordHelperDisplayName = staticmethod(QgsAuthManager.passwordHelperDisplayName)
QgsAuthManager.__signal_arguments__ = {'passwordHelperMessageLog': ['message: str', 'tag: str = QgsAuthManager.AUTH_MAN_TAG', 'level: Qgis.MessageLevel = Qgis.MessageLevel.Info'], 'masterPasswordVerified': ['verified: bool']}
QgsAuthManager.__group__ = ['auth']
except (NameError, AttributeError):
diff --git a/python/core/auto_additions/qgslayoutexporter.py b/python/core/auto_additions/qgslayoutexporter.py
index f8be980a23de..bf639acd546e 100644
--- a/python/core/auto_additions/qgslayoutexporter.py
+++ b/python/core/auto_additions/qgslayoutexporter.py
@@ -12,7 +12,7 @@
except (NameError, AttributeError):
pass
try:
- QgsLayoutExporter.PdfExportSettings.__attribute_docs__ = {'dpi': 'Resolution to export layout at. If dpi <= 0 the default layout dpi will be used.', 'rasterizeWholeImage': 'Set to ``True`` to force whole layout to be rasterized while exporting.\n\nThis option is mutually exclusive with forceVectorOutput.', 'forceVectorOutput': 'Set to ``True`` to force vector object exports, even when the resultant appearance will differ\nfrom the layout. If ``False``, some items may be rasterized in order to maintain their\ncorrect appearance in the output.\n\nThis option is mutually exclusive with rasterizeWholeImage.', 'appendGeoreference': 'Indicates whether PDF export should append georeference data\n\n.. versionadded:: 3.10', 'exportMetadata': "Indicates whether PDF export should include metadata generated\nfrom the layout's project's metadata.\n\n.. versionadded:: 3.2", 'flags': 'Layout context flags, which control how the export will be created.', 'textRenderFormat': 'Text rendering format, which controls how text should be rendered in the export (e.g.\nas paths or real text objects).\n\n.. versionadded:: 3.4.3', 'simplifyGeometries': 'Indicates whether vector geometries should be simplified to avoid redundant extraneous detail,\nsuch as vertices which are not visible at the specified dpi of the output.\n\n.. versionadded:: 3.10', 'writeGeoPdf': '``True`` if geospatial PDF files should be created, instead of normal PDF files.\n\nWhilst geospatial PDF files can include some desirable properties like the ability to interactively\nquery map features, they also can result in lower-quality output files, or forced rasterization\nof layers.\n\n.. note::\n\n Requires builds based on GDAL 3.0 or greater.\n\n.. versionadded:: 3.10', 'exportLayersAsSeperateFiles': '``True`` if individual layers from the layout should be rendered to separate PDF files.\n\nThis option allows for separation of logic layout layers to individual PDF files. For instance,\nif this option is ``True``, then a separate PDF file will be created per layer per map item in the\nlayout. Additionally, separate PDF files may be created for other complex layout items, resulting\nin a set of PDF files which contain logical atomic components of the layout.\n\nThis option is designed to allow the PDF files to be composited back together in an external\napplication (e.g. Adobe Illustrator) as a non-QGIS, post-production step.\n\n.. versionadded:: 3.14', 'useIso32000ExtensionFormatGeoreferencing': '``True`` if ISO3200 extension format georeferencing should be used.\n\nThis is a recommended setting which results in Geospatial PDF files compatible\nwith the built-in Acrobat geospatial tools.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'useOgcBestPracticeFormatGeoreferencing': '``True`` if OGC "best practice" format georeferencing should be used.\n\n.. warning::\n\n This results in geospatial PDF files compatible with a unnamed suite of tools starting with Terra and ending with Go, but\n can break compatibility with the built-in Acrobat geospatial tools (yes, Geospatial PDF\n format is a mess!).\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'includeGeoPdfFeatures': '``True`` if feature vector information (such as attributes) should be exported during Geospatial PDF exports.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'exportThemes': "Optional list of map themes to export as Geospatial PDF layer groups.\n\nIf set, map item's which are not assigned a specific map theme will iterate through all listed\nthemes and a Geospatial PDF layer group will be created for each.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.", 'predefinedMapScales': 'A list of predefined scales to use with the layout. This is used\nfor maps which are set to the predefined atlas scaling mode.\n\n.. versionadded:: 3.10'}
+ QgsLayoutExporter.PdfExportSettings.__attribute_docs__ = {'dpi': 'Resolution to export layout at. If dpi <= 0 the default layout dpi will be used.', 'rasterizeWholeImage': 'Set to ``True`` to force whole layout to be rasterized while exporting.\n\nThis option is mutually exclusive with forceVectorOutput.', 'forceVectorOutput': 'Set to ``True`` to force vector object exports, even when the resultant appearance will differ\nfrom the layout. If ``False``, some items may be rasterized in order to maintain their\ncorrect appearance in the output.\n\nThis option is mutually exclusive with rasterizeWholeImage.', 'appendGeoreference': 'Indicates whether PDF export should append georeference data\n\n.. versionadded:: 3.10', 'exportMetadata': "Indicates whether PDF export should include metadata generated\nfrom the layout's project's metadata.\n\n.. versionadded:: 3.2", 'flags': 'Layout context flags, which control how the export will be created.', 'textRenderFormat': 'Text rendering format, which controls how text should be rendered in the export (e.g.\nas paths or real text objects).\n\n.. versionadded:: 3.4.3', 'simplifyGeometries': 'Indicates whether vector geometries should be simplified to avoid redundant extraneous detail,\nsuch as vertices which are not visible at the specified dpi of the output.\n\n.. versionadded:: 3.10', 'writeGeoPdf': '``True`` if geospatial PDF files should be created, instead of normal PDF files.\n\nWhilst geospatial PDF files can include some desirable properties like the ability to interactively\nquery map features, they also can result in lower-quality output files, or forced rasterization\nof layers.\n\n.. note::\n\n Requires builds based on GDAL 3.0 or greater.\n\n.. versionadded:: 3.10', 'exportLayersAsSeperateFiles': '``True`` if individual layers from the layout should be rendered to separate PDF files.\n\nThis option allows for separation of logic layout layers to individual PDF files. For instance,\nif this option is ``True``, then a separate PDF file will be created per layer per map item in the\nlayout. Additionally, separate PDF files may be created for other complex layout items, resulting\nin a set of PDF files which contain logical atomic components of the layout.\n\nThis option is designed to allow the PDF files to be composited back together in an external\napplication (e.g. Adobe Illustrator) as a non-QGIS, post-production step.\n\n.. versionadded:: 3.14', 'useIso32000ExtensionFormatGeoreferencing': '``True`` if ISO3200 extension format georeferencing should be used.\n\nThis is a recommended setting which results in Geospatial PDF files compatible\nwith the built-in Acrobat geospatial tools.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'useOgcBestPracticeFormatGeoreferencing': '``True`` if OGC "best practice" format georeferencing should be used.\n\n.. warning::\n\n This results in geospatial PDF files compatible with a unnamed suite of tools starting with Terra and ending with Go, but\n can break compatibility with the built-in Acrobat geospatial tools (yes, Geospatial PDF\n format is a mess!).\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.\n\n.. deprecated:: 3.42\n\n This parameter has no longer any effect. Only ISO 32000 georeferencing is handled.', 'includeGeoPdfFeatures': '``True`` if feature vector information (such as attributes) should be exported during Geospatial PDF exports.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.', 'exportThemes': "Optional list of map themes to export as Geospatial PDF layer groups.\n\nIf set, map item's which are not assigned a specific map theme will iterate through all listed\nthemes and a Geospatial PDF layer group will be created for each.\n\nIf PdfExportSettings.writeGeoPdf is ``False`` than this option has no effect.", 'predefinedMapScales': 'A list of predefined scales to use with the layout. This is used\nfor maps which are set to the predefined atlas scaling mode.\n\n.. versionadded:: 3.10'}
QgsLayoutExporter.PdfExportSettings.__doc__ = """Contains settings relating to exporting layouts to PDF"""
QgsLayoutExporter.PdfExportSettings.__group__ = ['layout']
except (NameError, AttributeError):
diff --git a/python/core/auto_additions/qgsmimedatautils.py b/python/core/auto_additions/qgsmimedatautils.py
index 551f882dfd1b..8a8d3661c499 100644
--- a/python/core/auto_additions/qgsmimedatautils.py
+++ b/python/core/auto_additions/qgsmimedatautils.py
@@ -1,6 +1,6 @@
# The following has been generated automatically from src/core/qgsmimedatautils.h
try:
- QgsMimeDataUtils.Uri.__attribute_docs__ = {'layerType': 'Type of URI.\n\nRecognized types include\n\n- "vector": vector layers\n- "raster": raster layers\n- "mesh": mesh layers\n- "pointcloud": point cloud layers\n- "vector-tile": vector tile layers\n- "tiled-scene": tiled scene layers\n- "plugin": plugin layers\n- "custom": custom types\n- "project": QGS/QGZ project file\n- "directory": directory path\n\nMime data from plugins may use additional custom layer types.', 'providerKey': 'For "vector" / "raster" type: provider id.\nFor "plugin" type: plugin layer type name.\nFor "custom" type: key of its :py:class:`QgsCustomDropHandler`\nFor "project" and "directory" types: unused', 'name': 'Human readable name to be used e.g. in layer tree', 'uri': 'Identifier of the data source recognized by its providerKey', 'layerId': 'Layer ID, if uri is associated with a layer from a :py:class:`QgsProject`.\n\n.. versionadded:: 3.8', 'pId': 'Unique ID associated with application instance. Can be used to identify\nif mime data was created inside the current application instance or not.\n\n.. versionadded:: 3.8', 'wkbType': 'WKB type, if associated with a vector layer, or :py:class:`QgsWkbTypes`.Unknown if not\nyet known.\n\n.. versionadded:: 3.8', 'filePath': 'Path to file, if uri is associated with a file.\n\n.. versionadded:: 3.22'}
+ QgsMimeDataUtils.Uri.__attribute_docs__ = {'layerType': 'Type of URI.\n\nRecognized types include\n\n- "vector": vector layers\n- "raster": raster layers\n- "mesh": mesh layers\n- "point-cloud": point cloud layers (spelled with a dash since QGIS 3.42.0. In prior versions, there was no dash)\n- "vector-tile": vector tile layers\n- "tiled-scene": tiled scene layers\n- "annotation": annotation layers\n- "group": group layers\n- "plugin": plugin layers\n- "custom": custom types\n- "project": QGS/QGZ project file\n- "directory": directory path\n\nNote: use :py:func:`QgsMapLayerFactory.typeToString()` to convert from a\n:py:class:`Qgis`.LayerType to a string (except for "custom", "project" and\n"directory")\n\nMime data from plugins may use additional custom layer types.', 'providerKey': 'For "vector" / "raster" type: provider id.\nFor "plugin" type: plugin layer type name.\nFor "custom" type: key of its :py:class:`QgsCustomDropHandler`\nFor "project" and "directory" types: unused', 'name': 'Human readable name to be used e.g. in layer tree', 'uri': 'Identifier of the data source recognized by its providerKey', 'layerId': 'Layer ID, if uri is associated with a layer from a :py:class:`QgsProject`.\n\n.. versionadded:: 3.8', 'pId': 'Unique ID associated with application instance. Can be used to identify\nif mime data was created inside the current application instance or not.\n\n.. versionadded:: 3.8', 'wkbType': 'WKB type, if associated with a vector layer, or :py:class:`QgsWkbTypes`.Unknown if not\nyet known.\n\n.. versionadded:: 3.8', 'filePath': 'Path to file, if uri is associated with a file.\n\n.. versionadded:: 3.22'}
except (NameError, AttributeError):
pass
try:
diff --git a/python/core/auto_additions/qgspointcloudlayer.py b/python/core/auto_additions/qgspointcloudlayer.py
index b1931c3c06fd..3305db2e09ad 100644
--- a/python/core/auto_additions/qgspointcloudlayer.py
+++ b/python/core/auto_additions/qgspointcloudlayer.py
@@ -21,8 +21,8 @@
except (NameError, AttributeError):
pass
try:
- QgsPointCloudLayer.__attribute_docs__ = {'subsetStringChanged': "Emitted when the layer's subset string has changed.\n\n.. versionadded:: 3.26\n", 'raiseError': 'Signals an error related to this point cloud layer.\n\n.. versionadded:: 3.26\n', 'statisticsCalculationStateChanged': 'Emitted when statistics calculation state has changed\n\n.. versionadded:: 3.26\n'}
- QgsPointCloudLayer.__signal_arguments__ = {'raiseError': ['msg: str'], 'statisticsCalculationStateChanged': ['state: QgsPointCloudLayer.PointCloudStatisticsCalculationState']}
+ QgsPointCloudLayer.__attribute_docs__ = {'subsetStringChanged': "Emitted when the layer's subset string has changed.\n\n.. versionadded:: 3.26\n", 'raiseError': 'Signals an error related to this point cloud layer.\n\n.. versionadded:: 3.26\n', 'statisticsCalculationStateChanged': 'Emitted when statistics calculation state has changed\n\n.. versionadded:: 3.26\n', 'chunkAttributeValuesChanged': 'Emitted when a node gets some attribute values of some points changed\n\n.. versionadded:: 3.42\n'}
+ QgsPointCloudLayer.__signal_arguments__ = {'raiseError': ['msg: str'], 'statisticsCalculationStateChanged': ['state: QgsPointCloudLayer.PointCloudStatisticsCalculationState'], 'chunkAttributeValuesChanged': ['n: QgsPointCloudNodeId']}
QgsPointCloudLayer.__group__ = ['pointcloud']
except (NameError, AttributeError):
pass
diff --git a/python/core/auto_additions/qgssymbollayerutils.py b/python/core/auto_additions/qgssymbollayerutils.py
index de49d5e3840c..58e412ae6838 100644
--- a/python/core/auto_additions/qgssymbollayerutils.py
+++ b/python/core/auto_additions/qgssymbollayerutils.py
@@ -161,6 +161,7 @@
QgsSymbolLayerUtils.tileSize = staticmethod(QgsSymbolLayerUtils.tileSize)
QgsSymbolLayerUtils.clearSymbolLayerIds = staticmethod(QgsSymbolLayerUtils.clearSymbolLayerIds)
QgsSymbolLayerUtils.resetSymbolLayerIds = staticmethod(QgsSymbolLayerUtils.resetSymbolLayerIds)
+ QgsSymbolLayerUtils.clearSymbolLayerMasks = staticmethod(QgsSymbolLayerUtils.clearSymbolLayerMasks)
QgsSymbolLayerUtils.collectSymbolLayerClipGeometries = staticmethod(QgsSymbolLayerUtils.collectSymbolLayerClipGeometries)
QgsSymbolLayerUtils.__group__ = ['symbology']
except (NameError, AttributeError):
diff --git a/python/core/auto_additions/qgstransaction.py b/python/core/auto_additions/qgstransaction.py
index 180403b80ca6..284cc9fa4347 100644
--- a/python/core/auto_additions/qgstransaction.py
+++ b/python/core/auto_additions/qgstransaction.py
@@ -1,8 +1,8 @@
# The following has been generated automatically from src/core/qgstransaction.h
try:
- QgsTransaction.__attribute_docs__ = {'afterRollback': 'Emitted after a rollback\n', 'dirtied': 'Emitted if a sql query is executed and the underlying data is modified\n'}
+ QgsTransaction.__attribute_docs__ = {'afterRollback': 'Emitted after a rollback\n', 'afterRollbackToSavepoint': 'Emitted after a rollback to savepoint\n\n.. versionadded:: 3.42\n', 'dirtied': 'Emitted if a sql query is executed and the underlying data is modified\n'}
QgsTransaction.create = staticmethod(QgsTransaction.create)
QgsTransaction.supportsTransaction = staticmethod(QgsTransaction.supportsTransaction)
- QgsTransaction.__signal_arguments__ = {'dirtied': ['sql: str', 'name: str']}
+ QgsTransaction.__signal_arguments__ = {'afterRollbackToSavepoint': ['savepointName: str'], 'dirtied': ['sql: str', 'name: str']}
except (NameError, AttributeError):
pass
diff --git a/python/core/auto_generated/auth/qgsauthmanager.sip.in b/python/core/auto_generated/auth/qgsauthmanager.sip.in
index 35f5281bbcef..fa8ecdab07ca 100644
--- a/python/core/auto_generated/auth/qgsauthmanager.sip.in
+++ b/python/core/auto_generated/auth/qgsauthmanager.sip.in
@@ -27,6 +27,7 @@ and to utilize configurations through various authentication method plugins
%End
public:
+
enum MessageLevel
{
INFO,
@@ -161,6 +162,7 @@ Returns the authentication database connection URI with the password stripped.
.. versionadded:: 3.40
%End
+
bool setMasterPassword( bool verify = false );
%Docstring
Main call to initially set or continually check master password is set
@@ -223,17 +225,18 @@ Check whether supplied password is the same as the one already set
bool resetMasterPassword( const QString &newpass, const QString &oldpass, bool keepbackup, QString *backuppath /In,Out/ = 0 );
%Docstring
-Reset the master password to a new one, then re-encrypt all previous
-configs in a new database file, optionally backup current database
+Reset the master password to a new one, then re-encrypts all previous
+configs with the new password.
:param newpass: New master password to replace existing
:param oldpass: Current master password to replace existing
-:param keepbackup: Whether to keep the generated backup of current database
+:param keepbackup: Whether to keep the generated backup of current database (if using file-based storage)
:param backuppath: Where the backup is located, if kept
%End
+
void setScheduledAuthDatabaseEraseRequestEmitted( bool emitted );
%Docstring
Re-emit a signal to schedule an optional erase of authentication database.
@@ -810,8 +813,20 @@ Store the password manager into the wallet
Available in Python bindings since QGIS 3.8.0
%End
+
+
static const QString AUTH_PASSWORD_HELPER_DISPLAY_NAME;
+ static QString passwordHelperDisplayName( bool titleCase = false );
+%Docstring
+Returns a translated display name of the password helper (platform dependent).
+
+If ``titleCase`` is ``True`` then a title case version of the string will be returned. Otherwise
+a mid-sentence case version will be returned.
+
+.. versionadded:: 3.42
+%End
+
static const QString AUTH_MAN_TAG;
diff --git a/python/core/auto_generated/effects/qgspainteffect.sip.in b/python/core/auto_generated/effects/qgspainteffect.sip.in
index 777e12217c22..0143932f0254 100644
--- a/python/core/auto_generated/effects/qgspainteffect.sip.in
+++ b/python/core/auto_generated/effects/qgspainteffect.sip.in
@@ -149,7 +149,7 @@ Restores the effect to the state described by a DOM element.
.. seealso:: :py:func:`saveProperties`
%End
- virtual void render( QPicture &picture, QgsRenderContext &context );
+ virtual void render( const QPicture &picture, QgsRenderContext &context );
%Docstring
Renders a picture using the effect.
@@ -246,7 +246,7 @@ to account for the destination painter's DPI.
.. seealso:: :py:func:`sourceAsImage`
%End
- const QPicture *source() const;
+ const QPicture &source() const;
%Docstring
Returns the source QPicture. The :py:func:`~QgsPaintEffect.draw` member can utilize this when
drawing the effect.
@@ -258,14 +258,14 @@ drawing the effect.
.. seealso:: :py:func:`sourceAsImage`
%End
- QImage *sourceAsImage( QgsRenderContext &context );
+ QImage sourceAsImage( QgsRenderContext &context );
%Docstring
Returns the source QPicture rendered to a new QImage. The :py:func:`~QgsPaintEffect.draw` member can
utilize this when drawing the effect. The image will be padded or cropped from the original
source QPicture by the results of the :py:func:`~QgsPaintEffect.boundingRect` method.
The result is cached to speed up subsequent calls to sourceAsImage.
-:return: source QPicture rendered to an image
+:return: source QPicture rendered to an image, or a null image if source could not be rendered
.. seealso:: :py:func:`drawSource`
diff --git a/python/core/auto_generated/geometry/qgsbox3d.sip.in b/python/core/auto_generated/geometry/qgsbox3d.sip.in
index c3205eeb8b43..18edcd44c9c2 100644
--- a/python/core/auto_generated/geometry/qgsbox3d.sip.in
+++ b/python/core/auto_generated/geometry/qgsbox3d.sip.in
@@ -375,12 +375,24 @@ Expands the bbox so that it covers both the original rectangle and the given poi
Converts the box to a 2D rectangle.
%End
- double distanceTo( const QVector3D &point ) const /HoldGIL/;
+ double distanceTo( const QVector3D &point ) const /Deprecated="Since 3.42. Use distanceTo() with QgsVector3D instead (QVector3D uses floats)."/;
%Docstring
Returns the smallest distance between the box and the point ``point``
(returns 0 if the point is inside the box)
.. versionadded:: 3.18
+
+.. deprecated:: 3.42
+
+ Use :py:func:`~QgsBox3D.distanceTo` with :py:class:`QgsVector3D` instead (QVector3D uses floats).
+%End
+
+ double distanceTo( const QgsVector3D &point ) const /HoldGIL/;
+%Docstring
+Returns the smallest distance between the box and the point ``point``
+(returns 0 if the point is inside the box)
+
+.. versionadded:: 3.42
%End
bool operator==( const QgsBox3D &other ) const /HoldGIL/;
diff --git a/python/core/auto_generated/geometry/qgsmultipoint.sip.in b/python/core/auto_generated/geometry/qgsmultipoint.sip.in
index 5fd56c1ab2f0..d6c56daea4f1 100644
--- a/python/core/auto_generated/geometry/qgsmultipoint.sip.in
+++ b/python/core/auto_generated/geometry/qgsmultipoint.sip.in
@@ -120,7 +120,7 @@ The multipoint Z and M type will be set based on the type of the first point in
break;
}
- std::unique_ptr< QgsPoint > point = std::make_unique< QgsPoint >( x, y );
+ auto point = std::make_unique< QgsPoint >( x, y );
if ( elementSize > 2 )
{
element = PySequence_GetItem( value, 2 );
diff --git a/python/core/auto_generated/geometry/qgsrectangle.sip.in b/python/core/auto_generated/geometry/qgsrectangle.sip.in
index b4b1d09716da..d24acb66d00b 100644
--- a/python/core/auto_generated/geometry/qgsrectangle.sip.in
+++ b/python/core/auto_generated/geometry/qgsrectangle.sip.in
@@ -11,6 +11,8 @@
+
+
class QgsRectangle
{
%Docstring(signature="appended")
diff --git a/python/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in b/python/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in
index 9263739895e0..baa4719b6872 100644
--- a/python/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in
+++ b/python/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in
@@ -21,7 +21,7 @@ Rule based labeling for a vector layer.
%End
public:
typedef QList RuleList;
- typedef QMap RuleToProviderMap;
+ public:
class Rule
{
@@ -219,9 +219,13 @@ Try to find a rule given its unique key
%End
- QgsRuleBasedLabeling::Rule *clone() const /Factory/;
+ QgsRuleBasedLabeling::Rule *clone( bool resetRuleKey = true ) const /Factory/;
%Docstring
-clone this rule, return new instance
+clone this rule
+
+:param resetRuleKey: ``True`` if this rule and its children rule key need to be reset to new unique ones.
+
+:return: new instance
%End
@@ -312,8 +316,6 @@ Set pal settings for a specific provider (takes ownership).
protected:
-
-
};
diff --git a/python/core/auto_generated/layertree/qgslayertreeregistrybridge.sip.in b/python/core/auto_generated/layertree/qgslayertreeregistrybridge.sip.in
index 47de54bfeeba..b614ba15fe46 100644
--- a/python/core/auto_generated/layertree/qgslayertreeregistrybridge.sip.in
+++ b/python/core/auto_generated/layertree/qgslayertreeregistrybridge.sip.in
@@ -66,6 +66,13 @@ Set where the new layers should be inserted - can be used to follow current sele
By default it is root group with zero index.
.. versionadded:: 3.10
+%End
+
+ InsertionPoint layerInsertionPoint() const;
+%Docstring
+Returns the insertion point used to add layers to the tree
+
+.. versionadded:: 3.42
%End
void setLayerInsertionMethod( Qgis::LayerTreeInsertionMethod method );
@@ -100,6 +107,7 @@ Tell others we have just added layers to the tree (used in QGIS to auto-select f
protected:
+
};
/************************************************************************
diff --git a/python/core/auto_generated/mesh/qgsmeshlayer.sip.in b/python/core/auto_generated/mesh/qgsmeshlayer.sip.in
index 6a2cafa579ac..6a5b6bb46558 100644
--- a/python/core/auto_generated/mesh/qgsmeshlayer.sip.in
+++ b/python/core/auto_generated/mesh/qgsmeshlayer.sip.in
@@ -234,9 +234,13 @@ Gets native mesh and updates (creates if it doesn't exist) the base triangular m
%Docstring
Returns renderer settings
%End
- void setRendererSettings( const QgsMeshRendererSettings &settings );
+
+ void setRendererSettings( const QgsMeshRendererSettings &settings, const bool repaint = true );
%Docstring
Sets new renderer settings
+
+:param settings:
+:param repaint: should the update of renderer settings trigger repaint and emit rendererChanged signal
%End
QgsMeshTimeSettings timeSettings() const;
diff --git a/python/core/auto_generated/network/qgshttpheaders.sip.in b/python/core/auto_generated/network/qgshttpheaders.sip.in
index 3428ece4f42b..c4e72e65a521 100644
--- a/python/core/auto_generated/network/qgshttpheaders.sip.in
+++ b/python/core/auto_generated/network/qgshttpheaders.sip.in
@@ -109,15 +109,22 @@ KEY_REFERER value will be available at key "KEY_PREFIX+KEY_REFERER" and key "KEY
:return: ``True`` if the update succeed
%End
- bool updateDomElement( QDomElement &el ) const;
+ bool updateDomElement( QDomElement &el ) const /Deprecated="Since 3.42. Will be removed in QGIS 4.0."/;
%Docstring
-Updates a ``map`` by adding all the HTTP headers
+Updates a DOM element by adding all the HTTP headers
KEY_REFERER value will be available at attribute "KEY_PREFIX+KEY_REFERER" and attribute "KEY_REFERER" (for backward compatibility)
+:param el: DOM element
+
:return: ``True`` if the update succeed
+
+.. deprecated:: 3.42
+
+ Will be removed in QGIS 4.0.
%End
+
void setFromSettings( const QgsSettings &settings, const QString &key = QString() );
%Docstring
Loads headers from the ``settings``
@@ -185,6 +192,7 @@ Returns key/value pairs as strings separated by space
};
+
/************************************************************************
* This file has been generated automatically from *
* *
diff --git a/python/core/auto_generated/pointcloud/qgspointcloudindex.sip.in b/python/core/auto_generated/pointcloud/qgspointcloudindex.sip.in
index 18cbe8b42976..cdaf1cfdeda5 100644
--- a/python/core/auto_generated/pointcloud/qgspointcloudindex.sip.in
+++ b/python/core/auto_generated/pointcloud/qgspointcloudindex.sip.in
@@ -169,6 +169,7 @@ index is memory safe.
operator bool() const;
+
void load( const QString &fileName );
%Docstring
Loads the index from the file
@@ -355,9 +356,11 @@ in an implementation-specific dynamic structure.
.. seealso:: :py:func:`QgsAbstractPointCloudIndex.extraMetadata`
%End
- bool commitChanges();
+ bool commitChanges( QString *errorMessage /Out/ = 0 );
%Docstring
Tries to store pending changes to the data provider.
+If errorMessage is not a null pointer, it will receive
+an error message in case the call failed.
:return: ``True`` on success, otherwise ``False``
%End
@@ -365,6 +368,11 @@ Tries to store pending changes to the data provider.
bool isModified() const;
%Docstring
Returns ``True`` if there are uncommitted changes, ``False`` otherwise
+%End
+
+ QList updatedNodes() const;
+%Docstring
+Returns a list of node IDs that have been modified
%End
};
diff --git a/python/core/auto_generated/pointcloud/qgspointcloudlayer.sip.in b/python/core/auto_generated/pointcloud/qgspointcloudlayer.sip.in
index d239635dce4a..3a43cbcec56b 100644
--- a/python/core/auto_generated/pointcloud/qgspointcloudlayer.sip.in
+++ b/python/core/auto_generated/pointcloud/qgspointcloudlayer.sip.in
@@ -305,6 +305,13 @@ Signals an error related to this point cloud layer.
Emitted when statistics calculation state has changed
.. versionadded:: 3.26
+%End
+
+ void chunkAttributeValuesChanged( const QgsPointCloudNodeId &n );
+%Docstring
+Emitted when a node gets some attribute values of some points changed
+
+.. versionadded:: 3.42
%End
private:
diff --git a/python/core/auto_generated/processing/qgsprocessingcontext.sip.in b/python/core/auto_generated/processing/qgsprocessingcontext.sip.in
index b35acb194587..f049c6216b8e 100644
--- a/python/core/auto_generated/processing/qgsprocessingcontext.sip.in
+++ b/python/core/auto_generated/processing/qgsprocessingcontext.sip.in
@@ -662,6 +662,13 @@ Returns the model results, populated when the context is used to run a model alg
%End
+ void clearModelResult();
+%Docstring
+Clears model results previously populated when the context was used to run a model algorithm.
+
+.. versionadded:: 3.42
+%End
+
private:
QgsProcessingContext( const QgsProcessingContext &other );
};
diff --git a/python/core/auto_generated/processing/qgsprocessingutils.sip.in b/python/core/auto_generated/processing/qgsprocessingutils.sip.in
index 8b122a842abb..82649ee9268e 100644
--- a/python/core/auto_generated/processing/qgsprocessingutils.sip.in
+++ b/python/core/auto_generated/processing/qgsprocessingutils.sip.in
@@ -335,7 +335,7 @@ Normalizes a layer ``source`` string for safe comparison across different
operating system environments.
%End
- static QString layerToStringIdentifier( const QgsMapLayer *layer ) /HoldGIL/;
+ static QString layerToStringIdentifier( const QgsMapLayer *layer, const QString &layerName = QString() ) /HoldGIL/;
%Docstring
Returns a string representation of the source for a ``layer``. The returned
value is suitable for storage for subsequent executions of an algorithm
diff --git a/python/core/auto_generated/proj/qgscoordinatereferencesystem.sip.in b/python/core/auto_generated/proj/qgscoordinatereferencesystem.sip.in
index f83c3850070a..b33cfa95148a 100644
--- a/python/core/auto_generated/proj/qgscoordinatereferencesystem.sip.in
+++ b/python/core/auto_generated/proj/qgscoordinatereferencesystem.sip.in
@@ -839,7 +839,7 @@ plate-fixed.
.. versionadded:: 3.20
%End
- QgsDatumEnsemble datumEnsemble() const throw( QgsNotSupportedException );
+ QgsDatumEnsemble datumEnsemble() const;
%Docstring
Attempts to retrieve datum ensemble details from the CRS.
@@ -850,25 +850,13 @@ be returned.
In the case of a compound crs, this method will always return the datum ensemble for the horizontal component.
-.. warning::
-
- This method requires PROJ 8.0 or later
-
-:raises QgsNotSupportedException: on QGIS builds based on PROJ 7 or earlier.
-
.. versionadded:: 3.20
%End
- QString celestialBodyName() const throw( QgsNotSupportedException );
+ QString celestialBodyName() const;
%Docstring
Attempts to retrieve the name of the celestial body associated with the CRS (e.g. "Earth").
-.. warning::
-
- This method requires PROJ 8.1 or later
-
-:raises QgsNotSupportedException: on QGIS builds based on PROJ 8.0 or earlier.
-
.. versionadded:: 3.20
%End
diff --git a/python/core/auto_generated/proj/qgscoordinatereferencesystemregistry.sip.in b/python/core/auto_generated/proj/qgscoordinatereferencesystemregistry.sip.in
index 1df531255497..55044defbf28 100644
--- a/python/core/auto_generated/proj/qgscoordinatereferencesystemregistry.sip.in
+++ b/python/core/auto_generated/proj/qgscoordinatereferencesystemregistry.sip.in
@@ -128,12 +128,6 @@ The map keys correspond to PROJ operation IDs.
%Docstring
Returns a list of all known celestial bodies.
-.. warning::
-
- This method requires PROJ 8.1 or later
-
-:raises QgsNotSupportedException: on QGIS builds based on PROJ 8.0 or earlier.
-
.. versionadded:: 3.20
%End
diff --git a/python/core/auto_generated/proj/qgscoordinatetransform.sip.in b/python/core/auto_generated/proj/qgscoordinatetransform.sip.in
index eccd86b8114d..2a5a398938ee 100644
--- a/python/core/auto_generated/proj/qgscoordinatetransform.sip.in
+++ b/python/core/auto_generated/proj/qgscoordinatetransform.sip.in
@@ -280,6 +280,10 @@ the returned rectangle.
:return: rectangle in destination CRS
+.. warning::
+
+ Do not call this method if the transformation involves geocentric CRS -- in this situation transformation of a 2D bounding box is meaningless! Calling this method with a geocentric CRS will result in a :py:class:`QgsCsException` being thrown.
+
:raises QgsCsException: if the transformation fails
%End
diff --git a/python/core/auto_generated/providers/qgsabstractdatabaseproviderconnection.sip.in b/python/core/auto_generated/providers/qgsabstractdatabaseproviderconnection.sip.in
index 19a8761aecb4..e58d9bcb5187 100644
--- a/python/core/auto_generated/providers/qgsabstractdatabaseproviderconnection.sip.in
+++ b/python/core/auto_generated/providers/qgsabstractdatabaseproviderconnection.sip.in
@@ -1033,6 +1033,8 @@ Checks if ``capability`` is supported.
+
+
};
QFlags operator|(QgsAbstractDatabaseProviderConnection::Capability f1, QFlags f2);
diff --git a/python/core/auto_generated/providers/qgsprovidermetadata.sip.in b/python/core/auto_generated/providers/qgsprovidermetadata.sip.in
index 9af4d97a1d3a..19c3052bdea9 100644
--- a/python/core/auto_generated/providers/qgsprovidermetadata.sip.in
+++ b/python/core/auto_generated/providers/qgsprovidermetadata.sip.in
@@ -573,6 +573,13 @@ If a provider does not work with paths, unmodified URI will be returned.
.. seealso:: :py:func:`absoluteToRelativeUri`
.. versionadded:: 3.30
+%End
+
+ virtual QString cleanUri( const QString &uri, Qgis::UriCleaningFlags flags = Qgis::UriCleaningFlag::RemoveCredentials ) const;
+%Docstring
+Cleans a layer ``uri``, e.g. to remove or hide sensitive information from the URI.
+
+.. versionadded:: 3.42
%End
virtual QList< QgsDataItemProvider * > dataItemProviders() const /Factory/;
diff --git a/python/core/auto_generated/providers/sensorthings/qgssensorthingsutils.sip.in b/python/core/auto_generated/providers/sensorthings/qgssensorthingsutils.sip.in
index 45b049c4c7e4..394e736ba268 100644
--- a/python/core/auto_generated/providers/sensorthings/qgssensorthingsutils.sip.in
+++ b/python/core/auto_generated/providers/sensorthings/qgssensorthingsutils.sip.in
@@ -56,9 +56,12 @@ Returns the SensorThings properties which correspond to a specified entity ``typ
.. versionadded:: 3.38
%End
- static QgsFields fieldsForEntityType( Qgis::SensorThingsEntity type );
+ static QgsFields fieldsForEntityType( Qgis::SensorThingsEntity type, bool includeRangeFieldProxies = true );
%Docstring
Returns the fields which correspond to a specified entity ``type``.
+
+Since QGIS 3.42 the ``includeRangeFieldProxies`` argument can be used to hide the "start"/"end" fields
+which are proxies for the date time range field types which are not natively supported in QGIS.
%End
static QgsFields fieldsForExpandedEntityType( Qgis::SensorThingsEntity baseType, const QList< Qgis::SensorThingsEntity > &expandedTypes );
diff --git a/python/core/auto_generated/qgis.sip.in b/python/core/auto_generated/qgis.sip.in
index a2b885ed6ddb..f6e2c40a25db 100644
--- a/python/core/auto_generated/qgis.sip.in
+++ b/python/core/auto_generated/qgis.sip.in
@@ -783,6 +783,15 @@ The development version
TiledScene,
};
+ enum class UriCleaningFlag
+ {
+ RemoveCredentials,
+ RedactCredentials,
+ };
+
+ typedef QFlags UriCleaningFlags;
+
+
enum class SublayerQueryFlag
{
FastScan,
@@ -3406,6 +3415,8 @@ QFlags operator|(Qgis::SnappingType f1, QFlags operator|(Qgis::SqlLayerDefinitionCapability f1, QFlags f2);
+QFlags operator|(Qgis::UriCleaningFlag f1, QFlags f2);
+
QFlags operator|(Qgis::SublayerFlag f1, QFlags f2);
QFlags operator|(Qgis::SublayerQueryFlag f1, QFlags f2);
diff --git a/python/core/auto_generated/qgsabstractcontentcache.sip.in b/python/core/auto_generated/qgsabstractcontentcache.sip.in
index d65dc29a2c09..2d5694ae3f06 100644
--- a/python/core/auto_generated/qgsabstractcontentcache.sip.in
+++ b/python/core/auto_generated/qgsabstractcontentcache.sip.in
@@ -108,6 +108,23 @@ Data URLs are of the form ``data:[;]base64,``.
.. versionadded:: 3.40
%End
+
+ static bool parseEmbeddedStringData( const QString &path, QString *mimeType /Out/ = 0, QString *data /Out/ = 0 );
+%Docstring
+Parses a ``path`` to determine if it represents a embedded string data, and if so, extracts the components
+of the URL.
+
+Data URLs are of the form ``data:[;]utf8,``.
+
+:param path: path to test
+
+:return: - ``True`` if ``path`` is an embedded string data URL
+ - mimeType: the extracted mime type if the ``path`` is a data URL
+ - data: the extracted string data if the ``path`` is a data URL
+
+.. versionadded:: 3.42
+%End
+
static bool isBase64Data( const QString &path );
%Docstring
Returns ``True`` if ``path`` represents base64 encoded data.
diff --git a/python/core/auto_generated/qgserror.sip.in b/python/core/auto_generated/qgserror.sip.in
index a7a02ca84f74..8bd96aedca61 100644
--- a/python/core/auto_generated/qgserror.sip.in
+++ b/python/core/auto_generated/qgserror.sip.in
@@ -88,9 +88,9 @@ Append new error message.
bool isEmpty() const;
%Docstring
-Test if any error is set.
+Test if no error is set.
-:return: ``True`` if contains error
+:return: ``False`` if contains error
%End
QString message( QgsErrorMessage::Format format = QgsErrorMessage::Html ) const;
diff --git a/python/core/auto_generated/qgsfeatureiterator.sip.in b/python/core/auto_generated/qgsfeatureiterator.sip.in
index 2d9ddbea908c..9c958586c3df 100644
--- a/python/core/auto_generated/qgsfeatureiterator.sip.in
+++ b/python/core/auto_generated/qgsfeatureiterator.sip.in
@@ -222,7 +222,7 @@ Wrapper for iterator of features from vector data provider or vector layer
SIP_PYOBJECT __next__() /TypeHint="QgsFeature"/;
%MethodCode
- std::unique_ptr< QgsFeature > f = std::make_unique< QgsFeature >();
+ auto f = std::make_unique< QgsFeature >();
bool result = false;
Py_BEGIN_ALLOW_THREADS
result = ( sipCpp->nextFeature( *f ) );
diff --git a/python/core/auto_generated/qgsmaplayer.sip.in b/python/core/auto_generated/qgsmaplayer.sip.in
index cfa3b903874f..41b536975391 100644
--- a/python/core/auto_generated/qgsmaplayer.sip.in
+++ b/python/core/auto_generated/qgsmaplayer.sip.in
@@ -567,13 +567,14 @@ or other problem. Child classes set this flag when initialized.
:return: ``True`` if the layer is valid and can be accessed
%End
+
QString publicSource( bool hidePassword = false ) const;
%Docstring
Gets a version of the internal layer definition that has sensitive
bits removed (for example, the password). This function should
be used when displaying the source name for general viewing.
-:param hidePassword: False, if the password should be removed or replaced by an arbitrary string, since QGIS 3.34
+:param hidePassword: ``True`` to replace the value of credentials with 'xxxxxxxx', ``False`` to completely remove credentials (key and value). Since QGIS 3.34
.. seealso:: :py:func:`source`
%End
diff --git a/python/core/auto_generated/qgsmessagelog.sip.in b/python/core/auto_generated/qgsmessagelog.sip.in
index 191fedee7791..dae700f6b340 100644
--- a/python/core/auto_generated/qgsmessagelog.sip.in
+++ b/python/core/auto_generated/qgsmessagelog.sip.in
@@ -32,14 +32,8 @@ window for the user.
QgsMessageLog();
- static void logMessage( const QString &message, const QString &tag = QString(), Qgis::MessageLevel level = Qgis::MessageLevel::Warning, bool notifyUser = true );
-%Docstring
-Adds a ``message`` to the log instance (and creates it if necessary).
-
-If ``notifyUser`` is ``True``, then the message should be brought to the user's attention by various UI hints.
-If it is ``False``, the message should appear in logs silently. Note that log viewer implementations may
-only respect notification hints for certain message levels.
-%End
+ static void logMessage( const QString &message, const QString &tag = QString(), Qgis::MessageLevel level = Qgis::MessageLevel::Warning, bool notifyUser = true,
+ const char *file = __builtin_FILE(), const char *function = __builtin_FUNCTION(), int line = __builtin_LINE() );
signals:
diff --git a/python/core/auto_generated/qgsspatialindex.sip.in b/python/core/auto_generated/qgsspatialindex.sip.in
index 03799f08936e..53e32de3fcc4 100644
--- a/python/core/auto_generated/qgsspatialindex.sip.in
+++ b/python/core/auto_generated/qgsspatialindex.sip.in
@@ -205,7 +205,7 @@ Geometry is only stored if the QgsSpatialIndex was created with the FlagStoreFea
.. versionadded:: 3.6
%End
%MethodCode
- std::unique_ptr< QgsGeometry > g = std::make_unique< QgsGeometry >( sipCpp->geometry( a0 ) );
+ auto g = std::make_unique< QgsGeometry >( sipCpp->geometry( a0 ) );
if ( g->isNull() )
{
PyErr_SetString( PyExc_KeyError, QStringLiteral( "No geometry with feature id %1 exists in the index." ).arg( a0 ).toUtf8().constData() );
diff --git a/python/core/auto_generated/qgstransaction.sip.in b/python/core/auto_generated/qgstransaction.sip.in
index 412929f07859..b5f528812390 100644
--- a/python/core/auto_generated/qgstransaction.sip.in
+++ b/python/core/auto_generated/qgstransaction.sip.in
@@ -152,6 +152,13 @@ returns the last created savepoint
void afterRollback();
%Docstring
Emitted after a rollback
+%End
+
+ void afterRollbackToSavepoint( const QString &savepointName );
+%Docstring
+Emitted after a rollback to savepoint
+
+.. versionadded:: 3.42
%End
void dirtied( const QString &sql, const QString &name );
diff --git a/python/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in b/python/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in
index 458d2c810456..a7cedd17f041 100644
--- a/python/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in
+++ b/python/core/auto_generated/scalebar/qgsdoubleboxscalebarrenderer.sip.in
@@ -36,6 +36,8 @@ Double box with alternating colors.
const QgsScaleBarSettings &settings,
const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const;
+ virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;
+
};
/************************************************************************
diff --git a/python/core/auto_generated/scalebar/qgshollowscalebarrenderer.sip.in b/python/core/auto_generated/scalebar/qgshollowscalebarrenderer.sip.in
index 0a8ad51a02c6..fd669e79b5be 100644
--- a/python/core/auto_generated/scalebar/qgshollowscalebarrenderer.sip.in
+++ b/python/core/auto_generated/scalebar/qgshollowscalebarrenderer.sip.in
@@ -40,7 +40,6 @@ alternating segments. AKA "South African" style.
const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const;
virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;
-
};
/************************************************************************
diff --git a/python/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in b/python/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in
index 30e8ed6d403f..4a828b2e55e8 100644
--- a/python/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in
+++ b/python/core/auto_generated/scalebar/qgssingleboxscalebarrenderer.sip.in
@@ -37,6 +37,8 @@ color for the segments.
const QgsScaleBarSettings &settings,
const QgsScaleBarRenderer::ScaleBarContext &scaleContext ) const;
+ virtual bool applyDefaultSettings( QgsScaleBarSettings &settings ) const;
+
};
/************************************************************************
diff --git a/python/core/auto_generated/symbology/qgsmasksymbollayer.sip.in b/python/core/auto_generated/symbology/qgsmasksymbollayer.sip.in
index 03583d69ad2c..1ee80706775d 100644
--- a/python/core/auto_generated/symbology/qgsmasksymbollayer.sip.in
+++ b/python/core/auto_generated/symbology/qgsmasksymbollayer.sip.in
@@ -85,6 +85,15 @@ Returns a list of references to symbol layers that are masked by the sub symbol'
:return: a list of references to masked symbol layers
.. seealso:: :py:func:`setMasks`
+%End
+
+ void clearMasks();
+%Docstring
+Remove masks defined by this symbol layer.
+
+.. seealso:: :py:func:`masks`
+
+.. versionadded:: 3.42
%End
void setMasks( const QList &maskedLayers );
@@ -100,8 +109,6 @@ Sets the symbol layers that will be masked by the sub symbol's shape.
QgsMaskMarkerSymbolLayer( const QgsMaskMarkerSymbolLayer & );
};
-
-
/************************************************************************
* This file has been generated automatically from *
* *
diff --git a/python/core/auto_generated/symbology/qgssymbollayerutils.sip.in b/python/core/auto_generated/symbology/qgssymbollayerutils.sip.in
index 4e60a056d2dc..5dfda106322a 100644
--- a/python/core/auto_generated/symbology/qgssymbollayerutils.sip.in
+++ b/python/core/auto_generated/symbology/qgssymbollayerutils.sip.in
@@ -1020,6 +1020,13 @@ Regenerate recursively unique id from all ``symbol`` symbol layers
Regenerate recursively unique id from ``symbolLayer`` and its children
.. versionadded:: 3.30
+%End
+
+ static void clearSymbolLayerMasks( QgsSymbol *symbol );
+%Docstring
+Remove recursively masks from all ``symbol`` symbol layers
+
+.. versionadded:: 3.42
%End
static QVector< QgsGeometry > collectSymbolLayerClipGeometries( const QgsRenderContext &context, const QString &symbolLayerId, const QRectF &bounds );
diff --git a/python/core/auto_generated/vector/qgsvectorlayereditbuffer.sip.in b/python/core/auto_generated/vector/qgsvectorlayereditbuffer.sip.in
index 422d7a2470d4..96f6588d7038 100644
--- a/python/core/auto_generated/vector/qgsvectorlayereditbuffer.sip.in
+++ b/python/core/auto_generated/vector/qgsvectorlayereditbuffer.sip.in
@@ -321,7 +321,7 @@ Update feature with uncommitted geometry updates
Update feature with uncommitted attribute updates
%End
- void handleAttributeAdded( int index );
+ void handleAttributeAdded( int index, const QgsField &field );
%Docstring
Update added and changed features after addition of an attribute
%End
diff --git a/python/core/auto_generated/vector/qgsvectorlayereditutils.sip.in b/python/core/auto_generated/vector/qgsvectorlayereditutils.sip.in
index 2a7e6a972eca..63643833dfe2 100644
--- a/python/core/auto_generated/vector/qgsvectorlayereditutils.sip.in
+++ b/python/core/auto_generated/vector/qgsvectorlayereditutils.sip.in
@@ -332,6 +332,7 @@ Merge features into a single one.
.. versionadded:: 3.30
%End
+
};
/************************************************************************
diff --git a/python/core/class_map.yaml b/python/core/class_map.yaml
index 9ec3cdd7f18a..70c17dffca65 100644
--- a/python/core/class_map.yaml
+++ b/python/core/class_map.yaml
@@ -1,10 +1,10 @@
-Qgis.defaultProjectScales: src/core/qgis.h#L5817
+Qgis.defaultProjectScales: src/core/qgis.h#L5837
Qgis.devVersion: src/core/qgis.h#L89
-Qgis.geosVersion: src/core/qgis.h#L5852
-Qgis.geosVersionInt: src/core/qgis.h#L5824
-Qgis.geosVersionMajor: src/core/qgis.h#L5831
-Qgis.geosVersionMinor: src/core/qgis.h#L5838
-Qgis.geosVersionPatch: src/core/qgis.h#L5845
+Qgis.geosVersion: src/core/qgis.h#L5872
+Qgis.geosVersionInt: src/core/qgis.h#L5844
+Qgis.geosVersionMajor: src/core/qgis.h#L5851
+Qgis.geosVersionMinor: src/core/qgis.h#L5858
+Qgis.geosVersionPatch: src/core/qgis.h#L5865
Qgis.releaseName: src/core/qgis.h#L79
Qgis.version: src/core/qgis.h#L65
Qgis.versionInt: src/core/qgis.h#L72
@@ -108,11 +108,12 @@ QgsAbstractCacheIndex.flushFeature: src/core/qgscacheindex.h#L42
QgsAbstractCacheIndex.getCacheIterator: src/core/qgscacheindex.h#L76
QgsAbstractCacheIndex.requestCompleted: src/core/qgscacheindex.h#L59
QgsAbstractCacheIndex: src/core/qgscacheindex.h#L31
-QgsAbstractContentCacheBase.checkReply: src/core/qgsabstractcontentcache.h#L184
-QgsAbstractContentCacheBase.isBase64Data: src/core/qgsabstractcontentcache.h#L164
-QgsAbstractContentCacheBase.onRemoteContentFetched: src/core/qgsabstractcontentcache.h#L194
+QgsAbstractContentCacheBase.checkReply: src/core/qgsabstractcontentcache.h#L201
+QgsAbstractContentCacheBase.isBase64Data: src/core/qgsabstractcontentcache.h#L181
+QgsAbstractContentCacheBase.onRemoteContentFetched: src/core/qgsabstractcontentcache.h#L211
QgsAbstractContentCacheBase.parseBase64DataUrl: src/core/qgsabstractcontentcache.h#L157
-QgsAbstractContentCacheBase.remoteContentFetched: src/core/qgsabstractcontentcache.h#L171
+QgsAbstractContentCacheBase.parseEmbeddedStringData: src/core/qgsabstractcontentcache.h#L174
+QgsAbstractContentCacheBase.remoteContentFetched: src/core/qgsabstractcontentcache.h#L188
QgsAbstractContentCacheBase: src/core/qgsabstractcontentcache.h#L132
QgsAbstractContentCacheEntry.dataSize: src/core/qgsabstractcontentcache.h#L99
QgsAbstractContentCacheEntry.dump: src/core/qgsabstractcontentcache.h#L104
@@ -1485,108 +1486,109 @@ QgsAuthConfigurationStorageRegistry.storageAdded: src/core/auth/qgsauthconfigura
QgsAuthConfigurationStorageRegistry.storageChanged: src/core/auth/qgsauthconfigurationstorageregistry.h#L120
QgsAuthConfigurationStorageRegistry.storageRemoved: src/core/auth/qgsauthconfigurationstorageregistry.h#L126
QgsAuthConfigurationStorageRegistry: src/core/auth/qgsauthconfigurationstorageregistry.h#L41
-QgsAuthManager.authConfigurationStorageRegistry: src/core/auth/qgsauthmanager.h#L123
-QgsAuthManager.authDatabaseChanged: src/core/auth/qgsauthmanager.h#L830
-QgsAuthManager.authDatabaseConfigTable: src/core/auth/qgsauthmanager.h#L136
-QgsAuthManager.authDatabaseConnection: src/core/auth/qgsauthmanager.h#L130
-QgsAuthManager.authDatabaseEraseRequested: src/core/auth/qgsauthmanager.h#L827
-QgsAuthManager.authDatabaseServersTable: src/core/auth/qgsauthmanager.h#L149
-QgsAuthManager.authManTag: src/core/auth/qgsauthmanager.h#L270
-QgsAuthManager.authMethod: src/core/auth/qgsauthmanager.h#L302
-QgsAuthManager.authMethodEditWidget: src/core/auth/qgsauthmanager.h#L326
-QgsAuthManager.authMethodsKeys: src/core/auth/qgsauthmanager.h#L296
-QgsAuthManager.authSetting: src/core/auth/qgsauthmanager.h#L481
-QgsAuthManager.authenticationDatabasePath: src/core/auth/qgsauthmanager.h#L163
-QgsAuthManager.authenticationDatabaseUri: src/core/auth/qgsauthmanager.h#L181
-QgsAuthManager.authenticationDatabaseUriStripped: src/core/auth/qgsauthmanager.h#L187
-QgsAuthManager.availableAuthMethodConfigs: src/core/auth/qgsauthmanager.h#L276
-QgsAuthManager.backupAuthenticationDatabase: src/core/auth/qgsauthmanager.h#L416
-QgsAuthManager.certAuthority: src/core/auth/qgsauthmanager.h#L604
-QgsAuthManager.certIdentity: src/core/auth/qgsauthmanager.h#L503
-QgsAuthManager.certIdentityBundleToPem: src/core/auth/qgsauthmanager.h#L518
-QgsAuthManager.certIdentityIds: src/core/auth/qgsauthmanager.h#L532
-QgsAuthManager.certTrustPolicy: src/core/auth/qgsauthmanager.h#L657
-QgsAuthManager.certificateTrustPolicy: src/core/auth/qgsauthmanager.h#L670
-QgsAuthManager.clearAllCachedConfigs: src/core/auth/qgsauthmanager.h#L834
-QgsAuthManager.clearCachedConfig: src/core/auth/qgsauthmanager.h#L837
-QgsAuthManager.clearMasterPassword: src/core/auth/qgsauthmanager.h#L221
-QgsAuthManager.configAuthMethod: src/core/auth/qgsauthmanager.h#L285
-QgsAuthManager.configAuthMethodKey: src/core/auth/qgsauthmanager.h#L291
-QgsAuthManager.configIdRegex: src/core/auth/qgsauthmanager.h#L352
-QgsAuthManager.configIdUnique: src/core/auth/qgsauthmanager.h#L343
-QgsAuthManager.configIds: src/core/auth/qgsauthmanager.h#L355
-QgsAuthManager.defaultCertTrustPolicy: src/core/auth/qgsauthmanager.h#L676
-QgsAuthManager.disabledMessage: src/core/auth/qgsauthmanager.h#L156
-QgsAuthManager.dumpIgnoredSslErrorsCache_: src/core/auth/qgsauthmanager.h#L579
-QgsAuthManager.ensureInitialized: src/core/auth/qgsauthmanager.h#L115
-QgsAuthManager.eraseAuthenticationDatabase: src/core/auth/qgsauthmanager.h#L424
-QgsAuthManager.existsAuthSetting: src/core/auth/qgsauthmanager.h#L484
-QgsAuthManager.existsCertAuthority: src/core/auth/qgsauthmanager.h#L607
-QgsAuthManager.existsCertIdentity: src/core/auth/qgsauthmanager.h#L535
-QgsAuthManager.existsSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L566
-QgsAuthManager.exportAuthenticationConfigsToXml: src/core/auth/qgsauthmanager.h#L395
-QgsAuthManager.hasConfigId: src/core/auth/qgsauthmanager.h#L349
-QgsAuthManager.importAuthenticationConfigsFromXml: src/core/auth/qgsauthmanager.h#L404
-QgsAuthManager.init: src/core/auth/qgsauthmanager.h#L94
-QgsAuthManager.initSslCaches: src/core/auth/qgsauthmanager.h#L493
-QgsAuthManager.isDisabled: src/core/auth/qgsauthmanager.h#L153
-QgsAuthManager.isFilesystemBasedDatabase: src/core/auth/qgsauthmanager.h#L168
-QgsAuthManager.loadAuthenticationConfig: src/core/auth/qgsauthmanager.h#L379
-QgsAuthManager.masterPasswordHashInDatabase: src/core/auth/qgsauthmanager.h#L215
-QgsAuthManager.masterPasswordIsSet: src/core/auth/qgsauthmanager.h#L212
-QgsAuthManager.masterPasswordSame: src/core/auth/qgsauthmanager.h#L227
-QgsAuthManager.masterPasswordVerified: src/core/auth/qgsauthmanager.h#L824
-QgsAuthManager.messageLog: src/core/auth/qgsauthmanager.h#L798
-QgsAuthManager.messageOut: src/core/auth/qgsauthmanager.h#L788
-QgsAuthManager.methodConfigTableName: src/core/auth/qgsauthmanager.h#L143
-QgsAuthManager.passwordHelperEnabled: src/core/auth/qgsauthmanager.h#L733
-QgsAuthManager.passwordHelperFailure: src/core/auth/qgsauthmanager.h#L772
-QgsAuthManager.passwordHelperMessageLog: src/core/auth/qgsauthmanager.h#L818
-QgsAuthManager.passwordHelperMessageOut: src/core/auth/qgsauthmanager.h#L808
-QgsAuthManager.passwordHelperSuccess: src/core/auth/qgsauthmanager.h#L778
-QgsAuthManager.passwordHelperSync: src/core/auth/qgsauthmanager.h#L757
-QgsAuthManager.rebuildCaCertsCache: src/core/auth/qgsauthmanager.h#L647
-QgsAuthManager.rebuildCertTrustCache: src/core/auth/qgsauthmanager.h#L685
-QgsAuthManager.rebuildIgnoredSslErrorCache: src/core/auth/qgsauthmanager.h#L588
-QgsAuthManager.rebuildTrustedCaCertsCache: src/core/auth/qgsauthmanager.h#L701
-QgsAuthManager.registerCoreAuthMethods: src/core/auth/qgsauthmanager.h#L273
-QgsAuthManager.removeAllAuthenticationConfigs: src/core/auth/qgsauthmanager.h#L410
-QgsAuthManager.removeAuthSetting: src/core/auth/qgsauthmanager.h#L487
-QgsAuthManager.removeAuthenticationConfig: src/core/auth/qgsauthmanager.h#L386
-QgsAuthManager.removeCertAuthority: src/core/auth/qgsauthmanager.h#L610
-QgsAuthManager.removeCertIdentity: src/core/auth/qgsauthmanager.h#L538
-QgsAuthManager.removeCertTrustPolicies: src/core/auth/qgsauthmanager.h#L660
-QgsAuthManager.removeCertTrustPolicy: src/core/auth/qgsauthmanager.h#L663
-QgsAuthManager.removeSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L569
-QgsAuthManager.resetMasterPassword: src/core/auth/qgsauthmanager.h#L237
-QgsAuthManager.setDefaultCertTrustPolicy: src/core/auth/qgsauthmanager.h#L673
-QgsAuthManager.setMasterPassword: src/core/auth/qgsauthmanager.h#L194
-QgsAuthManager.setMasterPassword: src/core/auth/qgsauthmanager.h#L202
-QgsAuthManager.setPasswordHelperEnabled: src/core/auth/qgsauthmanager.h#L739
-QgsAuthManager.setScheduledAuthDatabaseEraseRequestEmitted: src/core/auth/qgsauthmanager.h#L267
-QgsAuthManager.setup: src/core/auth/qgsauthmanager.h#L106
-QgsAuthManager.sslCertCustomConfig: src/core/auth/qgsauthmanager.h#L550
-QgsAuthManager.sslCertCustomConfigByHost: src/core/auth/qgsauthmanager.h#L557
-QgsAuthManager.storeAuthSetting: src/core/auth/qgsauthmanager.h#L472
-QgsAuthManager.storeAuthenticationConfig: src/core/auth/qgsauthmanager.h#L363
-QgsAuthManager.storeCertAuthorities: src/core/auth/qgsauthmanager.h#L592
-QgsAuthManager.storeCertAuthority: src/core/auth/qgsauthmanager.h#L595
-QgsAuthManager.storeCertIdentity: src/core/auth/qgsauthmanager.h#L496
-QgsAuthManager.storeCertTrustPolicy: src/core/auth/qgsauthmanager.h#L650
-QgsAuthManager.storeSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L542
-QgsAuthManager.supportedAuthMethodExpansions: src/core/auth/qgsauthmanager.h#L334
-QgsAuthManager.trustedCaCertsPemText: src/core/auth/qgsauthmanager.h#L713
-QgsAuthManager.uniqueConfigId: src/core/auth/qgsauthmanager.h#L337
-QgsAuthManager.updateAuthenticationConfig: src/core/auth/qgsauthmanager.h#L370
-QgsAuthManager.updateConfigAuthMethods: src/core/auth/qgsauthmanager.h#L279
-QgsAuthManager.updateDataSourceUriItems: src/core/auth/qgsauthmanager.h#L456
-QgsAuthManager.updateIgnoredSslErrorsCache: src/core/auth/qgsauthmanager.h#L585
-QgsAuthManager.updateIgnoredSslErrorsCacheFromConfig: src/core/auth/qgsauthmanager.h#L582
-QgsAuthManager.updateNetworkProxy: src/core/auth/qgsauthmanager.h#L466
-QgsAuthManager.updateNetworkReply: src/core/auth/qgsauthmanager.h#L446
-QgsAuthManager.updateNetworkRequest: src/core/auth/qgsauthmanager.h#L436
-QgsAuthManager.verifyMasterPassword: src/core/auth/qgsauthmanager.h#L209
-QgsAuthManager: src/core/auth/qgsauthmanager.h#L70
+QgsAuthManager.authConfigurationStorageRegistry: src/core/auth/qgsauthmanager.h#L127
+QgsAuthManager.authDatabaseChanged: src/core/auth/qgsauthmanager.h#L889
+QgsAuthManager.authDatabaseConfigTable: src/core/auth/qgsauthmanager.h#L140
+QgsAuthManager.authDatabaseConnection: src/core/auth/qgsauthmanager.h#L134
+QgsAuthManager.authDatabaseEraseRequested: src/core/auth/qgsauthmanager.h#L886
+QgsAuthManager.authDatabaseServersTable: src/core/auth/qgsauthmanager.h#L153
+QgsAuthManager.authManTag: src/core/auth/qgsauthmanager.h#L299
+QgsAuthManager.authMethod: src/core/auth/qgsauthmanager.h#L331
+QgsAuthManager.authMethodEditWidget: src/core/auth/qgsauthmanager.h#L355
+QgsAuthManager.authMethodsKeys: src/core/auth/qgsauthmanager.h#L325
+QgsAuthManager.authSetting: src/core/auth/qgsauthmanager.h#L510
+QgsAuthManager.authenticationDatabasePath: src/core/auth/qgsauthmanager.h#L167
+QgsAuthManager.authenticationDatabaseUri: src/core/auth/qgsauthmanager.h#L185
+QgsAuthManager.authenticationDatabaseUriStripped: src/core/auth/qgsauthmanager.h#L191
+QgsAuthManager.availableAuthMethodConfigs: src/core/auth/qgsauthmanager.h#L305
+QgsAuthManager.backupAuthenticationDatabase: src/core/auth/qgsauthmanager.h#L445
+QgsAuthManager.certAuthority: src/core/auth/qgsauthmanager.h#L633
+QgsAuthManager.certIdentity: src/core/auth/qgsauthmanager.h#L532
+QgsAuthManager.certIdentityBundleToPem: src/core/auth/qgsauthmanager.h#L547
+QgsAuthManager.certIdentityIds: src/core/auth/qgsauthmanager.h#L561
+QgsAuthManager.certTrustPolicy: src/core/auth/qgsauthmanager.h#L686
+QgsAuthManager.certificateTrustPolicy: src/core/auth/qgsauthmanager.h#L699
+QgsAuthManager.clearAllCachedConfigs: src/core/auth/qgsauthmanager.h#L893
+QgsAuthManager.clearCachedConfig: src/core/auth/qgsauthmanager.h#L896
+QgsAuthManager.clearMasterPassword: src/core/auth/qgsauthmanager.h#L234
+QgsAuthManager.configAuthMethod: src/core/auth/qgsauthmanager.h#L314
+QgsAuthManager.configAuthMethodKey: src/core/auth/qgsauthmanager.h#L320
+QgsAuthManager.configIdRegex: src/core/auth/qgsauthmanager.h#L381
+QgsAuthManager.configIdUnique: src/core/auth/qgsauthmanager.h#L372
+QgsAuthManager.configIds: src/core/auth/qgsauthmanager.h#L384
+QgsAuthManager.defaultCertTrustPolicy: src/core/auth/qgsauthmanager.h#L705
+QgsAuthManager.disabledMessage: src/core/auth/qgsauthmanager.h#L160
+QgsAuthManager.dumpIgnoredSslErrorsCache_: src/core/auth/qgsauthmanager.h#L608
+QgsAuthManager.ensureInitialized: src/core/auth/qgsauthmanager.h#L119
+QgsAuthManager.eraseAuthenticationDatabase: src/core/auth/qgsauthmanager.h#L453
+QgsAuthManager.existsAuthSetting: src/core/auth/qgsauthmanager.h#L513
+QgsAuthManager.existsCertAuthority: src/core/auth/qgsauthmanager.h#L636
+QgsAuthManager.existsCertIdentity: src/core/auth/qgsauthmanager.h#L564
+QgsAuthManager.existsSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L595
+QgsAuthManager.exportAuthenticationConfigsToXml: src/core/auth/qgsauthmanager.h#L424
+QgsAuthManager.hasConfigId: src/core/auth/qgsauthmanager.h#L378
+QgsAuthManager.importAuthenticationConfigsFromXml: src/core/auth/qgsauthmanager.h#L433
+QgsAuthManager.init: src/core/auth/qgsauthmanager.h#L98
+QgsAuthManager.initSslCaches: src/core/auth/qgsauthmanager.h#L522
+QgsAuthManager.isDisabled: src/core/auth/qgsauthmanager.h#L157
+QgsAuthManager.isFilesystemBasedDatabase: src/core/auth/qgsauthmanager.h#L172
+QgsAuthManager.loadAuthenticationConfig: src/core/auth/qgsauthmanager.h#L408
+QgsAuthManager.masterPasswordHashInDatabase: src/core/auth/qgsauthmanager.h#L228
+QgsAuthManager.masterPasswordIsSet: src/core/auth/qgsauthmanager.h#L225
+QgsAuthManager.masterPasswordSame: src/core/auth/qgsauthmanager.h#L240
+QgsAuthManager.masterPasswordVerified: src/core/auth/qgsauthmanager.h#L883
+QgsAuthManager.messageLog: src/core/auth/qgsauthmanager.h#L857
+QgsAuthManager.messageOut: src/core/auth/qgsauthmanager.h#L847
+QgsAuthManager.methodConfigTableName: src/core/auth/qgsauthmanager.h#L147
+QgsAuthManager.passwordHelperDisplayName: src/core/auth/qgsauthmanager.h#L813
+QgsAuthManager.passwordHelperEnabled: src/core/auth/qgsauthmanager.h#L762
+QgsAuthManager.passwordHelperFailure: src/core/auth/qgsauthmanager.h#L831
+QgsAuthManager.passwordHelperMessageLog: src/core/auth/qgsauthmanager.h#L877
+QgsAuthManager.passwordHelperMessageOut: src/core/auth/qgsauthmanager.h#L867
+QgsAuthManager.passwordHelperSuccess: src/core/auth/qgsauthmanager.h#L837
+QgsAuthManager.passwordHelperSync: src/core/auth/qgsauthmanager.h#L786
+QgsAuthManager.rebuildCaCertsCache: src/core/auth/qgsauthmanager.h#L676
+QgsAuthManager.rebuildCertTrustCache: src/core/auth/qgsauthmanager.h#L714
+QgsAuthManager.rebuildIgnoredSslErrorCache: src/core/auth/qgsauthmanager.h#L617
+QgsAuthManager.rebuildTrustedCaCertsCache: src/core/auth/qgsauthmanager.h#L730
+QgsAuthManager.registerCoreAuthMethods: src/core/auth/qgsauthmanager.h#L302
+QgsAuthManager.removeAllAuthenticationConfigs: src/core/auth/qgsauthmanager.h#L439
+QgsAuthManager.removeAuthSetting: src/core/auth/qgsauthmanager.h#L516
+QgsAuthManager.removeAuthenticationConfig: src/core/auth/qgsauthmanager.h#L415
+QgsAuthManager.removeCertAuthority: src/core/auth/qgsauthmanager.h#L639
+QgsAuthManager.removeCertIdentity: src/core/auth/qgsauthmanager.h#L567
+QgsAuthManager.removeCertTrustPolicies: src/core/auth/qgsauthmanager.h#L689
+QgsAuthManager.removeCertTrustPolicy: src/core/auth/qgsauthmanager.h#L692
+QgsAuthManager.removeSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L598
+QgsAuthManager.resetMasterPassword: src/core/auth/qgsauthmanager.h#L251
+QgsAuthManager.setDefaultCertTrustPolicy: src/core/auth/qgsauthmanager.h#L702
+QgsAuthManager.setMasterPassword: src/core/auth/qgsauthmanager.h#L207
+QgsAuthManager.setMasterPassword: src/core/auth/qgsauthmanager.h#L215
+QgsAuthManager.setPasswordHelperEnabled: src/core/auth/qgsauthmanager.h#L768
+QgsAuthManager.setScheduledAuthDatabaseEraseRequestEmitted: src/core/auth/qgsauthmanager.h#L296
+QgsAuthManager.setup: src/core/auth/qgsauthmanager.h#L110
+QgsAuthManager.sslCertCustomConfig: src/core/auth/qgsauthmanager.h#L579
+QgsAuthManager.sslCertCustomConfigByHost: src/core/auth/qgsauthmanager.h#L586
+QgsAuthManager.storeAuthSetting: src/core/auth/qgsauthmanager.h#L501
+QgsAuthManager.storeAuthenticationConfig: src/core/auth/qgsauthmanager.h#L392
+QgsAuthManager.storeCertAuthorities: src/core/auth/qgsauthmanager.h#L621
+QgsAuthManager.storeCertAuthority: src/core/auth/qgsauthmanager.h#L624
+QgsAuthManager.storeCertIdentity: src/core/auth/qgsauthmanager.h#L525
+QgsAuthManager.storeCertTrustPolicy: src/core/auth/qgsauthmanager.h#L679
+QgsAuthManager.storeSslCertCustomConfig: src/core/auth/qgsauthmanager.h#L571
+QgsAuthManager.supportedAuthMethodExpansions: src/core/auth/qgsauthmanager.h#L363
+QgsAuthManager.trustedCaCertsPemText: src/core/auth/qgsauthmanager.h#L742
+QgsAuthManager.uniqueConfigId: src/core/auth/qgsauthmanager.h#L366
+QgsAuthManager.updateAuthenticationConfig: src/core/auth/qgsauthmanager.h#L399
+QgsAuthManager.updateConfigAuthMethods: src/core/auth/qgsauthmanager.h#L308
+QgsAuthManager.updateDataSourceUriItems: src/core/auth/qgsauthmanager.h#L485
+QgsAuthManager.updateIgnoredSslErrorsCache: src/core/auth/qgsauthmanager.h#L614
+QgsAuthManager.updateIgnoredSslErrorsCacheFromConfig: src/core/auth/qgsauthmanager.h#L611
+QgsAuthManager.updateNetworkProxy: src/core/auth/qgsauthmanager.h#L495
+QgsAuthManager.updateNetworkReply: src/core/auth/qgsauthmanager.h#L475
+QgsAuthManager.updateNetworkRequest: src/core/auth/qgsauthmanager.h#L465
+QgsAuthManager.verifyMasterPassword: src/core/auth/qgsauthmanager.h#L222
+QgsAuthManager: src/core/auth/qgsauthmanager.h#L71
QgsAuthMethod.QgsAuthMethod: src/core/auth/qgsauthmethod.h#L189
QgsAuthMethod.authMethodTag: src/core/auth/qgsauthmethod.h#L192
QgsAuthMethod.clearCachedConfig: src/core/auth/qgsauthmethod.h#L175
@@ -1844,7 +1846,7 @@ QgsBookmarkManagerModel.rowCount: src/core/qgsbookmarkmodel.h#L87
QgsBookmarkManagerModel.setData: src/core/qgsbookmarkmodel.h#L91
QgsBookmarkManagerModel: src/core/qgsbookmarkmodel.h#L41
QgsBookmarkManagerProxyModel: src/core/qgsbookmarkmodel.h#L119
-QgsBox3D.__repr__: src/core/geometry/qgsbox3d.h#L489
+QgsBox3D.__repr__: src/core/geometry/qgsbox3d.h#L498
QgsBox3D.area: src/core/geometry/qgsbox3d.h#L321
QgsBox3D.center: src/core/geometry/qgsbox3d.h#L314
QgsBox3D.combineWith: src/core/geometry/qgsbox3d.h#L382
@@ -1853,18 +1855,19 @@ QgsBox3D.contains: src/core/geometry/qgsbox3d.h#L356
QgsBox3D.contains: src/core/geometry/qgsbox3d.h#L364
QgsBox3D.contains: src/core/geometry/qgsbox3d.h#L375
QgsBox3D.depth: src/core/geometry/qgsbox3d.h#L307
-QgsBox3D.distanceTo: src/core/geometry/qgsbox3d.h#L402
-QgsBox3D.grow: src/core/geometry/qgsbox3d.h#L426
+QgsBox3D.distanceTo: src/core/geometry/qgsbox3d.h#L403
+QgsBox3D.distanceTo: src/core/geometry/qgsbox3d.h#L411
+QgsBox3D.grow: src/core/geometry/qgsbox3d.h#L435
QgsBox3D.height: src/core/geometry/qgsbox3d.h#L300
QgsBox3D.intersect: src/core/geometry/qgsbox3d.h#L331
QgsBox3D.intersects: src/core/geometry/qgsbox3d.h#L351
QgsBox3D.is2d: src/core/geometry/qgsbox3d.h#L337
QgsBox3D.is3D: src/core/geometry/qgsbox3d.h#L346
-QgsBox3D.isEmpty: src/core/geometry/qgsbox3d.h#L447
-QgsBox3D.isNull: src/core/geometry/qgsbox3d.h#L437
+QgsBox3D.isEmpty: src/core/geometry/qgsbox3d.h#L456
+QgsBox3D.isNull: src/core/geometry/qgsbox3d.h#L446
QgsBox3D.normalize: src/core/geometry/qgsbox3d.h#L286
-QgsBox3D.scale: src/core/geometry/qgsbox3d.h#L413
-QgsBox3D.scale: src/core/geometry/qgsbox3d.h#L420
+QgsBox3D.scale: src/core/geometry/qgsbox3d.h#L422
+QgsBox3D.scale: src/core/geometry/qgsbox3d.h#L429
QgsBox3D.set: src/core/geometry/qgsbox3d.h#L190
QgsBox3D.setNull: src/core/geometry/qgsbox3d.h#L281
QgsBox3D.setXMaximum: src/core/geometry/qgsbox3d.h#L204
@@ -1874,7 +1877,7 @@ QgsBox3D.setYMinimum: src/core/geometry/qgsbox3d.h#L225
QgsBox3D.setZMaximum: src/core/geometry/qgsbox3d.h#L260
QgsBox3D.setZMinimum: src/core/geometry/qgsbox3d.h#L253
QgsBox3D.toRectangle: src/core/geometry/qgsbox3d.h#L394
-QgsBox3D.toString: src/core/geometry/qgsbox3d.h#L456
+QgsBox3D.toString: src/core/geometry/qgsbox3d.h#L465
QgsBox3D.volume: src/core/geometry/qgsbox3d.h#L326
QgsBox3D.width: src/core/geometry/qgsbox3d.h#L293
QgsBox3D.xMaximum: src/core/geometry/qgsbox3d.h#L218
@@ -2619,91 +2622,91 @@ QgsCoordinateFormatter.formatX: src/core/qgscoordinateformatter.h#L75
QgsCoordinateFormatter.formatY: src/core/qgscoordinateformatter.h#L88
QgsCoordinateFormatter.separator: src/core/qgscoordinateformatter.h#L116
QgsCoordinateFormatter: src/core/qgscoordinateformatter.h#L39
-QgsCoordinateReferenceSystem.QVariant: src/core/proj/qgscoordinatereferencesystem.h#L280
-QgsCoordinateReferenceSystem.QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L256
-QgsCoordinateReferenceSystem.QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L271
-QgsCoordinateReferenceSystem.__repr__: src/core/proj/qgscoordinatereferencesystem.h#L1079
-QgsCoordinateReferenceSystem.authid: src/core/proj/qgscoordinatereferencesystem.h#L658
-QgsCoordinateReferenceSystem.axisOrdering: src/core/proj/qgscoordinatereferencesystem.h#L886
-QgsCoordinateReferenceSystem.bounds: src/core/proj/qgscoordinatereferencesystem.h#L937
-QgsCoordinateReferenceSystem.celestialBodyName: src/core/proj/qgscoordinatereferencesystem.h#L796
-QgsCoordinateReferenceSystem.clearRecentCoordinateReferenceSystems: src/core/proj/qgscoordinatereferencesystem.h#L1158
-QgsCoordinateReferenceSystem.coordinateEpoch: src/core/proj/qgscoordinatereferencesystem.h#L846
-QgsCoordinateReferenceSystem.createCompoundCrs: src/core/proj/qgscoordinatereferencesystem.h#L376
-QgsCoordinateReferenceSystem.createFromId: src/core/proj/qgscoordinatereferencesystem.h#L387
-QgsCoordinateReferenceSystem.createFromOgcWmsCrs: src/core/proj/qgscoordinatereferencesystem.h#L404
-QgsCoordinateReferenceSystem.createFromProj4: src/core/proj/qgscoordinatereferencesystem.h#L477
-QgsCoordinateReferenceSystem.createFromProj: src/core/proj/qgscoordinatereferencesystem.h#L511
-QgsCoordinateReferenceSystem.createFromSrid: src/core/proj/qgscoordinatereferencesystem.h#L415
-QgsCoordinateReferenceSystem.createFromSrsId: src/core/proj/qgscoordinatereferencesystem.h#L449
-QgsCoordinateReferenceSystem.createFromString: src/core/proj/qgscoordinatereferencesystem.h#L533
-QgsCoordinateReferenceSystem.createFromUserInput: src/core/proj/qgscoordinatereferencesystem.h#L555
-QgsCoordinateReferenceSystem.createFromWkt: src/core/proj/qgscoordinatereferencesystem.h#L432
-QgsCoordinateReferenceSystem.datumEnsemble: src/core/proj/qgscoordinatereferencesystem.h#L785
-QgsCoordinateReferenceSystem.description: src/core/proj/qgscoordinatereferencesystem.h#L667
-QgsCoordinateReferenceSystem.ellipsoidAcronym: src/core/proj/qgscoordinatereferencesystem.h#L698
-QgsCoordinateReferenceSystem.factors: src/core/proj/qgscoordinatereferencesystem.h#L859
-QgsCoordinateReferenceSystem.findMatchingProj: src/core/proj/qgscoordinatereferencesystem.h#L596
-QgsCoordinateReferenceSystem.fromEpsgId: src/core/proj/qgscoordinatereferencesystem.h#L313
-QgsCoordinateReferenceSystem.fromOgcWmsCrs: src/core/proj/qgscoordinatereferencesystem.h#L302
-QgsCoordinateReferenceSystem.fromProj4: src/core/proj/qgscoordinatereferencesystem.h#L325
-QgsCoordinateReferenceSystem.fromProj: src/core/proj/qgscoordinatereferencesystem.h#L334
-QgsCoordinateReferenceSystem.fromSrsId: src/core/proj/qgscoordinatereferencesystem.h#L359
-QgsCoordinateReferenceSystem.fromWkt: src/core/proj/qgscoordinatereferencesystem.h#L346
-QgsCoordinateReferenceSystem.geographicCrsAuthId: src/core/proj/qgscoordinatereferencesystem.h#L1076
-QgsCoordinateReferenceSystem.hasAxisInverted: src/core/proj/qgscoordinatereferencesystem.h#L876
-QgsCoordinateReferenceSystem.hasVerticalAxis: src/core/proj/qgscoordinatereferencesystem.h#L1073
-QgsCoordinateReferenceSystem.horizontalCrs: src/core/proj/qgscoordinatereferencesystem.h#L1051
-QgsCoordinateReferenceSystem.invalidateCache: src/core/proj/qgscoordinatereferencesystem.h#L1180
-QgsCoordinateReferenceSystem.isDeprecated: src/core/proj/qgscoordinatereferencesystem.h#L753
-QgsCoordinateReferenceSystem.isDynamic: src/core/proj/qgscoordinatereferencesystem.h#L769
-QgsCoordinateReferenceSystem.isGeographic: src/core/proj/qgscoordinatereferencesystem.h#L759
-QgsCoordinateReferenceSystem.isValid: src/core/proj/qgscoordinatereferencesystem.h#L570
-QgsCoordinateReferenceSystem.mapUnits: src/core/proj/qgscoordinatereferencesystem.h#L928
-QgsCoordinateReferenceSystem.nativeFormat: src/core/proj/qgscoordinatereferencesystem.h#L1028
-QgsCoordinateReferenceSystem.operation: src/core/proj/qgscoordinatereferencesystem.h#L867
-QgsCoordinateReferenceSystem.postgisSrid: src/core/proj/qgscoordinatereferencesystem.h#L644
-QgsCoordinateReferenceSystem.projectionAcronym: src/core/proj/qgscoordinatereferencesystem.h#L690
-QgsCoordinateReferenceSystem.pushRecentCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L1144
-QgsCoordinateReferenceSystem.readXml: src/core/proj/qgscoordinatereferencesystem.h#L607
-QgsCoordinateReferenceSystem.recentProjections: src/core/proj/qgscoordinatereferencesystem.h#L1130
-QgsCoordinateReferenceSystem.removeRecentCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L1151
-QgsCoordinateReferenceSystem.saveAsUserCrs: src/core/proj/qgscoordinatereferencesystem.h#L1006
-QgsCoordinateReferenceSystem.setCoordinateEpoch: src/core/proj/qgscoordinatereferencesystem.h#L821
-QgsCoordinateReferenceSystem.setNativeFormat: src/core/proj/qgscoordinatereferencesystem.h#L1017
-QgsCoordinateReferenceSystem.setValidationHint: src/core/proj/qgscoordinatereferencesystem.h#L978
-QgsCoordinateReferenceSystem.setupESRIWktFix: src/core/proj/qgscoordinatereferencesystem.h#L567
-QgsCoordinateReferenceSystem.srsid: src/core/proj/qgscoordinatereferencesystem.h#L636
-QgsCoordinateReferenceSystem.syncDatabase: src/core/proj/qgscoordinatereferencesystem.h#L991
-QgsCoordinateReferenceSystem.toGeographicCrs: src/core/proj/qgscoordinatereferencesystem.h#L1039
-QgsCoordinateReferenceSystem.toOgcUri: src/core/proj/qgscoordinatereferencesystem.h#L945
-QgsCoordinateReferenceSystem.toOgcUrn: src/core/proj/qgscoordinatereferencesystem.h#L953
-QgsCoordinateReferenceSystem.toProj4: src/core/proj/qgscoordinatereferencesystem.h#L725
-QgsCoordinateReferenceSystem.toProj: src/core/proj/qgscoordinatereferencesystem.h#L739
-QgsCoordinateReferenceSystem.toWkt: src/core/proj/qgscoordinatereferencesystem.h#L711
-QgsCoordinateReferenceSystem.type: src/core/proj/qgscoordinatereferencesystem.h#L746
-QgsCoordinateReferenceSystem.updateDefinition: src/core/proj/qgscoordinatereferencesystem.h#L973
-QgsCoordinateReferenceSystem.userFriendlyIdentifier: src/core/proj/qgscoordinatereferencesystem.h#L682
-QgsCoordinateReferenceSystem.validate: src/core/proj/qgscoordinatereferencesystem.h#L584
-QgsCoordinateReferenceSystem.validationHint: src/core/proj/qgscoordinatereferencesystem.h#L983
-QgsCoordinateReferenceSystem.verticalCrs: src/core/proj/qgscoordinatereferencesystem.h#L1065
-QgsCoordinateReferenceSystem.writeXml: src/core/proj/qgscoordinatereferencesystem.h#L615
-QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L211
+QgsCoordinateReferenceSystem.QVariant: src/core/proj/qgscoordinatereferencesystem.h#L275
+QgsCoordinateReferenceSystem.QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L251
+QgsCoordinateReferenceSystem.QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L266
+QgsCoordinateReferenceSystem.__repr__: src/core/proj/qgscoordinatereferencesystem.h#L1066
+QgsCoordinateReferenceSystem.authid: src/core/proj/qgscoordinatereferencesystem.h#L653
+QgsCoordinateReferenceSystem.axisOrdering: src/core/proj/qgscoordinatereferencesystem.h#L873
+QgsCoordinateReferenceSystem.bounds: src/core/proj/qgscoordinatereferencesystem.h#L924
+QgsCoordinateReferenceSystem.celestialBodyName: src/core/proj/qgscoordinatereferencesystem.h#L783
+QgsCoordinateReferenceSystem.clearRecentCoordinateReferenceSystems: src/core/proj/qgscoordinatereferencesystem.h#L1145
+QgsCoordinateReferenceSystem.coordinateEpoch: src/core/proj/qgscoordinatereferencesystem.h#L833
+QgsCoordinateReferenceSystem.createCompoundCrs: src/core/proj/qgscoordinatereferencesystem.h#L371
+QgsCoordinateReferenceSystem.createFromId: src/core/proj/qgscoordinatereferencesystem.h#L382
+QgsCoordinateReferenceSystem.createFromOgcWmsCrs: src/core/proj/qgscoordinatereferencesystem.h#L399
+QgsCoordinateReferenceSystem.createFromProj4: src/core/proj/qgscoordinatereferencesystem.h#L472
+QgsCoordinateReferenceSystem.createFromProj: src/core/proj/qgscoordinatereferencesystem.h#L506
+QgsCoordinateReferenceSystem.createFromSrid: src/core/proj/qgscoordinatereferencesystem.h#L410
+QgsCoordinateReferenceSystem.createFromSrsId: src/core/proj/qgscoordinatereferencesystem.h#L444
+QgsCoordinateReferenceSystem.createFromString: src/core/proj/qgscoordinatereferencesystem.h#L528
+QgsCoordinateReferenceSystem.createFromUserInput: src/core/proj/qgscoordinatereferencesystem.h#L550
+QgsCoordinateReferenceSystem.createFromWkt: src/core/proj/qgscoordinatereferencesystem.h#L427
+QgsCoordinateReferenceSystem.datumEnsemble: src/core/proj/qgscoordinatereferencesystem.h#L776
+QgsCoordinateReferenceSystem.description: src/core/proj/qgscoordinatereferencesystem.h#L662
+QgsCoordinateReferenceSystem.ellipsoidAcronym: src/core/proj/qgscoordinatereferencesystem.h#L693
+QgsCoordinateReferenceSystem.factors: src/core/proj/qgscoordinatereferencesystem.h#L846
+QgsCoordinateReferenceSystem.findMatchingProj: src/core/proj/qgscoordinatereferencesystem.h#L591
+QgsCoordinateReferenceSystem.fromEpsgId: src/core/proj/qgscoordinatereferencesystem.h#L308
+QgsCoordinateReferenceSystem.fromOgcWmsCrs: src/core/proj/qgscoordinatereferencesystem.h#L297
+QgsCoordinateReferenceSystem.fromProj4: src/core/proj/qgscoordinatereferencesystem.h#L320
+QgsCoordinateReferenceSystem.fromProj: src/core/proj/qgscoordinatereferencesystem.h#L329
+QgsCoordinateReferenceSystem.fromSrsId: src/core/proj/qgscoordinatereferencesystem.h#L354
+QgsCoordinateReferenceSystem.fromWkt: src/core/proj/qgscoordinatereferencesystem.h#L341
+QgsCoordinateReferenceSystem.geographicCrsAuthId: src/core/proj/qgscoordinatereferencesystem.h#L1063
+QgsCoordinateReferenceSystem.hasAxisInverted: src/core/proj/qgscoordinatereferencesystem.h#L863
+QgsCoordinateReferenceSystem.hasVerticalAxis: src/core/proj/qgscoordinatereferencesystem.h#L1060
+QgsCoordinateReferenceSystem.horizontalCrs: src/core/proj/qgscoordinatereferencesystem.h#L1038
+QgsCoordinateReferenceSystem.invalidateCache: src/core/proj/qgscoordinatereferencesystem.h#L1167
+QgsCoordinateReferenceSystem.isDeprecated: src/core/proj/qgscoordinatereferencesystem.h#L748
+QgsCoordinateReferenceSystem.isDynamic: src/core/proj/qgscoordinatereferencesystem.h#L764
+QgsCoordinateReferenceSystem.isGeographic: src/core/proj/qgscoordinatereferencesystem.h#L754
+QgsCoordinateReferenceSystem.isValid: src/core/proj/qgscoordinatereferencesystem.h#L565
+QgsCoordinateReferenceSystem.mapUnits: src/core/proj/qgscoordinatereferencesystem.h#L915
+QgsCoordinateReferenceSystem.nativeFormat: src/core/proj/qgscoordinatereferencesystem.h#L1015
+QgsCoordinateReferenceSystem.operation: src/core/proj/qgscoordinatereferencesystem.h#L854
+QgsCoordinateReferenceSystem.postgisSrid: src/core/proj/qgscoordinatereferencesystem.h#L639
+QgsCoordinateReferenceSystem.projectionAcronym: src/core/proj/qgscoordinatereferencesystem.h#L685
+QgsCoordinateReferenceSystem.pushRecentCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L1131
+QgsCoordinateReferenceSystem.readXml: src/core/proj/qgscoordinatereferencesystem.h#L602
+QgsCoordinateReferenceSystem.recentProjections: src/core/proj/qgscoordinatereferencesystem.h#L1117
+QgsCoordinateReferenceSystem.removeRecentCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L1138
+QgsCoordinateReferenceSystem.saveAsUserCrs: src/core/proj/qgscoordinatereferencesystem.h#L993
+QgsCoordinateReferenceSystem.setCoordinateEpoch: src/core/proj/qgscoordinatereferencesystem.h#L808
+QgsCoordinateReferenceSystem.setNativeFormat: src/core/proj/qgscoordinatereferencesystem.h#L1004
+QgsCoordinateReferenceSystem.setValidationHint: src/core/proj/qgscoordinatereferencesystem.h#L965
+QgsCoordinateReferenceSystem.setupESRIWktFix: src/core/proj/qgscoordinatereferencesystem.h#L562
+QgsCoordinateReferenceSystem.srsid: src/core/proj/qgscoordinatereferencesystem.h#L631
+QgsCoordinateReferenceSystem.syncDatabase: src/core/proj/qgscoordinatereferencesystem.h#L978
+QgsCoordinateReferenceSystem.toGeographicCrs: src/core/proj/qgscoordinatereferencesystem.h#L1026
+QgsCoordinateReferenceSystem.toOgcUri: src/core/proj/qgscoordinatereferencesystem.h#L932
+QgsCoordinateReferenceSystem.toOgcUrn: src/core/proj/qgscoordinatereferencesystem.h#L940
+QgsCoordinateReferenceSystem.toProj4: src/core/proj/qgscoordinatereferencesystem.h#L720
+QgsCoordinateReferenceSystem.toProj: src/core/proj/qgscoordinatereferencesystem.h#L734
+QgsCoordinateReferenceSystem.toWkt: src/core/proj/qgscoordinatereferencesystem.h#L706
+QgsCoordinateReferenceSystem.type: src/core/proj/qgscoordinatereferencesystem.h#L741
+QgsCoordinateReferenceSystem.updateDefinition: src/core/proj/qgscoordinatereferencesystem.h#L960
+QgsCoordinateReferenceSystem.userFriendlyIdentifier: src/core/proj/qgscoordinatereferencesystem.h#L677
+QgsCoordinateReferenceSystem.validate: src/core/proj/qgscoordinatereferencesystem.h#L579
+QgsCoordinateReferenceSystem.validationHint: src/core/proj/qgscoordinatereferencesystem.h#L970
+QgsCoordinateReferenceSystem.verticalCrs: src/core/proj/qgscoordinatereferencesystem.h#L1052
+QgsCoordinateReferenceSystem.writeXml: src/core/proj/qgscoordinatereferencesystem.h#L610
+QgsCoordinateReferenceSystem: src/core/proj/qgscoordinatereferencesystem.h#L206
QgsCoordinateReferenceSystemRegistry.QgsCoordinateReferenceSystemRegistry: src/core/proj/qgscoordinatereferencesystemregistry.h#L72
QgsCoordinateReferenceSystemRegistry.UserCrsDetails: src/core/proj/qgscoordinatereferencesystemregistry.h#L81
QgsCoordinateReferenceSystemRegistry.addUserCrs: src/core/proj/qgscoordinatereferencesystemregistry.h#L124
-QgsCoordinateReferenceSystemRegistry.clearRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L222
-QgsCoordinateReferenceSystemRegistry.crsDefinitionsChanged: src/core/proj/qgscoordinatereferencesystemregistry.h#L262
-QgsCoordinateReferenceSystemRegistry.pushRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L204
-QgsCoordinateReferenceSystemRegistry.recentCrsCleared: src/core/proj/qgscoordinatereferencesystemregistry.h#L289
-QgsCoordinateReferenceSystemRegistry.recentCrsPushed: src/core/proj/qgscoordinatereferencesystemregistry.h#L271
-QgsCoordinateReferenceSystemRegistry.recentCrsRemoved: src/core/proj/qgscoordinatereferencesystemregistry.h#L280
-QgsCoordinateReferenceSystemRegistry.removeRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L213
+QgsCoordinateReferenceSystemRegistry.clearRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L218
+QgsCoordinateReferenceSystemRegistry.crsDefinitionsChanged: src/core/proj/qgscoordinatereferencesystemregistry.h#L258
+QgsCoordinateReferenceSystemRegistry.pushRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L200
+QgsCoordinateReferenceSystemRegistry.recentCrsCleared: src/core/proj/qgscoordinatereferencesystemregistry.h#L285
+QgsCoordinateReferenceSystemRegistry.recentCrsPushed: src/core/proj/qgscoordinatereferencesystemregistry.h#L267
+QgsCoordinateReferenceSystemRegistry.recentCrsRemoved: src/core/proj/qgscoordinatereferencesystemregistry.h#L276
+QgsCoordinateReferenceSystemRegistry.removeRecent: src/core/proj/qgscoordinatereferencesystemregistry.h#L209
QgsCoordinateReferenceSystemRegistry.removeUserCrs: src/core/proj/qgscoordinatereferencesystemregistry.h#L151
QgsCoordinateReferenceSystemRegistry.updateUserCrs: src/core/proj/qgscoordinatereferencesystemregistry.h#L142
-QgsCoordinateReferenceSystemRegistry.userCrsAdded: src/core/proj/qgscoordinatereferencesystemregistry.h#L248
-QgsCoordinateReferenceSystemRegistry.userCrsChanged: src/core/proj/qgscoordinatereferencesystemregistry.h#L238
-QgsCoordinateReferenceSystemRegistry.userCrsRemoved: src/core/proj/qgscoordinatereferencesystemregistry.h#L256
+QgsCoordinateReferenceSystemRegistry.userCrsAdded: src/core/proj/qgscoordinatereferencesystemregistry.h#L244
+QgsCoordinateReferenceSystemRegistry.userCrsChanged: src/core/proj/qgscoordinatereferencesystemregistry.h#L234
+QgsCoordinateReferenceSystemRegistry.userCrsRemoved: src/core/proj/qgscoordinatereferencesystemregistry.h#L252
QgsCoordinateReferenceSystemRegistry: src/core/proj/qgscoordinatereferencesystemregistry.h#L64
QgsCoordinateReferenceSystemUtils.axisDirectionToAbbreviatedString: src/core/proj/qgscoordinatereferencesystemutils.h#L47
QgsCoordinateReferenceSystemUtils.crsTypeToString: src/core/proj/qgscoordinatereferencesystemutils.h#L53
@@ -2713,41 +2716,41 @@ QgsCoordinateReferenceSystemUtils: src/core/proj/qgscoordinatereferencesystemuti
QgsCoordinateTransform.QgsCoordinateTransform: src/core/proj/qgscoordinatetransform.h#L121
QgsCoordinateTransform.QgsCoordinateTransform: src/core/proj/qgscoordinatetransform.h#L133
QgsCoordinateTransform.QgsCoordinateTransform: src/core/proj/qgscoordinatetransform.h#L91
-QgsCoordinateTransform.__repr__: src/core/proj/qgscoordinatetransform.h#L616
-QgsCoordinateTransform.allowFallbackTransforms: src/core/proj/qgscoordinatetransform.h#L460
+QgsCoordinateTransform.__repr__: src/core/proj/qgscoordinatetransform.h#L617
+QgsCoordinateTransform.allowFallbackTransforms: src/core/proj/qgscoordinatetransform.h#L461
QgsCoordinateTransform.context: src/core/proj/qgscoordinatetransform.h#L195
-QgsCoordinateTransform.coordinateOperation: src/core/proj/qgscoordinatetransform.h#L401
+QgsCoordinateTransform.coordinateOperation: src/core/proj/qgscoordinatetransform.h#L402
QgsCoordinateTransform.destinationCrs: src/core/proj/qgscoordinatetransform.h#L211
-QgsCoordinateTransform.destinationDatumTransformId: src/core/proj/qgscoordinatetransform.h#L564
-QgsCoordinateTransform.disableFallbackOperationHandler: src/core/proj/qgscoordinatetransform.h#L509
-QgsCoordinateTransform.fallbackOperationOccurred: src/core/proj/qgscoordinatetransform.h#L519
-QgsCoordinateTransform.hasVerticalComponent: src/core/proj/qgscoordinatetransform.h#L383
-QgsCoordinateTransform.instantiatedCoordinateOperationDetails: src/core/proj/qgscoordinatetransform.h#L416
-QgsCoordinateTransform.invalidateCache: src/core/proj/qgscoordinatetransform.h#L601
-QgsCoordinateTransform.isShortCircuited: src/core/proj/qgscoordinatetransform.h#L375
+QgsCoordinateTransform.destinationDatumTransformId: src/core/proj/qgscoordinatetransform.h#L565
+QgsCoordinateTransform.disableFallbackOperationHandler: src/core/proj/qgscoordinatetransform.h#L510
+QgsCoordinateTransform.fallbackOperationOccurred: src/core/proj/qgscoordinatetransform.h#L520
+QgsCoordinateTransform.hasVerticalComponent: src/core/proj/qgscoordinatetransform.h#L384
+QgsCoordinateTransform.instantiatedCoordinateOperationDetails: src/core/proj/qgscoordinatetransform.h#L417
+QgsCoordinateTransform.invalidateCache: src/core/proj/qgscoordinatetransform.h#L602
+QgsCoordinateTransform.isShortCircuited: src/core/proj/qgscoordinatetransform.h#L376
QgsCoordinateTransform.isTransformationPossible: src/core/proj/qgscoordinatetransform.h#L158
QgsCoordinateTransform.isValid: src/core/proj/qgscoordinatetransform.h#L164
-QgsCoordinateTransform.scaleFactor: src/core/proj/qgscoordinatetransform.h#L613
-QgsCoordinateTransform.setAllowFallbackTransforms: src/core/proj/qgscoordinatetransform.h#L447
-QgsCoordinateTransform.setBallparkTransformsAreAppropriate: src/core/proj/qgscoordinatetransform.h#L493
+QgsCoordinateTransform.scaleFactor: src/core/proj/qgscoordinatetransform.h#L614
+QgsCoordinateTransform.setAllowFallbackTransforms: src/core/proj/qgscoordinatetransform.h#L448
+QgsCoordinateTransform.setBallparkTransformsAreAppropriate: src/core/proj/qgscoordinatetransform.h#L494
QgsCoordinateTransform.setContext: src/core/proj/qgscoordinatetransform.h#L187
-QgsCoordinateTransform.setCoordinateOperation: src/core/proj/qgscoordinatetransform.h#L431
+QgsCoordinateTransform.setCoordinateOperation: src/core/proj/qgscoordinatetransform.h#L432
QgsCoordinateTransform.setDestinationCrs: src/core/proj/qgscoordinatetransform.h#L180
-QgsCoordinateTransform.setDestinationDatumTransformId: src/core/proj/qgscoordinatetransform.h#L579
+QgsCoordinateTransform.setDestinationDatumTransformId: src/core/proj/qgscoordinatetransform.h#L580
QgsCoordinateTransform.setSourceCrs: src/core/proj/qgscoordinatetransform.h#L172
-QgsCoordinateTransform.setSourceDatumTransformId: src/core/proj/qgscoordinatetransform.h#L549
+QgsCoordinateTransform.setSourceDatumTransformId: src/core/proj/qgscoordinatetransform.h#L550
QgsCoordinateTransform.sourceCrs: src/core/proj/qgscoordinatetransform.h#L203
-QgsCoordinateTransform.sourceDatumTransformId: src/core/proj/qgscoordinatetransform.h#L534
+QgsCoordinateTransform.sourceDatumTransformId: src/core/proj/qgscoordinatetransform.h#L535
QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L222
QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L234
QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L246
-QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L357
-QgsCoordinateTransform.transformBoundingBox: src/core/proj/qgscoordinatetransform.h#L262
-QgsCoordinateTransform.transformCoords: src/core/proj/qgscoordinatetransform.h#L370
-QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L276
-QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L321
-QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L337
-QgsCoordinateTransform.transformPolygon: src/core/proj/qgscoordinatetransform.h#L346
+QgsCoordinateTransform.transform: src/core/proj/qgscoordinatetransform.h#L358
+QgsCoordinateTransform.transformBoundingBox: src/core/proj/qgscoordinatetransform.h#L263
+QgsCoordinateTransform.transformCoords: src/core/proj/qgscoordinatetransform.h#L371
+QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L277
+QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L322
+QgsCoordinateTransform.transformInPlace: src/core/proj/qgscoordinatetransform.h#L338
+QgsCoordinateTransform.transformPolygon: src/core/proj/qgscoordinatetransform.h#L347
QgsCoordinateTransform: src/core/proj/qgscoordinatetransform.h#L57
QgsCoordinateTransformContext.addCoordinateOperation: src/core/proj/qgscoordinatetransformcontext.h#L159
QgsCoordinateTransformContext.addSourceDestinationDatumTransform: src/core/proj/qgscoordinatetransformcontext.h#L126
@@ -3518,6 +3521,7 @@ QgsDistanceArea.sourceCrs: src/core/qgsdistancearea.h#L80
QgsDistanceArea.splitGeometryAtAntimeridian: src/core/qgsdistancearea.h#L359
QgsDistanceArea.willUseEllipsoid: src/core/qgsdistancearea.h#L67
QgsDistanceArea: src/core/qgsdistancearea.h#L52
+QgsDoubleBoxScaleBarRenderer.applyDefaultSettings: src/core/scalebar/qgsdoubleboxscalebarrenderer.h#L45
QgsDoubleBoxScaleBarRenderer.clone: src/core/scalebar/qgsdoubleboxscalebarrenderer.h#L39
QgsDoubleBoxScaleBarRenderer.draw: src/core/scalebar/qgsdoubleboxscalebarrenderer.h#L41
QgsDoubleBoxScaleBarRenderer.flags: src/core/scalebar/qgsdoubleboxscalebarrenderer.h#L37
@@ -5816,14 +5820,14 @@ QgsHtmlAnnotation: src/core/annotations/qgshtmlannotation.h#L34
QgsHtmlUtils.buildBulletList: src/core/qgshtmlutils.h#L38
QgsHtmlUtils: src/core/qgshtmlutils.h#L30
QgsHttpHeaders.headers: src/core/network/qgshttpheaders.h#L93
-QgsHttpHeaders.insert: src/core/network/qgshttpheaders.h#L190
-QgsHttpHeaders.sanitizeKey: src/core/network/qgshttpheaders.h#L175
-QgsHttpHeaders.setFromDomElement: src/core/network/qgshttpheaders.h#L169
-QgsHttpHeaders.setFromMap: src/core/network/qgshttpheaders.h#L160
-QgsHttpHeaders.setFromSettings: src/core/network/qgshttpheaders.h#L145
-QgsHttpHeaders.setFromUrlQuery: src/core/network/qgshttpheaders.h#L151
-QgsHttpHeaders.toSpacedString: src/core/network/qgshttpheaders.h#L198
-QgsHttpHeaders.updateDomElement: src/core/network/qgshttpheaders.h#L135
+QgsHttpHeaders.insert: src/core/network/qgshttpheaders.h#L203
+QgsHttpHeaders.sanitizeKey: src/core/network/qgshttpheaders.h#L188
+QgsHttpHeaders.setFromDomElement: src/core/network/qgshttpheaders.h#L182
+QgsHttpHeaders.setFromMap: src/core/network/qgshttpheaders.h#L173
+QgsHttpHeaders.setFromSettings: src/core/network/qgshttpheaders.h#L158
+QgsHttpHeaders.setFromUrlQuery: src/core/network/qgshttpheaders.h#L164
+QgsHttpHeaders.toSpacedString: src/core/network/qgshttpheaders.h#L211
+QgsHttpHeaders.updateDomElement: src/core/network/qgshttpheaders.h#L137
QgsHttpHeaders.updateMap: src/core/network/qgshttpheaders.h#L126
QgsHttpHeaders.updateNetworkRequest: src/core/network/qgshttpheaders.h#L111
QgsHttpHeaders.updateSettings: src/core/network/qgshttpheaders.h#L105
@@ -6605,22 +6609,23 @@ QgsLayerTreeNode.willRemoveChildren: src/core/layertree/qgslayertreenode.h#L247
QgsLayerTreeNode.writeCommonXml: src/core/layertree/qgslayertreenode.h#L273
QgsLayerTreeNode.writeXml: src/core/layertree/qgslayertreenode.h#L156
QgsLayerTreeNode: src/core/layertree/qgslayertreenode.h#L76
-QgsLayerTreeRegistryBridge.QgsLayerTreeRegistryBridge: src/core/layertree/qgslayertreeregistrybridge.h#L65
-QgsLayerTreeRegistryBridge.addedLayersToLayerTree: src/core/layertree/qgslayertreeregistrybridge.h#L104
-QgsLayerTreeRegistryBridge.groupRemovedChildren: src/core/layertree/qgslayertreeregistrybridge.h#L111
-QgsLayerTreeRegistryBridge.groupWillRemoveChildren: src/core/layertree/qgslayertreeregistrybridge.h#L110
-QgsLayerTreeRegistryBridge.isEnabled: src/core/layertree/qgslayertreeregistrybridge.h#L68
-QgsLayerTreeRegistryBridge.layerInsertionMethod: src/core/layertree/qgslayertreeregistrybridge.h#L97
-QgsLayerTreeRegistryBridge.layersAdded: src/core/layertree/qgslayertreeregistrybridge.h#L107
-QgsLayerTreeRegistryBridge.layersWillBeRemoved: src/core/layertree/qgslayertreeregistrybridge.h#L108
-QgsLayerTreeRegistryBridge.newLayersVisible: src/core/layertree/qgslayertreeregistrybridge.h#L71
-QgsLayerTreeRegistryBridge.removeLayersFromRegistry: src/core/layertree/qgslayertreeregistrybridge.h#L113
-QgsLayerTreeRegistryBridge.setEnabled: src/core/layertree/qgslayertreeregistrybridge.h#L67
-QgsLayerTreeRegistryBridge.setLayerInsertionMethod: src/core/layertree/qgslayertreeregistrybridge.h#L91
-QgsLayerTreeRegistryBridge.setLayerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L78
-QgsLayerTreeRegistryBridge.setLayerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L85
-QgsLayerTreeRegistryBridge.setNewLayersVisible: src/core/layertree/qgslayertreeregistrybridge.h#L70
-QgsLayerTreeRegistryBridge: src/core/layertree/qgslayertreeregistrybridge.h#L44
+QgsLayerTreeRegistryBridge.QgsLayerTreeRegistryBridge: src/core/layertree/qgslayertreeregistrybridge.h#L66
+QgsLayerTreeRegistryBridge.addedLayersToLayerTree: src/core/layertree/qgslayertreeregistrybridge.h#L111
+QgsLayerTreeRegistryBridge.groupRemovedChildren: src/core/layertree/qgslayertreeregistrybridge.h#L118
+QgsLayerTreeRegistryBridge.groupWillRemoveChildren: src/core/layertree/qgslayertreeregistrybridge.h#L117
+QgsLayerTreeRegistryBridge.isEnabled: src/core/layertree/qgslayertreeregistrybridge.h#L69
+QgsLayerTreeRegistryBridge.layerInsertionMethod: src/core/layertree/qgslayertreeregistrybridge.h#L104
+QgsLayerTreeRegistryBridge.layerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L92
+QgsLayerTreeRegistryBridge.layersAdded: src/core/layertree/qgslayertreeregistrybridge.h#L114
+QgsLayerTreeRegistryBridge.layersWillBeRemoved: src/core/layertree/qgslayertreeregistrybridge.h#L115
+QgsLayerTreeRegistryBridge.newLayersVisible: src/core/layertree/qgslayertreeregistrybridge.h#L72
+QgsLayerTreeRegistryBridge.removeLayersFromRegistry: src/core/layertree/qgslayertreeregistrybridge.h#L120
+QgsLayerTreeRegistryBridge.setEnabled: src/core/layertree/qgslayertreeregistrybridge.h#L68
+QgsLayerTreeRegistryBridge.setLayerInsertionMethod: src/core/layertree/qgslayertreeregistrybridge.h#L98
+QgsLayerTreeRegistryBridge.setLayerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L79
+QgsLayerTreeRegistryBridge.setLayerInsertionPoint: src/core/layertree/qgslayertreeregistrybridge.h#L86
+QgsLayerTreeRegistryBridge.setNewLayersVisible: src/core/layertree/qgslayertreeregistrybridge.h#L71
+QgsLayerTreeRegistryBridge: src/core/layertree/qgslayertreeregistrybridge.h#L45
QgsLayerTreeUtils.checkStateFromXml: src/core/layertree/qgslayertreeutils.h#L53
QgsLayerTreeUtils.checkStateToXml: src/core/layertree/qgslayertreeutils.h#L51
QgsLayerTreeUtils.countMapLayerInTree: src/core/layertree/qgslayertreeutils.h#L121
@@ -6758,28 +6763,28 @@ QgsLayoutEffect.compositionMode: src/core/layout/qgslayouteffect.h#L60
QgsLayoutEffect.draw: src/core/layout/qgslayouteffect.h#L64
QgsLayoutEffect.setCompositionMode: src/core/layout/qgslayouteffect.h#L51
QgsLayoutEffect: src/core/layout/qgslayouteffect.h#L36
-QgsLayoutExporter.computeWorldFileParameters: src/core/layout/qgslayoutexporter.h#L676
-QgsLayoutExporter.computeWorldFileParameters: src/core/layout/qgslayoutexporter.h#L683
-QgsLayoutExporter.containsAdvancedEffects: src/core/layout/qgslayoutexporter.h#L702
-QgsLayoutExporter.errorFile: src/core/layout/qgslayoutexporter.h#L620
-QgsLayoutExporter.errorMessage: src/core/layout/qgslayoutexporter.h#L627
+QgsLayoutExporter.computeWorldFileParameters: src/core/layout/qgslayoutexporter.h#L678
+QgsLayoutExporter.computeWorldFileParameters: src/core/layout/qgslayoutexporter.h#L685
+QgsLayoutExporter.containsAdvancedEffects: src/core/layout/qgslayoutexporter.h#L704
+QgsLayoutExporter.errorFile: src/core/layout/qgslayoutexporter.h#L622
+QgsLayoutExporter.errorMessage: src/core/layout/qgslayoutexporter.h#L629
QgsLayoutExporter.exportToImage: src/core/layout/qgslayoutexporter.h#L258
QgsLayoutExporter.exportToImage: src/core/layout/qgslayoutexporter.h#L271
-QgsLayoutExporter.exportToPdf: src/core/layout/qgslayoutexporter.h#L418
-QgsLayoutExporter.exportToPdf: src/core/layout/qgslayoutexporter.h#L431
-QgsLayoutExporter.exportToPdfs: src/core/layout/qgslayoutexporter.h#L447
-QgsLayoutExporter.exportToSvg: src/core/layout/qgslayoutexporter.h#L599
-QgsLayoutExporter.exportToSvg: src/core/layout/qgslayoutexporter.h#L611
-QgsLayoutExporter.generateFileName: src/core/layout/qgslayoutexporter.h#L711
-QgsLayoutExporter.georeferenceOutput: src/core/layout/qgslayoutexporter.h#L667
+QgsLayoutExporter.exportToPdf: src/core/layout/qgslayoutexporter.h#L420
+QgsLayoutExporter.exportToPdf: src/core/layout/qgslayoutexporter.h#L433
+QgsLayoutExporter.exportToPdfs: src/core/layout/qgslayoutexporter.h#L449
+QgsLayoutExporter.exportToSvg: src/core/layout/qgslayoutexporter.h#L601
+QgsLayoutExporter.exportToSvg: src/core/layout/qgslayoutexporter.h#L613
+QgsLayoutExporter.generateFileName: src/core/layout/qgslayoutexporter.h#L713
+QgsLayoutExporter.georeferenceOutput: src/core/layout/qgslayoutexporter.h#L669
QgsLayoutExporter.layout: src/core/layout/qgslayoutexporter.h#L94
-QgsLayoutExporter.print: src/core/layout/qgslayoutexporter.h#L492
-QgsLayoutExporter.print: src/core/layout/qgslayoutexporter.h#L501
+QgsLayoutExporter.print: src/core/layout/qgslayoutexporter.h#L494
+QgsLayoutExporter.print: src/core/layout/qgslayoutexporter.h#L503
QgsLayoutExporter.renderPage: src/core/layout/qgslayoutexporter.h#L104
QgsLayoutExporter.renderPageToImage: src/core/layout/qgslayoutexporter.h#L124
QgsLayoutExporter.renderRegion: src/core/layout/qgslayoutexporter.h#L133
QgsLayoutExporter.renderRegionToImage: src/core/layout/qgslayoutexporter.h#L151
-QgsLayoutExporter.requiresRasterization: src/core/layout/qgslayoutexporter.h#L693
+QgsLayoutExporter.requiresRasterization: src/core/layout/qgslayoutexporter.h#L695
QgsLayoutExporter: src/core/layout/qgslayoutexporter.h#L51
QgsLayoutFrame.cleanup: src/core/layout/qgslayoutframe.h#L54
QgsLayoutFrame.create: src/core/layout/qgslayoutframe.h#L46
@@ -8743,15 +8748,15 @@ QgsLocatorProxyModel: src/core/locator/qgslocatormodel.h#L212
QgsLocatorResult.setUserData: src/core/locator/qgslocatorfilter.h#L73
QgsLocatorResult.userData: src/core/locator/qgslocatorfilter.h#L66
QgsLocatorResult: src/core/locator/qgslocatorfilter.h#L37
-QgsLogger.critical: src/core/qgslogger.h#L99
-QgsLogger.debug: src/core/qgslogger.h#L72
-QgsLogger.debug: src/core/qgslogger.h#L75
-QgsLogger.debugLevel: src/core/qgslogger.h#L113
-QgsLogger.fatal: src/core/qgslogger.h#L102
-QgsLogger.logFile: src/core/qgslogger.h#L122
-QgsLogger.logMessageToFile: src/core/qgslogger.h#L116
-QgsLogger.warning: src/core/qgslogger.h#L96
-QgsLogger: src/core/qgslogger.h#L60
+QgsLogger.critical: src/core/qgslogger.h#L103
+QgsLogger.debug: src/core/qgslogger.h#L76
+QgsLogger.debug: src/core/qgslogger.h#L79
+QgsLogger.debugLevel: src/core/qgslogger.h#L117
+QgsLogger.fatal: src/core/qgslogger.h#L106
+QgsLogger.logFile: src/core/qgslogger.h#L126
+QgsLogger.logMessageToFile: src/core/qgslogger.h#L120
+QgsLogger.warning: src/core/qgslogger.h#L100
+QgsLogger: src/core/qgslogger.h#L64
QgsManhattanLineCallout.clone: src/core/callouts/qgscallout.h#L765
QgsManhattanLineCallout.create: src/core/callouts/qgscallout.h#L762
QgsManhattanLineCallout.createCalloutLine: src/core/callouts/qgscallout.h#L768
@@ -8862,218 +8867,218 @@ QgsMapInfoSymbolConverter.convertFillSymbol: src/core/symbology/qgsmapinfosymbol
QgsMapInfoSymbolConverter.convertLineSymbol: src/core/symbology/qgsmapinfosymbolconverter.h#L75
QgsMapInfoSymbolConverter.convertMarkerSymbol: src/core/symbology/qgsmapinfosymbolconverter.h#L91
QgsMapInfoSymbolConverter: src/core/symbology/qgsmapinfosymbolconverter.h#L66
-QgsMapLayer.__repr__: src/core/qgsmaplayer.h#L1893
+QgsMapLayer.__repr__: src/core/qgsmaplayer.h#L1896
QgsMapLayer.abstract: src/core/qgsmaplayer.h#L355
-QgsMapLayer.accept: src/core/qgsmaplayer.h#L1720
-QgsMapLayer.appendError: src/core/qgsmaplayer.h#L2257
+QgsMapLayer.accept: src/core/qgsmaplayer.h#L1723
+QgsMapLayer.appendError: src/core/qgsmaplayer.h#L2260
QgsMapLayer.attribution: src/core/qgsmaplayer.h#L411
QgsMapLayer.attributionUrl: src/core/qgsmaplayer.h#L425
-QgsMapLayer.autoRefreshInterval: src/core/qgsmaplayer.h#L1614
-QgsMapLayer.autoRefreshIntervalChanged: src/core/qgsmaplayer.h#L2058
-QgsMapLayer.autoRefreshMode: src/core/qgsmaplayer.h#L1606
-QgsMapLayer.beforeResolveReferences: src/core/qgsmaplayer.h#L1916
+QgsMapLayer.autoRefreshInterval: src/core/qgsmaplayer.h#L1617
+QgsMapLayer.autoRefreshIntervalChanged: src/core/qgsmaplayer.h#L2061
+QgsMapLayer.autoRefreshMode: src/core/qgsmaplayer.h#L1609
+QgsMapLayer.beforeResolveReferences: src/core/qgsmaplayer.h#L1919
QgsMapLayer.blendMode: src/core/qgsmaplayer.h#L515
-QgsMapLayer.blendModeChanged: src/core/qgsmaplayer.h#L1989
+QgsMapLayer.blendModeChanged: src/core/qgsmaplayer.h#L1992
QgsMapLayer.clone: src/core/qgsmaplayer.h#L213
-QgsMapLayer.clone: src/core/qgsmaplayer.h#L2165
-QgsMapLayer.configChanged: src/core/qgsmaplayer.h#L2040
+QgsMapLayer.clone: src/core/qgsmaplayer.h#L2168
+QgsMapLayer.configChanged: src/core/qgsmaplayer.h#L2043
QgsMapLayer.createMapRenderer: src/core/qgsmaplayer.h#L548
-QgsMapLayer.crs3D: src/core/qgsmaplayer.h#L1030
-QgsMapLayer.crs3DChanged: src/core/qgsmaplayer.h#L1955
-QgsMapLayer.crs: src/core/qgsmaplayer.h#L990
-QgsMapLayer.crsChanged: src/core/qgsmaplayer.h#L1944
-QgsMapLayer.customProperty: src/core/qgsmaplayer.h#L717
-QgsMapLayer.customPropertyChanged: src/core/qgsmaplayer.h#L2103
-QgsMapLayer.customPropertyKeys: src/core/qgsmaplayer.h#L704
-QgsMapLayer.dataChanged: src/core/qgsmaplayer.h#L1986
+QgsMapLayer.crs3D: src/core/qgsmaplayer.h#L1033
+QgsMapLayer.crs3DChanged: src/core/qgsmaplayer.h#L1958
+QgsMapLayer.crs: src/core/qgsmaplayer.h#L993
+QgsMapLayer.crsChanged: src/core/qgsmaplayer.h#L1947
+QgsMapLayer.customProperty: src/core/qgsmaplayer.h#L720
+QgsMapLayer.customPropertyChanged: src/core/qgsmaplayer.h#L2106
+QgsMapLayer.customPropertyKeys: src/core/qgsmaplayer.h#L707
+QgsMapLayer.dataChanged: src/core/qgsmaplayer.h#L1989
QgsMapLayer.dataProvider: src/core/qgsmaplayer.h#L301
-QgsMapLayer.dataSourceChanged: src/core/qgsmaplayer.h#L2082
+QgsMapLayer.dataSourceChanged: src/core/qgsmaplayer.h#L2085
QgsMapLayer.dataUrl: src/core/qgsmaplayer.h#L383
QgsMapLayer.dataUrlFormat: src/core/qgsmaplayer.h#L397
-QgsMapLayer.decodedSource: src/core/qgsmaplayer.h#L2216
-QgsMapLayer.deleteStyleFromDatabase: src/core/qgsmaplayer.h#L754
-QgsMapLayer.dependenciesChanged: src/core/qgsmaplayer.h#L2045
-QgsMapLayer.editingStarted: src/core/qgsmaplayer.h#L2109
-QgsMapLayer.editingStopped: src/core/qgsmaplayer.h#L2115
-QgsMapLayer.elevationProperties: src/core/qgsmaplayer.h#L1741
-QgsMapLayer.emitStyleChanged: src/core/qgsmaplayer.h#L1860
-QgsMapLayer.encodedSource: src/core/qgsmaplayer.h#L2202
-QgsMapLayer.error: src/core/qgsmaplayer.h#L977
-QgsMapLayer.exportNamedMetadata: src/core/qgsmaplayer.h#L1092
-QgsMapLayer.exportNamedStyle: src/core/qgsmaplayer.h#L1240
-QgsMapLayer.exportSldStyle: src/core/qgsmaplayer.h#L1251
-QgsMapLayer.exportSldStyleV2: src/core/qgsmaplayer.h#L1261
+QgsMapLayer.decodedSource: src/core/qgsmaplayer.h#L2219
+QgsMapLayer.deleteStyleFromDatabase: src/core/qgsmaplayer.h#L757
+QgsMapLayer.dependenciesChanged: src/core/qgsmaplayer.h#L2048
+QgsMapLayer.editingStarted: src/core/qgsmaplayer.h#L2112
+QgsMapLayer.editingStopped: src/core/qgsmaplayer.h#L2118
+QgsMapLayer.elevationProperties: src/core/qgsmaplayer.h#L1744
+QgsMapLayer.emitStyleChanged: src/core/qgsmaplayer.h#L1863
+QgsMapLayer.encodedSource: src/core/qgsmaplayer.h#L2205
+QgsMapLayer.error: src/core/qgsmaplayer.h#L980
+QgsMapLayer.exportNamedMetadata: src/core/qgsmaplayer.h#L1095
+QgsMapLayer.exportNamedStyle: src/core/qgsmaplayer.h#L1243
+QgsMapLayer.exportSldStyle: src/core/qgsmaplayer.h#L1254
+QgsMapLayer.exportSldStyleV2: src/core/qgsmaplayer.h#L1264
QgsMapLayer.extensionPropertyType: src/core/qgsmaplayer.h#L259
QgsMapLayer.extent3D: src/core/qgsmaplayer.h#L557
QgsMapLayer.extent: src/core/qgsmaplayer.h#L551
QgsMapLayer.flags: src/core/qgsmaplayer.h#L230
-QgsMapLayer.flagsChanged: src/core/qgsmaplayer.h#L2073
-QgsMapLayer.formatLayerName: src/core/qgsmaplayer.h#L1077
-QgsMapLayer.generateId: src/core/qgsmaplayer.h#L1709
-QgsMapLayer.getStyleFromDatabase: src/core/qgsmaplayer.h#L746
-QgsMapLayer.hasAutoRefreshEnabled: src/core/qgsmaplayer.h#L1598
-QgsMapLayer.hasDependencyCycle: src/core/qgsmaplayer.h#L2293
-QgsMapLayer.hasMapTips: src/core/qgsmaplayer.h#L1763
-QgsMapLayer.hasScaleBasedVisibility: src/core/qgsmaplayer.h#L1590
-QgsMapLayer.htmlMetadata: src/core/qgsmaplayer.h#L1661
+QgsMapLayer.flagsChanged: src/core/qgsmaplayer.h#L2076
+QgsMapLayer.formatLayerName: src/core/qgsmaplayer.h#L1080
+QgsMapLayer.generateId: src/core/qgsmaplayer.h#L1712
+QgsMapLayer.getStyleFromDatabase: src/core/qgsmaplayer.h#L749
+QgsMapLayer.hasAutoRefreshEnabled: src/core/qgsmaplayer.h#L1601
+QgsMapLayer.hasDependencyCycle: src/core/qgsmaplayer.h#L2296
+QgsMapLayer.hasMapTips: src/core/qgsmaplayer.h#L1766
+QgsMapLayer.hasScaleBasedVisibility: src/core/qgsmaplayer.h#L1593
+QgsMapLayer.htmlMetadata: src/core/qgsmaplayer.h#L1664
QgsMapLayer.id: src/core/qgsmaplayer.h#L267
-QgsMapLayer.idChanged: src/core/qgsmaplayer.h#L1929
-QgsMapLayer.importNamedMetadata: src/core/qgsmaplayer.h#L1165
-QgsMapLayer.importNamedStyle: src/core/qgsmaplayer.h#L1229
-QgsMapLayer.invalidateWgs84Extent: src/core/qgsmaplayer.h#L2267
-QgsMapLayer.isEditable: src/core/qgsmaplayer.h#L620
-QgsMapLayer.isInScaleRange: src/core/qgsmaplayer.h#L1556
-QgsMapLayer.isModified: src/core/qgsmaplayer.h#L627
-QgsMapLayer.isRefreshOnNotifyEnabled: src/core/qgsmaplayer.h#L1684
-QgsMapLayer.isSpatial: src/core/qgsmaplayer.h#L632
-QgsMapLayer.isTemporary: src/core/qgsmaplayer.h#L643
+QgsMapLayer.idChanged: src/core/qgsmaplayer.h#L1932
+QgsMapLayer.importNamedMetadata: src/core/qgsmaplayer.h#L1168
+QgsMapLayer.importNamedStyle: src/core/qgsmaplayer.h#L1232
+QgsMapLayer.invalidateWgs84Extent: src/core/qgsmaplayer.h#L2270
+QgsMapLayer.isEditable: src/core/qgsmaplayer.h#L623
+QgsMapLayer.isInScaleRange: src/core/qgsmaplayer.h#L1559
+QgsMapLayer.isModified: src/core/qgsmaplayer.h#L630
+QgsMapLayer.isRefreshOnNotifyEnabled: src/core/qgsmaplayer.h#L1687
+QgsMapLayer.isSpatial: src/core/qgsmaplayer.h#L635
+QgsMapLayer.isTemporary: src/core/qgsmaplayer.h#L646
QgsMapLayer.isValid: src/core/qgsmaplayer.h#L574
-QgsMapLayer.isValidChanged: src/core/qgsmaplayer.h#L2096
+QgsMapLayer.isValidChanged: src/core/qgsmaplayer.h#L2099
QgsMapLayer.keywordList: src/core/qgsmaplayer.h#L369
-QgsMapLayer.layerModified: src/core/qgsmaplayer.h#L2121
-QgsMapLayer.legend: src/core/qgsmaplayer.h#L1531
-QgsMapLayer.legendChanged: src/core/qgsmaplayer.h#L2022
-QgsMapLayer.legendPlaceholderImage: src/core/qgsmaplayer.h#L1748
-QgsMapLayer.legendUrl: src/core/qgsmaplayer.h#L1510
-QgsMapLayer.legendUrlFormat: src/core/qgsmaplayer.h#L1520
-QgsMapLayer.listStylesInDatabase: src/core/qgsmaplayer.h#L740
-QgsMapLayer.loadDefaultMetadata: src/core/qgsmaplayer.h#L1148
-QgsMapLayer.loadDefaultStyle: src/core/qgsmaplayer.h#L1189
-QgsMapLayer.loadNamedMetadata: src/core/qgsmaplayer.h#L1135
-QgsMapLayer.loadNamedMetadataFromDatabase: src/core/qgsmaplayer.h#L1157
-QgsMapLayer.loadNamedStyle: src/core/qgsmaplayer.h#L1210
-QgsMapLayer.loadNamedStyle: src/core/qgsmaplayer.h#L791
-QgsMapLayer.loadNamedStyleFromDatabase: src/core/qgsmaplayer.h#L1219
-QgsMapLayer.loadSldStyle: src/core/qgsmaplayer.h#L1337
-QgsMapLayer.mapTipTemplate: src/core/qgsmaplayer.h#L1772
-QgsMapLayer.mapTipTemplateChanged: src/core/qgsmaplayer.h#L2128
-QgsMapLayer.mapTipsEnabled: src/core/qgsmaplayer.h#L1795
-QgsMapLayer.mapTipsEnabledChanged: src/core/qgsmaplayer.h#L2136
-QgsMapLayer.maximumScale: src/core/qgsmaplayer.h#L1580
-QgsMapLayer.metadataChanged: src/core/qgsmaplayer.h#L2065
-QgsMapLayer.metadataUri: src/core/qgsmaplayer.h#L1085
+QgsMapLayer.layerModified: src/core/qgsmaplayer.h#L2124
+QgsMapLayer.legend: src/core/qgsmaplayer.h#L1534
+QgsMapLayer.legendChanged: src/core/qgsmaplayer.h#L2025
+QgsMapLayer.legendPlaceholderImage: src/core/qgsmaplayer.h#L1751
+QgsMapLayer.legendUrl: src/core/qgsmaplayer.h#L1513
+QgsMapLayer.legendUrlFormat: src/core/qgsmaplayer.h#L1523
+QgsMapLayer.listStylesInDatabase: src/core/qgsmaplayer.h#L743
+QgsMapLayer.loadDefaultMetadata: src/core/qgsmaplayer.h#L1151
+QgsMapLayer.loadDefaultStyle: src/core/qgsmaplayer.h#L1192
+QgsMapLayer.loadNamedMetadata: src/core/qgsmaplayer.h#L1138
+QgsMapLayer.loadNamedMetadataFromDatabase: src/core/qgsmaplayer.h#L1160
+QgsMapLayer.loadNamedStyle: src/core/qgsmaplayer.h#L1213
+QgsMapLayer.loadNamedStyle: src/core/qgsmaplayer.h#L794
+QgsMapLayer.loadNamedStyleFromDatabase: src/core/qgsmaplayer.h#L1222
+QgsMapLayer.loadSldStyle: src/core/qgsmaplayer.h#L1340
+QgsMapLayer.mapTipTemplate: src/core/qgsmaplayer.h#L1775
+QgsMapLayer.mapTipTemplateChanged: src/core/qgsmaplayer.h#L2131
+QgsMapLayer.mapTipsEnabled: src/core/qgsmaplayer.h#L1798
+QgsMapLayer.mapTipsEnabledChanged: src/core/qgsmaplayer.h#L2139
+QgsMapLayer.maximumScale: src/core/qgsmaplayer.h#L1583
+QgsMapLayer.metadataChanged: src/core/qgsmaplayer.h#L2068
+QgsMapLayer.metadataUri: src/core/qgsmaplayer.h#L1088
QgsMapLayer.metadataUrl: src/core/qgsmaplayer.h#L460
QgsMapLayer.metadataUrlFormat: src/core/qgsmaplayer.h#L502
QgsMapLayer.metadataUrlType: src/core/qgsmaplayer.h#L481
-QgsMapLayer.minimumScale: src/core/qgsmaplayer.h#L1568
+QgsMapLayer.minimumScale: src/core/qgsmaplayer.h#L1571
QgsMapLayer.name: src/core/qgsmaplayer.h#L296
-QgsMapLayer.nameChanged: src/core/qgsmaplayer.h#L1934
+QgsMapLayer.nameChanged: src/core/qgsmaplayer.h#L1937
QgsMapLayer.opacity: src/core/qgsmaplayer.h#L535
-QgsMapLayer.opacityChanged: src/core/qgsmaplayer.h#L1999
-QgsMapLayer.originalXmlProperties: src/core/qgsmaplayer.h#L1694
-QgsMapLayer.project: src/core/qgsmaplayer.h#L1906
+QgsMapLayer.opacityChanged: src/core/qgsmaplayer.h#L2002
+QgsMapLayer.originalXmlProperties: src/core/qgsmaplayer.h#L1697
+QgsMapLayer.project: src/core/qgsmaplayer.h#L1909
QgsMapLayer.properties: src/core/qgsmaplayer.h#L253
QgsMapLayer.providerMetadata: src/core/qgsmaplayer.h#L313
-QgsMapLayer.providerReadFlags: src/core/qgsmaplayer.h#L1804
-QgsMapLayer.providerType: src/core/qgsmaplayer.h#L1492
-QgsMapLayer.publicSource: src/core/qgsmaplayer.h#L583
-QgsMapLayer.readCommonStyle: src/core/qgsmaplayer.h#L2243
-QgsMapLayer.readCustomProperties: src/core/qgsmaplayer.h#L2223
-QgsMapLayer.readLayerXml: src/core/qgsmaplayer.h#L675
+QgsMapLayer.providerReadFlags: src/core/qgsmaplayer.h#L1807
+QgsMapLayer.providerType: src/core/qgsmaplayer.h#L1495
+QgsMapLayer.publicSource: src/core/qgsmaplayer.h#L586
+QgsMapLayer.readCommonStyle: src/core/qgsmaplayer.h#L2246
+QgsMapLayer.readCustomProperties: src/core/qgsmaplayer.h#L2226
+QgsMapLayer.readLayerXml: src/core/qgsmaplayer.h#L678
QgsMapLayer.readOnly: src/core/qgsmaplayer.h#L538
-QgsMapLayer.readSld: src/core/qgsmaplayer.h#L1340
-QgsMapLayer.readStyle: src/core/qgsmaplayer.h#L1364
-QgsMapLayer.readStyleManager: src/core/qgsmaplayer.h#L2229
-QgsMapLayer.readSymbology: src/core/qgsmaplayer.h#L1352
-QgsMapLayer.readXml: src/core/qgsmaplayer.h#L2183
-QgsMapLayer.recalculateExtents: src/core/qgsmaplayer.h#L1983
-QgsMapLayer.refreshOnNotifyMessage: src/core/qgsmaplayer.h#L1678
+QgsMapLayer.readSld: src/core/qgsmaplayer.h#L1343
+QgsMapLayer.readStyle: src/core/qgsmaplayer.h#L1367
+QgsMapLayer.readStyleManager: src/core/qgsmaplayer.h#L2232
+QgsMapLayer.readSymbology: src/core/qgsmaplayer.h#L1355
+QgsMapLayer.readXml: src/core/qgsmaplayer.h#L2186
+QgsMapLayer.recalculateExtents: src/core/qgsmaplayer.h#L1986
+QgsMapLayer.refreshOnNotifyMessage: src/core/qgsmaplayer.h#L1681
QgsMapLayer.reload: src/core/qgsmaplayer.h#L543
-QgsMapLayer.removeCustomProperty: src/core/qgsmaplayer.h#L970
-QgsMapLayer.renderer3D: src/core/qgsmaplayer.h#L1546
-QgsMapLayer.renderer3DChanged: src/core/qgsmaplayer.h#L2027
-QgsMapLayer.rendererChanged: src/core/qgsmaplayer.h#L2005
-QgsMapLayer.repaintRequested: src/core/qgsmaplayer.h#L1980
-QgsMapLayer.request3DUpdate: src/core/qgsmaplayer.h#L2034
-QgsMapLayer.resolveReferences: src/core/qgsmaplayer.h#L698
-QgsMapLayer.saveDefaultMetadata: src/core/qgsmaplayer.h#L1102
-QgsMapLayer.saveDefaultStyle: src/core/qgsmaplayer.h#L1274
-QgsMapLayer.saveDefaultStyle: src/core/qgsmaplayer.h#L1287
-QgsMapLayer.saveNamedMetadata: src/core/qgsmaplayer.h#L1117
-QgsMapLayer.saveNamedStyle: src/core/qgsmaplayer.h#L1304
-QgsMapLayer.saveSldStyle: src/core/qgsmaplayer.h#L1315
-QgsMapLayer.saveSldStyleV2: src/core/qgsmaplayer.h#L1327
-QgsMapLayer.saveStyleToDatabase: src/core/qgsmaplayer.h#L772
-QgsMapLayer.selectionProperties: src/core/qgsmaplayer.h#L1727
+QgsMapLayer.removeCustomProperty: src/core/qgsmaplayer.h#L973
+QgsMapLayer.renderer3D: src/core/qgsmaplayer.h#L1549
+QgsMapLayer.renderer3DChanged: src/core/qgsmaplayer.h#L2030
+QgsMapLayer.rendererChanged: src/core/qgsmaplayer.h#L2008
+QgsMapLayer.repaintRequested: src/core/qgsmaplayer.h#L1983
+QgsMapLayer.request3DUpdate: src/core/qgsmaplayer.h#L2037
+QgsMapLayer.resolveReferences: src/core/qgsmaplayer.h#L701
+QgsMapLayer.saveDefaultMetadata: src/core/qgsmaplayer.h#L1105
+QgsMapLayer.saveDefaultStyle: src/core/qgsmaplayer.h#L1277
+QgsMapLayer.saveDefaultStyle: src/core/qgsmaplayer.h#L1290
+QgsMapLayer.saveNamedMetadata: src/core/qgsmaplayer.h#L1120
+QgsMapLayer.saveNamedStyle: src/core/qgsmaplayer.h#L1307
+QgsMapLayer.saveSldStyle: src/core/qgsmaplayer.h#L1318
+QgsMapLayer.saveSldStyleV2: src/core/qgsmaplayer.h#L1330
+QgsMapLayer.saveStyleToDatabase: src/core/qgsmaplayer.h#L775
+QgsMapLayer.selectionProperties: src/core/qgsmaplayer.h#L1730
QgsMapLayer.serverProperties: src/core/qgsmaplayer.h#L434
QgsMapLayer.setAbstract: src/core/qgsmaplayer.h#L348
QgsMapLayer.setAttribution: src/core/qgsmaplayer.h#L404
QgsMapLayer.setAttributionUrl: src/core/qgsmaplayer.h#L418
-QgsMapLayer.setAutoRefreshEnabled: src/core/qgsmaplayer.h#L1634
-QgsMapLayer.setAutoRefreshInterval: src/core/qgsmaplayer.h#L1626
-QgsMapLayer.setAutoRefreshMode: src/core/qgsmaplayer.h#L1642
+QgsMapLayer.setAutoRefreshEnabled: src/core/qgsmaplayer.h#L1637
+QgsMapLayer.setAutoRefreshInterval: src/core/qgsmaplayer.h#L1629
+QgsMapLayer.setAutoRefreshMode: src/core/qgsmaplayer.h#L1645
QgsMapLayer.setBlendMode: src/core/qgsmaplayer.h#L509
-QgsMapLayer.setCrs: src/core/qgsmaplayer.h#L1042
-QgsMapLayer.setCustomProperties: src/core/qgsmaplayer.h#L722
-QgsMapLayer.setCustomProperty: src/core/qgsmaplayer.h#L711
-QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1425
-QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1456
-QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1487
+QgsMapLayer.setCrs: src/core/qgsmaplayer.h#L1045
+QgsMapLayer.setCustomProperties: src/core/qgsmaplayer.h#L725
+QgsMapLayer.setCustomProperty: src/core/qgsmaplayer.h#L714
+QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1428
+QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1459
+QgsMapLayer.setDataSource: src/core/qgsmaplayer.h#L1490
QgsMapLayer.setDataUrl: src/core/qgsmaplayer.h#L376
QgsMapLayer.setDataUrlFormat: src/core/qgsmaplayer.h#L390
-QgsMapLayer.setDependencies: src/core/qgsmaplayer.h#L1869
-QgsMapLayer.setError: src/core/qgsmaplayer.h#L2259
-QgsMapLayer.setExtent3D: src/core/qgsmaplayer.h#L2174
-QgsMapLayer.setExtent: src/core/qgsmaplayer.h#L2168
+QgsMapLayer.setDependencies: src/core/qgsmaplayer.h#L1872
+QgsMapLayer.setError: src/core/qgsmaplayer.h#L2262
+QgsMapLayer.setExtent3D: src/core/qgsmaplayer.h#L2177
+QgsMapLayer.setExtent: src/core/qgsmaplayer.h#L2171
QgsMapLayer.setFlags: src/core/qgsmaplayer.h#L242
QgsMapLayer.setId: src/core/qgsmaplayer.h#L284
QgsMapLayer.setKeywordList: src/core/qgsmaplayer.h#L362
-QgsMapLayer.setLayerOrder: src/core/qgsmaplayer.h#L602
-QgsMapLayer.setLegend: src/core/qgsmaplayer.h#L1526
-QgsMapLayer.setLegendPlaceholderImage: src/core/qgsmaplayer.h#L1755
-QgsMapLayer.setLegendUrl: src/core/qgsmaplayer.h#L1505
-QgsMapLayer.setLegendUrlFormat: src/core/qgsmaplayer.h#L1515
-QgsMapLayer.setMapTipTemplate: src/core/qgsmaplayer.h#L1781
-QgsMapLayer.setMapTipsEnabled: src/core/qgsmaplayer.h#L1789
-QgsMapLayer.setMaximumScale: src/core/qgsmaplayer.h#L1828
-QgsMapLayer.setMetadata: src/core/qgsmaplayer.h#L1656
+QgsMapLayer.setLayerOrder: src/core/qgsmaplayer.h#L605
+QgsMapLayer.setLegend: src/core/qgsmaplayer.h#L1529
+QgsMapLayer.setLegendPlaceholderImage: src/core/qgsmaplayer.h#L1758
+QgsMapLayer.setLegendUrl: src/core/qgsmaplayer.h#L1508
+QgsMapLayer.setLegendUrlFormat: src/core/qgsmaplayer.h#L1518
+QgsMapLayer.setMapTipTemplate: src/core/qgsmaplayer.h#L1784
+QgsMapLayer.setMapTipsEnabled: src/core/qgsmaplayer.h#L1792
+QgsMapLayer.setMaximumScale: src/core/qgsmaplayer.h#L1831
+QgsMapLayer.setMetadata: src/core/qgsmaplayer.h#L1659
QgsMapLayer.setMetadataUrl: src/core/qgsmaplayer.h#L449
QgsMapLayer.setMetadataUrlFormat: src/core/qgsmaplayer.h#L491
QgsMapLayer.setMetadataUrlType: src/core/qgsmaplayer.h#L470
-QgsMapLayer.setMinimumScale: src/core/qgsmaplayer.h#L1817
+QgsMapLayer.setMinimumScale: src/core/qgsmaplayer.h#L1820
QgsMapLayer.setName: src/core/qgsmaplayer.h#L290
QgsMapLayer.setOpacity: src/core/qgsmaplayer.h#L525
-QgsMapLayer.setOriginalXmlProperties: src/core/qgsmaplayer.h#L1703
-QgsMapLayer.setProviderType: src/core/qgsmaplayer.h#L2247
-QgsMapLayer.setRefreshOnNofifyMessage: src/core/qgsmaplayer.h#L1883
-QgsMapLayer.setRefreshOnNotifyEnabled: src/core/qgsmaplayer.h#L1875
-QgsMapLayer.setRenderer3D: src/core/qgsmaplayer.h#L1541
-QgsMapLayer.setScaleBasedVisibility: src/core/qgsmaplayer.h#L1837
+QgsMapLayer.setOriginalXmlProperties: src/core/qgsmaplayer.h#L1706
+QgsMapLayer.setProviderType: src/core/qgsmaplayer.h#L2250
+QgsMapLayer.setRefreshOnNofifyMessage: src/core/qgsmaplayer.h#L1886
+QgsMapLayer.setRefreshOnNotifyEnabled: src/core/qgsmaplayer.h#L1878
+QgsMapLayer.setRenderer3D: src/core/qgsmaplayer.h#L1544
+QgsMapLayer.setScaleBasedVisibility: src/core/qgsmaplayer.h#L1840
QgsMapLayer.setShortName: src/core/qgsmaplayer.h#L320
-QgsMapLayer.setSubLayerVisibility: src/core/qgsmaplayer.h#L609
+QgsMapLayer.setSubLayerVisibility: src/core/qgsmaplayer.h#L612
QgsMapLayer.setTitle: src/core/qgsmaplayer.h#L334
-QgsMapLayer.setTransformContext: src/core/qgsmaplayer.h#L1890
-QgsMapLayer.setValid: src/core/qgsmaplayer.h#L2177
-QgsMapLayer.setVerticalCrs: src/core/qgsmaplayer.h#L1063
+QgsMapLayer.setTransformContext: src/core/qgsmaplayer.h#L1893
+QgsMapLayer.setValid: src/core/qgsmaplayer.h#L2180
+QgsMapLayer.setVerticalCrs: src/core/qgsmaplayer.h#L1066
QgsMapLayer.shortName: src/core/qgsmaplayer.h#L327
-QgsMapLayer.source: src/core/qgsmaplayer.h#L590
-QgsMapLayer.statusChanged: src/core/qgsmaplayer.h#L1919
-QgsMapLayer.styleChanged: src/core/qgsmaplayer.h#L2017
-QgsMapLayer.styleLoaded: src/core/qgsmaplayer.h#L2089
-QgsMapLayer.styleManager: src/core/qgsmaplayer.h#L1536
-QgsMapLayer.styleURI: src/core/qgsmaplayer.h#L1175
-QgsMapLayer.subLayers: src/core/qgsmaplayer.h#L596
-QgsMapLayer.supportsEditing: src/core/qgsmaplayer.h#L617
-QgsMapLayer.temporalProperties: src/core/qgsmaplayer.h#L1734
-QgsMapLayer.timestamp: src/core/qgsmaplayer.h#L1664
+QgsMapLayer.source: src/core/qgsmaplayer.h#L593
+QgsMapLayer.statusChanged: src/core/qgsmaplayer.h#L1922
+QgsMapLayer.styleChanged: src/core/qgsmaplayer.h#L2020
+QgsMapLayer.styleLoaded: src/core/qgsmaplayer.h#L2092
+QgsMapLayer.styleManager: src/core/qgsmaplayer.h#L1539
+QgsMapLayer.styleURI: src/core/qgsmaplayer.h#L1178
+QgsMapLayer.subLayers: src/core/qgsmaplayer.h#L599
+QgsMapLayer.supportsEditing: src/core/qgsmaplayer.h#L620
+QgsMapLayer.temporalProperties: src/core/qgsmaplayer.h#L1737
+QgsMapLayer.timestamp: src/core/qgsmaplayer.h#L1667
QgsMapLayer.title: src/core/qgsmaplayer.h#L341
-QgsMapLayer.transformContext: src/core/qgsmaplayer.h#L1070
-QgsMapLayer.trigger3DUpdate: src/core/qgsmaplayer.h#L1855
-QgsMapLayer.triggerRepaint: src/core/qgsmaplayer.h#L1847
+QgsMapLayer.transformContext: src/core/qgsmaplayer.h#L1073
+QgsMapLayer.trigger3DUpdate: src/core/qgsmaplayer.h#L1858
+QgsMapLayer.triggerRepaint: src/core/qgsmaplayer.h#L1850
QgsMapLayer.type: src/core/qgsmaplayer.h#L218
-QgsMapLayer.undoStack: src/core/qgsmaplayer.h#L1495
-QgsMapLayer.undoStackStyles: src/core/qgsmaplayer.h#L1500
-QgsMapLayer.verticalCrs: src/core/qgsmaplayer.h#L1010
-QgsMapLayer.verticalCrsChanged: src/core/qgsmaplayer.h#L1972
+QgsMapLayer.undoStack: src/core/qgsmaplayer.h#L1498
+QgsMapLayer.undoStackStyles: src/core/qgsmaplayer.h#L1503
+QgsMapLayer.verticalCrs: src/core/qgsmaplayer.h#L1013
+QgsMapLayer.verticalCrsChanged: src/core/qgsmaplayer.h#L1975
QgsMapLayer.wgs84Extent: src/core/qgsmaplayer.h#L567
-QgsMapLayer.willBeDeleted: src/core/qgsmaplayer.h#L2052
-QgsMapLayer.writeCommonStyle: src/core/qgsmaplayer.h#L2236
-QgsMapLayer.writeCustomProperties: src/core/qgsmaplayer.h#L2226
-QgsMapLayer.writeLayerXml: src/core/qgsmaplayer.h#L693
-QgsMapLayer.writeStyle: src/core/qgsmaplayer.h#L1391
-QgsMapLayer.writeStyleManager: src/core/qgsmaplayer.h#L2231
-QgsMapLayer.writeSymbology: src/core/qgsmaplayer.h#L1377
-QgsMapLayer.writeXml: src/core/qgsmaplayer.h#L2189
+QgsMapLayer.willBeDeleted: src/core/qgsmaplayer.h#L2055
+QgsMapLayer.writeCommonStyle: src/core/qgsmaplayer.h#L2239
+QgsMapLayer.writeCustomProperties: src/core/qgsmaplayer.h#L2229
+QgsMapLayer.writeLayerXml: src/core/qgsmaplayer.h#L696
+QgsMapLayer.writeStyle: src/core/qgsmaplayer.h#L1394
+QgsMapLayer.writeStyleManager: src/core/qgsmaplayer.h#L2234
+QgsMapLayer.writeSymbology: src/core/qgsmaplayer.h#L1380
+QgsMapLayer.writeXml: src/core/qgsmaplayer.h#L2192
QgsMapLayer: src/core/qgsmaplayer.h#L75
QgsMapLayerDependency.__hash__: src/core/qgsmaplayerdependency.h#L78
QgsMapLayerDependency.layerId: src/core/qgsmaplayerdependency.h#L67
@@ -9650,6 +9655,7 @@ QgsMaskIdProvider.maskId: src/core/qgsmaskidprovider.h#L56
QgsMaskIdProvider.size: src/core/qgsmaskidprovider.h#L61
QgsMaskIdProvider: src/core/qgsmaskidprovider.h#L39
QgsMaskMarkerSymbolLayer.bounds: src/core/symbology/qgsmasksymbollayer.h#L63
+QgsMaskMarkerSymbolLayer.clearMasks: src/core/symbology/qgsmasksymbollayer.h#L87
QgsMaskMarkerSymbolLayer.clone: src/core/symbology/qgsmasksymbollayer.h#L51
QgsMaskMarkerSymbolLayer.color: src/core/symbology/qgsmasksymbollayer.h#L66
QgsMaskMarkerSymbolLayer.create: src/core/symbology/qgsmasksymbollayer.h#L49
@@ -9659,7 +9665,7 @@ QgsMaskMarkerSymbolLayer.hasDataDefinedProperties: src/core/symbology/qgsmasksym
QgsMaskMarkerSymbolLayer.layerType: src/core/symbology/qgsmasksymbollayer.h#L59
QgsMaskMarkerSymbolLayer.properties: src/core/symbology/qgsmasksymbollayer.h#L57
QgsMaskMarkerSymbolLayer.renderPoint: src/core/symbology/qgsmasksymbollayer.h#L62
-QgsMaskMarkerSymbolLayer.setMasks: src/core/symbology/qgsmasksymbollayer.h#L87
+QgsMaskMarkerSymbolLayer.setMasks: src/core/symbology/qgsmasksymbollayer.h#L94
QgsMaskMarkerSymbolLayer.setOutputUnit: src/core/symbology/qgsmasksymbollayer.h#L65
QgsMaskMarkerSymbolLayer.setSubSymbol: src/core/symbology/qgsmasksymbollayer.h#L53
QgsMaskMarkerSymbolLayer.startRender: src/core/symbology/qgsmasksymbollayer.h#L60
@@ -9964,86 +9970,86 @@ QgsMeshElevationAveragingMethod: src/core/mesh/qgsmesh3daveraging.h#L368
QgsMeshLayer.QgsMeshLayer.LayerOptions: src/core/mesh/qgsmeshlayer.h#L117
QgsMeshLayer.QgsMeshLayer: src/core/mesh/qgsmeshlayer.h#L159
QgsMeshLayer.__repr__: src/core/mesh/qgsmeshlayer.h#L168
-QgsMeshLayer.activeScalarDatasetAtTime: src/core/mesh/qgsmeshlayer.h#L626
-QgsMeshLayer.activeScalarDatasetGroupChanged: src/core/mesh/qgsmeshlayer.h#L990
-QgsMeshLayer.activeScalarDatasetIndex: src/core/mesh/qgsmeshlayer.h#L961
-QgsMeshLayer.activeVectorDatasetAtTime: src/core/mesh/qgsmeshlayer.h#L639
-QgsMeshLayer.activeVectorDatasetGroupChanged: src/core/mesh/qgsmeshlayer.h#L997
+QgsMeshLayer.activeScalarDatasetAtTime: src/core/mesh/qgsmeshlayer.h#L632
+QgsMeshLayer.activeScalarDatasetGroupChanged: src/core/mesh/qgsmeshlayer.h#L996
+QgsMeshLayer.activeScalarDatasetIndex: src/core/mesh/qgsmeshlayer.h#L967
+QgsMeshLayer.activeVectorDatasetAtTime: src/core/mesh/qgsmeshlayer.h#L645
+QgsMeshLayer.activeVectorDatasetGroupChanged: src/core/mesh/qgsmeshlayer.h#L1003
QgsMeshLayer.addDatasets: src/core/mesh/qgsmeshlayer.h#L212
QgsMeshLayer.addDatasets: src/core/mesh/qgsmeshlayer.h#L232
-QgsMeshLayer.areFacesActive: src/core/mesh/qgsmeshlayer.h#L497
+QgsMeshLayer.areFacesActive: src/core/mesh/qgsmeshlayer.h#L503
QgsMeshLayer.clone: src/core/mesh/qgsmeshlayer.h#L177
-QgsMeshLayer.commitFrameEditing: src/core/mesh/qgsmeshlayer.h#L822
-QgsMeshLayer.contains: src/core/mesh/qgsmeshlayer.h#L872
+QgsMeshLayer.commitFrameEditing: src/core/mesh/qgsmeshlayer.h#L828
+QgsMeshLayer.contains: src/core/mesh/qgsmeshlayer.h#L878
QgsMeshLayer.createMapRenderer: src/core/mesh/qgsmeshlayer.h#L179
QgsMeshLayer.createProfileGenerator: src/core/mesh/qgsmeshlayer.h#L180
QgsMeshLayer.dataProvider: src/core/mesh/qgsmeshlayer.h#L175
-QgsMeshLayer.dataset1dValue: src/core/mesh/qgsmeshlayer.h#L563
-QgsMeshLayer.dataset3dValue: src/core/mesh/qgsmeshlayer.h#L542
-QgsMeshLayer.dataset3dValues: src/core/mesh/qgsmeshlayer.h#L474
-QgsMeshLayer.datasetCount: src/core/mesh/qgsmeshlayer.h#L405
-QgsMeshLayer.datasetGroupCount: src/core/mesh/qgsmeshlayer.h#L356
-QgsMeshLayer.datasetGroupMetadata: src/core/mesh/qgsmeshlayer.h#L393
-QgsMeshLayer.datasetGroupTreeRootItem: src/core/mesh/qgsmeshlayer.h#L747
-QgsMeshLayer.datasetIndexAtRelativeTime: src/core/mesh/qgsmeshlayer.h#L597
-QgsMeshLayer.datasetIndexAtTime: src/core/mesh/qgsmeshlayer.h#L580
-QgsMeshLayer.datasetMetadata: src/core/mesh/qgsmeshlayer.h#L417
-QgsMeshLayer.datasetRelativeTime: src/core/mesh/qgsmeshlayer.h#L783
-QgsMeshLayer.datasetRelativeTimeInMilliseconds: src/core/mesh/qgsmeshlayer.h#L790
-QgsMeshLayer.datasetValue: src/core/mesh/qgsmeshlayer.h#L436
-QgsMeshLayer.datasetValue: src/core/mesh/qgsmeshlayer.h#L521
-QgsMeshLayer.datasetValues: src/core/mesh/qgsmeshlayer.h#L456
-QgsMeshLayer.datasetsPathUnique: src/core/mesh/qgsmeshlayer.h#L972
+QgsMeshLayer.dataset1dValue: src/core/mesh/qgsmeshlayer.h#L569
+QgsMeshLayer.dataset3dValue: src/core/mesh/qgsmeshlayer.h#L548
+QgsMeshLayer.dataset3dValues: src/core/mesh/qgsmeshlayer.h#L480
+QgsMeshLayer.datasetCount: src/core/mesh/qgsmeshlayer.h#L411
+QgsMeshLayer.datasetGroupCount: src/core/mesh/qgsmeshlayer.h#L362
+QgsMeshLayer.datasetGroupMetadata: src/core/mesh/qgsmeshlayer.h#L399
+QgsMeshLayer.datasetGroupTreeRootItem: src/core/mesh/qgsmeshlayer.h#L753
+QgsMeshLayer.datasetIndexAtRelativeTime: src/core/mesh/qgsmeshlayer.h#L603
+QgsMeshLayer.datasetIndexAtTime: src/core/mesh/qgsmeshlayer.h#L586
+QgsMeshLayer.datasetMetadata: src/core/mesh/qgsmeshlayer.h#L423
+QgsMeshLayer.datasetRelativeTime: src/core/mesh/qgsmeshlayer.h#L789
+QgsMeshLayer.datasetRelativeTimeInMilliseconds: src/core/mesh/qgsmeshlayer.h#L796
+QgsMeshLayer.datasetValue: src/core/mesh/qgsmeshlayer.h#L442
+QgsMeshLayer.datasetValue: src/core/mesh/qgsmeshlayer.h#L527
+QgsMeshLayer.datasetValues: src/core/mesh/qgsmeshlayer.h#L462
+QgsMeshLayer.datasetsPathUnique: src/core/mesh/qgsmeshlayer.h#L978
QgsMeshLayer.decodedSource: src/core/mesh/qgsmeshlayer.h#L188
QgsMeshLayer.elevationProperties: src/core/mesh/qgsmeshlayer.h#L192
QgsMeshLayer.encodedSource: src/core/mesh/qgsmeshlayer.h#L187
QgsMeshLayer.extent: src/core/mesh/qgsmeshlayer.h#L178
-QgsMeshLayer.extraDatasetGroupCount: src/core/mesh/qgsmeshlayer.h#L363
-QgsMeshLayer.firstValidTimeStep: src/core/mesh/qgsmeshlayer.h#L776
-QgsMeshLayer.formatTime: src/core/mesh/qgsmeshlayer.h#L349
+QgsMeshLayer.extraDatasetGroupCount: src/core/mesh/qgsmeshlayer.h#L369
+QgsMeshLayer.firstValidTimeStep: src/core/mesh/qgsmeshlayer.h#L782
+QgsMeshLayer.formatTime: src/core/mesh/qgsmeshlayer.h#L355
QgsMeshLayer.htmlMetadata: src/core/mesh/qgsmeshlayer.h#L195
QgsMeshLayer.isEditable: src/core/mesh/qgsmeshlayer.h#L196
-QgsMeshLayer.isFaceActive: src/core/mesh/qgsmeshlayer.h#L483
-QgsMeshLayer.isModified: src/core/mesh/qgsmeshlayer.h#L866
-QgsMeshLayer.labeling: src/core/mesh/qgsmeshlayer.h#L937
-QgsMeshLayer.labelsEnabled: src/core/mesh/qgsmeshlayer.h#L907
+QgsMeshLayer.isFaceActive: src/core/mesh/qgsmeshlayer.h#L489
+QgsMeshLayer.isModified: src/core/mesh/qgsmeshlayer.h#L872
+QgsMeshLayer.labeling: src/core/mesh/qgsmeshlayer.h#L943
+QgsMeshLayer.labelsEnabled: src/core/mesh/qgsmeshlayer.h#L913
QgsMeshLayer.loadDefaultStyle: src/core/mesh/qgsmeshlayer.h#L198
-QgsMeshLayer.meshEdgeCount: src/core/mesh/qgsmeshlayer.h#L897
-QgsMeshLayer.meshEditor: src/core/mesh/qgsmeshlayer.h#L859
-QgsMeshLayer.meshFaceCount: src/core/mesh/qgsmeshlayer.h#L890
-QgsMeshLayer.meshVertexCount: src/core/mesh/qgsmeshlayer.h#L881
-QgsMeshLayer.minimumMaximumActiveScalarDataset: src/core/mesh/qgsmeshlayer.h#L954
+QgsMeshLayer.meshEdgeCount: src/core/mesh/qgsmeshlayer.h#L903
+QgsMeshLayer.meshEditor: src/core/mesh/qgsmeshlayer.h#L865
+QgsMeshLayer.meshFaceCount: src/core/mesh/qgsmeshlayer.h#L896
+QgsMeshLayer.meshVertexCount: src/core/mesh/qgsmeshlayer.h#L887
+QgsMeshLayer.minimumMaximumActiveScalarDataset: src/core/mesh/qgsmeshlayer.h#L960
QgsMeshLayer.providerType: src/core/mesh/qgsmeshlayer.h#L201
QgsMeshLayer.readStyle: src/core/mesh/qgsmeshlayer.h#L186
QgsMeshLayer.readSymbology: src/core/mesh/qgsmeshlayer.h#L181
QgsMeshLayer.readXml: src/core/mesh/qgsmeshlayer.h#L189
-QgsMeshLayer.reindex: src/core/mesh/qgsmeshlayer.h#L852
+QgsMeshLayer.reindex: src/core/mesh/qgsmeshlayer.h#L858
QgsMeshLayer.reload: src/core/mesh/qgsmeshlayer.h#L193
-QgsMeshLayer.reloaded: src/core/mesh/qgsmeshlayer.h#L1011
+QgsMeshLayer.reloaded: src/core/mesh/qgsmeshlayer.h#L1017
QgsMeshLayer.removeDatasets: src/core/mesh/qgsmeshlayer.h#L222
QgsMeshLayer.rendererSettings: src/core/mesh/qgsmeshlayer.h#L311
-QgsMeshLayer.resetDatasetGroupTreeItem: src/core/mesh/qgsmeshlayer.h#L769
-QgsMeshLayer.rollBackFrameEditing: src/core/mesh/qgsmeshlayer.h#L832
+QgsMeshLayer.resetDatasetGroupTreeItem: src/core/mesh/qgsmeshlayer.h#L775
+QgsMeshLayer.rollBackFrameEditing: src/core/mesh/qgsmeshlayer.h#L838
QgsMeshLayer.saveDataset: src/core/mesh/qgsmeshlayer.h#L244
-QgsMeshLayer.setDatasetGroupTreeRootItem: src/core/mesh/qgsmeshlayer.h#L762
-QgsMeshLayer.setLabeling: src/core/mesh/qgsmeshlayer.h#L943
-QgsMeshLayer.setLabelsEnabled: src/core/mesh/qgsmeshlayer.h#L919
-QgsMeshLayer.setReferenceTime: src/core/mesh/qgsmeshlayer.h#L686
-QgsMeshLayer.setRendererSettings: src/core/mesh/qgsmeshlayer.h#L313
-QgsMeshLayer.setTemporalMatchingMethod: src/core/mesh/qgsmeshlayer.h#L695
-QgsMeshLayer.setTimeSettings: src/core/mesh/qgsmeshlayer.h#L327
-QgsMeshLayer.setTransformContext: src/core/mesh/qgsmeshlayer.h#L981
-QgsMeshLayer.snapOnElement: src/core/mesh/qgsmeshlayer.h#L718
-QgsMeshLayer.startFrameEditing: src/core/mesh/qgsmeshlayer.h#L799
-QgsMeshLayer.startFrameEditing: src/core/mesh/qgsmeshlayer.h#L811
-QgsMeshLayer.staticScalarDatasetIndex: src/core/mesh/qgsmeshlayer.h#L667
-QgsMeshLayer.staticVectorDatasetIndex: src/core/mesh/qgsmeshlayer.h#L677
-QgsMeshLayer.stopFrameEditing: src/core/mesh/qgsmeshlayer.h#L841
+QgsMeshLayer.setDatasetGroupTreeRootItem: src/core/mesh/qgsmeshlayer.h#L768
+QgsMeshLayer.setLabeling: src/core/mesh/qgsmeshlayer.h#L949
+QgsMeshLayer.setLabelsEnabled: src/core/mesh/qgsmeshlayer.h#L925
+QgsMeshLayer.setReferenceTime: src/core/mesh/qgsmeshlayer.h#L692
+QgsMeshLayer.setRendererSettings: src/core/mesh/qgsmeshlayer.h#L319
+QgsMeshLayer.setTemporalMatchingMethod: src/core/mesh/qgsmeshlayer.h#L701
+QgsMeshLayer.setTimeSettings: src/core/mesh/qgsmeshlayer.h#L333
+QgsMeshLayer.setTransformContext: src/core/mesh/qgsmeshlayer.h#L987
+QgsMeshLayer.snapOnElement: src/core/mesh/qgsmeshlayer.h#L724
+QgsMeshLayer.startFrameEditing: src/core/mesh/qgsmeshlayer.h#L805
+QgsMeshLayer.startFrameEditing: src/core/mesh/qgsmeshlayer.h#L817
+QgsMeshLayer.staticScalarDatasetIndex: src/core/mesh/qgsmeshlayer.h#L673
+QgsMeshLayer.staticVectorDatasetIndex: src/core/mesh/qgsmeshlayer.h#L683
+QgsMeshLayer.stopFrameEditing: src/core/mesh/qgsmeshlayer.h#L847
QgsMeshLayer.subLayers: src/core/mesh/qgsmeshlayer.h#L194
QgsMeshLayer.supportsEditing: src/core/mesh/qgsmeshlayer.h#L197
QgsMeshLayer.temporalProperties: src/core/mesh/qgsmeshlayer.h#L191
-QgsMeshLayer.timeSettings: src/core/mesh/qgsmeshlayer.h#L320
-QgsMeshLayer.timeSettingsChanged: src/core/mesh/qgsmeshlayer.h#L1004
+QgsMeshLayer.timeSettings: src/core/mesh/qgsmeshlayer.h#L326
+QgsMeshLayer.timeSettingsChanged: src/core/mesh/qgsmeshlayer.h#L1010
QgsMeshLayer.updateTriangularMesh: src/core/mesh/qgsmeshlayer.h#L301
QgsMeshLayer.writeStyle: src/core/mesh/qgsmeshlayer.h#L185
QgsMeshLayer.writeSymbology: src/core/mesh/qgsmeshlayer.h#L183
@@ -10144,106 +10150,106 @@ QgsMeshRendererScalarSettings.setLimits: src/core/mesh/qgsmeshrenderersettings.h
QgsMeshRendererScalarSettings.setOpacity: src/core/mesh/qgsmeshrenderersettings.h#L132
QgsMeshRendererScalarSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L207
QgsMeshRendererScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L92
-QgsMeshRendererSettings.activeScalarDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L817
-QgsMeshRendererSettings.activeVectorDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L829
-QgsMeshRendererSettings.averagingMethod: src/core/mesh/qgsmeshrenderersettings.h#L799
-QgsMeshRendererSettings.edgeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L751
-QgsMeshRendererSettings.hasScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L769
-QgsMeshRendererSettings.hasSettings: src/core/mesh/qgsmeshrenderersettings.h#L842
-QgsMeshRendererSettings.hasVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L786
-QgsMeshRendererSettings.nativeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L738
-QgsMeshRendererSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L811
-QgsMeshRendererSettings.removeScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L775
-QgsMeshRendererSettings.removeVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L792
-QgsMeshRendererSettings.scalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L760
-QgsMeshRendererSettings.setActiveScalarDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L823
-QgsMeshRendererSettings.setActiveVectorDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L835
-QgsMeshRendererSettings.setAveragingMethod: src/core/mesh/qgsmeshrenderersettings.h#L806
-QgsMeshRendererSettings.setEdgeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L757
-QgsMeshRendererSettings.setNativeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L740
-QgsMeshRendererSettings.setScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L763
-QgsMeshRendererSettings.setTriangularMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L745
-QgsMeshRendererSettings.setVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L780
-QgsMeshRendererSettings.triangularMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L743
-QgsMeshRendererSettings.vectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L778
-QgsMeshRendererSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L809
-QgsMeshRendererSettings: src/core/mesh/qgsmeshrenderersettings.h#L727
-QgsMeshRendererVectorArrowSettings.arrowHeadLengthRatio: src/core/mesh/qgsmeshrenderersettings.h#L340
-QgsMeshRendererVectorArrowSettings.arrowHeadWidthRatio: src/core/mesh/qgsmeshrenderersettings.h#L335
-QgsMeshRendererVectorArrowSettings.fixedShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L325
-QgsMeshRendererVectorArrowSettings.maxShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L297
-QgsMeshRendererVectorArrowSettings.minShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L283
-QgsMeshRendererVectorArrowSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L347
-QgsMeshRendererVectorArrowSettings.scaleFactor: src/core/mesh/qgsmeshrenderersettings.h#L311
-QgsMeshRendererVectorArrowSettings.setArrowHeadLengthRatio: src/core/mesh/qgsmeshrenderersettings.h#L342
-QgsMeshRendererVectorArrowSettings.setArrowHeadWidthRatio: src/core/mesh/qgsmeshrenderersettings.h#L337
-QgsMeshRendererVectorArrowSettings.setFixedShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L332
-QgsMeshRendererVectorArrowSettings.setMaxShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L304
-QgsMeshRendererVectorArrowSettings.setMinShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L290
-QgsMeshRendererVectorArrowSettings.setScaleFactor: src/core/mesh/qgsmeshrenderersettings.h#L318
-QgsMeshRendererVectorArrowSettings.setShaftLengthMethod: src/core/mesh/qgsmeshrenderersettings.h#L276
-QgsMeshRendererVectorArrowSettings.shaftLengthMethod: src/core/mesh/qgsmeshrenderersettings.h#L274
-QgsMeshRendererVectorArrowSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L345
-QgsMeshRendererVectorArrowSettings: src/core/mesh/qgsmeshrenderersettings.h#L249
-QgsMeshRendererVectorSettings.arrowSettings: src/core/mesh/qgsmeshrenderersettings.h#L649
-QgsMeshRendererVectorSettings.color: src/core/mesh/qgsmeshrenderersettings.h#L558
-QgsMeshRendererVectorSettings.colorRampShader: src/core/mesh/qgsmeshrenderersettings.h#L631
-QgsMeshRendererVectorSettings.coloringMethod: src/core/mesh/qgsmeshrenderersettings.h#L619
-QgsMeshRendererVectorSettings.filterMax: src/core/mesh/qgsmeshrenderersettings.h#L582
-QgsMeshRendererVectorSettings.filterMin: src/core/mesh/qgsmeshrenderersettings.h#L568
-QgsMeshRendererVectorSettings.isOnUserDefinedGrid: src/core/mesh/qgsmeshrenderersettings.h#L591
-QgsMeshRendererVectorSettings.lineWidth: src/core/mesh/qgsmeshrenderersettings.h#L553
-QgsMeshRendererVectorSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L696
-QgsMeshRendererVectorSettings.setArrowsSettings: src/core/mesh/qgsmeshrenderersettings.h#L655
-QgsMeshRendererVectorSettings.setColor: src/core/mesh/qgsmeshrenderersettings.h#L560
-QgsMeshRendererVectorSettings.setColorRampShader: src/core/mesh/qgsmeshrenderersettings.h#L637
-QgsMeshRendererVectorSettings.setColoringMethod: src/core/mesh/qgsmeshrenderersettings.h#L625
-QgsMeshRendererVectorSettings.setFilterMax: src/core/mesh/qgsmeshrenderersettings.h#L588
-QgsMeshRendererVectorSettings.setFilterMin: src/core/mesh/qgsmeshrenderersettings.h#L574
-QgsMeshRendererVectorSettings.setLineWidth: src/core/mesh/qgsmeshrenderersettings.h#L555
-QgsMeshRendererVectorSettings.setOnUserDefinedGrid: src/core/mesh/qgsmeshrenderersettings.h#L593
-QgsMeshRendererVectorSettings.setStreamLinesSettings: src/core/mesh/qgsmeshrenderersettings.h#L667
-QgsMeshRendererVectorSettings.setSymbology: src/core/mesh/qgsmeshrenderersettings.h#L613
-QgsMeshRendererVectorSettings.setTracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L679
-QgsMeshRendererVectorSettings.setUserGridCellHeight: src/core/mesh/qgsmeshrenderersettings.h#L601
-QgsMeshRendererVectorSettings.setUserGridCellWidth: src/core/mesh/qgsmeshrenderersettings.h#L597
-QgsMeshRendererVectorSettings.setWindBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L691
-QgsMeshRendererVectorSettings.streamLinesSettings: src/core/mesh/qgsmeshrenderersettings.h#L661
-QgsMeshRendererVectorSettings.symbology: src/core/mesh/qgsmeshrenderersettings.h#L607
-QgsMeshRendererVectorSettings.tracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L673
-QgsMeshRendererVectorSettings.userGridCellHeight: src/core/mesh/qgsmeshrenderersettings.h#L599
-QgsMeshRendererVectorSettings.userGridCellWidth: src/core/mesh/qgsmeshrenderersettings.h#L595
-QgsMeshRendererVectorSettings.vectorStrokeColoring: src/core/mesh/qgsmeshrenderersettings.h#L643
-QgsMeshRendererVectorSettings.windBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L685
-QgsMeshRendererVectorSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L694
-QgsMeshRendererVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L532
-QgsMeshRendererVectorStreamlineSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L395
-QgsMeshRendererVectorStreamlineSettings.seedingDensity: src/core/mesh/qgsmeshrenderersettings.h#L391
-QgsMeshRendererVectorStreamlineSettings.seedingMethod: src/core/mesh/qgsmeshrenderersettings.h#L387
-QgsMeshRendererVectorStreamlineSettings.setSeedingDensity: src/core/mesh/qgsmeshrenderersettings.h#L393
-QgsMeshRendererVectorStreamlineSettings.setSeedingMethod: src/core/mesh/qgsmeshrenderersettings.h#L389
-QgsMeshRendererVectorStreamlineSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L397
-QgsMeshRendererVectorStreamlineSettings: src/core/mesh/qgsmeshrenderersettings.h#L368
-QgsMeshRendererVectorTracesSettings.maximumTailLength: src/core/mesh/qgsmeshrenderersettings.h#L419
-QgsMeshRendererVectorTracesSettings.maximumTailLengthUnit: src/core/mesh/qgsmeshrenderersettings.h#L427
-QgsMeshRendererVectorTracesSettings.particlesCount: src/core/mesh/qgsmeshrenderersettings.h#L423
-QgsMeshRendererVectorTracesSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L432
-QgsMeshRendererVectorTracesSettings.setMaximumTailLength: src/core/mesh/qgsmeshrenderersettings.h#L421
-QgsMeshRendererVectorTracesSettings.setMaximumTailLengthUnit: src/core/mesh/qgsmeshrenderersettings.h#L429
-QgsMeshRendererVectorTracesSettings.setParticlesCount: src/core/mesh/qgsmeshrenderersettings.h#L425
-QgsMeshRendererVectorTracesSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L434
-QgsMeshRendererVectorTracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L414
-QgsMeshRendererVectorWindBarbSettings.magnitudeMultiplier: src/core/mesh/qgsmeshrenderersettings.h#L470
-QgsMeshRendererVectorWindBarbSettings.magnitudeUnits: src/core/mesh/qgsmeshrenderersettings.h#L504
-QgsMeshRendererVectorWindBarbSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L514
-QgsMeshRendererVectorWindBarbSettings.setMagnitudeMultiplier: src/core/mesh/qgsmeshrenderersettings.h#L475
-QgsMeshRendererVectorWindBarbSettings.setMagnitudeUnits: src/core/mesh/qgsmeshrenderersettings.h#L509
-QgsMeshRendererVectorWindBarbSettings.setShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L485
-QgsMeshRendererVectorWindBarbSettings.setShaftLengthUnits: src/core/mesh/qgsmeshrenderersettings.h#L499
-QgsMeshRendererVectorWindBarbSettings.shaftLength: src/core/mesh/qgsmeshrenderersettings.h#L480
-QgsMeshRendererVectorWindBarbSettings.shaftLengthUnits: src/core/mesh/qgsmeshrenderersettings.h#L492
-QgsMeshRendererVectorWindBarbSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L512
-QgsMeshRendererVectorWindBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L452
+QgsMeshRendererSettings.activeScalarDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L804
+QgsMeshRendererSettings.activeVectorDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L816
+QgsMeshRendererSettings.averagingMethod: src/core/mesh/qgsmeshrenderersettings.h#L786
+QgsMeshRendererSettings.edgeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L738
+QgsMeshRendererSettings.hasScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L756
+QgsMeshRendererSettings.hasSettings: src/core/mesh/qgsmeshrenderersettings.h#L829
+QgsMeshRendererSettings.hasVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L773
+QgsMeshRendererSettings.nativeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L725
+QgsMeshRendererSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L798
+QgsMeshRendererSettings.removeScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L762
+QgsMeshRendererSettings.removeVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L779
+QgsMeshRendererSettings.scalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L747
+QgsMeshRendererSettings.setActiveScalarDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L810
+QgsMeshRendererSettings.setActiveVectorDatasetGroup: src/core/mesh/qgsmeshrenderersettings.h#L822
+QgsMeshRendererSettings.setAveragingMethod: src/core/mesh/qgsmeshrenderersettings.h#L793
+QgsMeshRendererSettings.setEdgeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L744
+QgsMeshRendererSettings.setNativeMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L727
+QgsMeshRendererSettings.setScalarSettings: src/core/mesh/qgsmeshrenderersettings.h#L750
+QgsMeshRendererSettings.setTriangularMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L732
+QgsMeshRendererSettings.setVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L767
+QgsMeshRendererSettings.triangularMeshSettings: src/core/mesh/qgsmeshrenderersettings.h#L730
+QgsMeshRendererSettings.vectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L765
+QgsMeshRendererSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L796
+QgsMeshRendererSettings: src/core/mesh/qgsmeshrenderersettings.h#L714
+QgsMeshRendererVectorArrowSettings.arrowHeadLengthRatio: src/core/mesh/qgsmeshrenderersettings.h#L327
+QgsMeshRendererVectorArrowSettings.arrowHeadWidthRatio: src/core/mesh/qgsmeshrenderersettings.h#L322
+QgsMeshRendererVectorArrowSettings.fixedShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L312
+QgsMeshRendererVectorArrowSettings.maxShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L284
+QgsMeshRendererVectorArrowSettings.minShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L270
+QgsMeshRendererVectorArrowSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L334
+QgsMeshRendererVectorArrowSettings.scaleFactor: src/core/mesh/qgsmeshrenderersettings.h#L298
+QgsMeshRendererVectorArrowSettings.setArrowHeadLengthRatio: src/core/mesh/qgsmeshrenderersettings.h#L329
+QgsMeshRendererVectorArrowSettings.setArrowHeadWidthRatio: src/core/mesh/qgsmeshrenderersettings.h#L324
+QgsMeshRendererVectorArrowSettings.setFixedShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L319
+QgsMeshRendererVectorArrowSettings.setMaxShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L291
+QgsMeshRendererVectorArrowSettings.setMinShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L277
+QgsMeshRendererVectorArrowSettings.setScaleFactor: src/core/mesh/qgsmeshrenderersettings.h#L305
+QgsMeshRendererVectorArrowSettings.setShaftLengthMethod: src/core/mesh/qgsmeshrenderersettings.h#L263
+QgsMeshRendererVectorArrowSettings.shaftLengthMethod: src/core/mesh/qgsmeshrenderersettings.h#L261
+QgsMeshRendererVectorArrowSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L332
+QgsMeshRendererVectorArrowSettings: src/core/mesh/qgsmeshrenderersettings.h#L236
+QgsMeshRendererVectorSettings.arrowSettings: src/core/mesh/qgsmeshrenderersettings.h#L636
+QgsMeshRendererVectorSettings.color: src/core/mesh/qgsmeshrenderersettings.h#L545
+QgsMeshRendererVectorSettings.colorRampShader: src/core/mesh/qgsmeshrenderersettings.h#L618
+QgsMeshRendererVectorSettings.coloringMethod: src/core/mesh/qgsmeshrenderersettings.h#L606
+QgsMeshRendererVectorSettings.filterMax: src/core/mesh/qgsmeshrenderersettings.h#L569
+QgsMeshRendererVectorSettings.filterMin: src/core/mesh/qgsmeshrenderersettings.h#L555
+QgsMeshRendererVectorSettings.isOnUserDefinedGrid: src/core/mesh/qgsmeshrenderersettings.h#L578
+QgsMeshRendererVectorSettings.lineWidth: src/core/mesh/qgsmeshrenderersettings.h#L540
+QgsMeshRendererVectorSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L683
+QgsMeshRendererVectorSettings.setArrowsSettings: src/core/mesh/qgsmeshrenderersettings.h#L642
+QgsMeshRendererVectorSettings.setColor: src/core/mesh/qgsmeshrenderersettings.h#L547
+QgsMeshRendererVectorSettings.setColorRampShader: src/core/mesh/qgsmeshrenderersettings.h#L624
+QgsMeshRendererVectorSettings.setColoringMethod: src/core/mesh/qgsmeshrenderersettings.h#L612
+QgsMeshRendererVectorSettings.setFilterMax: src/core/mesh/qgsmeshrenderersettings.h#L575
+QgsMeshRendererVectorSettings.setFilterMin: src/core/mesh/qgsmeshrenderersettings.h#L561
+QgsMeshRendererVectorSettings.setLineWidth: src/core/mesh/qgsmeshrenderersettings.h#L542
+QgsMeshRendererVectorSettings.setOnUserDefinedGrid: src/core/mesh/qgsmeshrenderersettings.h#L580
+QgsMeshRendererVectorSettings.setStreamLinesSettings: src/core/mesh/qgsmeshrenderersettings.h#L654
+QgsMeshRendererVectorSettings.setSymbology: src/core/mesh/qgsmeshrenderersettings.h#L600
+QgsMeshRendererVectorSettings.setTracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L666
+QgsMeshRendererVectorSettings.setUserGridCellHeight: src/core/mesh/qgsmeshrenderersettings.h#L588
+QgsMeshRendererVectorSettings.setUserGridCellWidth: src/core/mesh/qgsmeshrenderersettings.h#L584
+QgsMeshRendererVectorSettings.setWindBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L678
+QgsMeshRendererVectorSettings.streamLinesSettings: src/core/mesh/qgsmeshrenderersettings.h#L648
+QgsMeshRendererVectorSettings.symbology: src/core/mesh/qgsmeshrenderersettings.h#L594
+QgsMeshRendererVectorSettings.tracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L660
+QgsMeshRendererVectorSettings.userGridCellHeight: src/core/mesh/qgsmeshrenderersettings.h#L586
+QgsMeshRendererVectorSettings.userGridCellWidth: src/core/mesh/qgsmeshrenderersettings.h#L582
+QgsMeshRendererVectorSettings.vectorStrokeColoring: src/core/mesh/qgsmeshrenderersettings.h#L630
+QgsMeshRendererVectorSettings.windBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L672
+QgsMeshRendererVectorSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L681
+QgsMeshRendererVectorSettings: src/core/mesh/qgsmeshrenderersettings.h#L519
+QgsMeshRendererVectorStreamlineSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L382
+QgsMeshRendererVectorStreamlineSettings.seedingDensity: src/core/mesh/qgsmeshrenderersettings.h#L378
+QgsMeshRendererVectorStreamlineSettings.seedingMethod: src/core/mesh/qgsmeshrenderersettings.h#L374
+QgsMeshRendererVectorStreamlineSettings.setSeedingDensity: src/core/mesh/qgsmeshrenderersettings.h#L380
+QgsMeshRendererVectorStreamlineSettings.setSeedingMethod: src/core/mesh/qgsmeshrenderersettings.h#L376
+QgsMeshRendererVectorStreamlineSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L384
+QgsMeshRendererVectorStreamlineSettings: src/core/mesh/qgsmeshrenderersettings.h#L355
+QgsMeshRendererVectorTracesSettings.maximumTailLength: src/core/mesh/qgsmeshrenderersettings.h#L406
+QgsMeshRendererVectorTracesSettings.maximumTailLengthUnit: src/core/mesh/qgsmeshrenderersettings.h#L414
+QgsMeshRendererVectorTracesSettings.particlesCount: src/core/mesh/qgsmeshrenderersettings.h#L410
+QgsMeshRendererVectorTracesSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L419
+QgsMeshRendererVectorTracesSettings.setMaximumTailLength: src/core/mesh/qgsmeshrenderersettings.h#L408
+QgsMeshRendererVectorTracesSettings.setMaximumTailLengthUnit: src/core/mesh/qgsmeshrenderersettings.h#L416
+QgsMeshRendererVectorTracesSettings.setParticlesCount: src/core/mesh/qgsmeshrenderersettings.h#L412
+QgsMeshRendererVectorTracesSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L421
+QgsMeshRendererVectorTracesSettings: src/core/mesh/qgsmeshrenderersettings.h#L401
+QgsMeshRendererVectorWindBarbSettings.magnitudeMultiplier: src/core/mesh/qgsmeshrenderersettings.h#L457
+QgsMeshRendererVectorWindBarbSettings.magnitudeUnits: src/core/mesh/qgsmeshrenderersettings.h#L491
+QgsMeshRendererVectorWindBarbSettings.readXml: src/core/mesh/qgsmeshrenderersettings.h#L501
+QgsMeshRendererVectorWindBarbSettings.setMagnitudeMultiplier: src/core/mesh/qgsmeshrenderersettings.h#L462
+QgsMeshRendererVectorWindBarbSettings.setMagnitudeUnits: src/core/mesh/qgsmeshrenderersettings.h#L496
+QgsMeshRendererVectorWindBarbSettings.setShaftLength: src/core/mesh/qgsmeshrenderersettings.h#L472
+QgsMeshRendererVectorWindBarbSettings.setShaftLengthUnits: src/core/mesh/qgsmeshrenderersettings.h#L486
+QgsMeshRendererVectorWindBarbSettings.shaftLength: src/core/mesh/qgsmeshrenderersettings.h#L467
+QgsMeshRendererVectorWindBarbSettings.shaftLengthUnits: src/core/mesh/qgsmeshrenderersettings.h#L479
+QgsMeshRendererVectorWindBarbSettings.writeXml: src/core/mesh/qgsmeshrenderersettings.h#L499
+QgsMeshRendererVectorWindBarbSettings: src/core/mesh/qgsmeshrenderersettings.h#L439
QgsMeshSigmaAveragingMethod.clone: src/core/mesh/qgsmesh3daveraging.h#L258
QgsMeshSigmaAveragingMethod.endFraction: src/core/mesh/qgsmesh3daveraging.h#L274
QgsMeshSigmaAveragingMethod.equals: src/core/mesh/qgsmesh3daveraging.h#L257
@@ -10291,14 +10297,14 @@ QgsMeshVectorTraceAnimationGenerator.setParticlesSize: src/core/mesh/qgsmeshtrac
QgsMeshVectorTraceAnimationGenerator.setTailFactor: src/core/mesh/qgsmeshtracerenderer.h#L642
QgsMeshVectorTraceAnimationGenerator.setTailPersitence: src/core/mesh/qgsmeshtracerenderer.h#L648
QgsMeshVectorTraceAnimationGenerator: src/core/mesh/qgsmeshtracerenderer.h#L599
-QgsMessageLog.logMessage: src/core/qgsmessagelog.h#L54
-QgsMessageLog.messageReceived: src/core/qgsmessagelog.h#L64
-QgsMessageLog.messageReceived: src/core/qgsmessagelog.h#L76
+QgsMessageLog.logMessage: src/core/qgsmessagelog.h#L62
+QgsMessageLog.messageReceived: src/core/qgsmessagelog.h#L73
+QgsMessageLog.messageReceived: src/core/qgsmessagelog.h#L85
QgsMessageLog: src/core/qgsmessagelog.h#L39
-QgsMessageLogConsole.formatLogMessage: src/core/qgsmessagelog.h#L152
-QgsMessageLogConsole.logMessage: src/core/qgsmessagelog.h#L163
-QgsMessageLogConsole: src/core/qgsmessagelog.h#L131
-QgsMessageLogNotifyBlocker: src/core/qgsmessagelog.h#L101
+QgsMessageLogConsole.formatLogMessage: src/core/qgsmessagelog.h#L161
+QgsMessageLogConsole.logMessage: src/core/qgsmessagelog.h#L172
+QgsMessageLogConsole: src/core/qgsmessagelog.h#L140
+QgsMessageLogNotifyBlocker: src/core/qgsmessagelog.h#L110
QgsMessageOutput.appendMessage: src/core/qgsmessageoutput.h#L56
QgsMessageOutput.createMessageOutput: src/core/qgsmessageoutput.h#L81
QgsMessageOutput.setMessage: src/core/qgsmessageoutput.h#L53
@@ -10316,18 +10322,18 @@ QgsMetadataUtils.convertFromEsri: src/core/metadata/qgsmetadatautils.h#L41
QgsMetadataUtils: src/core/metadata/qgsmetadatautils.h#L34
QgsMimeDataUtils.QgsMimeDataUtils.Uri: src/core/qgsmimedatautils.h#L46
QgsMimeDataUtils.QgsMimeDataUtils.Uri: src/core/qgsmimedatautils.h#L53
-QgsMimeDataUtils.QgsMimeDataUtils.__repr__: src/core/qgsmimedatautils.h#L158
+QgsMimeDataUtils.QgsMimeDataUtils.__repr__: src/core/qgsmimedatautils.h#L164
QgsMimeDataUtils.QgsMimeDataUtils.data: src/core/qgsmimedatautils.h#L61
QgsMimeDataUtils.QgsMimeDataUtils.isValid: src/core/qgsmimedatautils.h#L58
QgsMimeDataUtils.QgsMimeDataUtils.mapLayer: src/core/qgsmimedatautils.h#L93
QgsMimeDataUtils.QgsMimeDataUtils.meshLayer: src/core/qgsmimedatautils.h#L82
QgsMimeDataUtils.QgsMimeDataUtils.rasterLayer: src/core/qgsmimedatautils.h#L75
QgsMimeDataUtils.QgsMimeDataUtils.vectorLayer: src/core/qgsmimedatautils.h#L68
-QgsMimeDataUtils.decodeUriList: src/core/qgsmimedatautils.h#L174
-QgsMimeDataUtils.encodeUriList: src/core/qgsmimedatautils.h#L170
-QgsMimeDataUtils.hasOriginatedFromCurrentAppInstance: src/core/qgsmimedatautils.h#L187
-QgsMimeDataUtils.isUriList: src/core/qgsmimedatautils.h#L172
-QgsMimeDataUtils.layerTreeNodesToUriList: src/core/qgsmimedatautils.h#L179
+QgsMimeDataUtils.decodeUriList: src/core/qgsmimedatautils.h#L180
+QgsMimeDataUtils.encodeUriList: src/core/qgsmimedatautils.h#L176
+QgsMimeDataUtils.hasOriginatedFromCurrentAppInstance: src/core/qgsmimedatautils.h#L193
+QgsMimeDataUtils.isUriList: src/core/qgsmimedatautils.h#L178
+QgsMimeDataUtils.layerTreeNodesToUriList: src/core/qgsmimedatautils.h#L185
QgsMimeDataUtils: src/core/qgsmimedatautils.h#L37
QgsMultiBandColorRenderer.block: src/core/raster/qgsmultibandcolorrenderer.h#L50
QgsMultiBandColorRenderer.blueBand: src/core/raster/qgsmultibandcolorrenderer.h#L56
@@ -10727,27 +10733,26 @@ QgsPageSizeRegistry.add: src/core/layout/qgspagesizeregistry.h#L83
QgsPageSizeRegistry.decodePageSize: src/core/layout/qgspagesizeregistry.h#L110
QgsPageSizeRegistry.find: src/core/layout/qgspagesizeregistry.h#L103
QgsPageSizeRegistry: src/core/layout/qgspagesizeregistry.h#L71
-QgsPaintEffect.begin: src/core/effects/qgspainteffect.h#L178
-QgsPaintEffect.boundingRect: src/core/effects/qgspainteffect.h#L282
-QgsPaintEffect.clone: src/core/effects/qgspainteffect.h#L124
-QgsPaintEffect.draw: src/core/effects/qgspainteffect.h#L231
-QgsPaintEffect.drawMode: src/core/effects/qgspainteffect.h#L208
-QgsPaintEffect.drawSource: src/core/effects/qgspainteffect.h#L240
-QgsPaintEffect.enabled: src/core/effects/qgspainteffect.h#L193
-QgsPaintEffect.end: src/core/effects/qgspainteffect.h#L186
-QgsPaintEffect.fixQPictureDpi: src/core/effects/qgspainteffect.h#L292
-QgsPaintEffect.imageOffset: src/core/effects/qgspainteffect.h#L271
-QgsPaintEffect.properties: src/core/effects/qgspainteffect.h#L133
-QgsPaintEffect.readProperties: src/core/effects/qgspainteffect.h#L141
-QgsPaintEffect.readProperties: src/core/effects/qgspainteffect.h#L160
-QgsPaintEffect.render: src/core/effects/qgspainteffect.h#L168
-QgsPaintEffect.saveProperties: src/core/effects/qgspainteffect.h#L152
-QgsPaintEffect.setDrawMode: src/core/effects/qgspainteffect.h#L216
-QgsPaintEffect.setEnabled: src/core/effects/qgspainteffect.h#L200
-QgsPaintEffect.source: src/core/effects/qgspainteffect.h#L249
-QgsPaintEffect.sourceAsImage: src/core/effects/qgspainteffect.h#L262
-QgsPaintEffect.type: src/core/effects/qgspainteffect.h#L118
-QgsPaintEffect: src/core/effects/qgspainteffect.h#L51
+QgsPaintEffect.begin: src/core/effects/qgspainteffect.h#L179
+QgsPaintEffect.boundingRect: src/core/effects/qgspainteffect.h#L283
+QgsPaintEffect.clone: src/core/effects/qgspainteffect.h#L125
+QgsPaintEffect.draw: src/core/effects/qgspainteffect.h#L232
+QgsPaintEffect.drawMode: src/core/effects/qgspainteffect.h#L209
+QgsPaintEffect.drawSource: src/core/effects/qgspainteffect.h#L241
+QgsPaintEffect.enabled: src/core/effects/qgspainteffect.h#L194
+QgsPaintEffect.end: src/core/effects/qgspainteffect.h#L187
+QgsPaintEffect.fixQPictureDpi: src/core/effects/qgspainteffect.h#L293
+QgsPaintEffect.imageOffset: src/core/effects/qgspainteffect.h#L272
+QgsPaintEffect.properties: src/core/effects/qgspainteffect.h#L134
+QgsPaintEffect.readProperties: src/core/effects/qgspainteffect.h#L142
+QgsPaintEffect.readProperties: src/core/effects/qgspainteffect.h#L161
+QgsPaintEffect.render: src/core/effects/qgspainteffect.h#L169
+QgsPaintEffect.saveProperties: src/core/effects/qgspainteffect.h#L153
+QgsPaintEffect.setDrawMode: src/core/effects/qgspainteffect.h#L217
+QgsPaintEffect.setEnabled: src/core/effects/qgspainteffect.h#L201
+QgsPaintEffect.sourceAsImage: src/core/effects/qgspainteffect.h#L263
+QgsPaintEffect.type: src/core/effects/qgspainteffect.h#L119
+QgsPaintEffect: src/core/effects/qgspainteffect.h#L52
QgsPaintEffectAbstractMetadata.createPaintEffect: src/core/effects/qgspainteffectregistry.h#L71
QgsPaintEffectAbstractMetadata.createWidget: src/core/effects/qgspainteffectregistry.h#L78
QgsPaintEffectAbstractMetadata.name: src/core/effects/qgspainteffectregistry.h#L57
@@ -11136,38 +11141,39 @@ QgsPointCloudExtentRenderer.startRender: src/core/pointcloud/qgspointcloudextent
QgsPointCloudExtentRenderer.stopRender: src/core/pointcloud/qgspointcloudextentrenderer.h#L52
QgsPointCloudExtentRenderer.type: src/core/pointcloud/qgspointcloudextentrenderer.h#L46
QgsPointCloudExtentRenderer: src/core/pointcloud/qgspointcloudextentrenderer.h#L33
-QgsPointCloudIndex.accessType: src/core/pointcloud/qgspointcloudindex.h#L454
-QgsPointCloudIndex.attributes: src/core/pointcloud/qgspointcloudindex.h#L518
+QgsPointCloudIndex.accessType: src/core/pointcloud/qgspointcloudindex.h#L457
+QgsPointCloudIndex.attributes: src/core/pointcloud/qgspointcloudindex.h#L521
QgsPointCloudIndex.bool: src/core/pointcloud/qgspointcloudindex.h#L423
-QgsPointCloudIndex.commitChanges: src/core/pointcloud/qgspointcloudindex.h#L648
-QgsPointCloudIndex.crs: src/core/pointcloud/qgspointcloudindex.h#L461
-QgsPointCloudIndex.error: src/core/pointcloud/qgspointcloudindex.h#L444
-QgsPointCloudIndex.extent: src/core/pointcloud/qgspointcloudindex.h#L558
-QgsPointCloudIndex.extraMetadata: src/core/pointcloud/qgspointcloudindex.h#L642
-QgsPointCloudIndex.getNode: src/core/pointcloud/qgspointcloudindex.h#L511
-QgsPointCloudIndex.hasNode: src/core/pointcloud/qgspointcloudindex.h#L504
-QgsPointCloudIndex.isModified: src/core/pointcloud/qgspointcloudindex.h#L651
-QgsPointCloudIndex.isValid: src/core/pointcloud/qgspointcloudindex.h#L437
-QgsPointCloudIndex.load: src/core/pointcloud/qgspointcloudindex.h#L430
-QgsPointCloudIndex.metadataStatistics: src/core/pointcloud/qgspointcloudindex.h#L482
-QgsPointCloudIndex.offset: src/core/pointcloud/qgspointcloudindex.h#L593
-QgsPointCloudIndex.originalMetadata: src/core/pointcloud/qgspointcloudindex.h#L475
-QgsPointCloudIndex.pointCount: src/core/pointcloud/qgspointcloudindex.h#L468
-QgsPointCloudIndex.root: src/core/pointcloud/qgspointcloudindex.h#L497
-QgsPointCloudIndex.rootNodeBounds: src/core/pointcloud/qgspointcloudindex.h#L579
-QgsPointCloudIndex.scale: src/core/pointcloud/qgspointcloudindex.h#L586
-QgsPointCloudIndex.setSubsetString: src/core/pointcloud/qgspointcloudindex.h#L609
-QgsPointCloudIndex.span: src/core/pointcloud/qgspointcloudindex.h#L600
-QgsPointCloudIndex.subsetString: src/core/pointcloud/qgspointcloudindex.h#L618
-QgsPointCloudIndex.updateNodeData: src/core/pointcloud/qgspointcloudindex.h#L551
-QgsPointCloudIndex.writeStatistics: src/core/pointcloud/qgspointcloudindex.h#L490
-QgsPointCloudIndex.zMax: src/core/pointcloud/qgspointcloudindex.h#L572
-QgsPointCloudIndex.zMin: src/core/pointcloud/qgspointcloudindex.h#L565
+QgsPointCloudIndex.commitChanges: src/core/pointcloud/qgspointcloudindex.h#L653
+QgsPointCloudIndex.crs: src/core/pointcloud/qgspointcloudindex.h#L464
+QgsPointCloudIndex.error: src/core/pointcloud/qgspointcloudindex.h#L447
+QgsPointCloudIndex.extent: src/core/pointcloud/qgspointcloudindex.h#L561
+QgsPointCloudIndex.extraMetadata: src/core/pointcloud/qgspointcloudindex.h#L645
+QgsPointCloudIndex.getNode: src/core/pointcloud/qgspointcloudindex.h#L514
+QgsPointCloudIndex.hasNode: src/core/pointcloud/qgspointcloudindex.h#L507
+QgsPointCloudIndex.isModified: src/core/pointcloud/qgspointcloudindex.h#L656
+QgsPointCloudIndex.isValid: src/core/pointcloud/qgspointcloudindex.h#L440
+QgsPointCloudIndex.load: src/core/pointcloud/qgspointcloudindex.h#L433
+QgsPointCloudIndex.metadataStatistics: src/core/pointcloud/qgspointcloudindex.h#L485
+QgsPointCloudIndex.offset: src/core/pointcloud/qgspointcloudindex.h#L596
+QgsPointCloudIndex.originalMetadata: src/core/pointcloud/qgspointcloudindex.h#L478
+QgsPointCloudIndex.pointCount: src/core/pointcloud/qgspointcloudindex.h#L471
+QgsPointCloudIndex.root: src/core/pointcloud/qgspointcloudindex.h#L500
+QgsPointCloudIndex.rootNodeBounds: src/core/pointcloud/qgspointcloudindex.h#L582
+QgsPointCloudIndex.scale: src/core/pointcloud/qgspointcloudindex.h#L589
+QgsPointCloudIndex.setSubsetString: src/core/pointcloud/qgspointcloudindex.h#L612
+QgsPointCloudIndex.span: src/core/pointcloud/qgspointcloudindex.h#L603
+QgsPointCloudIndex.subsetString: src/core/pointcloud/qgspointcloudindex.h#L621
+QgsPointCloudIndex.updateNodeData: src/core/pointcloud/qgspointcloudindex.h#L554
+QgsPointCloudIndex.writeStatistics: src/core/pointcloud/qgspointcloudindex.h#L493
+QgsPointCloudIndex.zMax: src/core/pointcloud/qgspointcloudindex.h#L575
+QgsPointCloudIndex.zMin: src/core/pointcloud/qgspointcloudindex.h#L568
QgsPointCloudIndex: src/core/pointcloud/qgspointcloudindex.h#L416
QgsPointCloudLayer.QgsPointCloudLayer.LayerOptions: src/core/pointcloud/qgspointcloudlayer.h#L61
QgsPointCloudLayer.QgsPointCloudLayer: src/core/pointcloud/qgspointcloudlayer.h#L112
QgsPointCloudLayer.__repr__: src/core/pointcloud/qgspointcloudlayer.h#L123
QgsPointCloudLayer.attributes: src/core/pointcloud/qgspointcloudlayer.h#L165
+QgsPointCloudLayer.chunkAttributeValuesChanged: src/core/pointcloud/qgspointcloudlayer.h#L359
QgsPointCloudLayer.clone: src/core/pointcloud/qgspointcloudlayer.h#L130
QgsPointCloudLayer.commitChanges: src/core/pointcloud/qgspointcloudlayer.h#L286
QgsPointCloudLayer.commitError: src/core/pointcloud/qgspointcloudlayer.h#L294
@@ -11856,6 +11862,7 @@ QgsProcessingContext.LayerDetails: src/core/processing/qgsprocessingcontext.h#L2
QgsProcessingContext.addLayerToLoadOnCompletion: src/core/processing/qgsprocessingcontext.h#L383
QgsProcessingContext.areaUnit: src/core/processing/qgsprocessingcontext.h#L208
QgsProcessingContext.asQgisProcessArguments: src/core/processing/qgsprocessingcontext.h#L731
+QgsProcessingContext.clearModelResult: src/core/processing/qgsprocessingcontext.h#L802
QgsProcessingContext.copyThreadSafeSettings: src/core/processing/qgsprocessingcontext.h#L89
QgsProcessingContext.currentTimeRange: src/core/processing/qgsprocessingcontext.h#L227
QgsProcessingContext.defaultEncoding: src/core/processing/qgsprocessingcontext.h#L492
@@ -11968,8 +11975,8 @@ QgsProcessingFeedback.reportError: src/core/processing/qgsprocessingfeedback.h#L
QgsProcessingFeedback.setProgressText: src/core/processing/qgsprocessingfeedback.h#L57
QgsProcessingFeedback.textLog: src/core/processing/qgsprocessingfeedback.h#L165
QgsProcessingFeedback: src/core/processing/qgsprocessingfeedback.h#L37
-QgsProcessingLayerPostProcessorInterface.postProcessLayer: src/core/processing/qgsprocessingcontext.h#L875
-QgsProcessingLayerPostProcessorInterface: src/core/processing/qgsprocessingcontext.h#L855
+QgsProcessingLayerPostProcessorInterface.postProcessLayer: src/core/processing/qgsprocessingcontext.h#L882
+QgsProcessingLayerPostProcessorInterface: src/core/processing/qgsprocessingcontext.h#L862
QgsProcessingModelAlgorithm.VariableDefinition: src/core/processing/models/qgsprocessingmodelalgorithm.h#L466
QgsProcessingModelAlgorithm.activateChildAlgorithm: src/core/processing/models/qgsprocessingmodelalgorithm.h#L158
QgsProcessingModelAlgorithm.addChildAlgorithm: src/core/processing/models/qgsprocessingmodelalgorithm.h#L124
@@ -13762,47 +13769,48 @@ QgsProviderConnectionModel.parent: src/core/qgsproviderconnectionmodel.h#L83
QgsProviderConnectionModel.rowCount: src/core/qgsproviderconnectionmodel.h#L84
QgsProviderConnectionModel.setAllowEmptyConnection: src/core/qgsproviderconnectionmodel.h#L74
QgsProviderConnectionModel: src/core/qgsproviderconnectionmodel.h#L38
-QgsProviderMetadata.__repr__: src/core/providers/qgsprovidermetadata.h#L802
+QgsProviderMetadata.__repr__: src/core/providers/qgsprovidermetadata.h#L809
QgsProviderMetadata.absoluteToRelativeUri: src/core/providers/qgsprovidermetadata.h#L600
QgsProviderMetadata.boolParameter: src/core/providers/qgsprovidermetadata.h#L479
QgsProviderMetadata.capabilities: src/core/providers/qgsprovidermetadata.h#L257
+QgsProviderMetadata.cleanUri: src/core/providers/qgsprovidermetadata.h#L620
QgsProviderMetadata.cleanupProvider: src/core/providers/qgsprovidermetadata.h#L338
-QgsProviderMetadata.connectionChanged: src/core/providers/qgsprovidermetadata.h#L834
-QgsProviderMetadata.connectionCreated: src/core/providers/qgsprovidermetadata.h#L817
-QgsProviderMetadata.connectionDeleted: src/core/providers/qgsprovidermetadata.h#L825
-QgsProviderMetadata.createConnection: src/core/providers/qgsprovidermetadata.h#L774
-QgsProviderMetadata.createConnection: src/core/providers/qgsprovidermetadata.h#L782
+QgsProviderMetadata.connectionChanged: src/core/providers/qgsprovidermetadata.h#L841
+QgsProviderMetadata.connectionCreated: src/core/providers/qgsprovidermetadata.h#L824
+QgsProviderMetadata.connectionDeleted: src/core/providers/qgsprovidermetadata.h#L832
+QgsProviderMetadata.createConnection: src/core/providers/qgsprovidermetadata.h#L781
+QgsProviderMetadata.createConnection: src/core/providers/qgsprovidermetadata.h#L789
QgsProviderMetadata.createDatabase: src/core/providers/qgsprovidermetadata.h#L514
-QgsProviderMetadata.createDb: src/core/providers/qgsprovidermetadata.h#L710
+QgsProviderMetadata.createDb: src/core/providers/qgsprovidermetadata.h#L717
QgsProviderMetadata.createMeshData: src/core/providers/qgsprovidermetadata.h#L536
QgsProviderMetadata.createMeshData: src/core/providers/qgsprovidermetadata.h#L548
QgsProviderMetadata.createProvider: src/core/providers/qgsprovidermetadata.h#L461
QgsProviderMetadata.createRasterDataProvider: src/core/providers/qgsprovidermetadata.h#L520
-QgsProviderMetadata.createTransaction: src/core/providers/qgsprovidermetadata.h#L716
+QgsProviderMetadata.createTransaction: src/core/providers/qgsprovidermetadata.h#L723
QgsProviderMetadata.decodeUri: src/core/providers/qgsprovidermetadata.h#L577
-QgsProviderMetadata.deleteConnection: src/core/providers/qgsprovidermetadata.h#L790
-QgsProviderMetadata.deleteStyleById: src/core/providers/qgsprovidermetadata.h#L657
+QgsProviderMetadata.deleteConnection: src/core/providers/qgsprovidermetadata.h#L797
+QgsProviderMetadata.deleteStyleById: src/core/providers/qgsprovidermetadata.h#L664
QgsProviderMetadata.description: src/core/providers/qgsprovidermetadata.h#L243
QgsProviderMetadata.encodeUri: src/core/providers/qgsprovidermetadata.h#L587
QgsProviderMetadata.filters: src/core/providers/qgsprovidermetadata.h#L347
-QgsProviderMetadata.findConnection: src/core/providers/qgsprovidermetadata.h#L749
-QgsProviderMetadata.getStyleById: src/core/providers/qgsprovidermetadata.h#L651
+QgsProviderMetadata.findConnection: src/core/providers/qgsprovidermetadata.h#L756
+QgsProviderMetadata.getStyleById: src/core/providers/qgsprovidermetadata.h#L658
QgsProviderMetadata.icon: src/core/providers/qgsprovidermetadata.h#L250
QgsProviderMetadata.initProvider: src/core/providers/qgsprovidermetadata.h#L332
QgsProviderMetadata.key: src/core/providers/qgsprovidermetadata.h#L236
QgsProviderMetadata.library: src/core/providers/qgsprovidermetadata.h#L318
-QgsProviderMetadata.listStyles: src/core/providers/qgsprovidermetadata.h#L628
-QgsProviderMetadata.loadStoredStyle: src/core/providers/qgsprovidermetadata.h#L688
-QgsProviderMetadata.loadStyle: src/core/providers/qgsprovidermetadata.h#L678
+QgsProviderMetadata.listStyles: src/core/providers/qgsprovidermetadata.h#L635
+QgsProviderMetadata.loadStoredStyle: src/core/providers/qgsprovidermetadata.h#L695
+QgsProviderMetadata.loadStyle: src/core/providers/qgsprovidermetadata.h#L685
QgsProviderMetadata.priorityForUri: src/core/providers/qgsprovidermetadata.h#L371
QgsProviderMetadata.providerCapabilities: src/core/providers/qgsprovidermetadata.h#L264
QgsProviderMetadata.relativeToAbsoluteUri: src/core/providers/qgsprovidermetadata.h#L613
-QgsProviderMetadata.saveConnection: src/core/providers/qgsprovidermetadata.h#L799
-QgsProviderMetadata.saveLayerMetadata: src/core/providers/qgsprovidermetadata.h#L704
-QgsProviderMetadata.saveStyle: src/core/providers/qgsprovidermetadata.h#L670
+QgsProviderMetadata.saveConnection: src/core/providers/qgsprovidermetadata.h#L806
+QgsProviderMetadata.saveLayerMetadata: src/core/providers/qgsprovidermetadata.h#L711
+QgsProviderMetadata.saveStyle: src/core/providers/qgsprovidermetadata.h#L677
QgsProviderMetadata.setBoolParameter: src/core/providers/qgsprovidermetadata.h#L471
QgsProviderMetadata.sidecarFilesForUri: src/core/providers/qgsprovidermetadata.h#L424
-QgsProviderMetadata.styleExists: src/core/providers/qgsprovidermetadata.h#L642
+QgsProviderMetadata.styleExists: src/core/providers/qgsprovidermetadata.h#L649
QgsProviderMetadata.suggestGroupNameForUri: src/core/providers/qgsprovidermetadata.h#L450
QgsProviderMetadata.supportedLayerTypes: src/core/providers/qgsprovidermetadata.h#L274
QgsProviderMetadata.uriIsBlocklisted: src/core/providers/qgsprovidermetadata.h#L401
@@ -14867,56 +14875,56 @@ QgsRecentColorScheme: src/core/qgscolorscheme.h#L218
QgsRecentStyleHandler.pushRecentSymbol: src/core/qgsrecentstylehandler.h#L75
QgsRecentStyleHandler.recentSymbol: src/core/qgsrecentstylehandler.h#L85
QgsRecentStyleHandler: src/core/qgsrecentstylehandler.h#L38
-QgsRectangle.QVariant: src/core/geometry/qgsrectangle.h#L626
-QgsRectangle.QgsRectangle: src/core/geometry/qgsrectangle.h#L76
-QgsRectangle.__repr__: src/core/geometry/qgsrectangle.h#L637
-QgsRectangle.area: src/core/geometry/qgsrectangle.h#L264
-QgsRectangle.asPolygon: src/core/geometry/qgsrectangle.h#L560
-QgsRectangle.asWktCoordinates: src/core/geometry/qgsrectangle.h#L535
-QgsRectangle.asWktPolygon: src/core/geometry/qgsrectangle.h#L540
-QgsRectangle.buffered: src/core/geometry/qgsrectangle.h#L363
-QgsRectangle.center: src/core/geometry/qgsrectangle.h#L275
-QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L442
-QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L459
-QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L468
-QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L406
-QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L415
-QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L426
-QgsRectangle.distance: src/core/geometry/qgsrectangle.h#L479
-QgsRectangle.fromCenterAndSize: src/core/geometry/qgsrectangle.h#L125
-QgsRectangle.fromWkt: src/core/geometry/qgsrectangle.h#L119
-QgsRectangle.grow: src/core/geometry/qgsrectangle.h#L328
-QgsRectangle.height: src/core/geometry/qgsrectangle.h#L256
-QgsRectangle.include: src/core/geometry/qgsrectangle.h#L351
-QgsRectangle.intersect: src/core/geometry/qgsrectangle.h#L379
-QgsRectangle.intersects: src/core/geometry/qgsrectangle.h#L398
-QgsRectangle.invert: src/core/geometry/qgsrectangle.h#L614
-QgsRectangle.isEmpty: src/core/geometry/qgsrectangle.h#L513
-QgsRectangle.isFinite: src/core/geometry/qgsrectangle.h#L605
-QgsRectangle.isNull: src/core/geometry/qgsrectangle.h#L530
-QgsRectangle.normalize: src/core/geometry/qgsrectangle.h#L242
-QgsRectangle.perimeter: src/core/geometry/qgsrectangle.h#L270
-QgsRectangle.scale: src/core/geometry/qgsrectangle.h#L295
-QgsRectangle.scale: src/core/geometry/qgsrectangle.h#L308
-QgsRectangle.scaled: src/core/geometry/qgsrectangle.h#L314
-QgsRectangle.set: src/core/geometry/qgsrectangle.h#L141
-QgsRectangle.set: src/core/geometry/qgsrectangle.h#L157
-QgsRectangle.setMinimal: src/core/geometry/qgsrectangle.h#L204
-QgsRectangle.setNull: src/core/geometry/qgsrectangle.h#L193
-QgsRectangle.setXMaximum: src/core/geometry/qgsrectangle.h#L167
-QgsRectangle.setXMinimum: src/core/geometry/qgsrectangle.h#L162
-QgsRectangle.setYMaximum: src/core/geometry/qgsrectangle.h#L177
-QgsRectangle.setYMinimum: src/core/geometry/qgsrectangle.h#L172
-QgsRectangle.snappedToGrid: src/core/geometry/qgsrectangle.h#L634
-QgsRectangle.toBox3d: src/core/geometry/qgsrectangle.h#L620
-QgsRectangle.toRectF: src/core/geometry/qgsrectangle.h#L548
-QgsRectangle.toString: src/core/geometry/qgsrectangle.h#L555
-QgsRectangle.width: src/core/geometry/qgsrectangle.h#L249
-QgsRectangle.xMaximum: src/core/geometry/qgsrectangle.h#L209
-QgsRectangle.xMinimum: src/core/geometry/qgsrectangle.h#L214
-QgsRectangle.yMaximum: src/core/geometry/qgsrectangle.h#L219
-QgsRectangle.yMinimum: src/core/geometry/qgsrectangle.h#L224
-QgsRectangle: src/core/geometry/qgsrectangle.h#L41
+QgsRectangle.QVariant: src/core/geometry/qgsrectangle.h#L628
+QgsRectangle.QgsRectangle: src/core/geometry/qgsrectangle.h#L78
+QgsRectangle.__repr__: src/core/geometry/qgsrectangle.h#L639
+QgsRectangle.area: src/core/geometry/qgsrectangle.h#L266
+QgsRectangle.asPolygon: src/core/geometry/qgsrectangle.h#L562
+QgsRectangle.asWktCoordinates: src/core/geometry/qgsrectangle.h#L537
+QgsRectangle.asWktPolygon: src/core/geometry/qgsrectangle.h#L542
+QgsRectangle.buffered: src/core/geometry/qgsrectangle.h#L365
+QgsRectangle.center: src/core/geometry/qgsrectangle.h#L277
+QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L444
+QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L461
+QgsRectangle.combineExtentWith: src/core/geometry/qgsrectangle.h#L470
+QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L408
+QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L417
+QgsRectangle.contains: src/core/geometry/qgsrectangle.h#L428
+QgsRectangle.distance: src/core/geometry/qgsrectangle.h#L481
+QgsRectangle.fromCenterAndSize: src/core/geometry/qgsrectangle.h#L127
+QgsRectangle.fromWkt: src/core/geometry/qgsrectangle.h#L121
+QgsRectangle.grow: src/core/geometry/qgsrectangle.h#L330
+QgsRectangle.height: src/core/geometry/qgsrectangle.h#L258
+QgsRectangle.include: src/core/geometry/qgsrectangle.h#L353
+QgsRectangle.intersect: src/core/geometry/qgsrectangle.h#L381
+QgsRectangle.intersects: src/core/geometry/qgsrectangle.h#L400
+QgsRectangle.invert: src/core/geometry/qgsrectangle.h#L616
+QgsRectangle.isEmpty: src/core/geometry/qgsrectangle.h#L515
+QgsRectangle.isFinite: src/core/geometry/qgsrectangle.h#L607
+QgsRectangle.isNull: src/core/geometry/qgsrectangle.h#L532
+QgsRectangle.normalize: src/core/geometry/qgsrectangle.h#L244
+QgsRectangle.perimeter: src/core/geometry/qgsrectangle.h#L272
+QgsRectangle.scale: src/core/geometry/qgsrectangle.h#L297
+QgsRectangle.scale: src/core/geometry/qgsrectangle.h#L310
+QgsRectangle.scaled: src/core/geometry/qgsrectangle.h#L316
+QgsRectangle.set: src/core/geometry/qgsrectangle.h#L143
+QgsRectangle.set: src/core/geometry/qgsrectangle.h#L159
+QgsRectangle.setMinimal: src/core/geometry/qgsrectangle.h#L206
+QgsRectangle.setNull: src/core/geometry/qgsrectangle.h#L195
+QgsRectangle.setXMaximum: src/core/geometry/qgsrectangle.h#L169
+QgsRectangle.setXMinimum: src/core/geometry/qgsrectangle.h#L164
+QgsRectangle.setYMaximum: src/core/geometry/qgsrectangle.h#L179
+QgsRectangle.setYMinimum: src/core/geometry/qgsrectangle.h#L174
+QgsRectangle.snappedToGrid: src/core/geometry/qgsrectangle.h#L636
+QgsRectangle.toBox3d: src/core/geometry/qgsrectangle.h#L622
+QgsRectangle.toRectF: src/core/geometry/qgsrectangle.h#L550
+QgsRectangle.toString: src/core/geometry/qgsrectangle.h#L557
+QgsRectangle.width: src/core/geometry/qgsrectangle.h#L251
+QgsRectangle.xMaximum: src/core/geometry/qgsrectangle.h#L211
+QgsRectangle.xMinimum: src/core/geometry/qgsrectangle.h#L216
+QgsRectangle.yMaximum: src/core/geometry/qgsrectangle.h#L221
+QgsRectangle.yMinimum: src/core/geometry/qgsrectangle.h#L226
+QgsRectangle: src/core/geometry/qgsrectangle.h#L43
QgsReferencedGeometry.QVariant: src/core/geometry/qgsreferencedgeometry.h#L164
QgsReferencedGeometry.__repr__: src/core/geometry/qgsreferencedgeometry.h#L181
QgsReferencedGeometry.fromReferencedPointXY: src/core/geometry/qgsreferencedgeometry.h#L172
@@ -15320,48 +15328,48 @@ QgsReportSectionLayout.setBodyEnabled: src/core/layout/qgsreportsectionlayout.h#
QgsReportSectionLayout.type: src/core/layout/qgsreportsectionlayout.h#L43
QgsReportSectionLayout.writePropertiesToElement: src/core/layout/qgsreportsectionlayout.h#L87
QgsReportSectionLayout: src/core/layout/qgsreportsectionlayout.h#L33
-QgsRuleBasedLabeling.QgsRuleBasedLabeling: src/core/labeling/qgsrulebasedlabeling.h#L359
-QgsRuleBasedLabeling.Rule.accept: src/core/labeling/qgsrulebasedlabeling.h#L304
-QgsRuleBasedLabeling.Rule.active: src/core/labeling/qgsrulebasedlabeling.h#L119
-QgsRuleBasedLabeling.Rule.appendChild: src/core/labeling/qgsrulebasedlabeling.h#L220
-QgsRuleBasedLabeling.Rule.clone: src/core/labeling/qgsrulebasedlabeling.h#L242
-QgsRuleBasedLabeling.Rule.create: src/core/labeling/qgsrulebasedlabeling.h#L253
-QgsRuleBasedLabeling.Rule.dependsOnScale: src/core/labeling/qgsrulebasedlabeling.h#L81
-QgsRuleBasedLabeling.Rule.descendants: src/core/labeling/qgsrulebasedlabeling.h#L203
-QgsRuleBasedLabeling.Rule.description: src/core/labeling/qgsrulebasedlabeling.h#L112
-QgsRuleBasedLabeling.Rule.filterExpression: src/core/labeling/qgsrulebasedlabeling.h#L105
-QgsRuleBasedLabeling.Rule.findRuleByKey: src/core/labeling/qgsrulebasedlabeling.h#L229
-QgsRuleBasedLabeling.Rule.insertChild: src/core/labeling/qgsrulebasedlabeling.h#L223
-QgsRuleBasedLabeling.Rule.isElse: src/core/labeling/qgsrulebasedlabeling.h#L126
-QgsRuleBasedLabeling.Rule.maximumScale: src/core/labeling/qgsrulebasedlabeling.h#L90
-QgsRuleBasedLabeling.Rule.minimumScale: src/core/labeling/qgsrulebasedlabeling.h#L99
-QgsRuleBasedLabeling.Rule.parent: src/core/labeling/qgsrulebasedlabeling.h#L217
-QgsRuleBasedLabeling.Rule.removeChildAt: src/core/labeling/qgsrulebasedlabeling.h#L226
-QgsRuleBasedLabeling.Rule.requiresAdvancedEffects: src/core/labeling/qgsrulebasedlabeling.h#L293
-QgsRuleBasedLabeling.Rule.ruleKey: src/core/labeling/qgsrulebasedlabeling.h#L129
-QgsRuleBasedLabeling.Rule.save: src/core/labeling/qgsrulebasedlabeling.h#L256
-QgsRuleBasedLabeling.Rule.setActive: src/core/labeling/qgsrulebasedlabeling.h#L170
-QgsRuleBasedLabeling.Rule.setDescription: src/core/labeling/qgsrulebasedlabeling.h#L164
-QgsRuleBasedLabeling.Rule.setFilterExpression: src/core/labeling/qgsrulebasedlabeling.h#L157
-QgsRuleBasedLabeling.Rule.setIsElse: src/core/labeling/qgsrulebasedlabeling.h#L177
-QgsRuleBasedLabeling.Rule.setMaximumScale: src/core/labeling/qgsrulebasedlabeling.h#L150
-QgsRuleBasedLabeling.Rule.setMinimumScale: src/core/labeling/qgsrulebasedlabeling.h#L141
-QgsRuleBasedLabeling.Rule.setRuleKey: src/core/labeling/qgsrulebasedlabeling.h#L180
-QgsRuleBasedLabeling.Rule.setSettings: src/core/labeling/qgsrulebasedlabeling.h#L132
-QgsRuleBasedLabeling.Rule.settings: src/core/labeling/qgsrulebasedlabeling.h#L74
-QgsRuleBasedLabeling.Rule: src/core/labeling/qgsrulebasedlabeling.h#L53
-QgsRuleBasedLabeling.accept: src/core/labeling/qgsrulebasedlabeling.h#L377
-QgsRuleBasedLabeling.clone: src/core/labeling/qgsrulebasedlabeling.h#L371
-QgsRuleBasedLabeling.create: src/core/labeling/qgsrulebasedlabeling.h#L366
-QgsRuleBasedLabeling.multiplyOpacity: src/core/labeling/qgsrulebasedlabeling.h#L389
-QgsRuleBasedLabeling.requiresAdvancedEffects: src/core/labeling/qgsrulebasedlabeling.h#L387
-QgsRuleBasedLabeling.rootRule: src/core/labeling/qgsrulebasedlabeling.h#L362
-QgsRuleBasedLabeling.save: src/core/labeling/qgsrulebasedlabeling.h#L372
-QgsRuleBasedLabeling.setSettings: src/core/labeling/qgsrulebasedlabeling.h#L386
-QgsRuleBasedLabeling.settings: src/core/labeling/qgsrulebasedlabeling.h#L376
-QgsRuleBasedLabeling.subProviders: src/core/labeling/qgsrulebasedlabeling.h#L375
-QgsRuleBasedLabeling.toSld: src/core/labeling/qgsrulebasedlabeling.h#L388
-QgsRuleBasedLabeling.type: src/core/labeling/qgsrulebasedlabeling.h#L370
+QgsRuleBasedLabeling.QgsRuleBasedLabeling: src/core/labeling/qgsrulebasedlabeling.h#L366
+QgsRuleBasedLabeling.Rule.accept: src/core/labeling/qgsrulebasedlabeling.h#L311
+QgsRuleBasedLabeling.Rule.active: src/core/labeling/qgsrulebasedlabeling.h#L122
+QgsRuleBasedLabeling.Rule.appendChild: src/core/labeling/qgsrulebasedlabeling.h#L223
+QgsRuleBasedLabeling.Rule.clone: src/core/labeling/qgsrulebasedlabeling.h#L249
+QgsRuleBasedLabeling.Rule.create: src/core/labeling/qgsrulebasedlabeling.h#L260
+QgsRuleBasedLabeling.Rule.dependsOnScale: src/core/labeling/qgsrulebasedlabeling.h#L84
+QgsRuleBasedLabeling.Rule.descendants: src/core/labeling/qgsrulebasedlabeling.h#L206
+QgsRuleBasedLabeling.Rule.description: src/core/labeling/qgsrulebasedlabeling.h#L115
+QgsRuleBasedLabeling.Rule.filterExpression: src/core/labeling/qgsrulebasedlabeling.h#L108
+QgsRuleBasedLabeling.Rule.findRuleByKey: src/core/labeling/qgsrulebasedlabeling.h#L232
+QgsRuleBasedLabeling.Rule.insertChild: src/core/labeling/qgsrulebasedlabeling.h#L226
+QgsRuleBasedLabeling.Rule.isElse: src/core/labeling/qgsrulebasedlabeling.h#L129
+QgsRuleBasedLabeling.Rule.maximumScale: src/core/labeling/qgsrulebasedlabeling.h#L93
+QgsRuleBasedLabeling.Rule.minimumScale: src/core/labeling/qgsrulebasedlabeling.h#L102
+QgsRuleBasedLabeling.Rule.parent: src/core/labeling/qgsrulebasedlabeling.h#L220
+QgsRuleBasedLabeling.Rule.removeChildAt: src/core/labeling/qgsrulebasedlabeling.h#L229
+QgsRuleBasedLabeling.Rule.requiresAdvancedEffects: src/core/labeling/qgsrulebasedlabeling.h#L300
+QgsRuleBasedLabeling.Rule.ruleKey: src/core/labeling/qgsrulebasedlabeling.h#L132
+QgsRuleBasedLabeling.Rule.save: src/core/labeling/qgsrulebasedlabeling.h#L263
+QgsRuleBasedLabeling.Rule.setActive: src/core/labeling/qgsrulebasedlabeling.h#L173
+QgsRuleBasedLabeling.Rule.setDescription: src/core/labeling/qgsrulebasedlabeling.h#L167
+QgsRuleBasedLabeling.Rule.setFilterExpression: src/core/labeling/qgsrulebasedlabeling.h#L160
+QgsRuleBasedLabeling.Rule.setIsElse: src/core/labeling/qgsrulebasedlabeling.h#L180
+QgsRuleBasedLabeling.Rule.setMaximumScale: src/core/labeling/qgsrulebasedlabeling.h#L153
+QgsRuleBasedLabeling.Rule.setMinimumScale: src/core/labeling/qgsrulebasedlabeling.h#L144
+QgsRuleBasedLabeling.Rule.setRuleKey: src/core/labeling/qgsrulebasedlabeling.h#L183
+QgsRuleBasedLabeling.Rule.setSettings: src/core/labeling/qgsrulebasedlabeling.h#L135
+QgsRuleBasedLabeling.Rule.settings: src/core/labeling/qgsrulebasedlabeling.h#L77
+QgsRuleBasedLabeling.Rule: src/core/labeling/qgsrulebasedlabeling.h#L56
+QgsRuleBasedLabeling.accept: src/core/labeling/qgsrulebasedlabeling.h#L384
+QgsRuleBasedLabeling.clone: src/core/labeling/qgsrulebasedlabeling.h#L378
+QgsRuleBasedLabeling.create: src/core/labeling/qgsrulebasedlabeling.h#L373
+QgsRuleBasedLabeling.multiplyOpacity: src/core/labeling/qgsrulebasedlabeling.h#L396
+QgsRuleBasedLabeling.requiresAdvancedEffects: src/core/labeling/qgsrulebasedlabeling.h#L394
+QgsRuleBasedLabeling.rootRule: src/core/labeling/qgsrulebasedlabeling.h#L369
+QgsRuleBasedLabeling.save: src/core/labeling/qgsrulebasedlabeling.h#L379
+QgsRuleBasedLabeling.setSettings: src/core/labeling/qgsrulebasedlabeling.h#L393
+QgsRuleBasedLabeling.settings: src/core/labeling/qgsrulebasedlabeling.h#L383
+QgsRuleBasedLabeling.subProviders: src/core/labeling/qgsrulebasedlabeling.h#L382
+QgsRuleBasedLabeling.toSld: src/core/labeling/qgsrulebasedlabeling.h#L395
+QgsRuleBasedLabeling.type: src/core/labeling/qgsrulebasedlabeling.h#L377
QgsRuleBasedLabeling: src/core/labeling/qgsrulebasedlabeling.h#L41
QgsRuleBasedRenderer.QgsRuleBasedRenderer.RenderLevel: src/core/symbology/qgsrulebasedrenderer.h#L102
QgsRuleBasedRenderer.Rule.accept: src/core/symbology/qgsrulebasedrenderer.h#L460
@@ -15797,7 +15805,7 @@ QgsScientificNumericFormat.setNumberDecimalPlaces: src/core/numericformats/qgssc
QgsScientificNumericFormat.sortKey: src/core/numericformats/qgsscientificnumericformat.h#L39
QgsScientificNumericFormat.visibleName: src/core/numericformats/qgsscientificnumericformat.h#L38
QgsScientificNumericFormat: src/core/numericformats/qgsscientificnumericformat.h#L28
-QgsScopeLogger: src/core/qgslogger.h#L135
+QgsScopeLogger: src/core/qgslogger.h#L139
QgsScopedExpressionFunction.clone: src/core/qgsexpressioncontext.h#L87
QgsScopedExpressionFunction.func: src/core/qgsexpressioncontext.h#L82
QgsScopedExpressionFunction.isStatic: src/core/qgsexpressioncontext.h#L93
@@ -15856,37 +15864,37 @@ QgsSensorRegistry.removeSensorType: src/core/sensor/qgssensorregistry.h#L187
QgsSensorRegistry.sensorAdded: src/core/sensor/qgssensorregistry.h#L205
QgsSensorRegistry.sensorMetadata: src/core/sensor/qgssensorregistry.h#L161
QgsSensorRegistry: src/core/sensor/qgssensorregistry.h#L131
-QgsSensorThingsExpansionDefinition.__repr__: src/core/providers/sensorthings/qgssensorthingsutils.h#L314
-QgsSensorThingsExpansionDefinition.asQueryString: src/core/providers/sensorthings/qgssensorthingsutils.h#L308
-QgsSensorThingsExpansionDefinition.childEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L214
-QgsSensorThingsExpansionDefinition.defaultDefinitionForEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L202
-QgsSensorThingsExpansionDefinition.filter: src/core/providers/sensorthings/qgssensorthingsutils.h#L278
-QgsSensorThingsExpansionDefinition.fromString: src/core/providers/sensorthings/qgssensorthingsutils.h#L299
-QgsSensorThingsExpansionDefinition.isValid: src/core/providers/sensorthings/qgssensorthingsutils.h#L207
-QgsSensorThingsExpansionDefinition.limit: src/core/providers/sensorthings/qgssensorthingsutils.h#L262
-QgsSensorThingsExpansionDefinition.orderBy: src/core/providers/sensorthings/qgssensorthingsutils.h#L229
-QgsSensorThingsExpansionDefinition.setChildEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L221
-QgsSensorThingsExpansionDefinition.setFilter: src/core/providers/sensorthings/qgssensorthingsutils.h#L285
-QgsSensorThingsExpansionDefinition.setLimit: src/core/providers/sensorthings/qgssensorthingsutils.h#L271
-QgsSensorThingsExpansionDefinition.setOrderBy: src/core/providers/sensorthings/qgssensorthingsutils.h#L237
-QgsSensorThingsExpansionDefinition.setSortOrder: src/core/providers/sensorthings/qgssensorthingsutils.h#L253
-QgsSensorThingsExpansionDefinition.sortOrder: src/core/providers/sensorthings/qgssensorthingsutils.h#L245
-QgsSensorThingsExpansionDefinition.toString: src/core/providers/sensorthings/qgssensorthingsutils.h#L292
-QgsSensorThingsExpansionDefinition: src/core/providers/sensorthings/qgssensorthingsutils.h#L185
-QgsSensorThingsUtils.asQueryString: src/core/providers/sensorthings/qgssensorthingsutils.h#L174
-QgsSensorThingsUtils.combineFilters: src/core/providers/sensorthings/qgssensorthingsutils.h#L137
+QgsSensorThingsExpansionDefinition.__repr__: src/core/providers/sensorthings/qgssensorthingsutils.h#L317
+QgsSensorThingsExpansionDefinition.asQueryString: src/core/providers/sensorthings/qgssensorthingsutils.h#L311
+QgsSensorThingsExpansionDefinition.childEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L217
+QgsSensorThingsExpansionDefinition.defaultDefinitionForEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L205
+QgsSensorThingsExpansionDefinition.filter: src/core/providers/sensorthings/qgssensorthingsutils.h#L281
+QgsSensorThingsExpansionDefinition.fromString: src/core/providers/sensorthings/qgssensorthingsutils.h#L302
+QgsSensorThingsExpansionDefinition.isValid: src/core/providers/sensorthings/qgssensorthingsutils.h#L210
+QgsSensorThingsExpansionDefinition.limit: src/core/providers/sensorthings/qgssensorthingsutils.h#L265
+QgsSensorThingsExpansionDefinition.orderBy: src/core/providers/sensorthings/qgssensorthingsutils.h#L232
+QgsSensorThingsExpansionDefinition.setChildEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L224
+QgsSensorThingsExpansionDefinition.setFilter: src/core/providers/sensorthings/qgssensorthingsutils.h#L288
+QgsSensorThingsExpansionDefinition.setLimit: src/core/providers/sensorthings/qgssensorthingsutils.h#L274
+QgsSensorThingsExpansionDefinition.setOrderBy: src/core/providers/sensorthings/qgssensorthingsutils.h#L240
+QgsSensorThingsExpansionDefinition.setSortOrder: src/core/providers/sensorthings/qgssensorthingsutils.h#L256
+QgsSensorThingsExpansionDefinition.sortOrder: src/core/providers/sensorthings/qgssensorthingsutils.h#L248
+QgsSensorThingsExpansionDefinition.toString: src/core/providers/sensorthings/qgssensorthingsutils.h#L295
+QgsSensorThingsExpansionDefinition: src/core/providers/sensorthings/qgssensorthingsutils.h#L188
+QgsSensorThingsUtils.asQueryString: src/core/providers/sensorthings/qgssensorthingsutils.h#L177
+QgsSensorThingsUtils.combineFilters: src/core/providers/sensorthings/qgssensorthingsutils.h#L140
QgsSensorThingsUtils.displayString: src/core/providers/sensorthings/qgssensorthingsutils.h#L59
QgsSensorThingsUtils.entitySetStringToEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L66
QgsSensorThingsUtils.entityToSetString: src/core/providers/sensorthings/qgssensorthingsutils.h#L73
-QgsSensorThingsUtils.entityTypeHasGeometry: src/core/providers/sensorthings/qgssensorthingsutils.h#L103
-QgsSensorThingsUtils.fieldsForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L85
-QgsSensorThingsUtils.fieldsForExpandedEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L93
-QgsSensorThingsUtils.filterForExtent: src/core/providers/sensorthings/qgssensorthingsutils.h#L128
-QgsSensorThingsUtils.filterForWkbType: src/core/providers/sensorthings/qgssensorthingsutils.h#L118
-QgsSensorThingsUtils.geometryFieldForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L98
-QgsSensorThingsUtils.geometryTypeForEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L112
+QgsSensorThingsUtils.entityTypeHasGeometry: src/core/providers/sensorthings/qgssensorthingsutils.h#L106
+QgsSensorThingsUtils.fieldsForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L88
+QgsSensorThingsUtils.fieldsForExpandedEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L96
+QgsSensorThingsUtils.filterForExtent: src/core/providers/sensorthings/qgssensorthingsutils.h#L131
+QgsSensorThingsUtils.filterForWkbType: src/core/providers/sensorthings/qgssensorthingsutils.h#L121
+QgsSensorThingsUtils.geometryFieldForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L101
+QgsSensorThingsUtils.geometryTypeForEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L115
QgsSensorThingsUtils.propertiesForEntityType: src/core/providers/sensorthings/qgssensorthingsutils.h#L80
-QgsSensorThingsUtils.relationshipCardinality: src/core/providers/sensorthings/qgssensorthingsutils.h#L165
+QgsSensorThingsUtils.relationshipCardinality: src/core/providers/sensorthings/qgssensorthingsutils.h#L168
QgsSensorThingsUtils.stringToEntity: src/core/providers/sensorthings/qgssensorthingsutils.h#L52
QgsSensorThingsUtils: src/core/providers/sensorthings/qgssensorthingsutils.h#L33
QgsSerialPortSensor.QgsSerialPortSensor: src/core/sensor/qgsiodevicesensor.h#L241
@@ -16042,10 +16050,10 @@ QgsSettingsRegistry.removeSubRegistry: src/core/settings/qgssettingsregistry.h#L
QgsSettingsRegistry.settingsEntry: src/core/settings/qgssettingsregistry.h#L55
QgsSettingsRegistry: src/core/settings/qgssettingsregistry.h#L38
QgsSettingsRegistryCore: src/core/settings/qgssettingsregistrycore.h#L43
-QgsSettingsTree.createPluginTreeNode: src/core/settings/qgssettingstree.h#L81
-QgsSettingsTree.node: src/core/settings/qgssettingstree.h#L76
+QgsSettingsTree.createPluginTreeNode: src/core/settings/qgssettingstree.h#L82
+QgsSettingsTree.node: src/core/settings/qgssettingstree.h#L77
QgsSettingsTree.treeRoot: src/core/settings/qgssettingstree.h#L38
-QgsSettingsTree.unregisterPluginTreeNode: src/core/settings/qgssettingstree.h#L87
+QgsSettingsTree.unregisterPluginTreeNode: src/core/settings/qgssettingstree.h#L88
QgsSettingsTree: src/core/settings/qgssettingstree.h#L30
QgsSettingsTreeNamedListNode.deleteAllItems: src/core/settings/qgssettingstreenode.h#L240
QgsSettingsTreeNamedListNode.deleteItem: src/core/settings/qgssettingstreenode.h#L232
@@ -16378,6 +16386,7 @@ QgsSingleBandPseudoColorRenderer.shader: src/core/raster/qgssinglebandpseudocolo
QgsSingleBandPseudoColorRenderer.toSld: src/core/raster/qgssinglebandpseudocolorrenderer.h#L84
QgsSingleBandPseudoColorRenderer.writeXml: src/core/raster/qgssinglebandpseudocolorrenderer.h#L80
QgsSingleBandPseudoColorRenderer: src/core/raster/qgssinglebandpseudocolorrenderer.h#L34
+QgsSingleBoxScaleBarRenderer.applyDefaultSettings: src/core/scalebar/qgssingleboxscalebarrenderer.h#L46
QgsSingleBoxScaleBarRenderer.clone: src/core/scalebar/qgssingleboxscalebarrenderer.h#L40
QgsSingleBoxScaleBarRenderer.draw: src/core/scalebar/qgssingleboxscalebarrenderer.h#L42
QgsSingleBoxScaleBarRenderer.flags: src/core/scalebar/qgssingleboxscalebarrenderer.h#L39
@@ -17138,6 +17147,7 @@ QgsSymbolLayerUtils.applyScaleDependency: src/core/symbology/qgssymbollayerutils
QgsSymbolLayerUtils.blurImageInPlace: src/core/symbology/qgssymbollayerutils.h#L711
QgsSymbolLayerUtils.clearSymbolLayerIds: src/core/symbology/qgssymbollayerutils.h#L932
QgsSymbolLayerUtils.clearSymbolLayerIds: src/core/symbology/qgssymbollayerutils.h#L938
+QgsSymbolLayerUtils.clearSymbolLayerMasks: src/core/symbology/qgssymbollayerutils.h#L956
QgsSymbolLayerUtils.clearSymbolMap: src/core/symbology/qgssymbollayerutils.h#L568
QgsSymbolLayerUtils.colorFromMimeData: src/core/symbology/qgssymbollayerutils.h#L649
QgsSymbolLayerUtils.colorListFromMimeData: src/core/symbology/qgssymbollayerutils.h#L656
@@ -18161,6 +18171,7 @@ QgsTrackedVectorLayerTools.stopEditing: src/core/qgstrackedvectorlayertools.h#L4
QgsTrackedVectorLayerTools: src/core/qgstrackedvectorlayertools.h#L27
QgsTransaction.addLayer: src/core/qgstransaction.h#L90
QgsTransaction.afterRollback: src/core/qgstransaction.h#L174
+QgsTransaction.afterRollbackToSavepoint: src/core/qgstransaction.h#L180
QgsTransaction.begin: src/core/qgstransaction.h#L102
QgsTransaction.commit: src/core/qgstransaction.h#L107
QgsTransaction.connectionString: src/core/qgstransaction.h#L81
@@ -18168,7 +18179,7 @@ QgsTransaction.create: src/core/qgstransaction.h#L66
QgsTransaction.create: src/core/qgstransaction.h#L73
QgsTransaction.createSavepoint: src/core/qgstransaction.h#L136
QgsTransaction.createSavepoint: src/core/qgstransaction.h#L142
-QgsTransaction.dirtied: src/core/qgstransaction.h#L179
+QgsTransaction.dirtied: src/core/qgstransaction.h#L185
QgsTransaction.dirtyLastSavePoint: src/core/qgstransaction.h#L152
QgsTransaction.executeSql: src/core/qgstransaction.h#L124
QgsTransaction.lastSavePointIsDirty: src/core/qgstransaction.h#L162
diff --git a/python/gui/auto_additions/qgsplotrubberband.py b/python/gui/auto_additions/qgsplotrubberband.py
index 9a49316800bf..e9bfb798644f 100644
--- a/python/gui/auto_additions/qgsplotrubberband.py
+++ b/python/gui/auto_additions/qgsplotrubberband.py
@@ -7,3 +7,7 @@
QgsPlotRectangularRubberBand.__group__ = ['plot']
except (NameError, AttributeError):
pass
+try:
+ QgsPlotPointRubberBand.__group__ = ['plot']
+except (NameError, AttributeError):
+ pass
diff --git a/python/gui/auto_generated/auth/qgsauthsettingswidget.sip.in b/python/gui/auto_generated/auth/qgsauthsettingswidget.sip.in
index a7a969fa8c8a..aebdcc09c56b 100644
--- a/python/gui/auto_generated/auth/qgsauthsettingswidget.sip.in
+++ b/python/gui/auto_generated/auth/qgsauthsettingswidget.sip.in
@@ -39,6 +39,13 @@ from existing configs, or creating/removing them from auth database
:param username:
:param password:
:param dataprovider: The key of the calling layer provider, if applicable
+%End
+
+ void removeBasicSettings();
+%Docstring
+Removes the basic authentication tab from the widget.
+
+.. versionadded:: 3.42
%End
void setWarningText( const QString &warningText );
diff --git a/python/gui/auto_generated/elevation/qgselevationprofilecanvas.sip.in b/python/gui/auto_generated/elevation/qgselevationprofilecanvas.sip.in
index 7cb9766d6283..d1cbf04ac720 100644
--- a/python/gui/auto_generated/elevation/qgselevationprofilecanvas.sip.in
+++ b/python/gui/auto_generated/elevation/qgselevationprofilecanvas.sip.in
@@ -249,6 +249,13 @@ The chart text, border and axis color will be automatically updated to ensure
readability with the new background color.
.. versionadded:: 3.34
+%End
+
+ void setInflectionLinesEnabled( bool enabled );
+%Docstring
+Sets whether inflection lines are displayed.
+
+.. versionadded:: 3.44
%End
signals:
@@ -280,6 +287,57 @@ Clears the current profile.
void setSnappingEnabled( bool enabled );
%Docstring
Sets whether snapping of cursor points is enabled.
+%End
+
+ void setCrossHairsItemIsDelegate( bool enabled );
+%Docstring
+Sets wether the cross hairs item is controlled externally
+
+.. versionadded:: 3.42
+%End
+
+ bool crossHairsItemIsDelegate();
+%Docstring
+Returns wether the cross hairs item is controlled externally
+
+.. versionadded:: 3.42
+%End
+
+ void setCrossHairsItemPoint( QPoint point );
+%Docstring
+Sets the cross hairs item point (if cross hairs items is controlled externally)
+
+.. seealso:: :py:func:`setCrossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`crossHairsItemIsDelegate`
+
+.. versionadded:: 3.42
+%End
+
+ void showCrossHairsItem();
+%Docstring
+Show the cross hairs item if cross hairs items is controlled externally)
+
+.. seealso:: :py:func:`setCrossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`crossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`hideCrossHairsItem`
+
+.. versionadded:: 3.42
+%End
+
+ void hideCrossHairsItem();
+%Docstring
+Hide the cross hairs item if cross hairs items is controlled externally)
+
+.. seealso:: :py:func:`setCrossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`crossHairsItemIsDelegate`
+
+.. seealso:: :py:func:`showCrossHairsItem`
+
+.. versionadded:: 3.42
%End
};
diff --git a/python/gui/auto_generated/maptools/qgsmaptoolcapture.sip.in b/python/gui/auto_generated/maptools/qgsmaptoolcapture.sip.in
index b9741b4434ea..ae44e18c268b 100644
--- a/python/gui/auto_generated/maptools/qgsmaptoolcapture.sip.in
+++ b/python/gui/auto_generated/maptools/qgsmaptoolcapture.sip.in
@@ -222,14 +222,13 @@ Converts a point to map coordinates and layer coordinates
int fetchLayerPoint( const QgsPointLocator::Match &match, QgsPoint &layerPoint );
%Docstring
-Fetches the original point from the source layer if it has the same
-CRS as the current layer.
-If topological editing is activated, the points are projected to the
-current layer CRS.
+Fetches the original point from the source layer.
+If topological editing is activated.
+The points are projected to the current layer CRS.
:return:
0 in case of success
- 1 if not applicable (CRS mismatch / invalid layer)
+ 1 if not applicable (invalid layer)
2 in case of failure
%End
diff --git a/python/gui/auto_generated/plot/qgsplotrubberband.sip.in b/python/gui/auto_generated/plot/qgsplotrubberband.sip.in
index 2e74d7bd951c..570c9402b102 100644
--- a/python/gui/auto_generated/plot/qgsplotrubberband.sip.in
+++ b/python/gui/auto_generated/plot/qgsplotrubberband.sip.in
@@ -128,6 +128,35 @@ Constructor for QgsPlotRectangularRubberBand.
virtual QRectF finish( QPointF position = QPointF(), Qt::KeyboardModifiers modifiers = Qt::KeyboardModifiers() );
+};
+
+class QgsPlotPointRubberBand : QgsPlotRubberBand
+{
+%Docstring(signature="appended")
+:py:class:`QgsPlotPointRubberBand` is a point rubber band for use within :py:class:`QgsPlotCanvas` widgets.
+
+.. versionadded:: 3.42
+%End
+
+%TypeHeaderCode
+#include "qgsplotrubberband.h"
+%End
+ public:
+
+ QgsPlotPointRubberBand( QgsPlotCanvas *canvas = 0 );
+%Docstring
+Constructor for QgsPlotPointRubberBand.
+%End
+
+ ~QgsPlotPointRubberBand();
+
+ virtual void start( QPointF position, Qt::KeyboardModifiers modifiers );
+
+ virtual void update( QPointF position, Qt::KeyboardModifiers modifiers );
+
+ virtual QRectF finish( QPointF position = QPointF(), Qt::KeyboardModifiers modifiers = Qt::KeyboardModifiers() );
+
+
};
/************************************************************************
diff --git a/python/gui/class_map.yaml b/python/gui/class_map.yaml
index 36159cfac9fb..ae44d8f23fae 100644
--- a/python/gui/class_map.yaml
+++ b/python/gui/class_map.yaml
@@ -1022,28 +1022,29 @@ QgsAuthServersEditor.QgsAuthServersEditor: src/gui/auth/qgsauthserverseditor.h#L
QgsAuthServersEditor.showEvent: src/gui/auth/qgsauthserverseditor.h#L69
QgsAuthServersEditor: src/gui/auth/qgsauthserverseditor.h#L33
QgsAuthSettingsWidget.QgsAuthSettingsWidget: src/gui/auth/qgsauthsettingswidget.h#L63
-QgsAuthSettingsWidget.btnConvertToEncryptedIsEnabled: src/gui/auth/qgsauthsettingswidget.h#L137
-QgsAuthSettingsWidget.configId: src/gui/auth/qgsauthsettingswidget.h#L106
-QgsAuthSettingsWidget.configIdChanged: src/gui/auth/qgsauthsettingswidget.h#L211
-QgsAuthSettingsWidget.configurationTabIsSelected: src/gui/auth/qgsauthsettingswidget.h#L178
-QgsAuthSettingsWidget.convertToEncrypted: src/gui/auth/qgsauthsettingswidget.h#L188
-QgsAuthSettingsWidget.dataprovider: src/gui/auth/qgsauthsettingswidget.h#L124
-QgsAuthSettingsWidget.formattedWarning: src/gui/auth/qgsauthsettingswidget.h#L131
-QgsAuthSettingsWidget.password: src/gui/auth/qgsauthsettingswidget.h#L94
-QgsAuthSettingsWidget.passwordChanged: src/gui/auth/qgsauthsettingswidget.h#L204
-QgsAuthSettingsWidget.setBasicText: src/gui/auth/qgsauthsettingswidget.h#L76
-QgsAuthSettingsWidget.setConfigId: src/gui/auth/qgsauthsettingswidget.h#L112
-QgsAuthSettingsWidget.setDataprovider: src/gui/auth/qgsauthsettingswidget.h#L118
-QgsAuthSettingsWidget.setPassword: src/gui/auth/qgsauthsettingswidget.h#L100
-QgsAuthSettingsWidget.setStorePasswordChecked: src/gui/auth/qgsauthsettingswidget.h#L160
-QgsAuthSettingsWidget.setStoreUsernameChecked: src/gui/auth/qgsauthsettingswidget.h#L153
-QgsAuthSettingsWidget.setUsername: src/gui/auth/qgsauthsettingswidget.h#L88
-QgsAuthSettingsWidget.setWarningText: src/gui/auth/qgsauthsettingswidget.h#L70
-QgsAuthSettingsWidget.showStoreCheckboxes: src/gui/auth/qgsauthsettingswidget.h#L146
-QgsAuthSettingsWidget.storePasswordIsChecked: src/gui/auth/qgsauthsettingswidget.h#L166
-QgsAuthSettingsWidget.storeUsernameIsChecked: src/gui/auth/qgsauthsettingswidget.h#L172
-QgsAuthSettingsWidget.username: src/gui/auth/qgsauthsettingswidget.h#L82
-QgsAuthSettingsWidget.usernameChanged: src/gui/auth/qgsauthsettingswidget.h#L197
+QgsAuthSettingsWidget.btnConvertToEncryptedIsEnabled: src/gui/auth/qgsauthsettingswidget.h#L144
+QgsAuthSettingsWidget.configId: src/gui/auth/qgsauthsettingswidget.h#L113
+QgsAuthSettingsWidget.configIdChanged: src/gui/auth/qgsauthsettingswidget.h#L218
+QgsAuthSettingsWidget.configurationTabIsSelected: src/gui/auth/qgsauthsettingswidget.h#L185
+QgsAuthSettingsWidget.convertToEncrypted: src/gui/auth/qgsauthsettingswidget.h#L195
+QgsAuthSettingsWidget.dataprovider: src/gui/auth/qgsauthsettingswidget.h#L131
+QgsAuthSettingsWidget.formattedWarning: src/gui/auth/qgsauthsettingswidget.h#L138
+QgsAuthSettingsWidget.password: src/gui/auth/qgsauthsettingswidget.h#L101
+QgsAuthSettingsWidget.passwordChanged: src/gui/auth/qgsauthsettingswidget.h#L211
+QgsAuthSettingsWidget.removeBasicSettings: src/gui/auth/qgsauthsettingswidget.h#L70
+QgsAuthSettingsWidget.setBasicText: src/gui/auth/qgsauthsettingswidget.h#L83
+QgsAuthSettingsWidget.setConfigId: src/gui/auth/qgsauthsettingswidget.h#L119
+QgsAuthSettingsWidget.setDataprovider: src/gui/auth/qgsauthsettingswidget.h#L125
+QgsAuthSettingsWidget.setPassword: src/gui/auth/qgsauthsettingswidget.h#L107
+QgsAuthSettingsWidget.setStorePasswordChecked: src/gui/auth/qgsauthsettingswidget.h#L167
+QgsAuthSettingsWidget.setStoreUsernameChecked: src/gui/auth/qgsauthsettingswidget.h#L160
+QgsAuthSettingsWidget.setUsername: src/gui/auth/qgsauthsettingswidget.h#L95
+QgsAuthSettingsWidget.setWarningText: src/gui/auth/qgsauthsettingswidget.h#L77
+QgsAuthSettingsWidget.showStoreCheckboxes: src/gui/auth/qgsauthsettingswidget.h#L153
+QgsAuthSettingsWidget.storePasswordIsChecked: src/gui/auth/qgsauthsettingswidget.h#L173
+QgsAuthSettingsWidget.storeUsernameIsChecked: src/gui/auth/qgsauthsettingswidget.h#L179
+QgsAuthSettingsWidget.username: src/gui/auth/qgsauthsettingswidget.h#L89
+QgsAuthSettingsWidget.usernameChanged: src/gui/auth/qgsauthsettingswidget.h#L204
QgsAuthSettingsWidget: src/gui/auth/qgsauthsettingswidget.h#L35
QgsAuthSslConfigDialog.QgsAuthSslConfigDialog: src/gui/auth/qgsauthsslconfigwidget.h#L198
QgsAuthSslConfigDialog.accept: src/gui/auth/qgsauthsslconfigwidget.h#L204
@@ -3565,7 +3566,7 @@ QgsLayerMetadataSearchWidget.addButtonClicked: src/gui/qgslayermetadatasearchwid
QgsLayerMetadataSearchWidget.refresh: src/gui/qgslayermetadatasearchwidget.h#L52
QgsLayerMetadataSearchWidget.reset: src/gui/qgslayermetadatasearchwidget.h#L54
QgsLayerMetadataSearchWidget.setMapCanvas: src/gui/qgslayermetadatasearchwidget.h#L45
-QgsLayerMetadataSearchWidget.showEvent: src/gui/qgslayermetadatasearchwidget.h#L66
+QgsLayerMetadataSearchWidget.showEvent: src/gui/qgslayermetadatasearchwidget.h#L67
QgsLayerMetadataSearchWidget.updateExtentFilter: src/gui/qgslayermetadatasearchwidget.h#L50
QgsLayerMetadataSearchWidget: src/gui/qgslayermetadatasearchwidget.h#L36
QgsLayerPropertiesDialog.addPropertiesPageFactory: src/gui/qgslayerpropertiesdialog.h#L81
@@ -4555,42 +4556,42 @@ QgsMapToolAdvancedDigitizing.useSnappingIndicator: src/gui/maptools/qgsmaptoolad
QgsMapToolAdvancedDigitizing: src/gui/maptools/qgsmaptooladvanceddigitizing.h#L38
QgsMapToolCapture.activate: src/gui/maptools/qgsmaptoolcapture.h#L108
QgsMapToolCapture.addCurve: src/gui/maptools/qgsmaptoolcapture.h#L119
-QgsMapToolCapture.addVertex: src/gui/maptools/qgsmaptoolcapture.h#L259
-QgsMapToolCapture.addVertex: src/gui/maptools/qgsmaptoolcapture.h#L266
+QgsMapToolCapture.addVertex: src/gui/maptools/qgsmaptoolcapture.h#L258
+QgsMapToolCapture.addVertex: src/gui/maptools/qgsmaptoolcapture.h#L265
QgsMapToolCapture.cadCanvasMoveEvent: src/gui/maptools/qgsmaptoolcapture.h#L140
QgsMapToolCapture.cadCanvasReleaseEvent: src/gui/maptools/qgsmaptoolcapture.h#L141
QgsMapToolCapture.capabilities: src/gui/maptools/qgsmaptoolcapture.h#L80
QgsMapToolCapture.captureCurve: src/gui/maptools/qgsmaptoolcapture.h#L132
QgsMapToolCapture.clean: src/gui/maptools/qgsmaptoolcapture.h#L155
QgsMapToolCapture.clearCurve: src/gui/maptools/qgsmaptoolcapture.h#L125
-QgsMapToolCapture.closePolygon: src/gui/maptools/qgsmaptoolcapture.h#L330
+QgsMapToolCapture.closePolygon: src/gui/maptools/qgsmaptoolcapture.h#L329
QgsMapToolCapture.currentCaptureTechnique: src/gui/maptools/qgsmaptoolcapture.h#L99
QgsMapToolCapture.deactivate: src/gui/maptools/qgsmaptoolcapture.h#L109
QgsMapToolCapture.deleteTempRubberBand: src/gui/maptools/qgsmaptoolcapture.h#L152
-QgsMapToolCapture.fetchLayerPoint: src/gui/maptools/qgsmaptoolcapture.h#L253
-QgsMapToolCapture.geometryCaptured: src/gui/maptools/qgsmaptoolcapture.h#L345
-QgsMapToolCapture.isCapturing: src/gui/maptools/qgsmaptoolcapture.h#L286
+QgsMapToolCapture.fetchLayerPoint: src/gui/maptools/qgsmaptoolcapture.h#L252
+QgsMapToolCapture.geometryCaptured: src/gui/maptools/qgsmaptoolcapture.h#L344
+QgsMapToolCapture.isCapturing: src/gui/maptools/qgsmaptoolcapture.h#L285
QgsMapToolCapture.keyPressEvent: src/gui/maptools/qgsmaptoolcapture.h#L147
-QgsMapToolCapture.lineCaptured: src/gui/maptools/qgsmaptoolcapture.h#L359
+QgsMapToolCapture.lineCaptured: src/gui/maptools/qgsmaptoolcapture.h#L358
QgsMapToolCapture.mapPoint: src/gui/maptools/qgsmaptoolcapture.h#L177
QgsMapToolCapture.mapPoint: src/gui/maptools/qgsmaptoolcapture.h#L188
QgsMapToolCapture.mode: src/gui/maptools/qgsmaptoolcapture.h#L116
QgsMapToolCapture.nextPoint: src/gui/maptools/qgsmaptoolcapture.h#L225
QgsMapToolCapture.nextPoint: src/gui/maptools/qgsmaptoolcapture.h#L239
-QgsMapToolCapture.pointCaptured: src/gui/maptools/qgsmaptoolcapture.h#L352
-QgsMapToolCapture.pointsZM: src/gui/maptools/qgsmaptoolcapture.h#L309
-QgsMapToolCapture.polygonCaptured: src/gui/maptools/qgsmaptoolcapture.h#L366
+QgsMapToolCapture.pointCaptured: src/gui/maptools/qgsmaptoolcapture.h#L351
+QgsMapToolCapture.pointsZM: src/gui/maptools/qgsmaptoolcapture.h#L308
+QgsMapToolCapture.polygonCaptured: src/gui/maptools/qgsmaptoolcapture.h#L365
QgsMapToolCapture.setCircularDigitizingEnabled: src/gui/maptools/qgsmaptoolcapture.h#L198
QgsMapToolCapture.setCurrentCaptureTechnique: src/gui/maptools/qgsmaptoolcapture.h#L93
-QgsMapToolCapture.setPoints: src/gui/maptools/qgsmaptoolcapture.h#L317
-QgsMapToolCapture.setPoints: src/gui/maptools/qgsmaptoolcapture.h#L325
+QgsMapToolCapture.setPoints: src/gui/maptools/qgsmaptoolcapture.h#L316
+QgsMapToolCapture.setPoints: src/gui/maptools/qgsmaptoolcapture.h#L324
QgsMapToolCapture.setStreamDigitizingEnabled: src/gui/maptools/qgsmaptoolcapture.h#L205
-QgsMapToolCapture.size: src/gui/maptools/qgsmaptoolcapture.h#L293
-QgsMapToolCapture.startCapturing: src/gui/maptools/qgsmaptoolcapture.h#L279
-QgsMapToolCapture.stopCapturing: src/gui/maptools/qgsmaptoolcapture.h#L337
+QgsMapToolCapture.size: src/gui/maptools/qgsmaptoolcapture.h#L292
+QgsMapToolCapture.startCapturing: src/gui/maptools/qgsmaptoolcapture.h#L278
+QgsMapToolCapture.stopCapturing: src/gui/maptools/qgsmaptoolcapture.h#L336
QgsMapToolCapture.supportsTechnique: src/gui/maptools/qgsmaptoolcapture.h#L87
QgsMapToolCapture.takeRubberBand: src/gui/maptools/qgsmaptoolcapture.h#L165
-QgsMapToolCapture.undo: src/gui/maptools/qgsmaptoolcapture.h#L274
+QgsMapToolCapture.undo: src/gui/maptools/qgsmaptoolcapture.h#L273
QgsMapToolCapture: src/gui/maptools/qgsmaptoolcapture.h#L48
QgsMapToolCaptureLayerGeometry.layerGeometryCaptured: src/gui/maptools/qgsmaptoolcapturelayergeometry.h#L46
QgsMapToolCaptureLayerGeometry.layerLineCaptured: src/gui/maptools/qgsmaptoolcapturelayergeometry.h#L58
diff --git a/python/plugins/db_manager/sqledit.py b/python/plugins/db_manager/sqledit.py
index deb78274ff77..b4d92975125d 100644
--- a/python/plugins/db_manager/sqledit.py
+++ b/python/plugins/db_manager/sqledit.py
@@ -131,7 +131,7 @@ def initShortcuts(self):
# Use Ctrl+Space for autocompletion
self.shortcutAutocomplete = QShortcut(
- QKeySequence(Qt.Modifier.CTRL + Qt.Key.Key_Space), self
+ QKeySequence(Qt.Modifier.CTRL | Qt.Key.Key_Space), self
)
self.shortcutAutocomplete.setContext(Qt.ShortcutContext.WidgetShortcut)
self.shortcutAutocomplete.activated.connect(self.autoComplete)
diff --git a/python/plugins/processing/algs/qgis/ui/InterpolationWidgets.py b/python/plugins/processing/algs/qgis/ui/InterpolationWidgets.py
index 84b1a73b9e71..5b7d37e8b7d6 100644
--- a/python/plugins/processing/algs/qgis/ui/InterpolationWidgets.py
+++ b/python/plugins/processing/algs/qgis/ui/InterpolationWidgets.py
@@ -105,7 +105,8 @@ def __init__(self):
self.cmbLayers.layerChanged.connect(self.layerChanged)
self.cmbLayers.setFilters(Qgis.LayerFilter.VectorLayer)
self.cmbFields.setFilters(QgsFieldProxyModel.Filter.Numeric)
- self.cmbFields.setLayer(self.cmbLayers.currentLayer())
+
+ self.layerChanged(self.cmbLayers.currentLayer())
def addLayer(self):
layer = self.cmbLayers.currentLayer()
diff --git a/python/plugins/processing/gui/AlgorithmExecutor.py b/python/plugins/processing/gui/AlgorithmExecutor.py
index c1ef9432d449..8c7fadc022d3 100644
--- a/python/plugins/processing/gui/AlgorithmExecutor.py
+++ b/python/plugins/processing/gui/AlgorithmExecutor.py
@@ -465,6 +465,9 @@ def executeIterating(alg, parameters, paramToIter, context, feedback):
if feedback.isCanceled():
return False
+ # clear any model result stored in the last iteration
+ context.clearModelResult()
+
parameters[paramToIter] = f
for out in alg.destinationParameterDefinitions():
if out.name() not in outputs:
diff --git a/python/plugins/processing/gui/Postprocessing.py b/python/plugins/processing/gui/Postprocessing.py
index d36ce1f34b53..f495c2af0091 100644
--- a/python/plugins/processing/gui/Postprocessing.py
+++ b/python/plugins/processing/gui/Postprocessing.py
@@ -35,6 +35,7 @@
QgsLayerTreeLayer,
QgsLayerTreeGroup,
QgsLayerTreeNode,
+ QgsLayerTreeRegistryBridge,
)
from qgis.utils import iface
@@ -237,8 +238,6 @@ def handleAlgorithmResults(
# output layer already exists in the destination project
owned_map_layer = context.temporaryLayerStore().takeMapLayer(layer)
if owned_map_layer:
- details.project.addMapLayer(owned_map_layer, False)
-
# we don't add the layer to the tree yet -- that's done
# later, after we've sorted all added layers
layer_tree_layer = create_layer_tree_layer(owned_map_layer, details)
@@ -277,10 +276,15 @@ def handleAlgorithmResults(
current_selected_node = iface.layerTreeView().currentNode()
iface.layerTreeView().setUpdatesEnabled(False)
+ # store the current intersection point to restore it later
+ previous_insertion_point = (
+ details.project.layerTreeRegistryBridge().layerInsertionPoint()
+ )
for group, layer_node in sorted_layer_tree_layers:
layer_node.removeCustomProperty(SORT_ORDER_CUSTOM_PROPERTY)
+ insertion_point: Optional[QgsLayerTreeRegistryBridge.InsertionPoint] = None
if group is not None:
- group.insertChildNode(0, layer_node)
+ insertion_point = QgsLayerTreeRegistryBridge.InsertionPoint(group, 0)
else:
# no destination group for this layer, so should be placed
# above the current layer
@@ -289,16 +293,32 @@ def handleAlgorithmResults(
current_node_index = current_node_group.children().index(
current_selected_node
)
- current_node_group.insertChildNode(current_node_index, layer_node)
+ insertion_point = QgsLayerTreeRegistryBridge.InsertionPoint(
+ current_node_group, current_node_index
+ )
elif isinstance(current_selected_node, QgsLayerTreeGroup):
- current_selected_node.insertChildNode(0, layer_node)
+ insertion_point = QgsLayerTreeRegistryBridge.InsertionPoint(
+ current_selected_node, 0
+ )
elif context.project():
- context.project().layerTreeRoot().insertChildNode(0, layer_node)
+ insertion_point = QgsLayerTreeRegistryBridge.InsertionPoint()
+
+ if insertion_point:
+ details.project.layerTreeRegistryBridge().setLayerInsertionPoint(
+ insertion_point
+ )
+
+ details.project.addMapLayer(layer_node.layer())
if not have_set_active_layer and iface is not None:
iface.setActiveLayer(layer_node.layer())
have_set_active_layer = True
+ # reset to the previous insertion point
+ details.project.layerTreeRegistryBridge().setLayerInsertionPoint(
+ previous_insertion_point
+ )
+
# all layers have been added to the layer tree, so safe to call
# postProcessors now
for layer, details in layers_to_post_process:
diff --git a/python/plugins/processing/script/ScriptEdit.py b/python/plugins/processing/script/ScriptEdit.py
index 09f9e44fa0c0..7952004ff0aa 100644
--- a/python/plugins/processing/script/ScriptEdit.py
+++ b/python/plugins/processing/script/ScriptEdit.py
@@ -49,7 +49,7 @@ def initShortcuts(self):
# Use Ctrl+Space for autocompletion
self.shortcutAutocomplete = QShortcut(
- QKeySequence(Qt.Modifier.CTRL + Qt.Key.Key_Space), self
+ QKeySequence(Qt.Modifier.CTRL | Qt.Key.Key_Space), self
)
self.shortcutAutocomplete.setContext(Qt.ShortcutContext.WidgetShortcut)
self.shortcutAutocomplete.activated.connect(self.autoComplete)
diff --git a/python/plugins/processing/script/ScriptEditorDialog.py b/python/plugins/processing/script/ScriptEditorDialog.py
index 373eb2c964cc..70ea3e8e747b 100644
--- a/python/plugins/processing/script/ScriptEditorDialog.py
+++ b/python/plugins/processing/script/ScriptEditorDialog.py
@@ -27,6 +27,7 @@
from qgis.PyQt import uic, sip
from qgis.PyQt.QtCore import Qt
+from qgis.PyQt.QtGui import QPalette
from qgis.PyQt.QtWidgets import QMessageBox, QFileDialog, QVBoxLayout
from qgis.gui import QgsGui, QgsErrorDialog, QgsCodeEditorWidget
@@ -116,7 +117,10 @@ def clean_up_store():
QgsApplication.getThemeIcon("/mActionDecreaseFont.svg")
)
self.actionToggleComment.setIcon(
- QgsApplication.getThemeIcon("console/iconCommentEditorConsole.svg")
+ QgsApplication.getThemeIcon(
+ "console/iconCommentEditorConsole.svg",
+ self.palette().color(QPalette.ColorRole.WindowText),
+ )
)
# Connect signals and slots
diff --git a/python/plugins/processing/tests/GdalAlgorithmsRasterTest.py b/python/plugins/processing/tests/GdalAlgorithmsRasterTest.py
index 390c37e845b3..240a2c028fa7 100644
--- a/python/plugins/processing/tests/GdalAlgorithmsRasterTest.py
+++ b/python/plugins/processing/tests/GdalAlgorithmsRasterTest.py
@@ -3498,7 +3498,7 @@ def testRasterize(self):
),
[
"gdal_rasterize",
- "-l polys2 -a id -ts 0.0 0.0 -te -1.000000001857055 -2.9999999963940835 10.000000000604244 5.99999999960471 -ot Float32 -of JPEG "
+ "-l polys2 -a id -ts 0.0 0.0 -te -1.000000001857055 -2.9999999963940835 10.000000000604246 5.999999999604708 -ot Float32 -of JPEG "
+ source
+ " "
+ outdir
diff --git a/python/plugins/processing/tests/testdata/qgis_algorithm_tests2.yaml b/python/plugins/processing/tests/testdata/qgis_algorithm_tests2.yaml
index 7a4d24eed45b..dd65231793fe 100644
--- a/python/plugins/processing/tests/testdata/qgis_algorithm_tests2.yaml
+++ b/python/plugins/processing/tests/testdata/qgis_algorithm_tests2.yaml
@@ -14,9 +14,7 @@ tests:
results:
OUTPUT:
hash:
- - bfb3616a73065c0cb41eb1c5c1e9e8812fe1c63019a6177adb1dfe3e
- - 19bbd79d15b0ba7dbde05665d559e9806fdb1cd579df9222f9cc4d92
- - 3dfa1e041f33a72abf72d2d706c03e11fa5274f152dec1db1661b8e0
+ - e277a6774c489ee965421fe102780275163229b9407d5e33d3e268e5
type: rasterhash
- algorithm: qgis:tininterpolation
@@ -31,9 +29,7 @@ tests:
results:
OUTPUT:
hash:
- - bfb3616a73065c0cb41eb1c5c1e9e8812fe1c63019a6177adb1dfe3e
- - 19bbd79d15b0ba7dbde05665d559e9806fdb1cd579df9222f9cc4d92
- - 3dfa1e041f33a72abf72d2d706c03e11fa5274f152dec1db1661b8e0
+ - e277a6774c489ee965421fe102780275163229b9407d5e33d3e268e5
type: rasterhash
- algorithm: qgis:tininterpolation
@@ -48,9 +44,7 @@ tests:
results:
OUTPUT:
hash:
- - b8e49813c507b73cb39a5ad904b2d302ccb25c591a2e577b6405f982
- - 19bbd79d15b0ba7dbde05665d559e9806fdb1cd579df9222f9cc4d92
- - 3dfa1e041f33a72abf72d2d706c03e11fa5274f152dec1db1661b8e0
+ - e277a6774c489ee965421fe102780275163229b9407d5e33d3e268e5
type: rasterhash
- algorithm: qgis:tininterpolation
@@ -66,9 +60,7 @@ tests:
results:
OUTPUT:
hash:
- - bfb3616a73065c0cb41eb1c5c1e9e8812fe1c63019a6177adb1dfe3e
- - 19bbd79d15b0ba7dbde05665d559e9806fdb1cd579df9222f9cc4d92
- - 3dfa1e041f33a72abf72d2d706c03e11fa5274f152dec1db1661b8e0
+ - e277a6774c489ee965421fe102780275163229b9407d5e33d3e268e5
type: rasterhash
- algorithm: qgis:tininterpolation
@@ -84,9 +76,7 @@ tests:
results:
OUTPUT:
hash:
- - bfb3616a73065c0cb41eb1c5c1e9e8812fe1c63019a6177adb1dfe3e
- - 19bbd79d15b0ba7dbde05665d559e9806fdb1cd579df9222f9cc4d92
- - 3dfa1e041f33a72abf72d2d706c03e11fa5274f152dec1db1661b8e0
+ - e277a6774c489ee965421fe102780275163229b9407d5e33d3e268e5
type: rasterhash
- algorithm: qgis:tininterpolation
@@ -102,9 +92,7 @@ tests:
results:
OUTPUT:
hash:
- - b8e49813c507b73cb39a5ad904b2d302ccb25c591a2e577b6405f982
- - 19bbd79d15b0ba7dbde05665d559e9806fdb1cd579df9222f9cc4d92
- - 3dfa1e041f33a72abf72d2d706c03e11fa5274f152dec1db1661b8e0
+ - e277a6774c489ee965421fe102780275163229b9407d5e33d3e268e5
type: rasterhash
- algorithm: qgis:idwinterpolation
@@ -119,8 +107,7 @@ tests:
results:
OUTPUT:
hash:
- - 55dfd0e0e5ea300d2314785ab6aa1f4d941a4506e63d0d9e2b84e959
- - b5fc06549f1b0ce3261f9fb8868bb6d082edcbfe409c89a82e2b7e7a
+ - 7836f01a89afbfdd865aaae9b57c602c96d629184adf1b6ea66ca127
type: rasterhash
- algorithm: qgis:idwinterpolation
@@ -135,8 +122,7 @@ tests:
results:
OUTPUT:
hash:
- - 55dfd0e0e5ea300d2314785ab6aa1f4d941a4506e63d0d9e2b84e959
- - b5fc06549f1b0ce3261f9fb8868bb6d082edcbfe409c89a82e2b7e7a
+ - 7836f01a89afbfdd865aaae9b57c602c96d629184adf1b6ea66ca127
type: rasterhash
- algorithm: qgis:idwinterpolation
@@ -151,8 +137,7 @@ tests:
results:
OUTPUT:
hash:
- - d53cd7327d53bd4b8fb2de8b206e5aa0a1366963f2b63f58c2b7926e
- - b5fc06549f1b0ce3261f9fb8868bb6d082edcbfe409c89a82e2b7e7a
+ - 7836f01a89afbfdd865aaae9b57c602c96d629184adf1b6ea66ca127
type: rasterhash
- algorithm: qgis:idwinterpolation
@@ -168,8 +153,7 @@ tests:
results:
OUTPUT:
hash:
- - 55dfd0e0e5ea300d2314785ab6aa1f4d941a4506e63d0d9e2b84e959
- - b5fc06549f1b0ce3261f9fb8868bb6d082edcbfe409c89a82e2b7e7a
+ - 7836f01a89afbfdd865aaae9b57c602c96d629184adf1b6ea66ca127
type: rasterhash
- algorithm: qgis:idwinterpolation
@@ -185,8 +169,7 @@ tests:
results:
OUTPUT:
hash:
- - 55dfd0e0e5ea300d2314785ab6aa1f4d941a4506e63d0d9e2b84e959
- - b5fc06549f1b0ce3261f9fb8868bb6d082edcbfe409c89a82e2b7e7a
+ - 7836f01a89afbfdd865aaae9b57c602c96d629184adf1b6ea66ca127
type: rasterhash
- algorithm: qgis:idwinterpolation
@@ -202,8 +185,7 @@ tests:
results:
OUTPUT:
hash:
- - d53cd7327d53bd4b8fb2de8b206e5aa0a1366963f2b63f58c2b7926e
- - b5fc06549f1b0ce3261f9fb8868bb6d082edcbfe409c89a82e2b7e7a
+ - 7836f01a89afbfdd865aaae9b57c602c96d629184adf1b6ea66ca127
type: rasterhash
- algorithm: native:removenullgeometries
diff --git a/python/pyplugin_installer/version_compare.py b/python/pyplugin_installer/version_compare.py
index 2871062e2bc1..cb2ee9e13d8e 100644
--- a/python/pyplugin_installer/version_compare.py
+++ b/python/pyplugin_installer/version_compare.py
@@ -126,9 +126,9 @@ def compareElements(s1, s2):
return 2
# if the strings aren't numeric or start from 0, compare them as a strings:
# but first, set ALPHA < BETA < PREVIEW < RC < TRUNK < [NOTHING] < [ANYTHING_ELSE]
- if s1 not in ["ALPHA", "BETA", "PREVIEW", "RC", "TRUNK"]:
+ if s1 not in ["A", "ALPHA", "B", "BETA", "PREVIEW", "RC", "TRUNK"]:
s1 = "Z" + s1
- if s2 not in ["ALPHA", "BETA", "PREVIEW", "RC", "TRUNK"]:
+ if s2 not in ["A", "ALPHA", "B", "BETA", "PREVIEW", "RC", "TRUNK"]:
s2 = "Z" + s2
# the final test:
if s1 > s2:
diff --git a/python/server/auto_generated/qgsserverparameters.sip.in b/python/server/auto_generated/qgsserverparameters.sip.in
index 236bde6c7fc0..495bd8f08bd2 100644
--- a/python/server/auto_generated/qgsserverparameters.sip.in
+++ b/python/server/auto_generated/qgsserverparameters.sip.in
@@ -70,42 +70,46 @@ Converts the parameter into a list of strings
:return: A list of strings
%End
- QList toIntList( bool &ok, char delimiter = ',' ) const;
+ QList toIntList( bool &ok, char delimiter = ',', bool skipEmptyParts = true ) const;
%Docstring
Converts the parameter into a list of integers.
:param ok: ``True`` if there's no error during the conversion, ``False`` otherwise
:param delimiter: The character used for delimiting
+:param skipEmptyParts: for splitting
:return: A list of integers
%End
- QList toDoubleList( bool &ok, char delimiter = ',' ) const;
+ QList toDoubleList( bool &ok, char delimiter = ',', bool skipEmptyParts = true ) const;
%Docstring
Converts the parameter into a list of doubles.
:param ok: ``True`` if there's no error during the conversion, ``False`` otherwise
:param delimiter: The character used for delimiting
+:param skipEmptyParts: for splitting
:return: A list of doubles
%End
- QList toColorList( bool &ok, char delimiter = ',' ) const;
+ QList toColorList( bool &ok, char delimiter = ',', bool skipEmptyParts = true ) const;
%Docstring
Converts the parameter into a list of colors.
:param ok: ``True`` if there's no error during the conversion, ``False`` otherwise
:param delimiter: The character used for delimiting
+:param skipEmptyParts: for splitting
:return: A list of colors
%End
- QList toGeomList( bool &ok, char delimiter = ',' ) const;
+ QList toGeomList( bool &ok, char delimiter = ',', bool skipEmptyParts = true ) const;
%Docstring
Converts the parameter into a list of geometries.
:param ok: ``True`` if there's no error during the conversion, ``False`` otherwise
:param delimiter: The character used for delimiting
+:param skipEmptyParts: for splitting
:return: A list of geometries
%End
diff --git a/python/server/class_map.yaml b/python/server/class_map.yaml
index f05c7ccdfd29..60ea87ccb1e5 100644
--- a/python/server/class_map.yaml
+++ b/python/server/class_map.yaml
@@ -217,39 +217,39 @@ QgsServerOgcApiHandler.templatePath: src/server/qgsserverogcapihandler.h#L332
QgsServerOgcApiHandler.values: src/server/qgsserverogcapihandler.h#L191
QgsServerOgcApiHandler.write: src/server/qgsserverogcapihandler.h#L313
QgsServerOgcApiHandler: src/server/qgsserverogcapihandler.h#L94
-QgsServerParameter.name: src/server/qgsserverparameters.h#L236
-QgsServerParameter.name: src/server/qgsserverparameters.h#L242
-QgsServerParameter.raiseError: src/server/qgsserverparameters.h#L231
-QgsServerParameter: src/server/qgsserverparameters.h#L193
+QgsServerParameter.name: src/server/qgsserverparameters.h#L240
+QgsServerParameter.name: src/server/qgsserverparameters.h#L246
+QgsServerParameter.raiseError: src/server/qgsserverparameters.h#L235
+QgsServerParameter: src/server/qgsserverparameters.h#L197
QgsServerParameterDefinition.isValid: src/server/qgsserverparameters.h#L63
-QgsServerParameterDefinition.loadUrl: src/server/qgsserverparameters.h#L173
-QgsServerParameterDefinition.raiseError: src/server/qgsserverparameters.h#L180
-QgsServerParameterDefinition.toBool: src/server/qgsserverparameters.h#L150
-QgsServerParameterDefinition.toColor: src/server/qgsserverparameters.h#L157
-QgsServerParameterDefinition.toDouble: src/server/qgsserverparameters.h#L144
-QgsServerParameterDefinition.toExpressionList: src/server/qgsserverparameters.h#L123
-QgsServerParameterDefinition.toInt: src/server/qgsserverparameters.h#L137
-QgsServerParameterDefinition.toOgcFilterList: src/server/qgsserverparameters.h#L116
-QgsServerParameterDefinition.toRectangle: src/server/qgsserverparameters.h#L130
+QgsServerParameterDefinition.loadUrl: src/server/qgsserverparameters.h#L177
+QgsServerParameterDefinition.raiseError: src/server/qgsserverparameters.h#L184
+QgsServerParameterDefinition.toBool: src/server/qgsserverparameters.h#L154
+QgsServerParameterDefinition.toColor: src/server/qgsserverparameters.h#L161
+QgsServerParameterDefinition.toDouble: src/server/qgsserverparameters.h#L148
+QgsServerParameterDefinition.toExpressionList: src/server/qgsserverparameters.h#L127
+QgsServerParameterDefinition.toInt: src/server/qgsserverparameters.h#L141
+QgsServerParameterDefinition.toOgcFilterList: src/server/qgsserverparameters.h#L120
+QgsServerParameterDefinition.toRectangle: src/server/qgsserverparameters.h#L134
QgsServerParameterDefinition.toString: src/server/qgsserverparameters.h#L69
QgsServerParameterDefinition.toStringList: src/server/qgsserverparameters.h#L77
-QgsServerParameterDefinition.toUrl: src/server/qgsserverparameters.h#L165
+QgsServerParameterDefinition.toUrl: src/server/qgsserverparameters.h#L169
QgsServerParameterDefinition.typeName: src/server/qgsserverparameters.h#L58
QgsServerParameterDefinition: src/server/qgsserverparameters.h#L34
-QgsServerParameters.add: src/server/qgsserverparameters.h#L286
-QgsServerParameters.clear: src/server/qgsserverparameters.h#L279
-QgsServerParameters.fileName: src/server/qgsserverparameters.h#L343
-QgsServerParameters.load: src/server/qgsserverparameters.h#L274
-QgsServerParameters.loadParameter: src/server/qgsserverparameters.h#L357
-QgsServerParameters.map: src/server/qgsserverparameters.h#L336
-QgsServerParameters.remove: src/server/qgsserverparameters.h#L292
-QgsServerParameters.remove: src/server/qgsserverparameters.h#L299
-QgsServerParameters.request: src/server/qgsserverparameters.h#L329
-QgsServerParameters.service: src/server/qgsserverparameters.h#L322
-QgsServerParameters.urlQuery: src/server/qgsserverparameters.h#L310
-QgsServerParameters.value: src/server/qgsserverparameters.h#L305
-QgsServerParameters.version: src/server/qgsserverparameters.h#L350
-QgsServerParameters: src/server/qgsserverparameters.h#L253
+QgsServerParameters.add: src/server/qgsserverparameters.h#L290
+QgsServerParameters.clear: src/server/qgsserverparameters.h#L283
+QgsServerParameters.fileName: src/server/qgsserverparameters.h#L347
+QgsServerParameters.load: src/server/qgsserverparameters.h#L278
+QgsServerParameters.loadParameter: src/server/qgsserverparameters.h#L361
+QgsServerParameters.map: src/server/qgsserverparameters.h#L340
+QgsServerParameters.remove: src/server/qgsserverparameters.h#L296
+QgsServerParameters.remove: src/server/qgsserverparameters.h#L303
+QgsServerParameters.request: src/server/qgsserverparameters.h#L333
+QgsServerParameters.service: src/server/qgsserverparameters.h#L326
+QgsServerParameters.urlQuery: src/server/qgsserverparameters.h#L314
+QgsServerParameters.value: src/server/qgsserverparameters.h#L309
+QgsServerParameters.version: src/server/qgsserverparameters.h#L354
+QgsServerParameters: src/server/qgsserverparameters.h#L257
QgsServerQueryStringParameter.description: src/server/qgsserverquerystringparameter.h#L120
QgsServerQueryStringParameter.hidden: src/server/qgsserverquerystringparameter.h#L145
QgsServerQueryStringParameter.name: src/server/qgsserverquerystringparameter.h#L130
diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt
index fdac9c286247..af25a73af2a1 100644
--- a/resources/CMakeLists.txt
+++ b/resources/CMakeLists.txt
@@ -90,7 +90,6 @@ endif()
ADD_QGIS_RESOURCES("${CMAKE_CURRENT_SOURCE_DIR}" resources DEST_RESOURCE_FILES "${RESOURCES_FILES}")
-message(STATUS "Using PROJ >= 6 srs database.")
set(SRSDB srs6.db)
add_custom_command(
diff --git a/resources/function_help/json/to_string b/resources/function_help/json/to_string
index 5a79aa75bf25..19b9ca6032ab 100644
--- a/resources/function_help/json/to_string
+++ b/resources/function_help/json/to_string
@@ -2,14 +2,14 @@
"name": "to_string",
"type": "function",
"groups": ["Conversions", "String"],
- "description": "Converts a number to string.",
+ "description": "Converts a number to string. The conversion is not locale-aware, see 'format_number' for a locale-aware alternative.",
"arguments": [{
"arg": "number",
"description": "Integer or real value. The number to convert to string."
}],
"examples": [{
- "expression": "to_string(123)",
- "returns": "'123'"
+ "expression": "to_string(1.23)",
+ "returns": "'1.23'"
}],
"tags": ["converts", "number"]
}
diff --git a/scripts/qstringfixup.py b/scripts/code_fixup.py
similarity index 86%
rename from scripts/qstringfixup.py
rename to scripts/code_fixup.py
index fff0d0446adc..cb9219625a9c 100644
--- a/scripts/qstringfixup.py
+++ b/scripts/code_fixup.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
###########################################################################
-# qstringfixup.py
+# code_fixup.py
# ---------------
# Date : October 2020
# Copyright : (C) 2020 by Even Rouault
@@ -26,14 +26,15 @@
# DEALINGS IN THE SOFTWARE.
###########################################################################
-# This script fixes several suboptimal uses of QStringLiteral where QLatin1String would be better
+# This script fixes several suboptimal uses of QStringLiteral where QLatin1String would be better,
+# and other auto code-cleaning operations (such as use of auto with std::make_unique)
# It is not automatically run yet.
# Run it on whole code base with:
-# ../scripts/qstringfixup.sh --all
+# ../scripts/code_fixup.sh --all
# or on modified files only with:
-# ../scripts/qstringfixup.sh
+# ../scripts/code_fixup.sh
import re
import sys
@@ -93,6 +94,16 @@
r"""(.*)(.startsWith\(|.endsWith\(|.indexOf\(|.lastIndexOf\(|\+=) QLatin1String\( ("[^"]") \)(.*)"""
)
+make_unique_shared = re.compile(
+ r"""^(\s*)std::(?:unique|shared)_ptr<\s*(.*?)\s*>(\s*.*?\s*=\s*std::make_(?:unique|shared)<\s*(.*?)\s*>.*)$"""
+)
+make_unique_shared2 = re.compile(
+ r"""^(\s*)std::(?:unique|shared)_ptr<\s*(.*?)\s*>(?:\s*(.*?)\s*\()\s*(std::make_(?:unique|shared)<\s*(.*?)\s*>.*?)\s*\)\s*;$"""
+)
+make_unique3 = re.compile(
+ r"""^(\s*)std::unique_ptr<\s*(.*?)\s*>(?:\s*(.*?)\s*\()\s*new\s*(.*?)\s*(\(.*\s*\))\s*\)\s*;"""
+)
+
def qlatin1char_or_string(x):
"""x is a double quoted string"""
@@ -225,5 +236,26 @@ def qlatin1char_or_string(x):
else:
break
+ m = make_unique_shared.match(line)
+ if m and m.group(2) == m.group(4):
+ line = m.group(1) + "auto" + m.group(3)
+
+ m = make_unique_shared2.match(line)
+ if m and m.group(2) == m.group(5):
+ line = m.group(1) + "auto " + m.group(3) + " = " + m.group(4) + ";"
+
+ m = make_unique3.match(line)
+ if m and m.group(2) == m.group(4):
+ line = (
+ m.group(1)
+ + "auto "
+ + m.group(3)
+ + " = std::make_unique<"
+ + m.group(4)
+ + ">"
+ + m.group(5)
+ + ";"
+ )
+
print(line)
i += 1
diff --git a/scripts/qstringfixup.sh b/scripts/code_fixup.sh
similarity index 95%
rename from scripts/qstringfixup.sh
rename to scripts/code_fixup.sh
index 032d41576012..a53f3893ba43 100755
--- a/scripts/qstringfixup.sh
+++ b/scripts/code_fixup.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
###########################################################################
-# qstringfixup.sh
+# code_fixup.sh
# ---------------
# Date : October 2020
# Copyright : (C) 2020 by Even Rouault
@@ -59,8 +59,8 @@ for f in $MODIFIED; do
;;
esac
- m=$f.qstringfixup
- python "${TOPLEVEL}/scripts/qstringfixup.py" "$f" > "$m"
+ m=$f.code_fixup
+ python "${TOPLEVEL}/scripts/code_fixup.py" "$f" > "$m"
if diff -u "$m" "$f" >/dev/null; then
# no difference found
rm "$m"
diff --git a/scripts/cppcheck.sh b/scripts/cppcheck.sh
index 6ee87f5d63bb..43ffbae15698 100755
--- a/scripts/cppcheck.sh
+++ b/scripts/cppcheck.sh
@@ -14,10 +14,12 @@ case $SCRIPT_DIR in
;;
esac
+SRC_DIR=${1:-${SCRIPT_DIR}/../src}
+
LOG_FILE=/tmp/cppcheck_qgis.txt
rm -f ${LOG_FILE}
-echo "Checking ${SCRIPT_DIR}/../src ..."
+echo "Checking ${SRC_DIR} ..."
# qgsgcptransformer.cpp causes an effective hang on newer cppcheck!
@@ -51,7 +53,7 @@ cppcheck --library=qt.cfg --inline-suppr \
-DBUILTIN_UNREACHABLE="__builtin_unreachable();" \
-i src/analysis/georeferencing/qgsgcptransformer.cpp \
-j $(nproc) \
- ${SCRIPT_DIR}/../src \
+ ${SRC_DIR} \
>>${LOG_FILE} 2>&1 &
PID=$!
diff --git a/scripts/jenkins_run.sh b/scripts/jenkins_run.sh
deleted file mode 100755
index c9237e8497d8..000000000000
--- a/scripts/jenkins_run.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-
-if [ -d build ]
-then
- rm -rf build
-fi
-
-mkdir build
-cd build || exit
-cmake ..
-#xvfb-run --auto-servernum --server-num=1 --server-args="-screen 0 1024x768x24" make Experimental || true
-make Experimental || true
-#TRES=0
-#ctest -T test --no-compress-output || true
-if [ -f Testing/TAG ] ; then
- xsltproc ../tests/ctest2junix.xsl Testing/$(head -n 1 < Testing/TAG)/Test.xml > CTestResults.xml
-fi
diff --git a/scripts/listpulls.pl b/scripts/listpulls.pl
deleted file mode 100644
index 39f4b78d3c10..000000000000
--- a/scripts/listpulls.pl
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env perl
-
-use strict;
-use warnings;
-
-use JSON;
-use LWP::UserAgent;
-
-my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });
-my $res = $ua->get( "https://api.github.com/repos/qgis/qgis/pulls" );
-
-die "pull request retrieval failed: " . $res->status_line unless $res->is_success;
-
-my %assigned;
-
-printf "%5s %-16s %s\n", "#", "Assignee", "Title";
-foreach my $pull ( sort { $a->{number} <=> $b->{number} } @{ JSON::from_json( $res->decoded_content ) } ) {
- my $assignee = $pull->{assignee}->{login};
- $assignee = "" unless defined $assignee;
-
- push @{ $assigned{$assignee} }, $pull->{number};
-
- printf "%5d %-16s %s\n", $pull->{number}, $assignee || "", $pull->{title};
-}
-
-print "\nASSIGNMENTS:\n";
-
-foreach my $assignee ( sort keys %assigned ) {
- printf "%-22s %s\n", $assignee || "unassigned", join( ", ", sort { $a <=> $b } @{ $assigned{$assignee} } );
-}
diff --git a/scripts/pyqt5_to_pyqt6/pyqt5_to_pyqt6.py b/scripts/pyqt5_to_pyqt6/pyqt5_to_pyqt6.py
index e238b550a4b6..db222da8ac28 100755
--- a/scripts/pyqt5_to_pyqt6/pyqt5_to_pyqt6.py
+++ b/scripts/pyqt5_to_pyqt6/pyqt5_to_pyqt6.py
@@ -63,6 +63,7 @@
QtGui,
QtNetwork,
QtPrintSupport,
+ QtQuickWidgets,
QtSql,
QtSvg,
QtTest,
@@ -74,6 +75,7 @@
from PyQt6.QtGui import * # noqa: F403
from PyQt6.QtNetwork import * # noqa: F403
from PyQt6.QtPrintSupport import * # noqa: F403
+from PyQt6.QtQuickWidgets import * # noqa: F403
from PyQt6.QtSql import * # noqa: F403
from PyQt6.QtTest import * # noqa: F403
from PyQt6.QtWidgets import * # noqa: F403
@@ -109,6 +111,7 @@
QtXml,
QtNetwork,
QtPrintSupport,
+ QtQuickWidgets,
Qsci,
]
if qgis_core is not None:
diff --git a/scripts/remove_non_svn_files.sh b/scripts/remove_non_svn_files.sh
deleted file mode 100644
index 792cfec9351b..000000000000
--- a/scripts/remove_non_svn_files.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-###########################################################################
-# remove_non_svn_files.sh
-# ---------------------
-# Date : August 2008
-# Copyright : (C) 2008 by Tim Sutton
-# Email : tim at kartoza dot com
-###########################################################################
-# #
-# This program is free software; you can redistribute it and/or modify #
-# it under the terms of the GNU General Public License as published by #
-# the Free Software Foundation; either version 2 of the License, or #
-# (at your option) any later version. #
-# #
-###########################################################################
-
-
-#
-# A simple script to get rid of files that are not
-# managed by svn. It will request confirmation before
-# deleting each file.
-#
-
-for FILE in $(svn status |grep "^?" | awk '{print $2}');do rm -i -r $FILE; done
diff --git a/scripts/sipdiff b/scripts/sipdiff
deleted file mode 100755
index 9994a0d903aa..000000000000
--- a/scripts/sipdiff
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env bash
-
-DIR=$(git rev-parse --show-toplevel)
-
-# ARGUMENTS
-SIPIFY=NO
-while getopts ":s" opt; do
- case $opt in
- s)
- # sipify header
- SIPIFY=YES
- ;;
- \?)
- echo "Invalid option: -$OPTARG" >&2
- exit 1
- ;;
- esac
-done
-shift $(($OPTIND - 1))
-
-
-
-for file in $*; do
- d=${file#*/}
- d=${d%/*}
- f=${file##*/}
- f=${f%.*}
- header="src/$d/$f.h"
-
- if ! grep -Fxq "$d/$f.sip" python/auto_sip.blocklist; then
- echo -e "\033[0;31m$d/$f.sip is an automatically generated SIP file\033[0m"
- echo -e " g) \x1B[4mg\x1B[0menerate the SIP file \033[0;32m./scripts/sipify.pl $header > python/$d/$f.sip\033[0m"
- echo -e " s) \x1B[4ms\x1B[0mhow the diff"
- SHOW=NO
- while read -n 1 n; do
- echo ""
- case $n in
- g)
- echo "Generating the SIP file ..."
- pushd ${DIR}
- ./scripts/sipify.pl $header > python/$d/$f.sip
- popd
- break
- ;;
- s)
- SHOW=YES
- break
- ;;
- *)
- invalid option
- ;;
- esac
- done
- if [[ $SHOW =~ NO ]]; then
- continue
- fi
- fi
-
- if [[ $SIPIFY =~ YES ]]; then
- tempfile=$(mktemp ${DIR}/${f}XXXX --suffix=.h)
- ${DIR}/scripts/sipify.pl ${DIR}/$header > $tempfile
- else
- tempfile=$header
- fi
- vimdiff $tempfile python/$d/$f.sip
-
-done
diff --git a/scripts/widgets_tree.py b/scripts/widgets_tree.py
deleted file mode 100644
index 10a2b4efe024..000000000000
--- a/scripts/widgets_tree.py
+++ /dev/null
@@ -1,204 +0,0 @@
-#!/usr/bin/env python3
-
-"""
-***************************************************************************
- widgets_tree.py
- ---------------------
- Date : May 2011
- Copyright : (C) 2011 by Martin Dobias
- Email : wonder dot sk at gmail dot com
-***************************************************************************
-* *
-* This program is free software; you can redistribute it and/or modify *
-* it under the terms of the GNU General Public License as published by *
-* the Free Software Foundation; either version 2 of the License, or *
-* (at your option) any later version. *
-* *
-***************************************************************************
-"""
-
-__author__ = "Martin Dobias"
-__date__ = "May 2011"
-__copyright__ = "(C) 2011, Martin Dobias"
-
-"""
-Reads .ui files from ../src/ui/ directory and write to stdout an XML describing
-widgets tree.
-
-Python bindings must be compiled and in PYTHONPATH
-
-QGIS libraries must be in LD_LIBRARY_PATH
-
-Output should go to ../resources/customization.xml
-
-"""
-
-import glob
-import os
-import sys
-
-# qwt_plot is missing somehow but it may depend on installed packages
-from qgis.PyQt import Qwt5 as qwt_plot
-from qgis.PyQt.QtWidgets import (
- QCheckBox,
- QComboBox,
- QDateEdit,
- QDateTimeEdit,
- QDial,
- QDialog,
- QDialogButtonBox,
- QGroupBox,
- QLabel,
- QLCDNumber,
- QLineEdit,
- QListView,
- QProgressBar,
- QPushButton,
- QRadioButton,
- QScrollArea,
- QScrollBar,
- QSlider,
- QSpinBox,
- QStackedWidget,
- QTableView,
- QTabWidget,
- QTextBrowser,
- QTextEdit,
- QTimeEdit,
- QWidget,
-)
-from qgis.PyQt.QtXml import QDomDocument
-from qgis.PyQt.uic import loadUi
-
-sys.modules["qwt_plot"] = qwt_plot
-
-# loadUi is looking for custom widget in module which is lowercase version of
-# the class, which do not exist (AFAIK) -> preload them, problems anyway:
-# missing in gui: QgsColorRampComboBox, QgsRendererRulesTreeWidget,
-# QgsRendererRulesTreeWidget
-# and QgsProjectionSelector cannot open db file
-from qgis import gui
-
-for m in [
- "qgscolorbutton",
- "qgscolorrampcombobox",
- "qgsprojectionselector",
- "qgslabelpreview",
- "qgsrulebasedrendererwidget",
- "qgscollapsiblegroupbox",
- "qgsblendmodecombobox",
- "qgsexpressionbuilderwidget",
- "qgsrasterformatsaveoptionswidget",
- "qgsrasterpyramidsoptionswidget",
- "qgsscalecombobox",
- "qgsfilterlineedit",
- "qgsdualview",
-]:
- sys.modules[m] = gui
-
-
-class UiInspector:
-
- def __init__(self):
- self.ui_dir = os.path.abspath(
- os.path.join(os.path.dirname(__file__), "../src/ui/*.ui")
- )
- self.printMsg("Loading UI files " + self.ui_dir)
- # list of widget classes we want to follow
- self.follow = [
- QWidget,
- QDialog,
- QCheckBox,
- QComboBox,
- QDial,
- QPushButton,
- QLabel,
- QLCDNumber,
- QLineEdit,
- QRadioButton,
- QScrollBar,
- QSlider,
- QSpinBox,
- QTextEdit,
- QDateEdit,
- QTimeEdit,
- QDateTimeEdit,
- QListView,
- QProgressBar,
- QTableView,
- QTabWidget,
- QTextBrowser,
- QDialogButtonBox,
- QScrollArea,
- QGroupBox,
- QStackedWidget,
- ]
-
- def printMsg(self, msg):
- sys.stderr.write(msg + "\n")
-
- def widgetXml(self, element, widget, level=0, label=None):
- # print tostring ( element )
- # self.printMsg ( "class: " + str( type ( widget ) ) )
- # self.printMsg ( "objectName: " + widget.objectName() )
- # self.printMsg ( "windowTitle: " + widget.windowTitle() )
-
- if not widget.objectName():
- return
-
- lab = label
- if hasattr(widget, "text"):
- lab = widget.text()
- if widget.windowTitle():
- label = widget.windowTitle()
- if not lab:
- lab = ""
-
- subElement = self.doc.createElement("widget")
- subElement.setAttribute("class", widget.__class__.__name__)
- subElement.setAttribute("objectName", widget.objectName())
- subElement.setAttribute("label", lab)
- element.appendChild(subElement)
-
- # print str ( widget.children () )
- # tab widget label is stored in QTabWidget->QTabBarPrivate->tabList->QTab ..
- if type(widget) in [QTabWidget]:
- children = list(
- {"widget": widget.widget(i), "label": widget.tabText(i)}
- for i in range(0, widget.count())
- )
- else:
- children = list({"widget": c, "label": None} for c in widget.children())
- for child in children:
- w = child["widget"]
- if w.isWidgetType() and (type(w) in self.follow):
- self.widgetXml(subElement, w, level + 1, child["label"])
-
- def xml(self):
- self.doc = QDomDocument()
- element = self.doc.createElement("qgiswidgets")
- self.doc.appendChild(element)
- for p in glob.glob(self.ui_dir):
- self.printMsg("Loading " + p)
- # qgsrasterlayerpropertiesbase.ui is giving: No module named qwt_plot
- try:
- widget = loadUi(p)
- # print dir ( ui )
- self.widgetXml(element, widget)
- except Exception as e:
- self.printMsg(str(e))
-
- return self.doc.toString(2)
-
-
-if __name__ == "__main__":
- from qgis.PyQt.QtCore import QApplication
-
- app = QApplication(sys.argv) # required by loadUi
- inspector = UiInspector()
- xml = inspector.xml()
- sys.stdout.write(xml)
- sys.stdout.flush()
-
- del app
- sys.exit(0)
diff --git a/src/3d/chunks/qgschunkboundsentity_p.cpp b/src/3d/chunks/qgschunkboundsentity_p.cpp
index b9a2ed9b1154..a73782c2ab6a 100644
--- a/src/3d/chunks/qgschunkboundsentity_p.cpp
+++ b/src/3d/chunks/qgschunkboundsentity_p.cpp
@@ -20,12 +20,15 @@
#include "qgsaabb.h"
#include "qgs3dwiredmesh_p.h"
+#include "qgsbox3d.h"
+#include "qgsgeotransform.h"
///@cond PRIVATE
-QgsChunkBoundsEntity::QgsChunkBoundsEntity( Qt3DCore::QNode *parent )
+QgsChunkBoundsEntity::QgsChunkBoundsEntity( const QgsVector3D &vertexDataOrigin, Qt3DCore::QNode *parent )
: Qt3DCore::QEntity( parent )
+ , mVertexDataOrigin( vertexDataOrigin )
{
mAabbMesh = new Qgs3DWiredMesh;
addComponent( mAabbMesh );
@@ -33,11 +36,20 @@ QgsChunkBoundsEntity::QgsChunkBoundsEntity( Qt3DCore::QNode *parent )
Qt3DExtras::QPhongMaterial *bboxesMaterial = new Qt3DExtras::QPhongMaterial;
bboxesMaterial->setAmbient( Qt::red );
addComponent( bboxesMaterial );
+
+ QgsGeoTransform *transform = new QgsGeoTransform;
+ transform->setGeoTranslation( mVertexDataOrigin );
+ addComponent( transform );
}
-void QgsChunkBoundsEntity::setBoxes( const QList &bboxes )
+void QgsChunkBoundsEntity::setBoxes( const QList &bboxes )
{
- mAabbMesh->setVertices( bboxes );
+ QList aabbBoxes;
+ for ( const QgsBox3D &box : bboxes )
+ {
+ aabbBoxes << QgsAABB::fromBox3D( box, mVertexDataOrigin );
+ }
+ mAabbMesh->setVertices( aabbBoxes );
}
/// @endcond
diff --git a/src/3d/chunks/qgschunkboundsentity_p.h b/src/3d/chunks/qgschunkboundsentity_p.h
index 5e3ff8c4ecf3..c7450a6cf15d 100644
--- a/src/3d/chunks/qgschunkboundsentity_p.h
+++ b/src/3d/chunks/qgschunkboundsentity_p.h
@@ -29,7 +29,9 @@
#include
-class QgsAABB;
+#include "qgsvector3d.h"
+
+class QgsBox3D;
class Qgs3DWiredMesh;
#define SIP_NO_FILE
@@ -46,12 +48,16 @@ class QgsChunkBoundsEntity : public Qt3DCore::QEntity
public:
//! Constructs the entity
- QgsChunkBoundsEntity( Qt3DCore::QNode *parent = nullptr );
+ QgsChunkBoundsEntity( const QgsVector3D &vertexDataOrigin, Qt3DCore::QNode *parent = nullptr );
//! Sets a list of bounding boxes to be rendered by the entity
- void setBoxes( const QList &bboxes );
+ void setBoxes( const QList &bboxes );
+
+ //! Returns origin of vertex data used in this entity
+ QgsVector3D vertexDataOrigin() const { return mVertexDataOrigin; }
private:
+ QgsVector3D mVertexDataOrigin;
Qgs3DWiredMesh *mAabbMesh = nullptr;
};
diff --git a/src/3d/chunks/qgschunkedentity.cpp b/src/3d/chunks/qgschunkedentity.cpp
index 51008b28a6ae..b189b93cb630 100644
--- a/src/3d/chunks/qgschunkedentity.cpp
+++ b/src/3d/chunks/qgschunkedentity.cpp
@@ -201,9 +201,9 @@ void QgsChunkedEntity::handleSceneUpdate( const SceneContext &sceneContext )
if ( mBboxesEntity )
{
- QList bboxes;
+ QList bboxes;
for ( QgsChunkNode *n : std::as_const( mActiveNodes ) )
- bboxes << Qgs3DUtils::mapToWorldExtent( n->box3D(), mMapSettings->origin() );
+ bboxes << n->box3D();
mBboxesEntity->setBoxes( bboxes );
}
@@ -301,7 +301,7 @@ void QgsChunkedEntity::setShowBoundingBoxes( bool enabled )
if ( enabled )
{
- mBboxesEntity = new QgsChunkBoundsEntity( this );
+ mBboxesEntity = new QgsChunkBoundsEntity( mRootNode->box3D().center(), this );
}
else
{
@@ -612,9 +612,10 @@ void QgsChunkedEntity::onActiveJobFinished()
QgsChunkNode *node = job->chunk();
- if ( QgsChunkLoader *loader = qobject_cast( job ) )
+ if ( node->state() == QgsChunkNode::Loading )
{
- Q_ASSERT( node->state() == QgsChunkNode::Loading );
+ QgsChunkLoader *loader = qobject_cast( job );
+ Q_ASSERT( loader );
Q_ASSERT( node->loader() == loader );
QgsEventTracing::addEvent( QgsEventTracing::AsyncEnd, QStringLiteral( "3D" ), QStringLiteral( "Load " ) + node->tileId().text(), node->tileId().text() );
@@ -653,6 +654,18 @@ void QgsChunkedEntity::onActiveJobFinished()
else
{
Q_ASSERT( node->state() == QgsChunkNode::Updating );
+
+ // This is a special case when we're replacing the node's entity
+ // with QgsChunkUpdaterFactory passed to updatedNodes(). The returned
+ // updater is actually a chunk loader that will give us a completely
+ // new QEntity, so we just delete the old one and use the new one
+ if ( QgsChunkLoader *nodeUpdater = qobject_cast( node->updater() ) )
+ {
+ Qt3DCore::QEntity *newEntity = nodeUpdater->createEntity( this );
+ node->replaceEntity( newEntity );
+ emit newEntityCreated( newEntity );
+ }
+
QgsEventTracing::addEvent( QgsEventTracing::AsyncEnd, QStringLiteral( "3D" ), QStringLiteral( "Update" ), node->tileId().text() );
node->setUpdated();
}
diff --git a/src/3d/chunks/qgschunkloader.h b/src/3d/chunks/qgschunkloader.h
index 1d19f5386eac..21b858decc6d 100644
--- a/src/3d/chunks/qgschunkloader.h
+++ b/src/3d/chunks/qgschunkloader.h
@@ -144,6 +144,31 @@ class _3D_EXPORT QgsQuadtreeChunkLoaderFactory : public QgsChunkLoaderFactory
int mMaxLevel = 0;
};
+/**
+ * \ingroup 3d
+ * Factory that uses a chunk loader factory for in-place updates
+ * of loaded nodes. Use it with QgsChunkedEntity::updateNodes()
+ * to rebuild entity of an existing node.
+ *
+ * \since QGIS 3.42
+ */
+class QgsChunkUpdaterFactory : public QgsChunkQueueJobFactory
+{
+ public:
+ QgsChunkUpdaterFactory( QgsChunkLoaderFactory *loaderFactory )
+ : mChunkLoaderFactory( loaderFactory )
+ {
+ }
+
+ QgsChunkQueueJob *createJob( QgsChunkNode *chunk ) override
+ {
+ return mChunkLoaderFactory->createChunkLoader( chunk );
+ }
+
+ private:
+ QgsChunkLoaderFactory *mChunkLoaderFactory;
+};
+
/// @endcond
#endif // QGSCHUNKLOADER_H
diff --git a/src/3d/chunks/qgschunknode.cpp b/src/3d/chunks/qgschunknode.cpp
index a6e833980425..8639ec4ec667 100644
--- a/src/3d/chunks/qgschunknode.cpp
+++ b/src/3d/chunks/qgschunknode.cpp
@@ -238,6 +238,17 @@ void QgsChunkNode::setUpdated()
mState = QgsChunkNode::Loaded;
}
+void QgsChunkNode::replaceEntity( Qt3DCore::QEntity *newEntity )
+{
+ Q_ASSERT( mState == QgsChunkNode::Updating );
+ Q_ASSERT( mUpdater );
+ Q_ASSERT( mEntity );
+ Q_ASSERT( newEntity );
+
+ mEntity->deleteLater();
+ mEntity = newEntity;
+}
+
void QgsChunkNode::setExactBox3D( const QgsBox3D &box3D )
{
mBox3D = box3D;
diff --git a/src/3d/chunks/qgschunknode.h b/src/3d/chunks/qgschunknode.h
index 38ed56daaa60..c6d1d7f87186 100644
--- a/src/3d/chunks/qgschunknode.h
+++ b/src/3d/chunks/qgschunknode.h
@@ -239,6 +239,9 @@ class QgsChunkNode
//! mark node that it finished updating - back to loaded node
void setUpdated();
+ //! replaces an existing entity with a newly created one (only allowed when updating the node)
+ void replaceEntity( Qt3DCore::QEntity *newEntity );
+
//! called when the true bounding box is known so that we can use tighter bounding box
void setExactBox3D( const QgsBox3D &box3D );
diff --git a/src/3d/mesh/qgsmesh3dmaterial_p.cpp b/src/3d/mesh/qgsmesh3dmaterial_p.cpp
index e7880304fc32..67140bef778e 100644
--- a/src/3d/mesh/qgsmesh3dmaterial_p.cpp
+++ b/src/3d/mesh/qgsmesh3dmaterial_p.cpp
@@ -208,7 +208,7 @@ void QgsMesh3DMaterial::configureArrows( QgsMeshLayer *layer, const QgsDateTimeR
QVector vectors( 1 );
QSize gridSize( 1, 1 );
QgsPointXY minCorner;
- std::unique_ptr arrowsEnabledParameter = std::make_unique( "arrowsEnabled", nullptr );
+ auto arrowsEnabledParameter = std::make_unique( "arrowsEnabled", nullptr );
if ( !layer || mMagnitudeType != MagnitudeType::ScalarDataSet || !mSymbol->arrowsEnabled() || meta.isScalar() || !datasetIndex.isValid() )
arrowsEnabledParameter->setValue( false );
else
diff --git a/src/3d/qgs3dmapscene.cpp b/src/3d/qgs3dmapscene.cpp
index 9f36f7bc9f0f..1845df0759c2 100644
--- a/src/3d/qgs3dmapscene.cpp
+++ b/src/3d/qgs3dmapscene.cpp
@@ -748,6 +748,7 @@ void Qgs3DMapScene::removeLayerEntity( QgsMapLayer *layer )
QgsPointCloudLayer *pclayer = qobject_cast( layer );
disconnect( pclayer, &QgsPointCloudLayer::renderer3DChanged, this, &Qgs3DMapScene::onLayerRenderer3DChanged );
disconnect( pclayer, &QgsPointCloudLayer::subsetStringChanged, this, &Qgs3DMapScene::onLayerRenderer3DChanged );
+ disconnect( pclayer, &QgsPointCloudLayer::layerModified, this, &Qgs3DMapScene::onLayerRenderer3DChanged );
}
}
diff --git a/src/3d/qgs3dmapsettings.cpp b/src/3d/qgs3dmapsettings.cpp
index be5af2bd27da..43193c663933 100644
--- a/src/3d/qgs3dmapsettings.cpp
+++ b/src/3d/qgs3dmapsettings.cpp
@@ -200,7 +200,7 @@ void Qgs3DMapSettings::readXml( const QDomElement &elem, const QgsReadWriteConte
QDomElement elemPointLight = elemPointLights.firstChildElement( QStringLiteral( "point-light" ) );
while ( !elemPointLight.isNull() )
{
- std::unique_ptr pointLight = std::make_unique();
+ auto pointLight = std::make_unique();
pointLight->readXml( elemPointLight, context );
mLightSources << pointLight.release();
elemPointLight = elemPointLight.nextSiblingElement( QStringLiteral( "point-light" ) );
@@ -209,7 +209,7 @@ void Qgs3DMapSettings::readXml( const QDomElement &elem, const QgsReadWriteConte
else
{
// QGIS <= 3.4 did not have light configuration
- std::unique_ptr defaultLight = std::make_unique();
+ auto defaultLight = std::make_unique();
defaultLight->setPosition( QgsVector3D( 0, 1000, 0 ) );
mLightSources << defaultLight.release();
}
@@ -220,7 +220,7 @@ void Qgs3DMapSettings::readXml( const QDomElement &elem, const QgsReadWriteConte
QDomElement elemDirectionalLight = elemDirectionalLights.firstChildElement( QStringLiteral( "directional-light" ) );
while ( !elemDirectionalLight.isNull() )
{
- std::unique_ptr directionalLight = std::make_unique();
+ auto directionalLight = std::make_unique();
directionalLight->readXml( elemDirectionalLight, context );
mLightSources << directionalLight.release();
elemDirectionalLight = elemDirectionalLight.nextSiblingElement( QStringLiteral( "directional-light" ) );
diff --git a/src/3d/qgs3dsceneexporter.cpp b/src/3d/qgs3dsceneexporter.cpp
index 8ed99418e37f..608c5fc1dd9b 100644
--- a/src/3d/qgs3dsceneexporter.cpp
+++ b/src/3d/qgs3dsceneexporter.cpp
@@ -469,7 +469,7 @@ void Qgs3DSceneExporter::parseMeshTile( QgsTerrainTileEntity *tileEntity, const
{
QString objectNamePrefix = layerName;
if ( objectNamePrefix != QString() )
- objectNamePrefix += QStringLiteral( "_" );
+ objectNamePrefix += QLatin1Char( '_' );
const QList renderers = tileEntity->findChildren();
for ( Qt3DRender::QGeometryRenderer *renderer : renderers )
diff --git a/src/3d/qgs3dutils.cpp b/src/3d/qgs3dutils.cpp
index 3218b327f3c8..053c94586110 100644
--- a/src/3d/qgs3dutils.cpp
+++ b/src/3d/qgs3dutils.cpp
@@ -813,7 +813,7 @@ std::unique_ptr Qgs3DUtils::convert2DPointCloudRen
if ( symbol3D )
{
- std::unique_ptr renderer3D = std::make_unique();
+ auto renderer3D = std::make_unique();
renderer3D->setSymbol( symbol3D.release() );
return renderer3D;
}
@@ -976,10 +976,17 @@ int Qgs3DUtils::openGlMaxClipPlanes( QSurface *surface )
context.setFormat( QSurfaceFormat::defaultFormat() );
if ( context.create() )
{
- context.makeCurrent( surface );
- QOpenGLFunctions *funcs = context.functions();
- funcs->glGetIntegerv( GL_MAX_CLIP_PLANES, &numPlanes );
+ if ( context.makeCurrent( surface ) )
+ {
+ QOpenGLFunctions *funcs = context.functions();
+ funcs->glGetIntegerv( GL_MAX_CLIP_PLANES, &numPlanes );
+ }
}
return numPlanes;
}
+
+QQuaternion Qgs3DUtils::rotationFromPitchHeadingAngles( float pitchAngle, float headingAngle )
+{
+ return QQuaternion::fromAxisAndAngle( QVector3D( 0, 0, 1 ), headingAngle ) * QQuaternion::fromAxisAndAngle( QVector3D( 1, 0, 0 ), pitchAngle );
+}
diff --git a/src/3d/qgs3dutils.h b/src/3d/qgs3dutils.h
index f95058c0a8c7..e2689ecb01ab 100644
--- a/src/3d/qgs3dutils.h
+++ b/src/3d/qgs3dutils.h
@@ -340,6 +340,14 @@ class _3D_EXPORT Qgs3DUtils
* \since QGIS 3.42
*/
static int openGlMaxClipPlanes( QSurface *surface );
+
+ /**
+ * Returns rotation quaternion that performs rotation around X axis by pitchAngle,
+ * followed by rotation around Z axis by headingAngle (both angles in degrees).
+ *
+ * \since QGIS 3.42
+ */
+ static QQuaternion rotationFromPitchHeadingAngles( float pitchAngle, float headingAngle );
};
#endif // QGS3DUTILS_H
diff --git a/src/3d/qgsaabb.h b/src/3d/qgsaabb.h
index f63e2f3d6eb7..d7bf72b4cd43 100644
--- a/src/3d/qgsaabb.h
+++ b/src/3d/qgsaabb.h
@@ -22,6 +22,8 @@
#include
#include
+#include "qgsbox3d.h"
+
#define SIP_NO_FILE
/**
@@ -38,6 +40,16 @@ class _3D_EXPORT QgsAABB
//! Constructs bounding box
QgsAABB( float xMin, float yMin, float zMin, float xMax, float yMax, float zMax );
+ /**
+ * Constructs bounding box from QgsBox3D by subtracting origin 3D vector.
+ * Note: this is potentially lossy operation as the coordinates are converted
+ * from double values to floats!
+ */
+ static QgsAABB fromBox3D( const QgsBox3D &box3D, const QgsVector3D &origin )
+ {
+ return QgsAABB( static_cast( box3D.xMinimum() - origin.x() ), static_cast( box3D.yMinimum() - origin.y() ), static_cast( box3D.zMinimum() - origin.z() ), static_cast( box3D.xMaximum() - origin.x() ), static_cast( box3D.yMaximum() - origin.y() ), static_cast( box3D.zMaximum() - origin.z() ) );
+ }
+
//! Returns box width in X axis
float xExtent() const { return xMax - xMin; }
//! Returns box width in Y axis
diff --git a/src/3d/qgscameracontroller.cpp b/src/3d/qgscameracontroller.cpp
index b06d61fc6721..b889a069a4e3 100644
--- a/src/3d/qgscameracontroller.cpp
+++ b/src/3d/qgscameracontroller.cpp
@@ -93,25 +93,20 @@ void QgsCameraController::setVerticalAxisInversion( Qgis::VerticalAxisInversion
mVerticalAxisInversion = inversion;
}
-void QgsCameraController::rotateCamera( float diffPitch, float diffYaw )
+void QgsCameraController::rotateCamera( float diffPitch, float diffHeading )
{
- const float pitch = mCameraPose.pitchAngle();
- const float yaw = mCameraPose.headingAngle();
+ const float oldPitch = mCameraPose.pitchAngle();
+ const float oldHeading = mCameraPose.headingAngle();
+ float newPitch = oldPitch + diffPitch;
+ float newHeading = oldHeading + diffHeading;
- if ( pitch + diffPitch > 180 )
- diffPitch = 180 - pitch; // prevent going over the head
- if ( pitch + diffPitch < 0 )
- diffPitch = 0 - pitch; // prevent going over the head
+ newPitch = std::clamp( newPitch, 0.f, 180.f ); // prevent going over the head
- // Is it always going to be love/hate relationship with quaternions???
- // This quaternion combines two rotations:
- // - first it undoes the previously applied rotation so we have do not have any rotation compared to world coords
- // - then it applies new rotation
+ // First undo the previously applied rotation, then apply the new rotation
// (We can't just apply our euler angles difference because the camera may be already rotated)
- // BONUS: we use two separate fromEulerAngles() calls because one would not do rotations in order we need
- const QQuaternion q1 = QQuaternion::fromEulerAngles( 0, 0, yaw + diffYaw ) * QQuaternion::fromEulerAngles( pitch + diffPitch, 0, 0 );
- const QQuaternion q2 = QQuaternion::fromEulerAngles( 0, 0, yaw ) * QQuaternion::fromEulerAngles( pitch, 0, 0 );
- const QQuaternion q = q1 * q2.conjugated();
+ const QQuaternion qNew = Qgs3DUtils::rotationFromPitchHeadingAngles( newPitch, newHeading );
+ const QQuaternion qOld = Qgs3DUtils::rotationFromPitchHeadingAngles( oldPitch, oldHeading );
+ const QQuaternion q = qNew * qOld.conjugated();
// get camera's view vector, rotate it to get new view center
const QVector3D position = mCamera->position();
@@ -121,11 +116,47 @@ void QgsCameraController::rotateCamera( float diffPitch, float diffYaw )
viewCenter = position + cameraToCenter;
mCameraPose.setCenterPoint( viewCenter );
- mCameraPose.setPitchAngle( pitch + diffPitch );
- mCameraPose.setHeadingAngle( yaw + diffYaw );
+ mCameraPose.setPitchAngle( newPitch );
+ mCameraPose.setHeadingAngle( newHeading );
updateCameraFromPose();
}
+void QgsCameraController::rotateCameraAroundPivot( float newPitch, float newHeading, const QVector3D &pivotPoint )
+{
+ const float oldPitch = mCameraPose.pitchAngle();
+ const float oldHeading = mCameraPose.headingAngle();
+
+ newPitch = std::clamp( newPitch, 0.f, 180.f ); // prevent going over the head
+
+ // First undo the previously applied rotation, then apply the new rotation
+ // (We can't just apply our euler angles difference because the camera may be already rotated)
+ const QQuaternion qNew = Qgs3DUtils::rotationFromPitchHeadingAngles( newPitch, newHeading );
+ const QQuaternion qOld = Qgs3DUtils::rotationFromPitchHeadingAngles( oldPitch, oldHeading );
+ const QQuaternion q = qNew * qOld.conjugated();
+
+ const QVector3D newViewCenter = q * ( mCamera->viewCenter() - pivotPoint ) + pivotPoint;
+
+ mCameraPose.setCenterPoint( newViewCenter );
+ mCameraPose.setPitchAngle( newPitch );
+ mCameraPose.setHeadingAngle( newHeading );
+ updateCameraFromPose();
+}
+
+void QgsCameraController::zoomCameraAroundPivot( const QVector3D &oldCameraPosition, double zoomFactor, const QVector3D &pivotPoint )
+{
+ // step 1: move camera along the line connecting reference camera position and our pivot point
+ QVector3D newCamPosition = pivotPoint + ( oldCameraPosition - pivotPoint ) * zoomFactor;
+ double newDistance = mCameraPose.distanceFromCenterPoint() * zoomFactor;
+
+ // step 2: using the new camera position and distance from center, calculate new view center
+ QQuaternion q = Qgs3DUtils::rotationFromPitchHeadingAngles( mCameraPose.pitchAngle(), mCameraPose.headingAngle() );
+ QVector3D cameraToCenter = q * QVector3D( 0, 0, -newDistance );
+ QVector3D newViewCenter = newCamPosition + cameraToCenter;
+
+ mCameraPose.setDistanceFromCenterPoint( newDistance );
+ mCameraPose.setCenterPoint( newViewCenter );
+ updateCameraFromPose();
+}
void QgsCameraController::frameTriggered( float dt )
{
@@ -262,6 +293,9 @@ void QgsCameraController::moveCameraPositionBy( const QVector3D &posDiff )
void QgsCameraController::onPositionChanged( Qt3DInput::QMouseEvent *mouse )
{
+ if ( !mInputHandlersEnabled )
+ return;
+
switch ( mCameraNavigationMode )
{
case Qgis::NavigationMode::TerrainBased:
@@ -340,36 +374,7 @@ void QgsCameraController::onPositionChangedTerrainNavigation( Qt3DInput::QMouseE
}
}
- // First transformation : Shift camera position and view center and rotate the camera
- {
- QVector3D shiftVector = mRotationCenter - mCamera->viewCenter();
-
- QVector3D newViewCenterWorld = camera()->viewCenter() + shiftVector;
- QVector3D newCameraPosition = camera()->position() + shiftVector;
-
- mCameraPose.setDistanceFromCenterPoint( ( newViewCenterWorld - newCameraPosition ).length() );
- mCameraPose.setCenterPoint( newViewCenterWorld );
- mCameraPose.setPitchAngle( mRotationPitch + pitchDiff );
- mCameraPose.setHeadingAngle( mRotationYaw + yawDiff );
- updateCameraFromPose();
- }
-
-
- // Second transformation : Shift camera position back
- {
- QgsRay3D ray = Qgs3DUtils::rayFromScreenPoint( mClickPoint, mScene->engine()->size(), mCamera );
-
- QVector3D clickedPositionWorld = ray.origin() + mRotationDistanceFromCenter * ray.direction();
-
- QVector3D shiftVector = clickedPositionWorld - mCamera->viewCenter();
-
- QVector3D newViewCenterWorld = camera()->viewCenter() - shiftVector;
- QVector3D newCameraPosition = camera()->position() - shiftVector;
-
- mCameraPose.setDistanceFromCenterPoint( ( newViewCenterWorld - newCameraPosition ).length() );
- mCameraPose.setCenterPoint( newViewCenterWorld );
- updateCameraFromPose();
- }
+ rotateCameraAroundPivot( mRotationPitch + pitchDiff, mRotationYaw + yawDiff, mRotationCenter );
}
else if ( hasLeftButton && hasCtrl && !hasShift )
{
@@ -455,7 +460,8 @@ void QgsCameraController::onPositionChangedTerrainNavigation( Qt3DInput::QMouseE
}
}
- float dist = ( mCameraBefore->position() - mDragPoint ).length();
+ float oldDist = ( mCameraBefore->position() - mDragPoint ).length();
+ float newDist = oldDist;
int yOffset = 0;
int screenHeight = mScene->engine()->size().height();
@@ -472,41 +478,18 @@ void QgsCameraController::onPositionChangedTerrainNavigation( Qt3DInput::QMouseE
double f = ( double ) ( mMousePos.y() - mClickPoint.y() ) / ( double ) ( screenHeight - mClickPoint.y() - yOffset );
f = std::max( 0.0, std::min( 1.0, f ) );
f = 1 - ( std::expm1( -2 * f ) ) / ( std::expm1( -2 ) );
- dist = dist * f;
+ newDist = newDist * f;
}
else // zoom out
{
double f = 1 - ( double ) ( mMousePos.y() + yOffset ) / ( double ) ( mClickPoint.y() + yOffset );
f = std::max( 0.0, std::min( 1.0, f ) );
f = ( std::expm1( 2 * f ) ) / ( std::expm1( 2 ) );
- dist = dist + 2 * dist * f;
- }
-
- // First transformation : Shift camera position and view center and rotate the camera
- {
- QVector3D shiftVector = mDragPoint - mCamera->viewCenter();
-
- QVector3D newViewCenterWorld = camera()->viewCenter() + shiftVector;
-
- mCameraPose.setDistanceFromCenterPoint( dist );
- mCameraPose.setCenterPoint( newViewCenterWorld );
- updateCameraFromPose();
+ newDist = newDist + 2 * newDist * f;
}
- // Second transformation : Shift camera position back
- {
- QgsRay3D ray = Qgs3DUtils::rayFromScreenPoint( mClickPoint, mScene->engine()->size(), mCamera );
- QVector3D clickedPositionWorld = ray.origin() + dist * ray.direction();
-
- QVector3D shiftVector = clickedPositionWorld - mCamera->viewCenter();
-
- QVector3D newViewCenterWorld = camera()->viewCenter() - shiftVector;
- QVector3D newCameraPosition = camera()->position() - shiftVector;
-
- mCameraPose.setDistanceFromCenterPoint( ( newViewCenterWorld - newCameraPosition ).length() );
- mCameraPose.setCenterPoint( newViewCenterWorld );
- updateCameraFromPose();
- }
+ double zoomFactor = newDist / oldDist;
+ zoomCameraAroundPivot( mCameraBefore->position(), zoomFactor, mDragPoint );
}
mMousePos = QPoint( mouse->x(), mouse->y() );
@@ -539,40 +522,21 @@ void QgsCameraController::handleTerrainNavigationWheelZoom()
float f = mCumulatedWheelY / ( 120.0 * 24.0 );
- double dist = ( mZoomPoint - mCameraBefore->position() ).length();
- dist -= dist * f;
-
- // First transformation : Shift camera position and view center and rotate the camera
- {
- QVector3D shiftVector = mZoomPoint - mCamera->viewCenter();
-
- QVector3D newViewCenterWorld = camera()->viewCenter() + shiftVector;
-
- mCameraPose.setDistanceFromCenterPoint( dist );
- mCameraPose.setCenterPoint( newViewCenterWorld );
- updateCameraFromPose();
- }
-
- // Second transformation : Shift camera position back
- {
- QgsRay3D ray = Qgs3DUtils::rayFromScreenPoint( QPoint( mMousePos.x(), mMousePos.y() ), mScene->engine()->size(), mCamera );
- QVector3D clickedPositionWorld = ray.origin() + dist * ray.direction();
-
- QVector3D shiftVector = clickedPositionWorld - mCamera->viewCenter();
+ double oldDist = ( mZoomPoint - mCameraBefore->position() ).length();
+ double newDist = ( 1 - f ) * oldDist;
+ double zoomFactor = newDist / oldDist;
- QVector3D newViewCenterWorld = camera()->viewCenter() - shiftVector;
- QVector3D newCameraPosition = camera()->position() - shiftVector;
+ zoomCameraAroundPivot( mCameraBefore->position(), zoomFactor, mZoomPoint );
- mCameraPose.setDistanceFromCenterPoint( ( newViewCenterWorld - newCameraPosition ).length() );
- mCameraPose.setCenterPoint( newViewCenterWorld );
- updateCameraFromPose();
- }
mCumulatedWheelY = 0;
setMouseParameters( MouseOperation::None );
}
void QgsCameraController::onWheel( Qt3DInput::QWheelEvent *wheel )
{
+ if ( !mInputHandlersEnabled )
+ return;
+
switch ( mCameraNavigationMode )
{
case Qgis::NavigationMode::Walk:
@@ -605,6 +569,9 @@ void QgsCameraController::onWheel( Qt3DInput::QWheelEvent *wheel )
void QgsCameraController::onMousePressed( Qt3DInput::QMouseEvent *mouse )
{
+ if ( !mInputHandlersEnabled )
+ return;
+
mKeyboardHandler->setFocus( true );
if ( mouse->button() == Qt3DInput::QMouseEvent::MiddleButton || ( ( mouse->modifiers() & Qt::ShiftModifier ) != 0 && mouse->button() == Qt3DInput::QMouseEvent::LeftButton ) || ( ( mouse->modifiers() & Qt::ControlModifier ) != 0 && mouse->button() == Qt3DInput::QMouseEvent::LeftButton ) )
@@ -635,12 +602,18 @@ void QgsCameraController::onMousePressed( Qt3DInput::QMouseEvent *mouse )
void QgsCameraController::onMouseReleased( Qt3DInput::QMouseEvent *mouse )
{
Q_UNUSED( mouse )
+ if ( !mInputHandlersEnabled )
+ return;
+
setMouseParameters( MouseOperation::None );
}
void QgsCameraController::onKeyPressed( Qt3DInput::QKeyEvent *event )
{
+ if ( !mInputHandlersEnabled )
+ return;
+
if ( event->modifiers() & Qt::ControlModifier && event->key() == Qt::Key_QuoteLeft )
{
// switch navigation mode
@@ -933,6 +906,9 @@ void QgsCameraController::onPositionChangedFlyNavigation( Qt3DInput::QMouseEvent
void QgsCameraController::onKeyReleased( Qt3DInput::QKeyEvent *event )
{
+ if ( !mInputHandlersEnabled )
+ return;
+
if ( event->isAutoRepeat() )
return;
diff --git a/src/3d/qgscameracontroller.h b/src/3d/qgscameracontroller.h
index 6c38373483c8..6bb158e7831f 100644
--- a/src/3d/qgscameracontroller.h
+++ b/src/3d/qgscameracontroller.h
@@ -189,6 +189,21 @@ class _3D_EXPORT QgsCameraController : public QObject
*/
void rotateCamera( float diffPitch, float diffYaw );
+ /**
+ * Rotates the camera around the pivot point (in world coordinates)
+ * to the given new pitch and heading angle.
+ * \since QGIS 3.42
+ */
+ void rotateCameraAroundPivot( float newPitch, float newHeading, const QVector3D &pivotPoint );
+
+ /**
+ * Zooms camera by given zoom factor (>1 one means zoom in)
+ * while keeping the pivot point (given in world coordinates) at the
+ * same screen coordinates after the zoom.
+ * \since QGIS 3.42
+ */
+ void zoomCameraAroundPivot( const QVector3D &oldCameraPosition, double zoomFactor, const QVector3D &pivotPoint );
+
/**
* Returns TRUE if the camera controller will handle the specified key \a event,
* preventing it from being instead handled by parents of the 3D window before
@@ -204,6 +219,12 @@ class _3D_EXPORT QgsCameraController : public QObject
*/
void setOrigin( const QgsVector3D &origin );
+ /**
+ * Sets whether the camera controller responds to mouse and keyboard events
+ * \since QGIS 3.42
+ */
+ void setInputHandlersEnabled( bool enable ) { mInputHandlersEnabled = enable; }
+
public slots:
/**
@@ -347,6 +368,7 @@ class _3D_EXPORT QgsCameraController : public QObject
Qt3DInput::QMouseHandler *mMouseHandler = nullptr;
Qt3DInput::QKeyboardHandler *mKeyboardHandler = nullptr;
+ bool mInputHandlersEnabled = true;
Qgis::NavigationMode mCameraNavigationMode = Qgis::NavigationMode::TerrainBased;
Qgis::VerticalAxisInversion mVerticalAxisInversion = Qgis::VerticalAxisInversion::WhenDragging;
double mCameraMovementSpeed = 5.0;
diff --git a/src/3d/qgscamerapose.cpp b/src/3d/qgscamerapose.cpp
index f868db7b2135..e573bdb79b4f 100644
--- a/src/3d/qgscamerapose.cpp
+++ b/src/3d/qgscamerapose.cpp
@@ -15,6 +15,8 @@
#include "qgscamerapose.h"
+#include "qgs3dutils.h"
+
#include
#include
@@ -60,22 +62,13 @@ void QgsCameraPose::setDistanceFromCenterPoint( float distance )
void QgsCameraPose::setPitchAngle( float pitch )
{
// prevent going over the head
- // prevent bug in QgsCameraPose::updateCamera when updating camera rotation.
- // With a mPitchAngle < 0.2 or > 179.8, QQuaternion::fromEulerAngles( mPitchAngle, mHeadingAngle, 0 )
- // will return bad rotation angle in Qt5.
- // See https://bugreports.qt.io/browse/QTBUG-72103
-#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
- mPitchAngle = std::clamp( pitch, 0.2f, 179.8f );
-#else
mPitchAngle = std::clamp( pitch, 0.0f, 180.0f );
-#endif
}
void QgsCameraPose::updateCamera( Qt3DRender::QCamera *camera )
{
// first rotate by pitch angle around X axis, then by heading angle around Z axis
- // (we use two separate fromEulerAngles() calls because one would not do rotations in order we need)
- QQuaternion q = QQuaternion::fromEulerAngles( 0, 0, mHeadingAngle ) * QQuaternion::fromEulerAngles( mPitchAngle, 0, 0 );
+ QQuaternion q = Qgs3DUtils::rotationFromPitchHeadingAngles( mPitchAngle, mHeadingAngle );
QVector3D cameraToCenter = q * QVector3D( 0, 0, -mDistanceFromCenterPoint );
camera->setUpVector( q * QVector3D( 0, 1, 0 ) );
camera->setPosition( mCenterPoint.toVector3D() - cameraToCenter );
diff --git a/src/3d/qgspointcloudlayer3drenderer.cpp b/src/3d/qgspointcloudlayer3drenderer.cpp
index 68a6a73cc291..87b1ddd32fac 100644
--- a/src/3d/qgspointcloudlayer3drenderer.cpp
+++ b/src/3d/qgspointcloudlayer3drenderer.cpp
@@ -145,6 +145,7 @@ QgsPointCloudLayer3DRenderer *QgsPointCloudLayer3DRenderer::clone() const
}
r->setMaximumScreenError( mMaximumScreenError );
r->setShowBoundingBoxes( mShowBoundingBoxes );
+ r->setZoomOutBehavior( mZoomOutBehavior );
return r;
}
@@ -161,7 +162,7 @@ Qt3DCore::QEntity *QgsPointCloudLayer3DRenderer::createEntity( Qgs3DMapSettings
Qt3DCore::QEntity *entity = nullptr;
if ( pcl->index() )
{
- entity = new QgsPointCloudLayerChunkedEntity( map, pcl->index(), coordinateTransform, dynamic_cast( mSymbol->clone() ), static_cast( maximumScreenError() ), showBoundingBoxes(), static_cast( pcl->elevationProperties() )->zScale(), static_cast( pcl->elevationProperties() )->zOffset(), mPointBudget );
+ entity = new QgsPointCloudLayerChunkedEntity( map, pcl, pcl->index(), coordinateTransform, dynamic_cast( mSymbol->clone() ), static_cast( maximumScreenError() ), showBoundingBoxes(), static_cast( pcl->elevationProperties() )->zScale(), static_cast( pcl->elevationProperties() )->zOffset(), mPointBudget );
}
else if ( !pcl->dataProvider()->subIndexes().isEmpty() )
{
@@ -185,6 +186,7 @@ void QgsPointCloudLayer3DRenderer::writeXml( QDomElement &elem, const QgsReadWri
elem.setAttribute( QStringLiteral( "max-screen-error" ), maximumScreenError() );
elem.setAttribute( QStringLiteral( "show-bounding-boxes" ), showBoundingBoxes() ? QStringLiteral( "1" ) : QStringLiteral( "0" ) );
elem.setAttribute( QStringLiteral( "point-budget" ), mPointBudget );
+ elem.setAttribute( QStringLiteral( "zoom-out-behavior" ), qgsEnumValueToKey( mZoomOutBehavior ) );
QDomElement elemSymbol = doc.createElement( QStringLiteral( "symbol" ) );
if ( mSymbol )
@@ -205,6 +207,7 @@ void QgsPointCloudLayer3DRenderer::readXml( const QDomElement &elem, const QgsRe
mShowBoundingBoxes = elem.attribute( QStringLiteral( "show-bounding-boxes" ), QStringLiteral( "0" ) ).toInt();
mMaximumScreenError = elem.attribute( QStringLiteral( "max-screen-error" ), QStringLiteral( "3.0" ) ).toDouble();
mPointBudget = elem.attribute( QStringLiteral( "point-budget" ), QStringLiteral( "5000000" ) ).toInt();
+ mZoomOutBehavior = qgsEnumKeyToValue( elem.attribute( QStringLiteral( "zoom-out-behavior" ) ), Qgis::PointCloudZoomOutRenderBehavior::RenderExtents );
if ( symbolType == QLatin1String( "single-color" ) )
mSymbol.reset( new QgsSingleColorPointCloud3DSymbol );
diff --git a/src/3d/qgspointcloudlayer3drenderer.h b/src/3d/qgspointcloudlayer3drenderer.h
index ec6482e8de0b..7b37d30667a3 100644
--- a/src/3d/qgspointcloudlayer3drenderer.h
+++ b/src/3d/qgspointcloudlayer3drenderer.h
@@ -303,12 +303,25 @@ class _3D_EXPORT QgsPointCloudLayer3DRenderer : public QgsAbstractPointCloud3DRe
bool convertFrom2DRenderer( QgsPointCloudRenderer *renderer ) override;
+ /**
+ * Sets the renderer behavior when zoomed out
+ * \since QGIS 3.42
+ */
+ void setZoomOutBehavior( const Qgis::PointCloudZoomOutRenderBehavior behavior ) { mZoomOutBehavior = behavior; }
+
+ /**
+ * Returns the renderer behavior when zoomed out
+ * \since QGIS 3.42
+ */
+ Qgis::PointCloudZoomOutRenderBehavior zoomOutBehavior() const { return mZoomOutBehavior; }
+
private:
QgsMapLayerRef mLayerRef; //!< Layer used to extract mesh data from
std::unique_ptr mSymbol;
double mMaximumScreenError = 3.0;
bool mShowBoundingBoxes = false;
int mPointBudget = 5000000;
+ Qgis::PointCloudZoomOutRenderBehavior mZoomOutBehavior = Qgis::PointCloudZoomOutRenderBehavior::RenderExtents;
private:
#ifdef SIP_RUN
diff --git a/src/3d/qgspointcloudlayerchunkloader_p.cpp b/src/3d/qgspointcloudlayerchunkloader_p.cpp
index fc6166270dd0..51ebde4dda52 100644
--- a/src/3d/qgspointcloudlayerchunkloader_p.cpp
+++ b/src/3d/qgspointcloudlayerchunkloader_p.cpp
@@ -238,10 +238,60 @@ QVector QgsPointCloudLayerChunkLoaderFactory::createChildren( Qg
///////////////
-QgsPointCloudLayerChunkedEntity::QgsPointCloudLayerChunkedEntity( Qgs3DMapSettings *map, QgsPointCloudIndex pc, const QgsCoordinateTransform &coordinateTransform, QgsPointCloud3DSymbol *symbol, float maximumScreenSpaceError, bool showBoundingBoxes, double zValueScale, double zValueOffset, int pointBudget )
- : QgsChunkedEntity( map, maximumScreenSpaceError, new QgsPointCloudLayerChunkLoaderFactory( Qgs3DRenderContext::fromMapSettings( map ), coordinateTransform, pc, symbol, zValueScale, zValueOffset, pointBudget ), true, pointBudget )
+static QgsChunkNode *findChunkNodeFromNodeId( QgsChunkNode *rootNode, QgsPointCloudNodeId nodeId )
+{
+ // find path from the node to the root
+ QVector parentIds;
+ while ( nodeId.d() > 0 )
+ {
+ parentIds << nodeId;
+ nodeId = nodeId.parentNode();
+ }
+
+ // now descend from the root to the node in the QgsChunkNode hierarchy
+ QgsChunkNode *chunk = rootNode;
+ while ( !parentIds.empty() )
+ {
+ QgsPointCloudNodeId p = parentIds.takeLast();
+ QgsChunkNodeId childNodeId( p.d(), p.x(), p.y(), p.z() );
+
+ QgsChunkNode *chunkChild = nullptr;
+ QgsChunkNode *const *children = chunk->children();
+ for ( int i = 0; i < chunk->childCount(); ++i )
+ {
+ if ( children[i]->tileId() == childNodeId )
+ {
+ chunkChild = children[i];
+ break;
+ }
+ }
+ Q_ASSERT( chunkChild );
+ chunk = chunkChild;
+ }
+ return chunk;
+}
+
+
+QgsPointCloudLayerChunkedEntity::QgsPointCloudLayerChunkedEntity( Qgs3DMapSettings *map, QgsPointCloudLayer *pcl, QgsPointCloudIndex index, const QgsCoordinateTransform &coordinateTransform, QgsPointCloud3DSymbol *symbol, float maximumScreenSpaceError, bool showBoundingBoxes, double zValueScale, double zValueOffset, int pointBudget )
+ : QgsChunkedEntity( map, maximumScreenSpaceError, new QgsPointCloudLayerChunkLoaderFactory( Qgs3DRenderContext::fromMapSettings( map ), coordinateTransform, index, symbol, zValueScale, zValueOffset, pointBudget ), true, pointBudget )
+ , mLayer( pcl )
{
setShowBoundingBoxes( showBoundingBoxes );
+
+ if ( pcl->supportsEditing() )
+ {
+ // when editing starts or stops, we need to update our index to use the editing index (or not)
+ connect( pcl, &QgsPointCloudLayer::editingStarted, this, &QgsPointCloudLayerChunkedEntity::updateIndex );
+ connect( pcl, &QgsPointCloudLayer::editingStopped, this, &QgsPointCloudLayerChunkedEntity::updateIndex );
+
+ mChunkUpdaterFactory.reset( new QgsChunkUpdaterFactory( mChunkLoaderFactory ) );
+
+ connect( pcl, &QgsPointCloudLayer::chunkAttributeValuesChanged, this, [this]( const QgsPointCloudNodeId &n ) {
+ QList nodes;
+ nodes << findChunkNodeFromNodeId( mRootNode, n );
+ updateNodes( nodes, mChunkUpdaterFactory.get() );
+ } );
+ }
}
QgsPointCloudLayerChunkedEntity::~QgsPointCloudLayerChunkedEntity()
@@ -250,6 +300,11 @@ QgsPointCloudLayerChunkedEntity::~QgsPointCloudLayerChunkedEntity()
cancelActiveJobs();
}
+void QgsPointCloudLayerChunkedEntity::updateIndex()
+{
+ static_cast( mChunkLoaderFactory )->mPointCloudIndex = mLayer->index();
+}
+
QVector QgsPointCloudLayerChunkedEntity::rayIntersection( const QgsRayCastingUtils::Ray3D &ray, const QgsRayCastingUtils::RayCastContext &context ) const
{
QVector result;
diff --git a/src/3d/qgspointcloudlayerchunkloader_p.h b/src/3d/qgspointcloudlayerchunkloader_p.h
index c575a2fc41c2..cca72a515936 100644
--- a/src/3d/qgspointcloudlayerchunkloader_p.h
+++ b/src/3d/qgspointcloudlayerchunkloader_p.h
@@ -127,11 +127,18 @@ class QgsPointCloudLayerChunkedEntity : public QgsChunkedEntity
{
Q_OBJECT
public:
- explicit QgsPointCloudLayerChunkedEntity( Qgs3DMapSettings *map, QgsPointCloudIndex pc, const QgsCoordinateTransform &coordinateTransform, QgsPointCloud3DSymbol *symbol, float maxScreenError, bool showBoundingBoxes, double zValueScale, double zValueOffset, int pointBudget );
+ explicit QgsPointCloudLayerChunkedEntity( Qgs3DMapSettings *map, QgsPointCloudLayer *pcl, QgsPointCloudIndex index, const QgsCoordinateTransform &coordinateTransform, QgsPointCloud3DSymbol *symbol, float maxScreenError, bool showBoundingBoxes, double zValueScale, double zValueOffset, int pointBudget );
QVector rayIntersection( const QgsRayCastingUtils::Ray3D &ray, const QgsRayCastingUtils::RayCastContext &context ) const override;
~QgsPointCloudLayerChunkedEntity();
+
+ private slots:
+ void updateIndex();
+
+ private:
+ QgsPointCloudLayer *mLayer = nullptr;
+ std::unique_ptr mChunkUpdaterFactory;
};
/// @endcond
diff --git a/src/3d/qgsrubberband3d.cpp b/src/3d/qgsrubberband3d.cpp
index 9aaa4ccf42aa..d326e7c12c15 100644
--- a/src/3d/qgsrubberband3d.cpp
+++ b/src/3d/qgsrubberband3d.cpp
@@ -50,7 +50,7 @@ QgsRubberBand3D::QgsRubberBand3D( Qgs3DMapSettings &map, QgsWindow3DEngine *engi
, mEngine( engine )
, mGeometryType( geometryType )
{
- if ( mGeometryType == Qgis::GeometryType::Line )
+ if ( mGeometryType == Qgis::GeometryType::Line || mGeometryType == Qgis::GeometryType::Polygon )
{
// Rubberband line
mLineEntity = new Qt3DCore::QEntity( parentEntity );
@@ -110,7 +110,7 @@ void QgsRubberBand3D::setWidth( float width )
{
mWidth = width;
- if ( mGeometryType == Qgis::GeometryType::Line )
+ if ( mGeometryType == Qgis::GeometryType::Line || mGeometryType == Qgis::GeometryType::Polygon )
{
// when highlighting lines, the vertex markers should be wider
mLineMaterial->setLineWidth( width );
@@ -130,7 +130,7 @@ void QgsRubberBand3D::setColor( QColor color )
{
mColor = color;
- if ( mGeometryType == Qgis::GeometryType::Line )
+ if ( mGeometryType == Qgis::GeometryType::Line || mGeometryType == Qgis::GeometryType::Polygon )
{
mLineMaterial->setLineColor( color );
mMarkerSymbol->setColor( color.lighter( 130 ) );
@@ -151,12 +151,14 @@ void QgsRubberBand3D::setMarkerType( MarkerType marker )
{
mMarkerType = marker;
+ const bool lineOrPolygon = mGeometryType == Qgis::GeometryType::Line || mGeometryType == Qgis::GeometryType::Polygon;
+
const QVariantMap props {
- { QStringLiteral( "color" ), mGeometryType == Qgis::GeometryType::Line ? mColor.lighter( 130 ).name() : mColor.name() },
+ { QStringLiteral( "color" ), lineOrPolygon ? mColor.lighter( 130 ).name() : mColor.name() },
{ QStringLiteral( "size_unit" ), QStringLiteral( "pixel" ) },
- { QStringLiteral( "size" ), QString::number( mGeometryType == Qgis::GeometryType::Line ? mWidth * 3.f : mWidth ) },
+ { QStringLiteral( "size" ), QString::number( lineOrPolygon ? mWidth * 3.f : mWidth ) },
{ QStringLiteral( "outline_color" ), mColor.name() },
- { QStringLiteral( "outline_width" ), QString::number( mGeometryType == Qgis::GeometryType::Line ? 0.5 : 1 ) },
+ { QStringLiteral( "outline_width" ), QString::number( lineOrPolygon ? 0.5 : 1 ) },
{ QStringLiteral( "name" ), mMarkerType == Square ? QStringLiteral( "square" ) : QStringLiteral( "circle" ) }
};
@@ -181,6 +183,12 @@ void QgsRubberBand3D::addPoint( const QgsPoint &pt )
updateGeometry();
}
+void QgsRubberBand3D::setPoints( const QgsLineString &points )
+{
+ mLineString = points;
+ updateGeometry();
+}
+
void QgsRubberBand3D::removeLastPoint()
{
const int lastVertexIndex = mLineString.numPoints() - 1;
@@ -200,9 +208,10 @@ void QgsRubberBand3D::updateGeometry()
QgsLineVertexData lineData;
lineData.withAdjacency = true;
lineData.init( Qgis::AltitudeClamping::Absolute, Qgis::AltitudeBinding::Vertex, 0, Qgs3DRenderContext::fromMapSettings( mMapSettings ), mMapSettings->origin() );
- lineData.addLineString( mLineString );
+ const bool closed = mGeometryType == Qgis::GeometryType::Polygon;
+ lineData.addLineString( mLineString, 0, closed );
- if ( mGeometryType == Qgis::GeometryType::Line )
+ if ( mGeometryType == Qgis::GeometryType::Line || mGeometryType == Qgis::GeometryType::Polygon )
{
mPositionAttribute->buffer()->setData( lineData.createVertexBuffer() );
mIndexAttribute->buffer()->setData( lineData.createIndexBuffer() );
diff --git a/src/3d/qgsrubberband3d.h b/src/3d/qgsrubberband3d.h
index 609e6117ac1e..0331d4fc52ec 100644
--- a/src/3d/qgsrubberband3d.h
+++ b/src/3d/qgsrubberband3d.h
@@ -120,6 +120,8 @@ class _3D_EXPORT QgsRubberBand3D
void addPoint( const QgsPoint &pt );
+ void setPoints( const QgsLineString &points );
+
void removeLastPoint();
void moveLastPoint( const QgsPoint &pt );
@@ -127,6 +129,8 @@ class _3D_EXPORT QgsRubberBand3D
//! Sets whether the marker on the last vertex is displayed. We typically do not want it displayed while it is still tracked by the mouse.
void setHideLastMarker( bool hide ) { mHideLastMarker = hide; }
+ bool isEmpty() const { return mLineString.isEmpty(); }
+
private:
void updateGeometry();
void updateMarkerMaterial();
diff --git a/src/3d/qgsvirtualpointcloudentity_p.cpp b/src/3d/qgsvirtualpointcloudentity_p.cpp
index 22f01ff1e9bb..78bf4f8ad3b6 100644
--- a/src/3d/qgsvirtualpointcloudentity_p.cpp
+++ b/src/3d/qgsvirtualpointcloudentity_p.cpp
@@ -44,7 +44,6 @@ QgsVirtualPointCloudEntity::QgsVirtualPointCloudEntity(
, mShowBoundingBoxes( showBoundingBoxes )
{
mSymbol.reset( symbol );
- mBboxesEntity = new QgsChunkBoundsEntity( this );
const QgsRectangle mapExtent = Qgs3DUtils::tryReprojectExtent2D( map->extent(), map->crs(), layer->crs(), map->transformContext() );
const QVector subIndexes = provider()->subIndexes();
for ( int i = 0; i < subIndexes.size(); ++i )
@@ -52,11 +51,34 @@ QgsVirtualPointCloudEntity::QgsVirtualPointCloudEntity(
const QgsPointCloudSubIndex &si = subIndexes.at( i );
const QgsRectangle intersection = si.extent().intersect( mapExtent );
- mBboxes << Qgs3DUtils::mapToWorldExtent( intersection, si.zRange().lower(), si.zRange().upper(), map->origin() );
+ mBboxes << QgsBox3D( intersection, si.zRange().lower(), si.zRange().upper() );
createChunkedEntityForSubIndex( i );
}
+ if ( provider()->overview() )
+ {
+ mOverviewEntity = new QgsPointCloudLayerChunkedEntity(
+ mapSettings(),
+ mLayer,
+ provider()->overview(),
+ mCoordinateTransform,
+ dynamic_cast( mSymbol->clone() ),
+ mMaximumScreenSpaceError,
+ false,
+ mZValueScale,
+ mZValueOffset,
+ mPointBudget
+ );
+ mOverviewEntity->setParent( this );
+ connect( mOverviewEntity, &QgsChunkedEntity::pendingJobsCountChanged, this, &Qgs3DMapSceneEntity::pendingJobsCountChanged );
+ emit newEntityCreated( mOverviewEntity );
+ }
+
+ // this is a rather arbitrary point, it could be somewhere else, ideally near the actual data
+ QgsVector3D boundsEntityOrigin( mapExtent.center().x(), mapExtent.center().y(), 0 );
+
+ mBboxesEntity = new QgsChunkBoundsEntity( boundsEntityOrigin, this );
updateBboxEntity();
connect( this, &QgsVirtualPointCloudEntity::subIndexNeedsLoading, provider(), &QgsVirtualPointCloudProvider::loadSubIndex, Qt::QueuedConnection );
connect( provider(), &QgsVirtualPointCloudProvider::subIndexLoaded, this, &QgsVirtualPointCloudEntity::createChunkedEntityForSubIndex );
@@ -72,22 +94,18 @@ QgsVirtualPointCloudProvider *QgsVirtualPointCloudEntity::provider() const
return qobject_cast( mLayer->dataProvider() );
}
-QgsAABB QgsVirtualPointCloudEntity::boundingBox( int i ) const
-{
- return mBboxes.at( i );
-}
-
void QgsVirtualPointCloudEntity::createChunkedEntityForSubIndex( int i )
{
const QVector subIndexes = provider()->subIndexes();
const QgsPointCloudSubIndex &si = subIndexes.at( i );
- // Skip if Index is not yet loaded or is outside the map extents
- if ( !si.index() || mBboxes.at( i ).isEmpty() )
+ // Skip if Index is not yet loaded or is outside the map extents, or it's not valid (e.g. file is missing)
+ if ( !si.index() || mBboxes.at( i ).isEmpty() || !si.index().isValid() )
return;
QgsPointCloudLayerChunkedEntity *newChunkedEntity = new QgsPointCloudLayerChunkedEntity(
mapSettings(),
+ mLayer,
si.index(),
mCoordinateTransform,
static_cast( mSymbol->clone() ),
@@ -106,18 +124,19 @@ void QgsVirtualPointCloudEntity::createChunkedEntityForSubIndex( int i )
void QgsVirtualPointCloudEntity::handleSceneUpdate( const SceneContext &sceneContext )
{
+ QgsVector3D cameraPosMapCoords = QgsVector3D( sceneContext.cameraPos ) + mapSettings()->origin();
const QVector subIndexes = provider()->subIndexes();
for ( int i = 0; i < subIndexes.size(); ++i )
{
- const QgsAABB &bbox = mBboxes.at( i );
+ const QgsBox3D &box3D = mBboxes.at( i );
- if ( bbox.isEmpty() )
+ if ( box3D.isEmpty() )
continue;
// magic number 256 is the common span value for a COPC root node
constexpr int SPAN = 256;
- const float epsilon = std::min( bbox.xExtent(), bbox.yExtent() ) / SPAN;
- const float distance = bbox.distanceFromPoint( sceneContext.cameraPos );
+ const float epsilon = static_cast( std::min( box3D.width(), box3D.height() ) ) / SPAN;
+ const float distance = static_cast( box3D.distanceTo( cameraPosMapCoords ) );
const float sse = Qgs3DUtils::screenSpaceError( epsilon, distance, sceneContext.screenSizePx, sceneContext.cameraFov );
constexpr float THRESHOLD = .2;
@@ -132,6 +151,12 @@ void QgsVirtualPointCloudEntity::handleSceneUpdate( const SceneContext &sceneCon
mChunkedEntitiesMap[i]->handleSceneUpdate( sceneContext );
}
updateBboxEntity();
+
+ const QgsPointCloudLayer3DRenderer *rendererBehavior = dynamic_cast( mLayer->renderer3D() );
+ if ( provider()->overview() && rendererBehavior && ( rendererBehavior->zoomOutBehavior() == Qgis::PointCloudZoomOutRenderBehavior::RenderOverview || rendererBehavior->zoomOutBehavior() == Qgis::PointCloudZoomOutRenderBehavior::RenderOverviewAndExtents ) )
+ {
+ mOverviewEntity->handleSceneUpdate( sceneContext );
+ }
}
QgsRange QgsVirtualPointCloudEntity::getNearFarPlaneRange( const QMatrix4x4 &viewMatrix ) const
@@ -152,11 +177,12 @@ QgsRange QgsVirtualPointCloudEntity::getNearFarPlaneRange( const QMatrix4
// if there were no chunked entities available, we will iterate the bboxes as a fallback instead
if ( fnear == 1e9 && ffar == 0 )
{
- for ( const QgsAABB &bbox : mBboxes )
+ for ( const QgsBox3D &box : mBboxes )
{
+ QgsAABB aabb = QgsAABB::fromBox3D( box, mBboxesEntity->vertexDataOrigin() );
float bboxfnear;
float bboxffar;
- Qgs3DUtils::computeBoundingBoxNearFarPlanes( bbox, viewMatrix, bboxfnear, bboxffar );
+ Qgs3DUtils::computeBoundingBoxNearFarPlanes( aabb, viewMatrix, bboxfnear, bboxffar );
fnear = std::min( fnear, bboxfnear );
ffar = std::max( ffar, bboxffar );
}
@@ -188,17 +214,22 @@ bool QgsVirtualPointCloudEntity::needsUpdate() const
void QgsVirtualPointCloudEntity::updateBboxEntity()
{
- QList bboxes;
- const QVector subIndexes = provider()->subIndexes();
- for ( int i = 0; i < subIndexes.size(); ++i )
+ QList bboxes;
+ // we want to render bounding boxes only when zoomOutBehavior is RenderExtents or RenderOverviewAndExtents
+ const QgsPointCloudLayer3DRenderer *renderer = dynamic_cast( mLayer->renderer3D() );
+ if ( renderer && renderer->zoomOutBehavior() != Qgis::PointCloudZoomOutRenderBehavior::RenderOverview )
{
- if ( mChunkedEntitiesMap.contains( i ) && mChunkedEntitiesMap[i]->isEnabled() )
- continue;
+ const QVector subIndexes = provider()->subIndexes();
+ for ( int i = 0; i < subIndexes.size(); ++i )
+ {
+ if ( mChunkedEntitiesMap.contains( i ) && mChunkedEntitiesMap[i]->isEnabled() )
+ continue;
- if ( mBboxes.at( i ).isEmpty() )
- continue;
+ if ( mBboxes.at( i ).isEmpty() )
+ continue;
- bboxes << mBboxes.at( i );
+ bboxes << mBboxes.at( i );
+ }
}
mBboxesEntity->setBoxes( bboxes );
diff --git a/src/3d/qgsvirtualpointcloudentity_p.h b/src/3d/qgsvirtualpointcloudentity_p.h
index 6416f8ba2f75..4b03cb32007b 100644
--- a/src/3d/qgsvirtualpointcloudentity_p.h
+++ b/src/3d/qgsvirtualpointcloudentity_p.h
@@ -32,6 +32,7 @@
#include "qgschunkedentity.h"
#include "qgs3dmapsceneentity.h"
#include "qgs3drendercontext.h"
+#include "qgspointcloudlayerchunkloader_p.h"
class QgsAABB;
class QgsChunkBoundsEntity;
@@ -87,13 +88,11 @@ class QgsVirtualPointCloudEntity : public Qgs3DMapSceneEntity
//! Returns a pointer to the associated layer's provider
QgsVirtualPointCloudProvider *provider() const;
- //! Returns the bounding box for sub index i
- QgsAABB boundingBox( int i ) const;
-
QgsPointCloudLayer *mLayer = nullptr;
QMap mChunkedEntitiesMap;
QgsChunkBoundsEntity *mBboxesEntity = nullptr;
- QList mBboxes;
+ QgsPointCloudLayerChunkedEntity *mOverviewEntity = nullptr;
+ QList mBboxes;
QgsCoordinateTransform mCoordinateTransform;
std::unique_ptr mSymbol;
double mZValueScale = 1.0;
diff --git a/src/3d/qgswindow3dengine.cpp b/src/3d/qgswindow3dengine.cpp
index ba9664e2b47c..3a56dfd4262c 100644
--- a/src/3d/qgswindow3dengine.cpp
+++ b/src/3d/qgswindow3dengine.cpp
@@ -99,7 +99,7 @@ void QgsWindow3DEngine::setSize( QSize s )
mMapCanvas3D->setWidth( mSize.width() );
mMapCanvas3D->setHeight( mSize.height() );
- mFrameGraph->setSize( mSize );
+ mFrameGraph->setSize( mSize * mMapCanvas3D->devicePixelRatio() );
camera()->setAspectRatio( float( mSize.width() ) / float( mSize.height() ) );
emit sizeChanged();
}
diff --git a/src/3d/symbols/qgsline3dsymbol.cpp b/src/3d/symbols/qgsline3dsymbol.cpp
index 93107c4475e9..57dd1a92fd04 100644
--- a/src/3d/symbols/qgsline3dsymbol.cpp
+++ b/src/3d/symbols/qgsline3dsymbol.cpp
@@ -31,7 +31,7 @@ QgsLine3DSymbol::~QgsLine3DSymbol() = default;
QgsAbstract3DSymbol *QgsLine3DSymbol::clone() const
{
- std::unique_ptr result = std::make_unique();
+ auto result = std::make_unique();
result->mAltClamping = mAltClamping;
result->mAltBinding = mAltBinding;
result->mWidth = mWidth;
diff --git a/src/3d/symbols/qgsline3dsymbol.h b/src/3d/symbols/qgsline3dsymbol.h
index 12dc7920c8d5..ae644df21064 100644
--- a/src/3d/symbols/qgsline3dsymbol.h
+++ b/src/3d/symbols/qgsline3dsymbol.h
@@ -123,7 +123,7 @@ class _3D_EXPORT QgsLine3DSymbol : public QgsAbstract3DSymbol SIP_NODEFAULTCTORS
private:
//! how to handle altitude of vector features
- Qgis::AltitudeClamping mAltClamping = Qgis::AltitudeClamping::Relative;
+ Qgis::AltitudeClamping mAltClamping = Qgis::AltitudeClamping::Absolute;
//! how to handle clamping of vertices of individual features
Qgis::AltitudeBinding mAltBinding = Qgis::AltitudeBinding::Centroid;
diff --git a/src/3d/symbols/qgslinevertexdata_p.cpp b/src/3d/symbols/qgslinevertexdata_p.cpp
index 5636fff7ec9c..d453815417c5 100644
--- a/src/3d/symbols/qgslinevertexdata_p.cpp
+++ b/src/3d/symbols/qgslinevertexdata_p.cpp
@@ -117,7 +117,7 @@ Qt3DQGeometry *QgsLineVertexData::createGeometry( Qt3DCore::QNode *parent )
return geom;
}
-void QgsLineVertexData::addLineString( const QgsLineString &lineString, float extraHeightOffset )
+void QgsLineVertexData::addLineString( const QgsLineString &lineString, float extraHeightOffset, bool closePolygon )
{
if ( withAdjacency )
indexes << vertices.count(); // add the following vertex (for adjacency)
@@ -132,6 +132,8 @@ void QgsLineVertexData::addLineString( const QgsLineString &lineString, float ex
break;
}
+ const int firstIndex = vertices.count();
+
for ( int i = 0; i < lineString.vertexCount(); ++i )
{
QgsPoint p = lineString.pointN( i );
@@ -141,6 +143,9 @@ void QgsLineVertexData::addLineString( const QgsLineString &lineString, float ex
indexes << vertices.count() - 1;
}
+ if ( closePolygon )
+ indexes << firstIndex; // repeat the first vertex
+
if ( withAdjacency )
indexes << vertices.count() - 1; // add the last vertex (for adjacency)
diff --git a/src/3d/symbols/qgslinevertexdata_p.h b/src/3d/symbols/qgslinevertexdata_p.h
index 186f51c0db18..76f4305e8d5e 100644
--- a/src/3d/symbols/qgslinevertexdata_p.h
+++ b/src/3d/symbols/qgslinevertexdata_p.h
@@ -77,7 +77,7 @@ struct QgsLineVertexData
bool withAdjacency = false; //!< Whether line strip with adjacency primitive will be used
// extra info to calculate elevation
- Qgis::AltitudeClamping altClamping = Qgis::AltitudeClamping::Relative;
+ Qgis::AltitudeClamping altClamping = Qgis::AltitudeClamping::Absolute;
Qgis::AltitudeBinding altBinding = Qgis::AltitudeBinding::Vertex;
float baseHeight = 0;
Qgs3DRenderContext renderContext; // used for altitude clamping
@@ -95,7 +95,7 @@ struct QgsLineVertexData
Qt3DCore::QGeometry *createGeometry( Qt3DCore::QNode *parent );
#endif
- void addLineString( const QgsLineString &lineString, float extraHeightOffset = 0 );
+ void addLineString( const QgsLineString &lineString, float extraHeightOffset = 0, bool closePolygon = false );
void addVerticalLines( const QgsLineString &lineString, float verticalLength, float extraHeightOffset = 0 );
};
diff --git a/src/3d/symbols/qgsmesh3dsymbol.cpp b/src/3d/symbols/qgsmesh3dsymbol.cpp
index eaaee4cc8523..f9e57ddece17 100644
--- a/src/3d/symbols/qgsmesh3dsymbol.cpp
+++ b/src/3d/symbols/qgsmesh3dsymbol.cpp
@@ -28,7 +28,7 @@ QgsMesh3DSymbol::~QgsMesh3DSymbol() = default;
QgsMesh3DSymbol *QgsMesh3DSymbol::clone() const
{
- std::unique_ptr result = std::make_unique();
+ auto result = std::make_unique();
result->mAltClamping = mAltClamping;
result->mHeight = mHeight;
diff --git a/src/3d/symbols/qgsmesh3dsymbol.h b/src/3d/symbols/qgsmesh3dsymbol.h
index 486b038f6aba..7f89164a67ef 100644
--- a/src/3d/symbols/qgsmesh3dsymbol.h
+++ b/src/3d/symbols/qgsmesh3dsymbol.h
@@ -354,7 +354,7 @@ class _3D_EXPORT QgsMesh3DSymbol : public QgsAbstract3DSymbol
#endif
//! how to handle altitude of vector features
- Qgis::AltitudeClamping mAltClamping = Qgis::AltitudeClamping::Relative;
+ Qgis::AltitudeClamping mAltClamping = Qgis::AltitudeClamping::Absolute;
float mHeight = 0.0f; //!< Base height of triangles
std::unique_ptr mMaterialSettings; //!< Defines appearance of objects
bool mAddBackFaces = false;
diff --git a/src/3d/symbols/qgspoint3dsymbol.cpp b/src/3d/symbols/qgspoint3dsymbol.cpp
index 35844aa470fc..355dc5c4c53c 100644
--- a/src/3d/symbols/qgspoint3dsymbol.cpp
+++ b/src/3d/symbols/qgspoint3dsymbol.cpp
@@ -136,7 +136,7 @@ void QgsPoint3DSymbol::setDefaultPropertiesFromLayer( const QgsVectorLayer *laye
Qgis::Point3DShape QgsPoint3DSymbol::shapeFromString( const QString &shape )
{
- if ( shape == QStringLiteral( "sphere" ) )
+ if ( shape == QLatin1String( "sphere" ) )
return Qgis::Point3DShape::Sphere;
else if ( shape == QLatin1String( "cone" ) )
return Qgis::Point3DShape::Cone;
diff --git a/src/3d/symbols/qgspoint3dsymbol.h b/src/3d/symbols/qgspoint3dsymbol.h
index 45bef877e3fc..6d14fff38673 100644
--- a/src/3d/symbols/qgspoint3dsymbol.h
+++ b/src/3d/symbols/qgspoint3dsymbol.h
@@ -175,7 +175,7 @@ class _3D_EXPORT QgsPoint3DSymbol : public QgsAbstract3DSymbol SIP_NODEFAULTCTOR
private:
//! how to handle altitude of vector features
- Qgis::AltitudeClamping mAltClamping = Qgis::AltitudeClamping::Relative;
+ Qgis::AltitudeClamping mAltClamping = Qgis::AltitudeClamping::Absolute;
std::unique_ptr mMaterialSettings; //!< Defines appearance of objects
Qgis::Point3DShape mShape = Qgis::Point3DShape::Cylinder; //!< What kind of shape to use
diff --git a/src/3d/symbols/qgspolygon3dsymbol.cpp b/src/3d/symbols/qgspolygon3dsymbol.cpp
index 3629b7f2796f..7b25d53af076 100644
--- a/src/3d/symbols/qgspolygon3dsymbol.cpp
+++ b/src/3d/symbols/qgspolygon3dsymbol.cpp
@@ -35,7 +35,7 @@ QgsPolygon3DSymbol::~QgsPolygon3DSymbol() = default;
QgsAbstract3DSymbol *QgsPolygon3DSymbol::clone() const
{
- std::unique_ptr result = std::make_unique();
+ auto result = std::make_unique();
result->mAltClamping = mAltClamping;
result->mAltBinding = mAltBinding;
result->mOffset = mOffset;
diff --git a/src/3d/symbols/qgspolygon3dsymbol.h b/src/3d/symbols/qgspolygon3dsymbol.h
index 712a12d554f3..047d912f878c 100644
--- a/src/3d/symbols/qgspolygon3dsymbol.h
+++ b/src/3d/symbols/qgspolygon3dsymbol.h
@@ -186,7 +186,7 @@ class _3D_EXPORT QgsPolygon3DSymbol : public QgsAbstract3DSymbol SIP_NODEFAULTCT
private:
//! how to handle altitude of vector features
- Qgis::AltitudeClamping mAltClamping = Qgis::AltitudeClamping::Relative;
+ Qgis::AltitudeClamping mAltClamping = Qgis::AltitudeClamping::Absolute;
//! how to handle clamping of vertices of individual features
Qgis::AltitudeBinding mAltBinding = Qgis::AltitudeBinding::Centroid;
diff --git a/src/3d/terrain/qgs3dterrainregistry.cpp b/src/3d/terrain/qgs3dterrainregistry.cpp
index cf5e5e9bcb37..e75e4bb29bd4 100644
--- a/src/3d/terrain/qgs3dterrainregistry.cpp
+++ b/src/3d/terrain/qgs3dterrainregistry.cpp
@@ -76,7 +76,7 @@ QgsAbstractTerrainSettings *Qgs3DTerrainRegistry::configureTerrainFromProject( Q
{
if ( properties->terrainProvider()->type() == QLatin1String( "flat" ) )
{
- std::unique_ptr flatTerrain = std::make_unique();
+ auto flatTerrain = std::make_unique();
flatTerrain->setElevationOffset( properties->terrainProvider()->offset() );
return flatTerrain.release();
}
@@ -84,7 +84,7 @@ QgsAbstractTerrainSettings *Qgs3DTerrainRegistry::configureTerrainFromProject( Q
{
QgsRasterDemTerrainProvider *rasterProvider = qgis::down_cast( properties->terrainProvider() );
- std::unique_ptr demTerrain = std::make_unique();
+ auto demTerrain = std::make_unique();
demTerrain->setLayer( rasterProvider->layer() );
demTerrain->setElevationOffset( properties->terrainProvider()->offset() );
demTerrain->setVerticalScale( properties->terrainProvider()->scale() );
@@ -94,7 +94,7 @@ QgsAbstractTerrainSettings *Qgs3DTerrainRegistry::configureTerrainFromProject( Q
{
QgsMeshTerrainProvider *meshProvider = qgis::down_cast( properties->terrainProvider() );
- std::unique_ptr meshTerrain = std::make_unique();
+ auto meshTerrain = std::make_unique();
meshTerrain->setLayer( meshProvider->layer() );
meshTerrain->setElevationOffset( properties->terrainProvider()->offset() );
meshTerrain->setVerticalScale( properties->terrainProvider()->scale() );
@@ -102,7 +102,7 @@ QgsAbstractTerrainSettings *Qgs3DTerrainRegistry::configureTerrainFromProject( Q
}
else
{
- std::unique_ptr flatTerrain = std::make_unique();
+ auto flatTerrain = std::make_unique();
return flatTerrain.release();
}
}
diff --git a/src/3d/terrain/qgsdemterrainsettings.cpp b/src/3d/terrain/qgsdemterrainsettings.cpp
index 980b37f1897a..1ba2072c3c3a 100644
--- a/src/3d/terrain/qgsdemterrainsettings.cpp
+++ b/src/3d/terrain/qgsdemterrainsettings.cpp
@@ -82,7 +82,7 @@ bool QgsDemTerrainSettings::equals( const QgsAbstractTerrainSettings *other ) co
std::unique_ptr QgsDemTerrainSettings::createTerrainGenerator( const Qgs3DRenderContext &context ) const
{
- std::unique_ptr generator = std::make_unique();
+ auto generator = std::make_unique();
generator->setCrs( context.crs(), context.transformContext() );
generator->setExtent( context.extent() );
generator->setLayer( layer() );
diff --git a/src/3d/terrain/qgsflatterrainsettings.cpp b/src/3d/terrain/qgsflatterrainsettings.cpp
index c509b2862da6..130181c7c7d0 100644
--- a/src/3d/terrain/qgsflatterrainsettings.cpp
+++ b/src/3d/terrain/qgsflatterrainsettings.cpp
@@ -54,7 +54,7 @@ bool QgsFlatTerrainSettings::equals( const QgsAbstractTerrainSettings *other ) c
std::unique_ptr QgsFlatTerrainSettings::createTerrainGenerator( const Qgs3DRenderContext &context ) const
{
- std::unique_ptr generator = std::make_unique();
+ auto generator = std::make_unique();
generator->setCrs( context.crs(), context.transformContext() );
generator->setExtent( context.extent() );
return generator;
diff --git a/src/3d/terrain/qgsmeshterrainsettings.cpp b/src/3d/terrain/qgsmeshterrainsettings.cpp
index cdd048b2c2d4..b6ed0171bf4b 100644
--- a/src/3d/terrain/qgsmeshterrainsettings.cpp
+++ b/src/3d/terrain/qgsmeshterrainsettings.cpp
@@ -32,7 +32,7 @@ QgsMeshTerrainSettings::~QgsMeshTerrainSettings() = default;
QgsMeshTerrainSettings *QgsMeshTerrainSettings::clone() const
{
- std::unique_ptr cloned = std::make_unique();
+ auto cloned = std::make_unique();
cloned->mSymbol.reset( mSymbol->clone() );
cloned->mLayer = mLayer;
cloned->copyCommonProperties( this );
@@ -97,7 +97,7 @@ bool QgsMeshTerrainSettings::equals( const QgsAbstractTerrainSettings *other ) c
std::unique_ptr QgsMeshTerrainSettings::createTerrainGenerator( const Qgs3DRenderContext &context ) const
{
- std::unique_ptr generator = std::make_unique();
+ auto generator = std::make_unique();
generator->setLayer( layer() );
std::unique_ptr symbol( mSymbol->clone() );
symbol->setVerticalScale( verticalScale() );
diff --git a/src/3d/terrain/qgsonlinedemterrainsettings.cpp b/src/3d/terrain/qgsonlinedemterrainsettings.cpp
index 0b879707197c..3abaf85e02f0 100644
--- a/src/3d/terrain/qgsonlinedemterrainsettings.cpp
+++ b/src/3d/terrain/qgsonlinedemterrainsettings.cpp
@@ -76,7 +76,7 @@ bool QgsOnlineDemTerrainSettings::equals( const QgsAbstractTerrainSettings *othe
std::unique_ptr QgsOnlineDemTerrainSettings::createTerrainGenerator( const Qgs3DRenderContext &context ) const
{
- std::unique_ptr generator = std::make_unique();
+ auto generator = std::make_unique();
generator->setResolution( mResolution );
generator->setSkirtHeight( static_cast( mSkirtHeight ) );
generator->setCrs( context.crs(), context.transformContext() );
diff --git a/src/3d/terrain/qgsquantizedmeshterrainsettings.cpp b/src/3d/terrain/qgsquantizedmeshterrainsettings.cpp
index 3cf46c6bb087..a4b157701a86 100644
--- a/src/3d/terrain/qgsquantizedmeshterrainsettings.cpp
+++ b/src/3d/terrain/qgsquantizedmeshterrainsettings.cpp
@@ -74,7 +74,7 @@ bool QgsQuantizedMeshTerrainSettings::equals( const QgsAbstractTerrainSettings *
std::unique_ptr QgsQuantizedMeshTerrainSettings::createTerrainGenerator( const Qgs3DRenderContext &context ) const
{
- std::unique_ptr generator = std::make_unique();
+ auto generator = std::make_unique();
generator->setLayer( layer() );
generator->setCrs( context.crs(), context.transformContext() );
generator->setExtent( context.extent() );
diff --git a/src/analysis/georeferencing/qgsgcptransformer.cpp b/src/analysis/georeferencing/qgsgcptransformer.cpp
index 132d7afae1b3..ad6bd7b8f5b0 100644
--- a/src/analysis/georeferencing/qgsgcptransformer.cpp
+++ b/src/analysis/georeferencing/qgsgcptransformer.cpp
@@ -118,7 +118,7 @@ bool QgsLinearGeorefTransform::getOriginScale( QgsPointXY &origin, double &scale
QgsGcpTransformerInterface *QgsLinearGeorefTransform::clone() const
{
- std::unique_ptr res = std::make_unique();
+ auto res = std::make_unique();
res->mParameters = mParameters;
return res.release();
}
@@ -234,7 +234,7 @@ bool QgsHelmertGeorefTransform::getOriginScaleRotation( QgsPointXY &origin, doub
QgsGcpTransformerInterface *QgsHelmertGeorefTransform::clone() const
{
- std::unique_ptr res = std::make_unique();
+ auto res = std::make_unique();
res->mHelmertParameters = mHelmertParameters;
return res.release();
}
@@ -329,7 +329,7 @@ QgsGDALGeorefTransform::~QgsGDALGeorefTransform()
QgsGcpTransformerInterface *QgsGDALGeorefTransform::clone() const
{
- std::unique_ptr res = std::make_unique( mIsTPSTransform, mPolynomialOrder );
+ auto res = std::make_unique( mIsTPSTransform, mPolynomialOrder );
res->updateParametersFromGcps( mSourceCoords, mDestCoordinates, mInvertYAxis );
return res.release();
}
@@ -436,7 +436,7 @@ QgsProjectiveGeorefTransform::QgsProjectiveGeorefTransform()
QgsGcpTransformerInterface *QgsProjectiveGeorefTransform::clone() const
{
- std::unique_ptr res = std::make_unique();
+ auto res = std::make_unique();
res->mParameters = mParameters;
return res.release();
}
diff --git a/src/analysis/interpolation/qgsgridfilewriter.cpp b/src/analysis/interpolation/qgsgridfilewriter.cpp
index 838505c80c86..2b17a766c5fd 100644
--- a/src/analysis/interpolation/qgsgridfilewriter.cpp
+++ b/src/analysis/interpolation/qgsgridfilewriter.cpp
@@ -19,7 +19,9 @@
#include "qgsinterpolator.h"
#include "qgsvectorlayer.h"
#include "qgsfeedback.h"
-#include
+#include "qgsrasterfilewriter.h"
+#include "qgsrasterdataprovider.h"
+#include "qgsrasterblock.h"
#include
QgsGridFileWriter::QgsGridFileWriter( QgsInterpolator *i, const QString &outputPath, const QgsRectangle &extent, int nCols, int nRows )
@@ -34,95 +36,66 @@ QgsGridFileWriter::QgsGridFileWriter( QgsInterpolator *i, const QString &outputP
int QgsGridFileWriter::writeFile( QgsFeedback *feedback )
{
- QFile outputFile( mOutputFilePath );
+ const QFileInfo fi( mOutputFilePath );
+ const QString outputFormat = QgsRasterFileWriter::driverForExtension( fi.suffix() );
+
+ QgsInterpolator::LayerData ld = mInterpolator->layerData().at( 0 );
+ const QgsCoordinateReferenceSystem crs = ld.source->sourceCrs();
- if ( !outputFile.open( QFile::WriteOnly | QIODevice::Truncate ) )
+ auto writer = std::make_unique( mOutputFilePath );
+ writer->setOutputProviderKey( QStringLiteral( "gdal" ) );
+ writer->setOutputFormat( outputFormat );
+
+ std::unique_ptr provider( writer->createOneBandRaster( Qgis::DataType::Float32, mNumColumns, mNumRows, mInterpolationExtent, crs ) );
+ if ( !provider )
{
+ QgsDebugMsgLevel( QStringLiteral( "Could not create raster output: %1" ).arg( mOutputFilePath ), 2 );
return 1;
}
-
- if ( !mInterpolator )
+ if ( !provider->isValid() )
{
- outputFile.remove();
+ QgsDebugMsgLevel( QStringLiteral( "Could not create raster output: %1: %2" ).arg( mOutputFilePath, provider->error().message( QgsErrorMessage::Text ) ), 2 );
return 2;
}
- QTextStream outStream( &outputFile );
-#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
- outStream.setCodec( "UTF-8" );
-#endif
- outStream.setRealNumberPrecision( 8 );
- writeHeader( outStream );
+ provider->setNoDataValue( 1, -9999 );
double currentYValue = mInterpolationExtent.yMaximum() - mCellSizeY / 2.0; //calculate value in the center of the cell
double currentXValue;
double interpolatedValue;
- for ( int i = 0; i < mNumRows; ++i )
+ std::vector float32Row( mNumColumns );
+ const double step = mNumRows > 0 ? 100.0 / mNumRows : 1;
+ for ( int row = 0; row < mNumRows; row++ )
{
+ if ( feedback && feedback->isCanceled() )
+ {
+ break;
+ }
+
currentXValue = mInterpolationExtent.xMinimum() + mCellSizeX / 2.0; //calculate value in the center of the cell
- for ( int j = 0; j < mNumColumns; ++j )
+ QgsRasterBlock block( Qgis::DataType::Float32, mNumColumns, 1 );
+
+ for ( int col = 0; col < mNumColumns; col++ )
{
if ( mInterpolator->interpolatePoint( currentXValue, currentYValue, interpolatedValue, feedback ) == 0 )
{
- outStream << interpolatedValue << ' ';
+ float32Row[col] = interpolatedValue;
}
else
{
- outStream << "-9999 ";
+ float32Row[col] = -9999;
}
currentXValue += mCellSizeX;
}
-
- outStream << Qt::endl;
+ block.setData( QByteArray( reinterpret_cast( float32Row.data() ), QgsRasterBlock::typeSize( Qgis::DataType::Float32 ) * mNumColumns ) );
+ provider->writeBlock( &block, 1, 0, row );
currentYValue -= mCellSizeY;
-
if ( feedback )
{
- if ( feedback->isCanceled() )
- {
- outputFile.remove();
- return 3;
- }
- feedback->setProgress( 100.0 * i / static_cast( mNumRows ) );
+ feedback->setProgress( row * step );
}
}
- // create prj file
- QgsInterpolator::LayerData ld;
- ld = mInterpolator->layerData().at( 0 );
- QgsFeatureSource *source = ld.source;
- const QString crs = source->sourceCrs().toWkt();
- const QFileInfo fi( mOutputFilePath );
- const QString fileName = fi.absolutePath() + '/' + fi.completeBaseName() + ".prj";
- QFile prjFile( fileName );
- if ( !prjFile.open( QFile::WriteOnly | QIODevice::Truncate ) )
- {
- return 1;
- }
- QTextStream prjStream( &prjFile );
- prjStream << crs;
- prjStream << Qt::endl;
- prjFile.close();
-
- return 0;
-}
-
-int QgsGridFileWriter::writeHeader( QTextStream &outStream )
-{
- outStream << "NCOLS " << mNumColumns << Qt::endl;
- outStream << "NROWS " << mNumRows << Qt::endl;
- outStream << "XLLCORNER " << mInterpolationExtent.xMinimum() << Qt::endl;
- outStream << "YLLCORNER " << mInterpolationExtent.yMinimum() << Qt::endl;
- if ( mCellSizeX == mCellSizeY ) //standard way
- {
- outStream << "CELLSIZE " << mCellSizeX << Qt::endl;
- }
- else //this is supported by GDAL but probably not by other products
- {
- outStream << "DX " << mCellSizeX << Qt::endl;
- outStream << "DY " << mCellSizeY << Qt::endl;
- }
- outStream << "NODATA_VALUE -9999" << Qt::endl;
return 0;
}
diff --git a/src/analysis/interpolation/qgsgridfilewriter.h b/src/analysis/interpolation/qgsgridfilewriter.h
index 8f408c0a7c23..58c41e8e552c 100644
--- a/src/analysis/interpolation/qgsgridfilewriter.h
+++ b/src/analysis/interpolation/qgsgridfilewriter.h
@@ -56,8 +56,6 @@ class ANALYSIS_EXPORT QgsGridFileWriter
private:
QgsGridFileWriter() = delete;
- int writeHeader( QTextStream &outStream );
-
QgsInterpolator *mInterpolator = nullptr;
QString mOutputFilePath;
QgsRectangle mInterpolationExtent;
diff --git a/src/analysis/mesh/qgsmeshcontours.cpp b/src/analysis/mesh/qgsmeshcontours.cpp
index 8ecc7febad2e..e07d9d939472 100644
--- a/src/analysis/mesh/qgsmeshcontours.cpp
+++ b/src/analysis/mesh/qgsmeshcontours.cpp
@@ -137,8 +137,8 @@ QgsGeometry QgsMeshContours::exportPolygons( double min_value, double max_value,
{
QVector ring = coords;
ring.push_back( coords[0] );
- std::unique_ptr ext = std::make_unique( coords );
- std::unique_ptr poly = std::make_unique();
+ auto ext = std::make_unique( coords );
+ auto poly = std::make_unique();
poly->setExteriorRing( ext.release() );
multiPolygon.push_back( QgsGeometry( std::move( poly ) ) );
continue;
@@ -236,8 +236,8 @@ QgsGeometry QgsMeshContours::exportPolygons( double min_value, double max_value,
// add if the polygon is not degraded
if ( ring.size() > 2 )
{
- std::unique_ptr ext = std::make_unique( ring );
- std::unique_ptr poly = std::make_unique();
+ auto ext = std::make_unique( ring );
+ auto poly = std::make_unique();
poly->setExteriorRing( ext.release() );
multiPolygon.push_back( QgsGeometry( std::move( poly ) ) );
}
@@ -268,7 +268,7 @@ QgsGeometry QgsMeshContours::exportLines( const QgsMeshDatasetIndex &index, doub
QgsGeometry QgsMeshContours::exportLines( double value, QgsFeedback *feedback )
{
- std::unique_ptr multiLineString( new QgsMultiLineString() );
+ auto multiLineString = std::make_unique();
QSet> exactEdges;
// STEP 1: Get Data
@@ -337,7 +337,7 @@ QgsGeometry QgsMeshContours::exportLines( double value, QgsFeedback *feedback )
else
{
exactEdges.insert( { indices[i], indices[j] } );
- std::unique_ptr line( new QgsLineString( coords[i], coords[j] ) );
+ auto line = std::make_unique( coords[i], coords[j] );
multiLineString->addGeometry( line.release() );
break;
}
@@ -361,7 +361,7 @@ QgsGeometry QgsMeshContours::exportLines( double value, QgsFeedback *feedback )
else
{
// we have found the end point of the contour line, we are done
- std::unique_ptr line( new QgsLineString( tmp, xy ) );
+ auto line = std::make_unique( tmp, xy );
multiLineString->addGeometry( line.release() );
break;
}
diff --git a/src/analysis/processing/pdal/qgsalgorithmpdaldensity.cpp b/src/analysis/processing/pdal/qgsalgorithmpdaldensity.cpp
index 498a989104ab..da767cdf1b20 100644
--- a/src/analysis/processing/pdal/qgsalgorithmpdaldensity.cpp
+++ b/src/analysis/processing/pdal/qgsalgorithmpdaldensity.cpp
@@ -65,10 +65,10 @@ void QgsPdalDensityAlgorithm::initAlgorithm( const QVariantMap & )
createCommonParameters();
- std::unique_ptr paramOriginX = std::make_unique( QStringLiteral( "ORIGIN_X" ), QObject::tr( "X origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Double, QVariant(), true, 0 );
+ auto paramOriginX = std::make_unique( QStringLiteral( "ORIGIN_X" ), QObject::tr( "X origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Double, QVariant(), true, 0 );
paramOriginX->setFlags( paramOriginX->flags() | Qgis::ProcessingParameterFlag::Advanced );
addParameter( paramOriginX.release() );
- std::unique_ptr paramOriginY = std::make_unique( QStringLiteral( "ORIGIN_Y" ), QObject::tr( "Y origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Integer, QVariant(), true, 0 );
+ auto paramOriginY = std::make_unique( QStringLiteral( "ORIGIN_Y" ), QObject::tr( "Y origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Integer, QVariant(), true, 0 );
paramOriginY->setFlags( paramOriginY->flags() | Qgis::ProcessingParameterFlag::Advanced );
addParameter( paramOriginY.release() );
diff --git a/src/analysis/processing/pdal/qgsalgorithmpdalexportraster.cpp b/src/analysis/processing/pdal/qgsalgorithmpdalexportraster.cpp
index 1ea89c316434..fe6a6b419a89 100644
--- a/src/analysis/processing/pdal/qgsalgorithmpdalexportraster.cpp
+++ b/src/analysis/processing/pdal/qgsalgorithmpdalexportraster.cpp
@@ -66,10 +66,10 @@ void QgsPdalExportRasterAlgorithm::initAlgorithm( const QVariantMap & )
createCommonParameters();
- std::unique_ptr paramOriginX = std::make_unique( QStringLiteral( "ORIGIN_X" ), QObject::tr( "X origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Double, QVariant(), true, 0 );
+ auto paramOriginX = std::make_unique( QStringLiteral( "ORIGIN_X" ), QObject::tr( "X origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Double, QVariant(), true, 0 );
paramOriginX->setFlags( paramOriginX->flags() | Qgis::ProcessingParameterFlag::Advanced );
addParameter( paramOriginX.release() );
- std::unique_ptr paramOriginY = std::make_unique( QStringLiteral( "ORIGIN_Y" ), QObject::tr( "Y origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Integer, QVariant(), true, 0 );
+ auto paramOriginY = std::make_unique( QStringLiteral( "ORIGIN_Y" ), QObject::tr( "Y origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Integer, QVariant(), true, 0 );
paramOriginY->setFlags( paramOriginY->flags() | Qgis::ProcessingParameterFlag::Advanced );
addParameter( paramOriginY.release() );
diff --git a/src/analysis/processing/pdal/qgsalgorithmpdalexportrastertin.cpp b/src/analysis/processing/pdal/qgsalgorithmpdalexportrastertin.cpp
index fe614283142d..73d3be04f007 100644
--- a/src/analysis/processing/pdal/qgsalgorithmpdalexportrastertin.cpp
+++ b/src/analysis/processing/pdal/qgsalgorithmpdalexportrastertin.cpp
@@ -65,10 +65,10 @@ void QgsPdalExportRasterTinAlgorithm::initAlgorithm( const QVariantMap & )
createCommonParameters();
- std::unique_ptr paramOriginX = std::make_unique( QStringLiteral( "ORIGIN_X" ), QObject::tr( "X origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Double, QVariant(), true, 0 );
+ auto paramOriginX = std::make_unique( QStringLiteral( "ORIGIN_X" ), QObject::tr( "X origin of a tile for parallel runs" ), Qgis::ProcessingNumberParameterType::Double, QVariant(), true, 0 );
paramOriginX->setFlags( paramOriginX->flags() | Qgis::ProcessingParameterFlag::Advanced );
addParameter( paramOriginX.release() );
- std::unique_ptr