296 Commits

Author SHA1 Message Date
Nyall Dawson
ec41cb59b4 Don't expose an outline subsymbol for SVG fill symbol layers
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
2021-10-23 23:50:52 +10:00
Nyall Dawson
757c69e1ef [feature][symbology] Add random point offset for point pattern fills
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
2021-10-23 19:05:33 +10:00
nirvn
6a37ee72fa [FEATURE][symbology] Add coordinate reference mode (i.e. pattern alignment) to line pattern and point pattern symbol layer types 2021-10-22 22:45:33 -07:00
Nyall Dawson
b56e86181c [feature][symbology] Add option to control marker clipping for
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
2021-10-23 12:58:13 +10:00
Nyall Dawson
6453d5f35a Condense duplicate enums 2021-10-23 05:16:41 +10:00
Nyall Dawson
999213f97e Complete documentation for QgsPointPatternFillSymbolLayer 2021-10-23 05:16:41 +10:00
Nyall Dawson
fc0d1869bc Promote some symbol layer enums to enum classes, move to Qgis 2021-10-23 05:16:41 +10:00
Juergen E. Fischer
c6008b7ee1 fix MSVC build: reverts fee62e4, dff05dd and e3a77b9484c effectivly
reverting 3fb0f66 (followup #45348)

Using --no-public-is-protected (default on Windows) also works on Linux
and fixes #45331 too
2021-10-21 23:03:48 +02:00
Nyall Dawson
57fda412fa Further fixes to ensure geometry generator symbol icons are correctly
generated
2021-10-12 17:40:37 +10:00
nirvn
ef84e48a09 Run sipify_all.sh 2021-10-12 16:34:05 +10:00
Denis Rouzaud
ec16736306 run sipify 2021-10-12 16:34:05 +10:00
Nyall Dawson
0593a7b701 Fix geometry generator when used as symbol for annotation item 2021-09-22 11:45:01 +10:00
Nyall Dawson
57b2761c4c Fix doxygen warning 2021-09-22 11:45:01 +10:00
Nyall Dawson
72d238cc53 Ensure geometry generator symbol layer works correctly outside
of vector layer renderers

Fixes #39159
2021-09-22 11:45:01 +10:00
Nyall Dawson
07111661b0 Fix color customisation is lost when configuring renderers using
geometry generators

Fixes #38377
2021-09-22 06:21:37 +10:00
Nyall Dawson
3474909739 Use QgsPropertys for interpolated line renderer start/end width/color
expressions instead of raw expressions

We can greatly simplify the code by doing so, as all the handling
of preparing and optimising QgsPropertys are done automatically
for symbol layers.
2021-09-21 14:02:58 +10:00
Nyall Dawson
9e68b4542b Interpolated line renderer: don't assume that a feature is available
Instead we should ALWAYS use the provided points for rendering symbol
layers, or the symbol layer will be broken in various circumstances
(e.g. when used outside of a vector layer)

Fixes #45028
2021-09-21 14:02:58 +10:00
Nyall Dawson
cc240e1ca2 Fix a bunch of clazy/clang warnings in interpolated line renderer 2021-09-21 14:02:58 +10:00
Nyall Dawson
cd2a17f779 Create Qgis::SymbolLayerFlags, add flag for symbol layers to prevent
feature clipping to map extent
2021-09-21 14:02:58 +10:00
Nyall Dawson
d47dc4b210 Expose choice of units for geometry generator symbol layers
Usually a geometry generator expression must return a geometry
in the associated layer's CRS. But this doesn't work in situations
where a geometry generator symbol is NOT associated with a layer,
e.g. when used in a layout item.

So add a new option to allow users to specify which unit the expression
will return geometries in, with choices of map units (the default,
previous behavior), millimeters, pixels, inches and points.

When millimeters, points, inches or pixels is selected then
the @map_geometry variable will be available for the expression,
and contain the feature's geometry in the specified units (relative
to the map frame). (The $geometry variable remains available and
still in layer CRS, in case an expression needs to calculate the
original area, perimeter, etc in real-world units while returning
results in a different unit!)

A step toward fixing #39159
2021-09-21 09:49:52 +10:00
Nyall Dawson
850215f899 Add missing cast code for QgsHashedLineSymbolLayer 2021-09-17 15:15:32 +10:00
Nyall Dawson
ae4c1b0d2a Add missing transfer annotation 2021-09-11 06:14:45 +10:00
Nyall Dawson
2724315a99 Move enums from QgsVectorLayer to Qgis, promote to enum classes,
and fix redundant QgsVectorLayer.VertexMarkerType enum
2021-07-19 14:02:39 +10:00
Nyall Dawson
c8156b0106 Add c++20 todo for replacing equality operators with default implementations 2021-07-02 12:19:58 +10:00
Nyall Dawson
d6709e0145 Fix docs, better check 2021-06-29 07:33:35 +10:00
Nyall Dawson
0565c3ffb8 Retain more renderer properties when switching between vector
renderer types
2021-06-29 07:33:35 +10:00
Nyall Dawson
849819cd0d [api] Allow reference scale for vector layer renderer to be set
Gives a means of setting the reference scale for a vector layer
renderer, so that symbol sizes in the rendered layer will be
scaled accordingly depending on the actual scale of the
rendered map.
2021-06-29 07:33:35 +10:00
Nyall Dawson
c8da0c43f9 Safer approach to saving common QgsFeatureRenderer properties 2021-06-29 07:33:35 +10:00
Nyall Dawson
711a615be3 Fix raises sphinx format 2021-06-25 10:50:04 +10:00
Nyall Dawson
2328f4fad8 Fix sipify handling of long long return types 2021-06-22 08:43:39 +10:00
Nyall Dawson
4ff3f447dc Don't try to insert links in raises blocks in PyQGIS docs
These aren't formatted correctly if we do
2021-06-10 11:03:43 +10:00
Nyall Dawson
8359281012 Fix formatting of exception blocks in PyQGIS docs 2021-06-10 11:03:43 +10:00
Nyall Dawson
4e73dd92b9 Fix accidental api break
QFlags created from enum classes aren't automatically converted
from an int value passed by Python code, so we need to create
compatibility functions for the older variants which accept
plain ints
2021-05-30 09:27:41 +10:00
Nyall Dawson
86b3459eea Add a flag which can be set on QgsSymbols to indicate that a renderer
should use symbol levels whenever that symbol is used by the renderer

Not exposed to users -- only settable via API, but IS saved in the
symbol's XML definition and restored when loading a symbol from XML.
2021-05-26 18:26:44 +10:00
Nyall Dawson
c3e01e5725 Add destructors to permit forward declaration 2021-05-26 08:14:13 +10:00
Nyall Dawson
5f9d7b4809 Raise a user-visible warning message if fonts referenced in a QGIS
project are not available when loading that project on a system
without the required fonts installed

Currently shown for any QgsTextForamt or font marker symbol layer
restored when opening the project
2021-05-24 14:19:01 +10:00
Nyall Dawson
5ded8b6643 __repr__ fro QgsSymbolLayerReference, QgsSymbolLayerId 2021-05-24 12:16:21 +10:00
Nyall Dawson
22c2d7213b Remove unnecessary includes of qgssymbollayerreference.h 2021-05-24 12:16:21 +10:00
nirvn
59a6217c29 Fix compilation on vcpkg 2021-05-21 11:28:55 +07:00
Nyall Dawson
c543a57b83 Remove some unused widget imports from core library 2021-05-19 13:52:58 +10:00
Nyall Dawson
13e923838a Fix build 2021-05-19 10:16:43 +10:00
Nyall Dawson
7291bbb457 Dox 2021-05-18 16:59:22 +10:00
Nyall Dawson
b5dfe8f155 Refactor enum handling
- 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
2021-05-18 16:59:22 +10:00
Nyall Dawson
94dc209e9e Add dedicated conversion for MapInfo marker symbols 2021-05-10 15:18:01 +10:00
Nyall Dawson
2c75fd0ca1 Sipify 2021-05-07 19:48:19 +10:00
Nyall Dawson
1a4d7b0288 Improved conversion of MapInfo line symbols
Many MapInfo line symbols don't translate well into OGR styles, so
in order to improve the quality of the conversion this commit introduces
a new QgsMapInfoSymbolConverter class which contains utility functions
for converting MapInfo symbols by ID to their QGIS equivalent.

Implemented for line symbols only for now.
2021-05-07 06:38:09 +10:00
Nyall Dawson
be2c5382cb Add utility function QgsSymbolLayerUtils::condenseFillAndOutline
Attempts to condense a fill and outline layer, by moving the
outline layer to the fill symbol's stroke if possible.
2021-05-06 18:23:09 +10:00
vcloarec
89c069f695 address review 2021-05-05 09:03:13 +02:00
vcloarec
843eebc6ec do not use hybrid symbol layer type 2021-05-05 09:03:13 +02:00
vcloarec
9a3ad85533 interpolated line symbol layer 2021-05-05 09:03:13 +02:00