1281 Commits

Author SHA1 Message Date
Jean Felder
2747710499 qgsrasterrenderer: Introduce needsRefresh
This is similar to what is achieved in
`QgsRasterLayer::refreshRendererIfNeeded()` to check if the renderer
needs to be refresh according to an extent. It does not perform any
refresh.

It is not used at the moment. This will replace the logic to refresh a
renderer in the following commits.
2024-11-28 14:37:06 +10:00
Jean Felder
efaff7e2f5 introduce qgsrenderedlayerstatistics
This will be used in the next commits to store the min-max values of a
raster layer and report them to the main canvas.
2024-11-28 14:37:06 +10:00
Nyall Dawson
0dbf6e730b Add equality operator for QgsMesh3DSymbol 2024-11-27 10:53:53 +10:00
qgis-bot
cfeafb4610 auto sipify 🍺 2024-11-26 21:13:42 +00:00
Yoann Quenach de Quivillic
8a61c97df3 Apply suggestions from code review 2024-11-27 07:10:29 +10:00
Yoann Quenach de Quivillic
32c6a3d8e7 Add global enum 2024-11-27 07:10:29 +10:00
Yoann Quenach de Quivillic
dcfa0082fa Add double click handler 2024-11-27 07:10:29 +10:00
qgis-bot
96984ac6a6 auto sipify 🍺 2024-11-26 10:08:44 +00:00
Nyall Dawson
eb750fb7a8 Use doubles for properties in QgsAbstractMaterialSettings subclasses
These classes are supposed to store the original setting values,
so doubles are more appropriate as they won't slightly change
eg when round-tripping through qgis project XML.

(The actual 3d material classes still use floats, this is just
for the settings classes)
2024-11-26 20:05:30 +10:00
Nyall Dawson
0dc89613df Expose equals method for QgsAbstractMaterialSettings subclasses 2024-11-26 20:05:30 +10:00
Alexander Bruy
b112840aec
Merge pull request #59590 from nyalldawson/mesh_3d_py
Expose QgsMesh3DSymbol to Python
2024-11-26 10:02:36 +00:00
qgis-bot
d45401c7de auto sipify 🍺 2024-11-26 10:01:12 +00:00
Nyall Dawson
6b468bc32d
Add != operator for QgsColorRampShader 2024-11-26 15:04:03 +10:00
Nyall Dawson
373b48ce10
Expose QgsMesh3DSymbol to Python 2024-11-26 14:42:21 +10:00
qgis-bot
eacf823601 auto sipify 🍺 2024-11-25 16:19:42 +00:00
Martin Dobias
6defbc68c4 Review: add missing \since 2024-11-25 17:16:28 +01:00
Martin Dobias
60554195dc Add possibility to shift origin of 3D map scenes
This introduces a new class QgsGeoTransform (derived from QTransform)
that keeps chunk's translation vector as a QgsVector3D (i.e. in double
coordinates) and if there is a shift of the origin, 3D map scene and
chunk entities react to it by adjusting the underlying QTransform.
2024-11-25 17:16:28 +01:00
qgis-bot
128a4a6dec auto sipify 🍺 2024-11-25 00:29:49 +00:00
Mathieu Pellerin
cbef4f7172 [qml] Upgrade QgsRectangle to Q_GADGET 2024-11-25 10:26:38 +10:00
Mathieu Pellerin
3ec4a8aab3 [qml] Expose QgsLocatorContext's transformContext as property 2024-11-25 10:26:38 +10:00
qgis-bot
1cdf1d72b8 auto sipify 🍺 2024-11-22 23:04:12 +00:00
Nyall Dawson
e82b375ed0 Revert "[qml] Upgrade QgsRectangle to Q_GADGET"
This reverts commit 657d3d3190417fc1578f53559fd5133cf07f5199.
2024-11-23 09:01:05 +10:00
Nyall Dawson
9a537b71e9 Revert "[qml] Expose QgsLocatorContext's transformContext as property"
This reverts commit 714ddff73991730d4ea4b063a09ed800d2623d19.
2024-11-23 09:01:05 +10:00
qgis-bot
3440c17df1 auto sipify 🍺 2024-11-22 10:39:03 +00:00
Mathieu Pellerin
714ddff739 [qml] Expose QgsLocatorContext's transformContext as property 2024-11-22 17:35:55 +07:00
Mathieu Pellerin
657d3d3190 [qml] Upgrade QgsRectangle to Q_GADGET 2024-11-22 17:35:55 +07:00
qgis-bot
e5413344a9 auto sipify 🍺 2024-11-21 20:02:59 +00:00
Nyall Dawson
6708501ee9 [feature] Support CSS background property in labels/text renderer
This commit adds support for the CSS ``background-color`` and
``background-image`` properties when used with HTML labels.

- Backgrounds are supported for block items (eg ``<div>``) or inline
  items (eg ``<span>``)
- For images, the CSS should be formatted as ``background-image: url(xx)``.
  It supports local file paths, http links, or base64 embedded content
- Backgrounds are not supported for curved text
- HTML backgrounds are always rendered above any background shape for
  the label, and below drop shadows/buffers

Sponsored by City of Freiburg im Breisgau
2024-11-22 05:59:44 +10:00
Nyall Dawson
dd84aab200 Add background brush property for QgsTextBlock, QgsTextFragment 2024-11-22 05:59:44 +10:00
Jean Felder
dfce7dc231 qgs3dmapscene: Compute max clip planes
The number of available clip planes depends on the OpenGL
implementation.

This change Introduces a new function in Qgs3DUtils function called
`Qgs3DUtils::getOpenGLMaxClipPlanes` to compute this
number (`GL_MAX_CLIP_PLANES`) and use it in the 3D scene.

See: https://registry.khronos.org/OpenGL-Refpages/gl2.1/xhtml/glClipPlane.xml
2024-11-21 17:08:41 +01:00
qgis-bot
70d7f59e06 auto sipify 🍺 2024-11-21 14:10:03 +00:00
Mathieu Pellerin
7d190f9171
[qml] Upgrade QgsLocatorResult to a Q_GADGET (#59547) 2024-11-21 15:03:52 +01:00
qgis-bot
a497042d42 auto sipify 🍺 2024-11-21 12:12:36 +00:00
Jean Felder
936affa860 qgsdoublespinbox: Introduce isCleared method 2024-11-21 13:09:23 +01:00
qgis-bot
14ab3d40de auto sipify 🍺 2024-11-21 08:33:56 +00:00
Withalion
5f6259ac10 Fix issues found in review 2024-11-21 09:30:45 +01:00
Withalion
1551449df3 Move debug panel icon from toolbar
Debug panel in 3d map view can be set in advanced settings or by
keyboard shortcut CTRL + SHIFT + d
2024-11-21 09:30:45 +01:00
Withalion
c76455bcc6 Add stop updates checkbox in 3D View options 2024-11-21 09:30:45 +01:00
qgis-bot
2eef9e12d3 auto sipify 🍺 2024-11-21 01:15:27 +00:00
Mathieu Pellerin
10883253d3 [qml] Upgrade QgsLocatorContext to a Q_GADGET 2024-11-20 21:02:31 +07:00
qgis-bot
7d374b248e auto sipify 🍺 2024-11-19 11:09:39 +00:00
Nyall Dawson
2abc9d92ca [sld] Don't try to write rules/categorizes without symbolizers
Only create rules/categorized categories/graduated ranges if the
associated symbol could be converted to SLD, and is not an "empty"
symbol.

Otherwise we do not generate a rule, as SLD spec requires a
Symbolizer element to be present.
2024-11-19 21:06:26 +10:00
qgis-bot
45a0abf3be auto sipify 🍺 2024-11-19 02:43:51 +00:00
Nyall Dawson
f446bda82a [optimisation] Greatly speed up clone of QgsSvgMarkerSymbolLayer
The old method was very inefficient, as it required a re-load and
re-parse of the associated SVG file content with every clone, only
for many of the parsed properties to be immediately overwritten.

Optimise by just directly copying members, avoiding all unnecessary
work.

This is frequently seen as a hotspot when profiling map renders,
as that involves cloning all symbol layers upfront.

Speeds up a benchtest cloning 100k markers from 4.3 seconds to
150ms.
2024-11-19 12:40:44 +10:00
qgis-bot
c3432328fc auto sipify 🍺 2024-11-19 01:18:45 +00:00
Nyall Dawson
7a17557e64 Refactor QgsTextRenderer internal methods, optimise buffer render
Rework internals of QgsTextRenderer horizontal text rendering,
so that:

1. It's easier to read, cleaning up years of accumulated cruft
2. Split out bits into smaller functions
3. Reduce the amount of duplicate code for text layout, so that
there's only one function responsible for horizontal text layout
instead of multiple
4. Add shortcut optimisations for rendering text + buffer/shadow
at the same time, instead of always drawing these completely
independantly of each other and incurring the cost of text path
calculation multiple times for the same bit of text. In a simple
benchtest this reduces the time required for rendering many
text fragments with buffers from 40 seconds to 27 seconds.

There's still more we could do here, but it's a start...
2024-11-19 11:15:34 +10:00
qgis-bot
c41be037d9 auto sipify 🍺 2024-11-15 21:31:40 +00:00
Harrissou Sant-anna
6648c9596c s/if/whether 2024-11-16 07:28:29 +10:00
Harrissou Sant-anna
ac3c06d3ad Rewording and formatting in PyQGIS docs 2024-11-16 07:28:29 +10:00
Denis Rouzaud
3e085e496b move read/write XML for QgsMapThemeCollection::MapThemeRecord inside class 2024-11-16 07:24:58 +10:00