22531 Commits

Author SHA1 Message Date
Nyall Dawson
0e363e66c2 Remove abstract class for bounding volumes, and always treat
bounding volumes as OBB

Greatly simplifies the code. There's a small loss of efficiency
since we will always be expanding out spheres to their bounding
boxes, but given we always require boxes for QGIS 3d nodes
anyway this will only impact 2d rendering.
2023-08-10 10:41:23 +02:00
Nyall Dawson
3e25c977a0 Use numeric IDs for tiled scene tiles instead of uuids 2023-08-10 10:32:55 +10:00
Jean Felder
6565b0d3f9 processing: Fix some tests for GEOS 3.11 and above
This has been tested with GEOS 3.10, 3.11 and 3.12.
2023-08-10 04:56:29 +10:00
Martin Dobias
41518dbc19 Nyall's review 2023-08-09 13:54:53 +02:00
Martin Dobias
6f3425a8cb 3D renderer implementation for 3D tiles 2023-08-09 13:54:53 +02:00
Denis Rouzaud
5d55ee48d2
[settings] support enum and flags in tree editor (#54011) 2023-08-08 17:30:15 +00:00
Nyall Dawson
4849099a48 Load some basic provider metadata to tiled scene layer metadata 2023-08-07 18:44:23 +10:00
Nyall Dawson
a9cd6b8992 Show tiled scene layers in layer styling dock 2023-08-07 18:43:10 +10:00
Nyall Dawson
c6a4a71bd9 Implement GUI infrastructure for 2d tiled scene renderers 2023-08-07 18:43:10 +10:00
Nyall Dawson
a6b16added Shell for tiled scene texture renderer 2023-08-07 18:43:10 +10:00
Nyall Dawson
c8658efde4 Setup core infrastructure for tiled scene 2d renderers 2023-08-07 18:43:10 +10:00
Andrea Giudiceandrea
3c9aaddaed Fix QgsPageSize description 2023-08-07 13:54:10 +10:00
Nyall Dawson
9f57fb2ef0 Rename "tiled mesh" to "tiled scene"
Better reflects that these types can contain lines and point
data, not just meshes
2023-08-05 21:31:49 +10:00
Juergen E. Fischer
3e774edcb6 grass on windows:
* avoid running grassMm.bat found in the current directory
* avoid finding and running GRASS pager found in the current directory
2023-08-05 10:49:09 +10:00
Alexandre Neto
6f1d39a7f3 update sip 2023-08-05 10:48:51 +10:00
Alexandre Neto
1c30d618aa Try to clean all traces of the Graphical modeler and replace by Model Designer 2023-08-05 10:48:51 +10:00
Nyall Dawson
af9e2a6d34 Add method to render triangle on QPainter using triangular portion of texture QImage
Useful for 2d rendering of 3d meshes with a texture
2023-08-05 05:30:41 +10:00
Nyall Dawson
51eb0a7ec6 Add method to generate QTransform which maps one triangle to another 2023-08-05 05:30:41 +10:00
Nyall Dawson
8179e0dacb Fix seealso links 2023-08-05 05:05:46 +10:00
Nyall Dawson
5597a2a640 Add flags to QgsTiledMeshRequest 2023-08-05 05:05:46 +10:00
Nyall Dawson
12bf02cc89 Avoid ambiguity in 'refinement' naming, remove ambiguity about
whether a tile has children available, no children, or not-yet-
fetched children
2023-08-05 05:05:46 +10:00
Nyall Dawson
e1f62940d9 Remove QgsTiledMeshNode from public api 2023-08-05 05:05:46 +10:00
Nyall Dawson
ce0358ef74 Move parent tile ID filter to QgsTiledMeshRequest 2023-08-05 05:05:46 +10:00
Nyall Dawson
c42407143e Add intersects tests for QgsAbstractTiledMeshNodeBoundingVolume 2023-08-05 05:05:46 +10:00
Nyall Dawson
00f63c3b76 Introduce QgsTiledMeshIndex
This is an equivalent of the point cloud index class, with some
notable differences:

- The class is designed to be thread safe. There's a shallow copy
QgsTiledMeshIndex class, which contains an implicitly shared
QgsAbstractTiledMeshIndex object. Tiled mesh data providers will
be accompanied by a concrete class of QgsAbstractTiledMeshIndex.
- The QgsTiledMeshIndex class takes care of thread safety by
protecting the underlying QgsAbstractTiledMeshIndex via a read/write
lock
- Callers can request tiled mesh tiles from the index by calling
QgsTiledMeshIndex::getTiles along with a QgsTiledMeshRequest object.
This will return the unique IDs of tiles matching the request.
Currently only geometric error based filtering is supported
by QgsTiledMeshRequest, but bounding box based filtering will
also be introduced.
- Individual tile details are retrieved by calling
QgsTiledMeshIndex::getTile along with the tile's unique ID.
- A caller can determine whether a specific tile can be further
refined by checking QgsTiledMeshIndex::tileCanRefine. This allows
the caller to check whether more children are available for a
tile, but which haven't yet been fetched (eg due to a sub dataset
tileset which hasn't yet been retrieved)
- A tile can be refined by calling QgsTiledMeshIndex::refineAsync.
(Non async refinement will be introduced later)
- Clients can request tile content by calling
  QgsTiledMeshIndex::retrieveContent. This will either return
a cached version of the content (if available), or retrieve and cache
the content for future retrieval. Currently this uses a custom caching
mechanism, but this will be replaced in future with
QgsTileDownloadManager. (Currently QgsTileDownloadManager lacks support
for blocking gets which is required by the index to avoid use
of local event loops)

The api is implemented by the cesium tiles data provider, which
builds the index upfront from the cesium tiles tileset.json definitions.
2023-08-05 05:05:46 +10:00
Nyall Dawson
08e739fea7 Add class for storing hierarchy tree of QgsTiledMeshTile 2023-08-05 05:05:46 +10:00
Nyall Dawson
c22796d6fe Add QgsTiledMeshRequest
Encapsulates parameters for filtering tiled mesh tiles
2023-08-05 05:05:46 +10:00
Nyall Dawson
0e77729860 Add method to transform a tiled mesh bounding volume via QgsMatrix4x4 2023-08-05 05:05:46 +10:00
Nyall Dawson
f3c987f5e5 Introduce QgsTiledMeshTile
Represents an individual tile from a tiled mesh scene
2023-08-05 05:05:46 +10:00
Nyall Dawson
77f8b83ac0 Minor optimisations to QgsExpressionNodeFunction construction 2023-08-04 11:59:37 +10:00
Nyall Dawson
08b8c6d7be Improve cost of QgsExpression::functionIndex
This is called a LOT! Optimise the function by avoiding multiple
list copies and by caching previous found function indexes
2023-08-04 11:59:37 +10:00
Etienne Trimaille
54438f76b6 Minor review of the Python code in the QGIS plugin manager 2023-08-04 08:25:48 +10:00
Nyall Dawson
0dc49da0c4 Remove unused method, add reference 2023-08-03 22:13:03 +10:00
Nyall Dawson
22fd8d9698 Add method to detect whether two QgsOrientedBox3Ds intersect 2023-08-03 22:13:03 +10:00
Nyall Dawson
2ae70ebd8a Add repr, equality operators for QgsMatrix4x4 2023-08-03 15:27:22 +10:00
Nyall Dawson
5b0b7e3c2f Add repr for QgsBox3D, QgsOrientedBox3D 2023-08-03 15:27:22 +10:00
Nyall Dawson
519c32a3ff Hold GIL for more methods 2023-08-03 15:27:22 +10:00
Nyall Dawson
c3159d5a28 Add method to get corners of QgsBox3D 2023-08-03 15:27:22 +10:00
Nyall Dawson
5bdbcc4f6c Add more helpful methods for 3d objects 2023-08-03 15:27:22 +10:00
Nyall Dawson
6c24fa8571 Add some more convenience methods for QgsOrientedBox3D 2023-08-03 15:27:22 +10:00
Nyall Dawson
2683d7802a Add method to project a QgsVector3D onto another QgsVector3D 2023-08-03 15:27:22 +10:00
Nyall Dawson
37ec173868 Add Qgis::SymbolLayerUserFlags for user-controlled flags which
alter the handling of symbol layers

These differ from Qgis::SymbolLayerFlag in that
Qgis::SymbolLayerFlag flags are used to reflect the inbuilt properties
of a symbol layer type, whereas Qgis::SymbolLayerUserFlag are optional,
user controlled flags which can be toggled for a symbol layer.

Add a flag `DisableSelectionRecoloring` which can be set for
symbol layers which prevents the layer from being recolored to
the render context selection color even when the feature
being rendered is selected

This provides a mechanism for an individual symbol layer to
avoid the forced recolor of selected features.
2023-08-02 12:49:01 +10:00
Nyall Dawson
e5bddbab1a Don't discard custom color/symbol when changing layer selection
mode
2023-07-29 18:36:11 +10:00
Nyall Dawson
e5eb082a81 Add API to set specific symbol to render for selected features in
a vector layer

If set, then that symbol will be used for selected features. Allows
eg selected lines to be rendered in a thicker line style vs
non-selected lines for improved visibility.
2023-07-29 18:36:11 +10:00
Nyall Dawson
8931268c74 Add API to set selected feature color for vector layers 2023-07-29 18:36:11 +10:00
Nyall Dawson
71a778e492 Introduce framework for QgsMapLayerSelectionProperties
QgsMapLayerSelectionProperties exposes settings for controlling
how an individual QgsMapLayer behaves with respect to feature selection.
2023-07-29 18:36:11 +10:00
Mathieu Pellerin
749aa705a9
Merge pull request #53965 from nirvn/copy_paste_duplicate
Insure that copied features within the same layer respect project relationship(s) strength
2023-07-28 23:30:47 +07:00
Mathieu Pellerin
859558a1a5 Add test + address review 2023-07-28 19:16:36 +07:00
Nyall Dawson
6cdc01b888 Fix exception when running an algorithm which has no parameters
through the toolbox

We were passing a float to a PyQt method requiring int in newer
Python versions, which raises an exception instead of silently
truncating.
2023-07-28 13:35:24 +10:00
Mathieu Pellerin
3734bee6a5 [map tool] When copy-moving a feature, use duplicate feature function to insure composition relationships are respected 2023-07-27 15:40:40 +07:00