156 Commits

Author SHA1 Message Date
vcloarec
9fec5262b0 update SIP 2020-06-03 06:10:10 +10:00
Nyall Dawson
23396b7c86 [symbology] Don't force rasterized output when exporting point pattern fills
This avoids the force conversion to a raster based pattern which currently occurs
when exporting maps/layouts to a vector format (e.g. PDF). The raster pattern
results in considerable quality loss, and the tiling edges of the raster brush
can sometimes be seen in outputs.

Additionally, fixes render corrupt when marker subsymbols have data defined properties
which affect the marker shape, such as data defined rotation or sizes

Refs #16100 (still needs fixing for line fill symbols)
2020-05-28 11:49:59 +10:00
Ivan Ivanov
563ab0330f Fix: make "Part" struct dependent definitions private 2020-05-26 11:06:13 +10:00
Ivan Ivanov
899d3febad [Symbology][Feature] Allow centroid fill markers to be clipped within current polygon or polygon part 2020-05-26 11:06:13 +10:00
Nyall Dawson
ef97e8c6fc [symbology] When rendering features, split the geometry fetching
and preparation stage from the symbol layer rendering stage, and
ensure that QgsSymbolLayer::startFeatureRender and ::stopFeatureRender
is correctly called in the right sequence when rendering multi-layer
symbols

This fixes issues with symbol layers which rely on startFeatureRender
and stopFeatureRender to correctly render, e.g. the Random Marker Fill
symbol layer.

Before this fix, the logic looked like:

- for every symbol layer in the symbol, call startFeatureRender
- for each part in polygon, prepare the part geometry and then render each symbol layer
- for every symbol layer in the symbol, call stopFeatureRender

The issue with this approach is that symbol layers which defer
rendering to the stopFeatureRender stage are always rendered
after ALL other symbol layers in the symbol, regardless of the actual
order of the symbol layers. Ultimately this causes Random Marker Fill
layers to always render on the top of symbols.

The new logic is:
- for each part in polygon, prepare the geometry and store the result
- for each symbol layer in the symbol:
   - call startFeatureRender
   - render the layer using each of the previously prepared parts
   - call stopFeatureRender

This results in correct stacking of the random marker fill in multi
layer symbols, because the stopFeatureRender call is correctly called
before the next layer's startFeatureRender and renderPolygon calls

Also, use QVector instead of QList for rings for improved efficiency
2020-05-20 17:09:48 +10:00
vcloarec
aa6d23d540 disable transparency for QgsInterpolatedLineRenderer 2020-05-05 05:53:25 +10:00
Vincent Cloarec
f8fae3cf39
[FEATURE][MESH] 1D mesh width/color varying (#35926)
Introduce a renderer for 1D mesh edges that can vary width over the line. The line can also have different color based on the actual dataset value on the line's point.

Co-authored-by: Peter Petrik <zilolv@gmail.com>
2020-04-24 10:49:24 +02:00
Nyall Dawson
ec2894ea32 Show favorited legend patches in legend patch button menu 2020-04-22 12:43:01 +10:00
Nyall Dawson
8a0e007ba5 [FEATURE] Support legend patch shapes in style manager databases
And clean up a lot of duplicate code which makes adding new types
to QgsStyle painful
2020-04-22 12:43:01 +10:00
Nyall Dawson
fe435a325e Add optional shape argument to symbolPreviewPixmap/symbolPreviewImage 2020-04-21 10:40:50 +10:00
Nyall Dawson
ae8e5cfeaa Move default legend patch shape handling to QgsStyle 2020-04-21 10:40:50 +10:00
Nyall Dawson
40638fe62b Add support for rendering using QgsLegendPatchShape to QgsSymbol::drawPreviewIcon 2020-04-11 05:25:22 +10:00
Nyall Dawson
a08af65b42 More boring duplicate code cleanup 2020-04-11 05:24:54 +10:00
Nyall Dawson
0e8be09fd0 Remove a bunch of duplicate code and simplify interface for QgsStyle/QgsStyleModel 2020-04-11 05:24:54 +10:00
Mathieu Pellerin
f3e2ef1fe7
[FEATURE][symbology] Add data-defined property to font family/style for font markers (#35224) 2020-03-22 12:24:09 +07:00
Mathieu Pellerin
07570562fc
[FEATURE][symbology] Add a font style setting for font markers (#35197) 2020-03-21 12:11:16 +07:00
Juergen E. Fischer
edee4a3d10 spelling fixes (closes #32408) 2020-02-28 21:04:02 +01:00
rldhont
0ea6c7a0e9 [API] QgsSymbolLayerUtils::decodeSldUom, scaleFactor is not mandatory 2020-01-15 10:38:42 +01:00
Nyall Dawson
06f36ddbe6 Cleanup duplicate code and add tests for graduated range resolving 2019-11-11 17:51:49 +10:00
Hugo Mercier
845894b313
[FEATURE] Selective masking (#30747)
* [FEATURE] Selective masking

Advanced rendering feature that allows the definition of 'masks' areas around labels or with a new typ of symbol layer. These masks will "un-draw" symbol layers of other layers underneath.
It modifies the rendering process by adding an optional second pass.
2019-11-07 08:17:25 +01:00
Matthias Kuhn
1f3b039fe2
Merge pull request #32552 from m-kuhn/q_global_static
non POD static
2019-11-03 23:11:51 +01:00
Matthias Kuhn
5c439ab693 More efficient loops 2019-11-02 16:05:28 +01:00
Matthias Kuhn
179fcf3347 Use Q_GLOBAL_STATIC 2019-11-02 15:01:59 +01:00
nirvn
b2e7121493 [FEATURE][symbology] Add density-based point count for the random marker fill 2019-10-30 12:04:13 +07:00
Nyall Dawson
9bc9808e4e Dox++ 2019-10-28 14:34:30 +10:00
Nyall Dawson
a58012545d Bump default point count to 10 2019-10-28 14:34:30 +10:00
Nyall Dawson
d64666559a Spelling 2019-10-28 14:34:30 +10:00
Nyall Dawson
57d977cf8a Add sip cast for random marker fill 2019-10-28 14:34:30 +10:00
Nyall Dawson
351970e1c2 Dox, spelling 2019-10-28 14:34:30 +10:00
Nyall Dawson
491a4a794d Provide hooks for symbol layers to notify them before and after
rendering operations on a specific feature are performed

This allows symbol layer subclasses to know when a set of rendering
operations all relate to a single feature, e.g. when a number
of polygons are rendered which all belong to the same multi-polygon
geometry attached to a single feature.

Without these hooks, symbol layer subclasses have no stable method
of knowing that these parts all relate to a single feature, or
have no means of knowing when the final part of that feature has
been rendered.
2019-10-28 14:34:30 +10:00
Nyall Dawson
b5e92d41f5 [FEATURE] Random marker fill symbol layer type
This commit adds a new fill symbol layer type "Random marker fill". It
allows polygon features to be rendered using a marker symbol placed
at random locations within the polygon boundary.

Options include:
- number of marker symbols to render for the polygon
- whether markers rendered near the edges of polygons should be clipped
to the polygon boundary or not
- an optional random number seed, to give consistent placement
of markers whenever maps are refreshed (also allows random placement
to play nice with QGIS server and tile-based rendering)

Sponsored by the SLYR project
2019-10-28 14:34:30 +10:00
Denis Rouzaud
758d7cff4a run sipify to update deprecation annotations 2019-10-15 13:17:38 +02:00
rldhont
6625c7ba62 [Bugfix] Get remote SVG synchronously - in the server context 2019-10-11 14:08:17 +10:00
nirvn
531e1b0715 [categorized][graduated] Handle categorized<->graduated renderer conversion
(fixes #31633)
2019-09-24 20:08:47 +07:00
Nyall Dawson
abc9f47ca4 [legends] Fix missing symbols for inverted polygon layers when using
filter by map content

Fixes #22718
2019-09-21 06:03:47 +10:00
Nyall Dawson
2212617f0c Reuse a single expression context when building icons in QgsStyleModel
Whilst usually this is bad practice (reusing an existing expression context),
and instead you should make a new context for every batch of expression evaluations,
we can't do this in the style model and we end up potentially creating
thousands of new contexts. So instead, we use a single one, which is
safe because the actual expression context used here is a very
basic one...
2019-09-07 15:56:40 +10:00
Nyall Dawson
6b1e96c180 Make a shared instance of QgsStyleModel for the default application style
This allows shared caching of symbol icons, greatly speeding up display
of views which use style models
2019-09-07 15:56:40 +10:00
Nyall Dawson
1aeb4d5d79 Try to fix dox warning 2019-09-03 10:35:21 +10:00
Nyall Dawson
4d67f803b4 Fix leak 2019-09-03 10:35:21 +10:00
Nyall Dawson
6de34d472e Add missing SIP_DEPRECATED 2019-09-03 10:35:21 +10:00
Nyall Dawson
bf61a94b4a Don't pass doubles by reference, pass lists by reference 2019-09-03 10:35:21 +10:00
Denis Rouzaud
9a089132a3 remove Q_DECL_DEPRECATED as Doxygen throws a warning 2019-09-02 12:59:58 +02:00
Denis Rouzaud
68a9ea5d70 move src/core/symbology/classification to src/core/classification 2019-09-02 09:46:40 +02:00
Denis Rouzaud
d58be2814d missing SIP_FACTORY, addMethod returns bool, and minor fixes 2019-09-02 09:40:34 +02:00
Denis Rouzaud
c20e3a1475 make variables private, correclty initalize label format 2019-08-31 10:53:03 +02:00
Denis Rouzaud
d10f8ce2a0 a bit more API doc 2019-08-31 10:31:50 +02:00
Denis Rouzaud
ac1ce4f4ed better naming of methods and API documentation 2019-08-30 15:35:53 +02:00
Denis Rouzaud
b580242aef fix deprecated methods and remove leftovers 2019-08-30 13:12:43 +02:00
Denis Rouzaud
41495058d1 run sipify 2019-08-30 12:45:37 +02:00
Nyall Dawson
0e3a4478d9 Add missing transfer annotation (#31482) 2019-08-29 20:12:23 +02:00