453 Commits

Author SHA1 Message Date
Nyall Dawson
482311b668 Don't use raw html lists in documentation 2024-08-30 05:47:07 +10:00
Nyall Dawson
aeea68790f Don't use raw dd/dl/dt tags in documentation
Markdown headings should be used instead

Fixes #54430
2024-08-30 05:47:07 +10:00
Nyall Dawson
d23c3c52b1 Remove unnecessary method 2024-08-29 13:27:23 +10:00
Nyall Dawson
16e05a207b [feature] Add 'Custom Expression' numeric format
This numeric format allows users to craft a custom QGIS expression
to format numbers. The expression can use the @value variable
to retrieve the value to be formatted, and then use any standard
QGIS expression function to format this as desired.

It can be used anywhere QgsNumericFormat is accepted, eg layout
scalebars, elevation plots, layout tables, and color ramp
legends

Sponsored by the Swiss QGIS User Group
2024-08-29 13:27:23 +10:00
Nyall Dawson
519959154a Fix some overly verbose class "brief" descriptions 2024-08-28 11:58:21 +10:00
Nyall Dawson
a478545108 Fix bad docs 2024-08-28 11:58:21 +10:00
Nyall Dawson
bc52832b47 Lazily hack around markdown title underline not being long enough
Causes a bunch of warnings when building the PyQGIS docs
2024-08-28 11:58:21 +10:00
Nyall Dawson
088aea0d0d Fix incorrect use of inline returns 2024-08-28 11:58:21 +10:00
Nyall Dawson
79283e18b4 Use resize handles for corner nodes
Fixes #58427
2024-08-25 12:34:51 +10:00
Nyall Dawson
370f74803f Only upgrade annotations on desktop 2024-08-25 12:34:51 +10:00
Nyall Dawson
6127088395 Make common base class for annotation items which render in rect
And avoid a bunch of duplicate code
2024-08-25 12:34:51 +10:00
Nyall Dawson
e64bd80ff2 Add auto-upgrade for old text annotations 2024-08-25 12:34:51 +10:00
Nyall Dawson
1ce2940d2c Add framework to upgrade older annotations to annotation layer items on project load 2024-08-25 12:34:51 +10:00
Nyall Dawson
5c1427c807 Add QgsLineString::lineLocationPointByM
This method attempts to interpolate the point on a linestringM
where a specified m value falls. It does this by interpolating
M values along the line string segments, finding the first
segment at which the target M value falls. If the M value
corresponds to a part of the line with constant m values, then
the center point of this constant m value portion will be
returned.
2024-08-25 12:34:38 +10:00
Nyall Dawson
374f0a5fcc Fix bug with inverted polygon renderer vs OTF simplification
The simplification MUST be applied prior to transforming geometries,
or the precalculated simplification tolerance will no be correct
and may be excessive (eg when the simplification tolerance
was calculated for a map in meters, yet the rendered layer is
in degrees -- in this case we would simplify the inverted geometry
with a tolerance of ~1 degree!)

Ensure that we apply the simplification FIRST, then transform,
and disable further simplification when rendering the calculated
inverted feature. This is also a performance boost, because we
are simplifying geometries prior to transforming + calculating
the inversion, so usually end up with a lot less vertices
to handle in those operations...
2024-08-25 12:34:18 +10:00
Nyall Dawson
f90a7c04b1 Raw code block should use 'text', not 'raw'
'raw' gives an error when building the PyQGIS docs
2024-08-23 09:26:18 +10:00
qgis-bot
1d361eda2a auto sipify 🍺 2024-08-16 07:03:08 +00:00
Denis Rouzaud
9d87ecf6ec
Merge pull request #58233 from 3nids/mvt-sprites
[mvt] implement step expressions + improve conversion of sprites
2024-08-16 08:59:56 +02:00
Nyall Dawson
cc6b83449d Add some missing class docstrings 2024-08-16 07:28:29 +10:00
Nyall Dawson
8465cce48d Minor tweaks to annotation edit operations 2024-08-15 14:27:35 +10:00
Nyall Dawson
c37f3d1960 Make naming more flexible 2024-08-15 14:27:35 +10:00
Nyall Dawson
e06b9f243e Rework how callouts work with picture item with fixed sizes
When a picture annotation item is set to the fixed size mode,
and has a callout anchor set, always place the annotation itself
at a fixed offset from the callout anchor. This mimics the
behavior of the old SVG annotation decoration.
2024-08-15 14:27:35 +10:00
Nyall Dawson
deb506b5db Make translation in pixels available for annotation edit operations 2024-08-15 14:27:35 +10:00
Nyall Dawson
958d534965 Add convertFromPainterUnits method 2024-08-15 14:27:35 +10:00
Nyall Dawson
ef2528bfd8 Add render context to QgsAnnotationItemEditContext 2024-08-15 14:27:35 +10:00
Nyall Dawson
76adc371ac Ensure marker halos are drawn in legends, symbol preview icons 2024-08-15 06:25:41 +10:00
Nyall Dawson
d5511a50d8 [feature] Allow end point marker symbols for balloon callout style
Allows rendering a marker symbol below the endpoint of the balloon
callout. Designed to allow balloon callouts to reproduce the same
visual appearance as the older annotation framework items.
2024-08-15 06:25:24 +10:00
Nyall Dawson
8b04562ba7 Avoid fragile reg for argument removal 2024-08-14 13:05:46 +10:00
Nyall Dawson
182e30ab61 Simplify regex to avoid catastrophic backtracking 2024-08-13 20:28:55 +10:00
Nyall Dawson
3a578d6712 Header update 2024-08-13 20:28:55 +10:00
Nyall Dawson
e7b26478e2 Valid fixes 2024-08-13 20:28:55 +10:00
Nyall Dawson
63e81d8caf Valid improvement 2024-08-13 20:28:55 +10:00
Nyall Dawson
be8dce7d0d Valid improvements from new sipify 2024-08-13 20:28:55 +10:00
Nyall Dawson
886074c913 Rename 'None' enum members in public API
These clash with the Python bindings, where the enum value
becomes unusable
2024-08-06 19:49:10 +10:00
Nyall Dawson
5b084d39f4 Add documentation 2024-08-06 13:30:16 +10:00
Nyall Dawson
547387037f [annotations] Add support for callouts to point text item
Allows creating of callout lines (or bubble callouts) which
link the text to a map location. To create a callout, users
select the text item and then drag out the central x node
to the desired callout end point.

Callout styles can be modified through the layer styling panel.
2024-08-06 13:30:16 +10:00
Nyall Dawson
00412a41d3 [annotations] Add linked layer option for annotation layers
Adds a new "Linked layer" setting to the render page for annotation
layers, which allows users to optionally set a linked visibility
layer for the annotation layer. If set, then the annotations will
only be drawn when the linked layer is visible in the map.

This is designed to mimic the similar linked layer option for
the older annotation framework, in order to close the feature
gap between old vs new annotations

Refs https://github.com/qgis/QGIS-Enhancement-Proposals/issues/269
2024-08-03 06:40:03 +10:00
Nyall Dawson
627263ec0f Implement widget for symbol buffer settings 2024-08-02 05:09:03 +10:00
Nyall Dawson
efd700b9e1 Move geometry to QPolygonF list function to common static method 2024-08-02 05:09:03 +10:00
Nyall Dawson
b5437eef50 Add fill symbol for symbol buffers 2024-08-02 05:09:03 +10:00
Nyall Dawson
13c1a1b997 Force vector rendering of symbols when symbol has buffer enabled 2024-08-02 05:09:03 +10:00
Nyall Dawson
c6c3c77303 Populate buffer settings 2024-08-02 05:09:03 +10:00
Nyall Dawson
bf30f04d0a Make common function for copying QgsSymbol properties
Avoid fragile duplicate code in subclasses
2024-08-02 05:09:03 +10:00
Nyall Dawson
bae23c28a3 [FEATURE] Text inside rectangle annotation item
This adds a new annotation item type for rendering paragraphs
of text inside a rectangle

Options are present for:

- Text format
- Horizontal and vertical alignment
- Margins
- Background and frame symbol
2024-07-31 07:58:53 +10:00
David Koňařík
654b8bb985 Fix doc comments to align with code
The only previously implemented provider of these classes (for Cesium 3D
tiles) used values directly from the tiles, which are in meters per
spec.
2024-07-29 12:05:12 +02:00
Nyall Dawson
4a247373f0 [api] Split tolerance into separate values for red, green, blue channels
Makes the API more flexible for future use. We only expose a single
tolerance value in the UI, but in future we could expose the
separate tolerances if desired (but be wary of UI bloat!!)
2024-07-29 13:20:21 +10:00
Nyall Dawson
15128498e1 [feature] Support tolerances for QgsRasterTransparency pixel values
Allows pixels with color components just outside of the specified
RGB values to also be treated as transparent pixels

Useful for photographs or compressed rasters where a range of color
values must be made transparent
2024-07-29 13:20:21 +10:00
Even Rouault
d2272306f5 QgsBlockingNetworkRequest::get(): add an optional flag parameter 2024-07-29 12:14:29 +10:00
Nyall Dawson
6ab373284c Fix merge 2024-07-26 20:38:47 +10:00
Nyall Dawson
0c230a83e7 Add fixed size mode for picture annotations
When selected, the picture annotation will always be rendered
at the same size, regardless of the map scale
2024-07-26 20:38:47 +10:00