This adds a new line symbol type which renders lines using a
fill symbol. The interior of the line is drawn using any standard
QGIS fill symbol, allowing for lines filled with gradients, line
hatches, etc.
Sponsored by North Road, thanks to SLYR
categorized class symbol editors, and QGIS is closed or a new project
opened
The symbol ownership of QgsSymbolSelectorWidget is very messy, and
we can't fix till 4.0. Workaround this by introducing a temporary
API to transfer symbol ownership to the widget.
Users can now indicate that a symbol should be treated as a animated
symbol, through the new "Animation Settings" option in the symbol
widget's Advanced menu.
This settings panel allows users to enable animation for the symbol
and set a specific frame rate at which the symbol should be redrawn.
When enabled, the @symbol_frame variable can be used in any
symbol data defined property in order to animate that property.
For instance, setting the symbol's rotation to the data defined
expression
@symbol_frame % 360
will cause the symbol to rotate over time. (with rotation speed
dictated by the symbol's refresh rate)
This new marker symbol type allows points to be rendered using
an animated marker, sourced from an animated gif, webp or mng
animation.
Options are present for marker file, size, angle and frame rate.
There are two ways in which animated symbols are handled:
1. If the map itself is considered an animation, then the frame
rendered for the animated marker is based on the map animation
frame and frame rate. This is the case when the temporal
controller is set to the Animation mode. In this case the
animated markers will follow the temporal controller animation,
e.g. pausing when the animation is paused, advancing frames
with the animation, etc. The map will also be redrawn using
the frame rate set for the temporal animation.
This mode also applies when exporting an animation from the
temporal controller.
It's also the mode used when a plugin specifically sets the
frame rate and current frame QgsMapSettings properties, so
e.g. @timlinux's QGIS Animation Workbench plugin will dictate
the marker animation frame to render.
2. If the map is NOT considered an animation (i.e. it's just
a plain old normal QGIS project), then the frame to render
will be based on the current timestamp alone.
Markers will be animated when their corresponding layer is set
to a temporal mode, and a temporal animation is playing.
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
which are subrenderers for other renderers
Symbol layers have no effect in this situation (e.g. when a categorized
renderer is used as a subrenderer for point displacement renderer), so
don't show the option in the GUI
Instead of directly changing the renderer in place in the symbol levels
widget, we delegate responsibility for handling the changes to symbol
levels to the parent QgsRendererWidget subclass. This allows us to
implement different logic in the various subclasses which correctly
handle how that particular widget subclass should update any internal
symbol references and ultimately update the renderer.
Fixes instability and crashes after editing symbol levels.
Fixes#42671
- Add enums to qgis.h instead of qgscoreenums, so that they belong to
a Qgis namespace
- Split up the various symbol headers into multiple files so that we
can fine-tune their inclusion and forward declare more readily, speeding
up recompilation
- Move QgsSymbol enums to qgis
which line symbol layer settings to show
Fixes fill symbol only related properties (like ring filters) show
for line symbols in some contexts.
Fixes#33398Fixes#24131
This renderer merges (or unions/dissolves) the line or polygon features
from a layer prior to rendering them. It's useful for rendering
a polygon layer with overlapping features as one single "coverage" feature,
or a line layer consisting of many smaller component line features
using a regularly spaced marker line or similar.
Internally, this just moves the guts of the existing inverted polygons
renderer to a new base class, as that renderer already had an option
to merge features prior to rendering. Basically it just exposes a new
renderer to users which is the inverted polygon renderer without
the inversion step!