626 Commits

Author SHA1 Message Date
Nyall Dawson
712b3e72c6 QgsMultiRenderChecker: avoid misleading console output noise
When the checker passes comparison against ANY reference image,
don't output mismatch failure message for all the other variants
2024-10-24 09:51:21 +10:00
Nyall Dawson
f9a7ac7329 Add methods to insert content into QgsTextBlock/QgsTextDocument 2024-10-21 13:41:51 +10:00
Nyall Dawson
cf1e6fd9bc Make "archive" copy of QgsPalLayerSettings::calculateLabelSize
For stable API use only, and then cleanup the private version
of this to remove all the consideration of 3.0 API compatibility.

Mark the archive copy as deprecated and remove in 4.0

This method has become completely unweildy because of all the
compatibility code. By making this private only we can rip
out all this old code and make the method much simpler and
easy to understand.
2024-10-21 13:41:51 +10:00
Germán Carrillo
512ea7d062 [fix] When passing from Stacked Diagram to a single one, take the first one (if it exists) in the stacked diagram as a basis for the new single one
Before this commit, the stacked diagram properties were taken as a basis, losing valuable diagram settings in the process.
Note this reverts commit 2f9a0758b309ef162d6390b7411cba71af3375be
2024-10-19 06:24:23 +10:00
Germán Carrillo
deb210929a [core] Remove unused method in QgsStackedDiagramRenderer 2024-10-19 06:24:23 +10:00
Germán Carrillo
4977c8f746 [gui] Document and handle ownership in QgsStackedDiagramProperties and underlying model 2024-10-19 06:24:23 +10:00
Germán Carrillo
cae14bb852 [core] Implement StackedDiagramRenderer's copy constructor (called by clone()) and operator= 2024-10-19 06:24:23 +10:00
Germán Carrillo
585d0df594 [core] Make sure QgsStackedDiagramRenderer::addRenderer() takes ownership 2024-10-19 06:24:23 +10:00
Nyall Dawson
6b3eefd115 Add test blocking any new introduction of QgsProject::instance() in core 2024-10-19 06:22:04 +10:00
Nyall Dawson
41553459d8 [gps] Be tolerant to talker IDs which don't start with 'G'
From the nmea specifications it is clear that the talker ID
does not have to start with 'G'. Accordingly remove ALL these
incorrect hardcoded checks against (a very small subset) of
known talker IDs, and permit any two-character string
as a valid talker ID

Fixes connection to NMEA devices which use "IN" for
talker ID (and others)
2024-10-19 06:21:20 +10:00
Germán Carrillo
cc6feb11f6 Add missing \since and \see in method docs, replace @param by \param 2024-10-17 13:37:13 +10:00
uclaros
da412089cd Make the QgsTracer not add unnecessary points on intersections 2024-10-16 16:27:40 +02:00
Alessandro Pasotti
8e106b8c10
Merge pull request #59105 from elpaso/bugfix-wms-max-tile-size
[wms] Fix unreported issue max tile size from capabilities ignored
2024-10-16 14:44:17 +02:00
Alessandro Pasotti
2078ef5c03 [wms] Fix unreported issue max tile size from capabilities ignored
Fix an unreported issue with WMS client ignoring the advertised tile
size from GetCapabilities (because the raster iterator always used
its own hardcoded default).

A new method was added to retrieve this information from data providers
only implemented for WMS at the moment.

The test has been reformatted for consistency with other core tests
by moving the implementation outside of the class. The actual change is
the addition of TestQgsWmsProvider::testMaxTileSize().

Funded by: M.O.S.S. Computer Grafik Systeme GmbH https://www.moss.de/
2024-10-16 09:29:36 +02:00
Nyall Dawson
f2f05abca1 Cleanup docs, use \param instead of @param 2024-10-16 13:01:39 +10:00
Nyall Dawson
4eb6ce1053 Add isValid() method for QgsScaleBarRenderer::RendererContext 2024-10-16 12:00:32 +10:00
Nyall Dawson
2f4e5f0269 Mark QgsOptional bool operator as explicit
And reimplement for Python
2024-10-16 10:51:47 +10:00
Nyall Dawson
b5fa8d51fb Mark QgsProperty bool operator as explicit
And reimplement in Python, as sip can't handle explicit bool
operator from c++
2024-10-16 10:51:47 +10:00
Denis Rouzaud
e1a059b1da
Merge pull request #59092 from nyalldawson/pointxy_equality
Remove duplicate equality operator for QgsPointXY
2024-10-15 14:32:46 +02:00
Nyall Dawson
7b1b51a886
Remove duplicate equality operator for QgsPointXY
We had two different(!!!!) implementations for equality operator
for QgsPointXY, with different logic (one handled empty points,
the other didn't). This compiled only because one was not marked
as const. So we'd get a DIFFERENT equality check logic depending
on whether or not the first point was const... eeek!

Remove the duplicate one, mark the better one as const
2024-10-15 16:47:46 +10:00
Alessandro Pasotti
9098fb9140
Merge pull request #58916 from elpaso/bugfix-gh58875-exp-compiler-with-plus-strings
Fix SQL expression compiler plus operator with strings
2024-10-15 08:45:39 +02:00
Nyall Dawson
bc28bfd333 Fix/suppress more duplInheritedMember warnings 2024-10-15 15:00:05 +10:00
Nyall Dawson
6b344cd1fc Remove broken swap methods, replace with standard assignment op
which correctly sets all members
2024-10-15 15:00:05 +10:00
Nyall Dawson
56e58a2f74 Remove duplicate inherited members 2024-10-15 15:00:05 +10:00
Nyall Dawson
b85e373a31 Remove duplicate methods defined in subclasses 2024-10-15 15:00:05 +10:00
Nyall Dawson
de73f3c975 Add docs 2024-10-15 15:00:05 +10:00
Nyall Dawson
967388df86 Fix cppcheck 'function can be const' warnings 2024-10-15 15:00:05 +10:00
Nyall Dawson
2084479191 Fix flipped docstrings 2024-10-15 15:00:05 +10:00
Nyall Dawson
29b345e2c3 Add scale method option for layout scale bars
Instead of always calculating the scale along the bottom of the
map, expose a choice of methods to the user (along bottom,
middle, top, or average of the three measurements)

For new scalebars, default to the average method, which better
handles the scenario where the scale at the top or bottom of
the map cannot be calculated (eg when the top/bottom of the map
falls just outside valid areas for the map's crs)

This fixes one of the most common scenarios which cause scale
bar widths to blow out to massive sizes

Refs #55240
2024-10-15 12:38:07 +10:00
Nyall Dawson
022852c815 Fix aggregate function returns incorrect results
When the aggregate uses variables, we need to ensure that the
cache key correctly considers the current value of ALL those
variables. Otherwise we'll return incorrect results when
an expression is re-evaluated after changing the variable
value for the context.

Fixes use of aggregate function with @symbol_label in legends.

Fixes #58221
2024-10-14 12:57:26 +02:00
Alessandro Pasotti
61935ad591 Introduce QgsVariantUtils::isNumericType 2024-10-11 16:14:24 +02:00
Nyall Dawson
4c9072e265 Only render main annotation layer in main map canvas or docked maps
Don't show it in other map canvas instances, eg the coordinate
bounds preview map

Fixes #58766
2024-10-11 16:23:37 +10:00
Nyall Dawson
b2d2fc9e28 Optimise text rendering for a common scenario
Reduces a lot of overhead when rendering non-buffered, non-shadowed
text. Cuts render time by ~50% in my testing.

Also introduces a "PreferText" render option, where we default
to using text painting methods in all scenarios where we know
there's no loss in rendering quality to do so. This mode should
become the new default in a future QGIS release, as it is
designed to be faster with no visible rendering differences.

Expand unit testing by covering all text render modes in all
text renderer rendering tests.
2024-10-11 13:32:53 +10:00
Alessandro Pasotti
75c3ad0f90 Fix docstring 2024-10-11 11:24:33 +10:00
Alessandro Pasotti
9a35e0ea89 Exception for constraint expression 2024-10-11 11:24:33 +10:00
Nyall Dawson
d36982fd4d Reduce duplicate code 2024-10-11 11:22:54 +10:00
Jean Felder
721b0459c4
qgspolyhedralsurface: Implement isValid (#59031)
`QgsPolyhedralSurface` inherits from `QgsSurface` which implements
`QgsAbstractgeometry::isValid` by calling `isValid` from
GEOS. However, GEOS does not handle polyhedral surface. This means
that `isValid` will always return False even if the polyhedral surface
is valid.

This issue is fixed by implementing
`QgsPolyhedralSurface::isValid`. It checks that all the polygons of
the polyhedral surface are valid.
2024-10-10 15:21:47 +02:00
Nyall Dawson
65c654d2c8 Prep for calculating word wrapping in text document metrics 2024-10-10 11:09:18 +10:00
Germán Carrillo
4a73ef0028 [core] Address review: switch from string comparison to static const members 2024-10-10 08:27:52 +10:00
qgis-bot
64e79914dd auto sipify 🍺 2024-10-09 03:49:26 +00:00
Even Rouault
9f605a6426 Don't use the The Word Which Must Not Be Used
I limited the renaming to things that are not in the public API and
are not setting names. This is probably more than we strictly need to
do, but at least this will help doing potential future similar 'grep'
exercises.
2024-10-09 11:50:08 +10:00
Germán Carrillo
0c7ea8f4b8 Address review: move qgsLessThanMaximumScale and qgsEqualToOrGreaterThanMinimumScale functions to QgsScaleUtils 2024-10-08 09:13:34 +10:00
Germán Carrillo
dd907d6bdf [core] Introduce functions qgsLessThanMaximumScale and qgsEqualToOrGreaterThanMinimumScale to make robust checks between map scale and maximum/minimum rendering scales in a scale dependent visibility context, taking non-round scales (denominators) 2024-10-08 09:13:34 +10:00
Germán Carrillo
490b47daf0 [core] Mark Qgis::SCALE_PRECISION as deprecated, since scale dependent visibility became more robust on range limits (namely, on non-round numbers). 2024-10-08 09:13:34 +10:00
Denis Rouzaud
5f18ff84a2
make QgsVectorTilesUtils available to Python bindings (#58989) 2024-10-07 18:07:48 +02:00
Nyall Dawson
594b466160 [api] Allow sink flags to be specified for QgsVectorFileWriterTask 2024-10-07 09:32:46 +02:00
Nyall Dawson
94ec0d9139 QgsMapLayer::setDataSource don't require layer name, provider
Make them optional, and default to current layer name/provider
when not specified
2024-10-03 19:46:08 +10:00
Nyall Dawson
a7a5f972ae Add render context flag to always disable symbol clipping 2024-10-03 12:49:18 +10:00
Nick Bowsher
9a08f1097a
[feature] Add extra mesh layer legend node for currently displayed vector datasets 2024-10-02 11:13:40 +10:00
Nyall Dawson
52226f0b9c Mark models as security risk if they contain algs with security risks 2024-10-02 10:36:00 +10:00