These are recommended for use instead of the existing force_rhr
function, due to the variability in definition of the "right hand
rule" between different software applications. Using an explicit
force_polygon_cw/ccw function removes user confusion when the
results vary between different applications.
This returns a new multilinestring geometry which represents the
input geometry with the dash pattern applied to the lines or rings
of the input geometry.
Options are available to set rules for the start/end of the pattern,
e.g. ending on a full dash or gap, or half dash or gap.
Sponsored by North Road, thanks to SLYR
This adds a new "Lineburst" symbol layer type, which renders
a gradient along the WIDTH of a line (as opposed to the interpolated
line renderer, which renders a gradient along the LENGTH of
a line). It's like the shapeburst fill symbol type, but for lines!
Sponsored by North Road, thanks to SLYR
This new symbol layer type renders a raster image following
a line feature's shape.
Options are present for:
- picture path (including data defined path)
- line width
- opacity
- line join/cap styles
Sponsored by North Road, thanks to SLYR
pattern fill
This allows users to control how lines in the fill should be
clipped to the polygon shape. Options are:
- Clip During Render Only: existing behaviour, lines are created
covering the whole bounding box of the feature and then clipped
while drawing. Line extremities (beginning and end) will not be
visible
- Clip Lines Before Render: lines are clipped to the exact
shape of the polygon prior to rendering. Line extremities (including
cap styles, start/end marker line objects, etc) will be visible,
and may sometimes extend outside of the polygon (depending
on the line symbol settings)
- No Clipping: no clipping at all is done - line will cover the
whole bounding box of the feature
Sponsored by North Road, thanks to SLYR
When exporting to a vector format (e.g. PDF) or when a line subsymbol
has dynamic (data defined properties), automatically switch to
a line-by-line based approach for rendering the fill instead of the
previous raster tiled pattern based approach.
While it's slower to render (not noticable for desktop users, but
likely enough to affect server deployments), this has many benefits:
1. Smaller PDF/SVG output file sizes, since the fills aren't rasterized
2. PDF/SVG files which are easier to modify in external apps for
post production, as each individual line in the pattern can be
modified.
3. Better quality PDF/SVG outputs, since the fill isn't DPI
dependant and looks awesome regardless of how close in you zoom
4. No visible artefacts at certain angles/distances/line symbol
styles
And even more excitingly, it opens the door for a range of
new symbol styles, eg.
- line patterns where the individual lines change color/width/dash/...
- line patterns with marker line symbols on center point/etc
- geometry generator effects per line, e.g. wavy line patterns, hand
drawn line styles, etc
Sponsored by North Road, thanks to SLYR
Fixes#16100
This is inconsistent with all other fill types, which don't
have a special outline subsymbol. Users should be creating
outline layers when they want an outline instead.
When reading an SVG fill symbol layer from XML, automatically
upgrade any outline subsymbol which is used by the fill to
be separate symbol layers for the parent fill symbol so
that existing symbols will appear as designed in older QGIS
versions.
Fixes qgis#14103
whenever a subsymbol component of a parent symbol is being rendered
This flag allows symbol layers to refine their behaviour based on whether
they are a subsymbol or not.
This optional setting allows each point to be randomly shifted up
to the specified maximum distance in the x/y directions. Maximum
offset can be set in mm, points, map units, etc OR "percentage"
(which is percentage of the pattern width/height)
An optional random number seed can be set to avoid patterns
jumping around between map refreshes.
Data defined overrides are also supported.
Sponsored by North Road, thanks to SLYR
point pattern fill
A new option exposes the ability to clip markers in the fill by:
- "Clip to shape": default behaviour, same as previous versions. Markers
are clipped so that only the portions inside the polygon are visible
- "Marker centroid within shape": only markers where the center of
the marker falls inside the polygon are drawn, but these markers
won't be clipped to the outside of the polygon
- "Marker Completely Within Shape": only markers which fall
completely within the polygon are shown
- "No clipping": any marker which intersects at all with the polygon
will be completely rendered
The clipping mode can be overridden via a data driven expression if
desired.
Sponsored by North Road, thanks to SLYR
Fixes#37825
along a geometry's boundaries
also includes variations on these which allow for randomized
triangle/square/sine-like waves, with amplitude and wavelength
randomly generated using a specified range
This breaks fixing mesh layer paths when restoring projects with
broken mesh layers -- fixing the path causes the existing style
to be lost.
Fixes#45391
QgsAuxiliaryLayer::createProperty(*)
Instead, if a property already exists it will be upgraded to
an expression based property of the form:
coalesce("new aux field", 'existing' || 'property' || 'expression')
(i.e. allow per-feature value overrides from the auxiliary field,
but by default fallback to the existing property definition)
Refs #44475