* [FEATURE] API for rendering frames for mesh vector dataset animation (particles)
Adds a renderer to generate frames that represent particle traces in a vector field of a mesh layer. The renderer cannot be chosen in the current GUI, however crayfish plugin can use API to generate avi/gif files with nice animations representing the movement of (random) particles in the mesh layer vector field.
When a rendering operation was canceled, PAL had very few early
exit points. This often resulted in many canceled rendering operations
burning away in background threads as labeling candidates and solutions
were being generated for jobs which were no longer needed.
Add more exit points and cancel checks throughout various expensive
pal operations, allowing labeling jobs to terminate quickly.
Fixes#32489
the picture item at the cursor drop location instead of the top left
We want the drop location to be the center of the placed item,
because drag thumbnails are usually centered on the mouse cursor
when attempting to identify a CRS specified via WKT
Because:
1. Proj string conversion is lossy, so we will end up with misleading results
2. If proj can't identify the CRS based on the WKT alone, then any CRS it
identifies from a lossy proj conversion will be incorrect
3. Proj is smarter than QGIS, we should trust it and not rely on downstream hacks
(4. I want to implement creation of user CRS via WKT instead of only proj, and
having this hack in place will break things)
If the number of candidates is < the number of features (i.e. some features have
no candidates), we'll get a crash. And if the number of candidates >> number of features
(the usual case), we're just creating a much larger vector than we'll ever use...
(I think. It's pal. No-one know for sure.)
This allows users to upgrade existing projects to the newer labeling engine version.
A warning will show advising users that change the version will alter the placement
of labels within the project.
placement rules should be followed when solving the pal labeling engine
solution.
For new projects it defaults to version 2, but when loading an older project
version 1 is used.
This allows changes to be made to the label placement problem solving without
affecting the placement of labels in existing projects.
We have a (better) sorting method in QGIS which accounts for other
things like the label z orders, so this sorting in the pal library
is completely redundant and is immediately overwritten by QGIS
label sorting routines.