From 43e7d18cd89c25a7ca107185e1d4708abea44234 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Wed, 5 Jun 2024 10:29:02 +1000 Subject: [PATCH] Move simplification enums to Qgis, promote to enum class --- python/PyQt6/core/auto_additions/qgis.py | 40 +++++++++++++++- .../auto_additions/qgsvectorsimplifymethod.py | 24 ---------- python/PyQt6/core/auto_generated/qgis.sip.in | 20 ++++++++ .../qgsvectorsimplifymethod.sip.in | 28 ++--------- .../vector/qgsvectorlayer.sip.in | 2 +- python/core/auto_additions/qgis.py | 40 +++++++++++++++- .../auto_additions/qgsvectorsimplifymethod.py | 5 -- python/core/auto_generated/qgis.sip.in | 20 ++++++++ .../qgsvectorsimplifymethod.sip.in | 28 ++--------- .../vector/qgsvectorlayer.sip.in | 2 +- src/app/options/qgsvectorrenderingoptions.cpp | 20 ++++---- src/app/qgsmapsavedialog.cpp | 4 +- src/core/labeling/qgspallabeling.cpp | 4 +- src/core/layout/qgslayoutexporter.cpp | 4 +- src/core/layout/qgslayoutitemmap.cpp | 2 +- src/core/layout/qgslayoutrendercontext.cpp | 2 +- src/core/qgis.h | 47 ++++++++++++++++++- src/core/qgsmapsettings.cpp | 2 +- src/core/qgsrendercontext.cpp | 2 +- src/core/qgsvectorsimplifymethod.cpp | 2 +- src/core/qgsvectorsimplifymethod.h | 36 +++----------- src/core/symbology/qgslinesymbollayer.cpp | 3 +- src/core/symbology/qgssymbollayer.cpp | 2 +- src/core/vector/qgsvectorlayer.cpp | 14 +++--- src/core/vector/qgsvectorlayer.h | 8 ++-- src/core/vector/qgsvectorlayerrenderer.cpp | 12 ++--- .../qgssettingseditorwidgetregistry.cpp | 7 +-- src/gui/vector/qgsvectorlayerproperties.cpp | 20 ++++---- tests/src/core/testqgs25drenderer.cpp | 2 +- tests/src/core/testqgsblendmodes.cpp | 2 +- tests/src/core/testqgscentroidfillsymbol.cpp | 2 +- tests/src/core/testqgsgradients.cpp | 4 +- .../core/testqgsinvertedpolygonrenderer.cpp | 2 +- tests/src/core/testqgslayeredsymbollevel.cpp | 4 +- tests/src/core/testqgslayoutatlas.cpp | 2 +- tests/src/core/testqgslayoutcontext.cpp | 6 +-- tests/src/core/testqgslayoutmap.cpp | 9 ++-- tests/src/core/testqgslinefillsymbol.cpp | 4 +- tests/src/core/testqgsmapsettings.cpp | 6 +-- tests/src/core/testqgspainteffect.cpp | 10 ++-- .../core/testqgspointpatternfillsymbol.cpp | 6 +-- tests/src/core/testqgsrasterfill.cpp | 2 +- tests/src/core/testqgsshapeburst.cpp | 4 +- 43 files changed, 263 insertions(+), 202 deletions(-) delete mode 100644 python/PyQt6/core/auto_additions/qgsvectorsimplifymethod.py delete mode 100644 python/core/auto_additions/qgsvectorsimplifymethod.py diff --git a/python/PyQt6/core/auto_additions/qgis.py b/python/PyQt6/core/auto_additions/qgis.py index 8af809a1787..769c7a85c21 100644 --- a/python/PyQt6/core/auto_additions/qgis.py +++ b/python/PyQt6/core/auto_additions/qgis.py @@ -2545,6 +2545,44 @@ Qgis.TextCharacterVerticalAlignment.SubScript.__doc__ = "Characters are placed b Qgis.TextCharacterVerticalAlignment.__doc__ = "Text vertical alignment for characters.\n\nThis enum controls vertical alignment of individual characters within a block\nof text.\n\n.. versionadded:: 3.30\n\n" + '* ``Normal``: ' + Qgis.TextCharacterVerticalAlignment.Normal.__doc__ + '\n' + '* ``SuperScript``: ' + Qgis.TextCharacterVerticalAlignment.SuperScript.__doc__ + '\n' + '* ``SubScript``: ' + Qgis.TextCharacterVerticalAlignment.SubScript.__doc__ # -- Qgis.TextCharacterVerticalAlignment.baseClass = Qgis +QgsVectorSimplifyMethod.SimplifyAlgorithm = Qgis.VectorSimplificationAlgorithm +# monkey patching scoped based enum +QgsVectorSimplifyMethod.Distance = Qgis.VectorSimplificationAlgorithm.Distance +QgsVectorSimplifyMethod.Distance.is_monkey_patched = True +QgsVectorSimplifyMethod.Distance.__doc__ = "The simplification uses the distance between points to remove duplicate points" +QgsVectorSimplifyMethod.SnapToGrid = Qgis.VectorSimplificationAlgorithm.SnapToGrid +QgsVectorSimplifyMethod.SnapToGrid.is_monkey_patched = True +QgsVectorSimplifyMethod.SnapToGrid.__doc__ = "The simplification uses a grid (similar to ST_SnapToGrid) to remove duplicate points" +QgsVectorSimplifyMethod.Visvalingam = Qgis.VectorSimplificationAlgorithm.Visvalingam +QgsVectorSimplifyMethod.Visvalingam.is_monkey_patched = True +QgsVectorSimplifyMethod.Visvalingam.__doc__ = "The simplification gives each point in a line an importance weighting, so that least important points are removed first" +QgsVectorSimplifyMethod.SnappedToGridGlobal = Qgis.VectorSimplificationAlgorithm.SnappedToGridGlobal +QgsVectorSimplifyMethod.SnappedToGridGlobal.is_monkey_patched = True +QgsVectorSimplifyMethod.SnappedToGridGlobal.__doc__ = "Snap to a global grid based on the tolerance. Good for consistent results for incoming vertices, regardless of their feature" +Qgis.VectorSimplificationAlgorithm.__doc__ = "Simplification algorithms for vector features.\n\n.. note::\n\n Prior to QGIS 3.28 this was available as :py:class:`QgsVectorSimplifyMethod`.SimplifyAlgorithm\n\n.. versionadded:: 3.28\n\n" + '* ``Distance``: ' + Qgis.VectorSimplificationAlgorithm.Distance.__doc__ + '\n' + '* ``SnapToGrid``: ' + Qgis.VectorSimplificationAlgorithm.SnapToGrid.__doc__ + '\n' + '* ``Visvalingam``: ' + Qgis.VectorSimplificationAlgorithm.Visvalingam.__doc__ + '\n' + '* ``SnappedToGridGlobal``: ' + Qgis.VectorSimplificationAlgorithm.SnappedToGridGlobal.__doc__ +# -- +Qgis.VectorSimplificationAlgorithm.baseClass = Qgis +QgsVectorSimplifyMethod.SimplifyHint = Qgis.VectorRenderingSimplificationFlag +# monkey patching scoped based enum +QgsVectorSimplifyMethod.NoSimplification = Qgis.VectorRenderingSimplificationFlag.NoSimplification +QgsVectorSimplifyMethod.NoSimplification.is_monkey_patched = True +QgsVectorSimplifyMethod.NoSimplification.__doc__ = "No simplification can be applied" +QgsVectorSimplifyMethod.GeometrySimplification = Qgis.VectorRenderingSimplificationFlag.GeometrySimplification +QgsVectorSimplifyMethod.GeometrySimplification.is_monkey_patched = True +QgsVectorSimplifyMethod.GeometrySimplification.__doc__ = "The geometries can be simplified using the current map2pixel context state" +QgsVectorSimplifyMethod.AntialiasingSimplification = Qgis.VectorRenderingSimplificationFlag.AntialiasingSimplification +QgsVectorSimplifyMethod.AntialiasingSimplification.is_monkey_patched = True +QgsVectorSimplifyMethod.AntialiasingSimplification.__doc__ = "The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size'" +QgsVectorSimplifyMethod.FullSimplification = Qgis.VectorRenderingSimplificationFlag.FullSimplification +QgsVectorSimplifyMethod.FullSimplification.is_monkey_patched = True +QgsVectorSimplifyMethod.FullSimplification.__doc__ = "All simplification hints can be applied ( Geometry + AA-disabling )" +Qgis.VectorRenderingSimplificationFlag.__doc__ = "Simplification flags for vector feature rendering.\n\n.. note::\n\n Prior to QGIS 3.36 this was available as :py:class:`QgsVectorSimplifyMethod`.SimplifyHint\n\n.. versionadded:: 3.36\n\n" + '* ``NoSimplification``: ' + Qgis.VectorRenderingSimplificationFlag.NoSimplification.__doc__ + '\n' + '* ``GeometrySimplification``: ' + Qgis.VectorRenderingSimplificationFlag.GeometrySimplification.__doc__ + '\n' + '* ``AntialiasingSimplification``: ' + Qgis.VectorRenderingSimplificationFlag.AntialiasingSimplification.__doc__ + '\n' + '* ``FullSimplification``: ' + Qgis.VectorRenderingSimplificationFlag.FullSimplification.__doc__ +# -- +Qgis.VectorRenderingSimplificationFlag.baseClass = Qgis +Qgis.VectorRenderingSimplificationFlags = lambda flags=0: Qgis.VectorRenderingSimplificationFlag(flags) +QgsVectorSimplifyMethod.SimplifyHints = Qgis.VectorRenderingSimplificationFlags +Qgis.VectorRenderingSimplificationFlags.baseClass = Qgis +VectorRenderingSimplificationFlags = Qgis # dirty hack since SIP seems to introduce the flags in module # monkey patching scoped based enum Qgis.RenderSubcomponentProperty.Generic.__doc__ = "Generic subcomponent property" Qgis.RenderSubcomponentProperty.ShadowOffset.__doc__ = "Shadow offset" @@ -3683,7 +3721,7 @@ Qgis.LayerTreeFilterFlags.baseClass = Qgis LayerTreeFilterFlags = Qgis # dirty hack since SIP seems to introduce the flags in module # monkey patching scoped based enum Qgis.LegendJsonRenderFlag.ShowRuleDetails.__doc__ = "If set, the rule expression of a rule based renderer legend item will be added to the JSON" -Qgis.LegendJsonRenderFlag.__doc__ = "Legend JSON export flags.\n\nFlags to control JSON attributes when exporting a legend in JSON format.\n\n.. versionadded:: 3.36\n\n" + '* ``ShowRuleDetails``: ' + Qgis.LegendJsonRenderFlag.ShowRuleDetails.__doc__ +Qgis.LegendJsonRenderFlag.__doc__ = "Legend JSON export flags.\n\nFlags to co\nQ_DECLARE_OPERATORS_FOR_FLAGS( :py:class:`QgsVectorSimplifyMethod`.SimplifyHints )ntrol JSON attributes when exporting a legend in JSON format.\n\n.. versionadded:: 3.36\n\n" + '* ``ShowRuleDetails``: ' + Qgis.LegendJsonRenderFlag.ShowRuleDetails.__doc__ # -- Qgis.LegendJsonRenderFlag.baseClass = Qgis Qgis.LegendJsonRenderFlags = lambda flags=0: Qgis.LegendJsonRenderFlag(flags) diff --git a/python/PyQt6/core/auto_additions/qgsvectorsimplifymethod.py b/python/PyQt6/core/auto_additions/qgsvectorsimplifymethod.py deleted file mode 100644 index b7bdab0b4d0..00000000000 --- a/python/PyQt6/core/auto_additions/qgsvectorsimplifymethod.py +++ /dev/null @@ -1,24 +0,0 @@ -# The following has been generated automatically from src/core/qgsvectorsimplifymethod.h -QgsVectorSimplifyMethod.NoSimplification = QgsVectorSimplifyMethod.SimplifyHint.NoSimplification -QgsVectorSimplifyMethod.GeometrySimplification = QgsVectorSimplifyMethod.SimplifyHint.GeometrySimplification -QgsVectorSimplifyMethod.AntialiasingSimplification = QgsVectorSimplifyMethod.SimplifyHint.AntialiasingSimplification -QgsVectorSimplifyMethod.FullSimplification = QgsVectorSimplifyMethod.SimplifyHint.FullSimplification -QgsVectorSimplifyMethod.SimplifyHint.baseClass = QgsVectorSimplifyMethod -QgsVectorSimplifyMethod.SimplifyHints = lambda flags=0: QgsVectorSimplifyMethod.SimplifyHint(flags) -QgsVectorSimplifyMethod.SimplifyHints.baseClass = QgsVectorSimplifyMethod -SimplifyHints = QgsVectorSimplifyMethod # dirty hack since SIP seems to introduce the flags in module -QgsVectorSimplifyMethod.Distance = QgsVectorSimplifyMethod.SimplifyAlgorithm.Distance -QgsVectorSimplifyMethod.SnapToGrid = QgsVectorSimplifyMethod.SimplifyAlgorithm.SnapToGrid -QgsVectorSimplifyMethod.Visvalingam = QgsVectorSimplifyMethod.SimplifyAlgorithm.Visvalingam -QgsVectorSimplifyMethod.SnappedToGridGlobal = QgsVectorSimplifyMethod.SimplifyAlgorithm.SnappedToGridGlobal -QgsVectorSimplifyMethod.SimplifyAlgorithm.baseClass = QgsVectorSimplifyMethod -from enum import Enum - - -def _force_int(v): return int(v.value) if isinstance(v, Enum) else v - - -QgsVectorSimplifyMethod.SimplifyHint.__bool__ = lambda flag: bool(_force_int(flag)) -QgsVectorSimplifyMethod.SimplifyHint.__eq__ = lambda flag1, flag2: _force_int(flag1) == _force_int(flag2) -QgsVectorSimplifyMethod.SimplifyHint.__and__ = lambda flag1, flag2: _force_int(flag1) & _force_int(flag2) -QgsVectorSimplifyMethod.SimplifyHint.__or__ = lambda flag1, flag2: QgsVectorSimplifyMethod.SimplifyHint(_force_int(flag1) | _force_int(flag2)) diff --git a/python/PyQt6/core/auto_generated/qgis.sip.in b/python/PyQt6/core/auto_generated/qgis.sip.in index fef0e1d5599..4e9b9914ac0 100644 --- a/python/PyQt6/core/auto_generated/qgis.sip.in +++ b/python/PyQt6/core/auto_generated/qgis.sip.in @@ -1466,6 +1466,25 @@ The development version SubScript, }; + enum class VectorSimplificationAlgorithm /BaseType=IntEnum/ + { + Distance, + SnapToGrid, + Visvalingam, + SnappedToGridGlobal, + }; + + enum class VectorRenderingSimplificationFlag /BaseType=IntFlag/ + { + NoSimplification, + GeometrySimplification, + AntialiasingSimplification, + FullSimplification, + }; + + typedef QFlags VectorRenderingSimplificationFlags; + + enum class RenderSubcomponentProperty /BaseType=IntEnum/ { Generic, @@ -3011,6 +3030,7 @@ QFlags operator|(Qgis::ProcessingParameterFlag f1 QFlags operator|(Qgis::DataItemProviderCapability f1, QFlags f2); +QFlags operator|(Qgis::VectorRenderingSimplificationFlag f1, QFlags f2); diff --git a/python/PyQt6/core/auto_generated/qgsvectorsimplifymethod.sip.in b/python/PyQt6/core/auto_generated/qgsvectorsimplifymethod.sip.in index 72218496a45..6d8074cf47d 100644 --- a/python/PyQt6/core/auto_generated/qgsvectorsimplifymethod.sip.in +++ b/python/PyQt6/core/auto_generated/qgsvectorsimplifymethod.sip.in @@ -27,38 +27,20 @@ This class contains information how to simplify geometries fetched from a vector construct a default object %End - enum SimplifyHint /BaseType=IntEnum/ - { - NoSimplification, - GeometrySimplification, - AntialiasingSimplification, - FullSimplification, - }; - typedef QFlags SimplifyHints; - - - void setSimplifyHints( SimplifyHints simplifyHints ); + void setSimplifyHints( Qgis::VectorRenderingSimplificationFlags simplifyHints ); %Docstring Sets the simplification hints of the vector layer managed %End - SimplifyHints simplifyHints() const; + Qgis::VectorRenderingSimplificationFlags simplifyHints() const; %Docstring Gets the simplification hints of the vector layer managed %End - enum SimplifyAlgorithm /BaseType=IntEnum/ - { - Distance, - SnapToGrid, - Visvalingam, - SnappedToGridGlobal, - }; - - void setSimplifyAlgorithm( SimplifyAlgorithm simplifyAlgorithm ); + void setSimplifyAlgorithm( Qgis::VectorSimplificationAlgorithm simplifyAlgorithm ); %Docstring Sets the local simplification algorithm of the vector layer managed %End - SimplifyAlgorithm simplifyAlgorithm() const; + Qgis::VectorSimplificationAlgorithm simplifyAlgorithm() const; %Docstring Gets the local simplification algorithm of the vector layer managed %End @@ -101,8 +83,6 @@ Gets the maximum scale at which the layer should be simplified }; -QFlags operator|(QgsVectorSimplifyMethod::SimplifyHint f1, QFlags f2); - /************************************************************************ * This file has been generated automatically from * diff --git a/python/PyQt6/core/auto_generated/vector/qgsvectorlayer.sip.in b/python/PyQt6/core/auto_generated/vector/qgsvectorlayer.sip.in index 1e9c11afd9e..ad260ea9c04 100644 --- a/python/PyQt6/core/auto_generated/vector/qgsvectorlayer.sip.in +++ b/python/PyQt6/core/auto_generated/vector/qgsvectorlayer.sip.in @@ -2461,7 +2461,7 @@ Sets the simplification settings for fast rendering of features Returns the simplification settings for fast rendering of features %End - bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const; + bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, Qgis::VectorRenderingSimplificationFlag simplifyHint ) const; %Docstring Returns whether the VectorLayer can apply the specified simplification hint diff --git a/python/core/auto_additions/qgis.py b/python/core/auto_additions/qgis.py index 6521e556500..d3c610de583 100644 --- a/python/core/auto_additions/qgis.py +++ b/python/core/auto_additions/qgis.py @@ -2500,6 +2500,43 @@ Qgis.TextCharacterVerticalAlignment.SubScript.__doc__ = "Characters are placed b Qgis.TextCharacterVerticalAlignment.__doc__ = "Text vertical alignment for characters.\n\nThis enum controls vertical alignment of individual characters within a block\nof text.\n\n.. versionadded:: 3.30\n\n" + '* ``Normal``: ' + Qgis.TextCharacterVerticalAlignment.Normal.__doc__ + '\n' + '* ``SuperScript``: ' + Qgis.TextCharacterVerticalAlignment.SuperScript.__doc__ + '\n' + '* ``SubScript``: ' + Qgis.TextCharacterVerticalAlignment.SubScript.__doc__ # -- Qgis.TextCharacterVerticalAlignment.baseClass = Qgis +QgsVectorSimplifyMethod.SimplifyAlgorithm = Qgis.VectorSimplificationAlgorithm +# monkey patching scoped based enum +QgsVectorSimplifyMethod.Distance = Qgis.VectorSimplificationAlgorithm.Distance +QgsVectorSimplifyMethod.Distance.is_monkey_patched = True +QgsVectorSimplifyMethod.Distance.__doc__ = "The simplification uses the distance between points to remove duplicate points" +QgsVectorSimplifyMethod.SnapToGrid = Qgis.VectorSimplificationAlgorithm.SnapToGrid +QgsVectorSimplifyMethod.SnapToGrid.is_monkey_patched = True +QgsVectorSimplifyMethod.SnapToGrid.__doc__ = "The simplification uses a grid (similar to ST_SnapToGrid) to remove duplicate points" +QgsVectorSimplifyMethod.Visvalingam = Qgis.VectorSimplificationAlgorithm.Visvalingam +QgsVectorSimplifyMethod.Visvalingam.is_monkey_patched = True +QgsVectorSimplifyMethod.Visvalingam.__doc__ = "The simplification gives each point in a line an importance weighting, so that least important points are removed first" +QgsVectorSimplifyMethod.SnappedToGridGlobal = Qgis.VectorSimplificationAlgorithm.SnappedToGridGlobal +QgsVectorSimplifyMethod.SnappedToGridGlobal.is_monkey_patched = True +QgsVectorSimplifyMethod.SnappedToGridGlobal.__doc__ = "Snap to a global grid based on the tolerance. Good for consistent results for incoming vertices, regardless of their feature" +Qgis.VectorSimplificationAlgorithm.__doc__ = "Simplification algorithms for vector features.\n\n.. note::\n\n Prior to QGIS 3.28 this was available as :py:class:`QgsVectorSimplifyMethod`.SimplifyAlgorithm\n\n.. versionadded:: 3.28\n\n" + '* ``Distance``: ' + Qgis.VectorSimplificationAlgorithm.Distance.__doc__ + '\n' + '* ``SnapToGrid``: ' + Qgis.VectorSimplificationAlgorithm.SnapToGrid.__doc__ + '\n' + '* ``Visvalingam``: ' + Qgis.VectorSimplificationAlgorithm.Visvalingam.__doc__ + '\n' + '* ``SnappedToGridGlobal``: ' + Qgis.VectorSimplificationAlgorithm.SnappedToGridGlobal.__doc__ +# -- +Qgis.VectorSimplificationAlgorithm.baseClass = Qgis +QgsVectorSimplifyMethod.SimplifyHint = Qgis.VectorRenderingSimplificationFlag +# monkey patching scoped based enum +QgsVectorSimplifyMethod.NoSimplification = Qgis.VectorRenderingSimplificationFlag.NoSimplification +QgsVectorSimplifyMethod.NoSimplification.is_monkey_patched = True +QgsVectorSimplifyMethod.NoSimplification.__doc__ = "No simplification can be applied" +QgsVectorSimplifyMethod.GeometrySimplification = Qgis.VectorRenderingSimplificationFlag.GeometrySimplification +QgsVectorSimplifyMethod.GeometrySimplification.is_monkey_patched = True +QgsVectorSimplifyMethod.GeometrySimplification.__doc__ = "The geometries can be simplified using the current map2pixel context state" +QgsVectorSimplifyMethod.AntialiasingSimplification = Qgis.VectorRenderingSimplificationFlag.AntialiasingSimplification +QgsVectorSimplifyMethod.AntialiasingSimplification.is_monkey_patched = True +QgsVectorSimplifyMethod.AntialiasingSimplification.__doc__ = "The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size'" +QgsVectorSimplifyMethod.FullSimplification = Qgis.VectorRenderingSimplificationFlag.FullSimplification +QgsVectorSimplifyMethod.FullSimplification.is_monkey_patched = True +QgsVectorSimplifyMethod.FullSimplification.__doc__ = "All simplification hints can be applied ( Geometry + AA-disabling )" +Qgis.VectorRenderingSimplificationFlag.__doc__ = "Simplification flags for vector feature rendering.\n\n.. note::\n\n Prior to QGIS 3.36 this was available as :py:class:`QgsVectorSimplifyMethod`.SimplifyHint\n\n.. versionadded:: 3.36\n\n" + '* ``NoSimplification``: ' + Qgis.VectorRenderingSimplificationFlag.NoSimplification.__doc__ + '\n' + '* ``GeometrySimplification``: ' + Qgis.VectorRenderingSimplificationFlag.GeometrySimplification.__doc__ + '\n' + '* ``AntialiasingSimplification``: ' + Qgis.VectorRenderingSimplificationFlag.AntialiasingSimplification.__doc__ + '\n' + '* ``FullSimplification``: ' + Qgis.VectorRenderingSimplificationFlag.FullSimplification.__doc__ +# -- +Qgis.VectorRenderingSimplificationFlag.baseClass = Qgis +QgsVectorSimplifyMethod.SimplifyHints = Qgis.VectorRenderingSimplificationFlags +Qgis.VectorRenderingSimplificationFlags.baseClass = Qgis +VectorRenderingSimplificationFlags = Qgis # dirty hack since SIP seems to introduce the flags in module # monkey patching scoped based enum Qgis.RenderSubcomponentProperty.Generic.__doc__ = "Generic subcomponent property" Qgis.RenderSubcomponentProperty.ShadowOffset.__doc__ = "Shadow offset" @@ -3620,7 +3657,7 @@ Qgis.LayerTreeFilterFlags.baseClass = Qgis LayerTreeFilterFlags = Qgis # dirty hack since SIP seems to introduce the flags in module # monkey patching scoped based enum Qgis.LegendJsonRenderFlag.ShowRuleDetails.__doc__ = "If set, the rule expression of a rule based renderer legend item will be added to the JSON" -Qgis.LegendJsonRenderFlag.__doc__ = "Legend JSON export flags.\n\nFlags to control JSON attributes when exporting a legend in JSON format.\n\n.. versionadded:: 3.36\n\n" + '* ``ShowRuleDetails``: ' + Qgis.LegendJsonRenderFlag.ShowRuleDetails.__doc__ +Qgis.LegendJsonRenderFlag.__doc__ = "Legend JSON export flags.\n\nFlags to co\nQ_DECLARE_OPERATORS_FOR_FLAGS( :py:class:`QgsVectorSimplifyMethod`.SimplifyHints )ntrol JSON attributes when exporting a legend in JSON format.\n\n.. versionadded:: 3.36\n\n" + '* ``ShowRuleDetails``: ' + Qgis.LegendJsonRenderFlag.ShowRuleDetails.__doc__ # -- Qgis.LegendJsonRenderFlag.baseClass = Qgis Qgis.LegendJsonRenderFlags.baseClass = Qgis @@ -4949,3 +4986,4 @@ Qgis.ProcessingFeatureSourceFlag.__or__ = lambda flag1, flag2: Qgis.ProcessingFe Qgis.ProcessingParameterTypeFlag.__or__ = lambda flag1, flag2: Qgis.ProcessingParameterTypeFlags(_force_int(flag1) | _force_int(flag2)) Qgis.ProcessingParameterFlag.__or__ = lambda flag1, flag2: Qgis.ProcessingParameterFlags(_force_int(flag1) | _force_int(flag2)) Qgis.DataItemProviderCapability.__or__ = lambda flag1, flag2: Qgis.DataItemProviderCapabilities(_force_int(flag1) | _force_int(flag2)) +Qgis.VectorRenderingSimplificationFlag.__or__ = lambda flag1, flag2: Qgis.VectorRenderingSimplificationFlags(_force_int(flag1) | _force_int(flag2)) diff --git a/python/core/auto_additions/qgsvectorsimplifymethod.py b/python/core/auto_additions/qgsvectorsimplifymethod.py deleted file mode 100644 index a1b5b4d4270..00000000000 --- a/python/core/auto_additions/qgsvectorsimplifymethod.py +++ /dev/null @@ -1,5 +0,0 @@ -# The following has been generated automatically from src/core/qgsvectorsimplifymethod.h -QgsVectorSimplifyMethod.SimplifyHint.baseClass = QgsVectorSimplifyMethod -QgsVectorSimplifyMethod.SimplifyHints.baseClass = QgsVectorSimplifyMethod -SimplifyHints = QgsVectorSimplifyMethod # dirty hack since SIP seems to introduce the flags in module -QgsVectorSimplifyMethod.SimplifyAlgorithm.baseClass = QgsVectorSimplifyMethod diff --git a/python/core/auto_generated/qgis.sip.in b/python/core/auto_generated/qgis.sip.in index 4df1f0b6c8e..b1caa683678 100644 --- a/python/core/auto_generated/qgis.sip.in +++ b/python/core/auto_generated/qgis.sip.in @@ -1466,6 +1466,25 @@ The development version SubScript, }; + enum class VectorSimplificationAlgorithm + { + Distance, + SnapToGrid, + Visvalingam, + SnappedToGridGlobal, + }; + + enum class VectorRenderingSimplificationFlag + { + NoSimplification, + GeometrySimplification, + AntialiasingSimplification, + FullSimplification, + }; + + typedef QFlags VectorRenderingSimplificationFlags; + + enum class RenderSubcomponentProperty { Generic, @@ -3011,6 +3030,7 @@ QFlags operator|(Qgis::ProcessingParameterFlag f1 QFlags operator|(Qgis::DataItemProviderCapability f1, QFlags f2); +QFlags operator|(Qgis::VectorRenderingSimplificationFlag f1, QFlags f2); diff --git a/python/core/auto_generated/qgsvectorsimplifymethod.sip.in b/python/core/auto_generated/qgsvectorsimplifymethod.sip.in index 6f12bbe33f3..6d8074cf47d 100644 --- a/python/core/auto_generated/qgsvectorsimplifymethod.sip.in +++ b/python/core/auto_generated/qgsvectorsimplifymethod.sip.in @@ -27,38 +27,20 @@ This class contains information how to simplify geometries fetched from a vector construct a default object %End - enum SimplifyHint - { - NoSimplification, - GeometrySimplification, - AntialiasingSimplification, - FullSimplification, - }; - typedef QFlags SimplifyHints; - - - void setSimplifyHints( SimplifyHints simplifyHints ); + void setSimplifyHints( Qgis::VectorRenderingSimplificationFlags simplifyHints ); %Docstring Sets the simplification hints of the vector layer managed %End - SimplifyHints simplifyHints() const; + Qgis::VectorRenderingSimplificationFlags simplifyHints() const; %Docstring Gets the simplification hints of the vector layer managed %End - enum SimplifyAlgorithm - { - Distance, - SnapToGrid, - Visvalingam, - SnappedToGridGlobal, - }; - - void setSimplifyAlgorithm( SimplifyAlgorithm simplifyAlgorithm ); + void setSimplifyAlgorithm( Qgis::VectorSimplificationAlgorithm simplifyAlgorithm ); %Docstring Sets the local simplification algorithm of the vector layer managed %End - SimplifyAlgorithm simplifyAlgorithm() const; + Qgis::VectorSimplificationAlgorithm simplifyAlgorithm() const; %Docstring Gets the local simplification algorithm of the vector layer managed %End @@ -101,8 +83,6 @@ Gets the maximum scale at which the layer should be simplified }; -QFlags operator|(QgsVectorSimplifyMethod::SimplifyHint f1, QFlags f2); - /************************************************************************ * This file has been generated automatically from * diff --git a/python/core/auto_generated/vector/qgsvectorlayer.sip.in b/python/core/auto_generated/vector/qgsvectorlayer.sip.in index 1e9c11afd9e..ad260ea9c04 100644 --- a/python/core/auto_generated/vector/qgsvectorlayer.sip.in +++ b/python/core/auto_generated/vector/qgsvectorlayer.sip.in @@ -2461,7 +2461,7 @@ Sets the simplification settings for fast rendering of features Returns the simplification settings for fast rendering of features %End - bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const; + bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, Qgis::VectorRenderingSimplificationFlag simplifyHint ) const; %Docstring Returns whether the VectorLayer can apply the specified simplification hint diff --git a/src/app/options/qgsvectorrenderingoptions.cpp b/src/app/options/qgsvectorrenderingoptions.cpp index 4059c2c9d24..b50b2fbce54 100644 --- a/src/app/options/qgsvectorrenderingoptions.cpp +++ b/src/app/options/qgsvectorrenderingoptions.cpp @@ -17,7 +17,6 @@ #include "qgsvectorrenderingoptions.h" #include "qgssettings.h" #include "qgsapplication.h" -#include "qgsvectorsimplifymethod.h" #include "qgsvectorlayer.h" #include "qgssettingsentryenumflag.h" @@ -34,7 +33,7 @@ QgsVectorRenderingOptionsWidget::QgsVectorRenderingOptionsWidget( QWidget *paren QgsSettings settings; // Default simplify drawing configuration - mSimplifyDrawingGroupBox->setChecked( settings.enumValue( QStringLiteral( "/qgis/simplifyDrawingHints" ), QgsVectorSimplifyMethod::GeometrySimplification ) != QgsVectorSimplifyMethod::NoSimplification ); + mSimplifyDrawingGroupBox->setChecked( settings.enumValue( QStringLiteral( "/qgis/simplifyDrawingHints" ), Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ) != Qgis::VectorRenderingSimplificationFlag::NoSimplification ); mSimplifyDrawingSpinBox->setValue( QgsVectorLayer::settingsSimplifyDrawingTol->value() ); mSimplifyDrawingAtProvider->setChecked( !QgsVectorLayer::settingsSimplifyLocal->value() ); @@ -62,10 +61,10 @@ QgsVectorRenderingOptionsWidget::QgsVectorRenderingOptionsWidget( QWidget *paren mSimplifyMaximumScaleComboBox->setScale( QgsVectorLayer::settingsSimplifyMaxScale->value() ); // Default local simplification algorithm - mSimplifyAlgorithmComboBox->addItem( tr( "Distance" ), static_cast( QgsVectorSimplifyMethod::Distance ) ); - mSimplifyAlgorithmComboBox->addItem( tr( "SnapToGrid" ), static_cast( QgsVectorSimplifyMethod::SnapToGrid ) ); - mSimplifyAlgorithmComboBox->addItem( tr( "Visvalingam" ), static_cast( QgsVectorSimplifyMethod::Visvalingam ) ); - mSimplifyAlgorithmComboBox->setCurrentIndex( mSimplifyAlgorithmComboBox->findData( QgsVectorLayer::settingsSimplifyAlgorithm->value() ) ); + mSimplifyAlgorithmComboBox->addItem( tr( "Distance" ), QVariant::fromValue( Qgis::VectorSimplificationAlgorithm::Distance ) ); + mSimplifyAlgorithmComboBox->addItem( tr( "SnapToGrid" ), QVariant::fromValue( Qgis::VectorSimplificationAlgorithm::SnapToGrid ) ); + mSimplifyAlgorithmComboBox->addItem( tr( "Visvalingam" ), QVariant::fromValue( Qgis::VectorSimplificationAlgorithm::Visvalingam ) ); + mSimplifyAlgorithmComboBox->setCurrentIndex( mSimplifyAlgorithmComboBox->findData( QVariant::fromValue( QgsVectorLayer::settingsSimplifyAlgorithm->value() ) ) ); } QString QgsVectorRenderingOptionsWidget::helpKey() const @@ -78,14 +77,15 @@ void QgsVectorRenderingOptionsWidget::apply() QgsSettings settings; // Default simplify drawing configuration - QgsVectorSimplifyMethod::SimplifyHints simplifyHints = QgsVectorSimplifyMethod::NoSimplification; + Qgis::VectorRenderingSimplificationFlags simplifyHints = Qgis::VectorRenderingSimplificationFlag::NoSimplification; if ( mSimplifyDrawingGroupBox->isChecked() ) { - simplifyHints |= QgsVectorSimplifyMethod::GeometrySimplification; - if ( mSimplifyDrawingSpinBox->value() > 1 ) simplifyHints |= QgsVectorSimplifyMethod::AntialiasingSimplification; + simplifyHints |= Qgis::VectorRenderingSimplificationFlag::GeometrySimplification; + if ( mSimplifyDrawingSpinBox->value() > 1 ) + simplifyHints |= Qgis::VectorRenderingSimplificationFlag::AntialiasingSimplification; } QgsVectorLayer::settingsSimplifyDrawingHints->setValue( simplifyHints ); - QgsVectorLayer::settingsSimplifyAlgorithm->setValue( mSimplifyAlgorithmComboBox->currentData().value() ); + QgsVectorLayer::settingsSimplifyAlgorithm->setValue( mSimplifyAlgorithmComboBox->currentData().value() ); QgsVectorLayer::settingsSimplifyDrawingTol->setValue( mSimplifyDrawingSpinBox->value() ); QgsVectorLayer::settingsSimplifyLocal->setValue( !mSimplifyDrawingAtProvider->isChecked() ); QgsVectorLayer::settingsSimplifyMaxScale->setValue( mSimplifyMaximumScaleComboBox->scale() ); diff --git a/src/app/qgsmapsavedialog.cpp b/src/app/qgsmapsavedialog.cpp index 047fa2fa5c7..e14e73ed4af 100644 --- a/src/app/qgsmapsavedialog.cpp +++ b/src/app/qgsmapsavedialog.cpp @@ -525,10 +525,10 @@ void QgsMapSaveDialog::onAccepted() if ( mSimplifyGeometriesCheckbox->isChecked() ) { QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::GeometrySimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); simplifyMethod.setForceLocalOptimization( true ); // we use SnappedToGridGlobal, because it avoids gaps and slivers between previously adjacent polygons - simplifyMethod.setSimplifyAlgorithm( QgsVectorSimplifyMethod::SnappedToGridGlobal ); + simplifyMethod.setSimplifyAlgorithm( Qgis::VectorSimplificationAlgorithm::SnappedToGridGlobal ); simplifyMethod.setThreshold( 0.1f ); // (pixels). We are quite conservative here. This could possibly be bumped all the way up to 1. But let's play it safe. ms.setSimplifyMethod( simplifyMethod ); } diff --git a/src/core/labeling/qgspallabeling.cpp b/src/core/labeling/qgspallabeling.cpp index 470bbdc718d..255313400cb 100644 --- a/src/core/labeling/qgspallabeling.cpp +++ b/src/core/labeling/qgspallabeling.cpp @@ -2241,7 +2241,7 @@ std::unique_ptr QgsPalLayerSettings::registerFeatureWithDetails // simplify? const QgsVectorSimplifyMethod &simplifyMethod = context.vectorSimplifyMethod(); std::unique_ptr scopedClonedGeom; - if ( simplifyMethod.simplifyHints() != QgsVectorSimplifyMethod::NoSimplification && simplifyMethod.forceLocalOptimization() ) + if ( simplifyMethod.simplifyHints() != Qgis::VectorRenderingSimplificationFlags( Qgis::VectorRenderingSimplificationFlag::NoSimplification ) && simplifyMethod.forceLocalOptimization() ) { unsigned int simplifyHints = simplifyMethod.simplifyHints() | QgsMapToPixelSimplifier::SimplifyEnvelope; QgsMapToPixelSimplifier::SimplifyAlgorithm simplifyAlgorithm = static_cast< QgsMapToPixelSimplifier::SimplifyAlgorithm >( simplifyMethod.simplifyAlgorithm() ); @@ -3060,7 +3060,7 @@ std::unique_ptr QgsPalLayerSettings::registerObstacleFeature( c // simplify? const QgsVectorSimplifyMethod &simplifyMethod = context.vectorSimplifyMethod(); std::unique_ptr scopedClonedGeom; - if ( simplifyMethod.simplifyHints() != QgsVectorSimplifyMethod::NoSimplification && simplifyMethod.forceLocalOptimization() ) + if ( simplifyMethod.simplifyHints() != Qgis::VectorRenderingSimplificationFlags( Qgis::VectorRenderingSimplificationFlag::NoSimplification ) && simplifyMethod.forceLocalOptimization() ) { int simplifyHints = simplifyMethod.simplifyHints() | QgsMapToPixelSimplifier::SimplifyEnvelope; QgsMapToPixelSimplifier::SimplifyAlgorithm simplifyAlgorithm = static_cast< QgsMapToPixelSimplifier::SimplifyAlgorithm >( simplifyMethod.simplifyAlgorithm() ); diff --git a/src/core/layout/qgslayoutexporter.cpp b/src/core/layout/qgslayoutexporter.cpp index 9c9f2ffc075..6a1a65cf9bd 100644 --- a/src/core/layout/qgslayoutexporter.cpp +++ b/src/core/layout/qgslayoutexporter.cpp @@ -1900,10 +1900,10 @@ QgsLayoutExporter::ExportResult QgsLayoutExporter::handleLayeredExport( const QL QgsVectorSimplifyMethod QgsLayoutExporter::createExportSimplifyMethod() { QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::GeometrySimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); simplifyMethod.setForceLocalOptimization( true ); // we use SnappedToGridGlobal, because it avoids gaps and slivers between previously adjacent polygons - simplifyMethod.setSimplifyAlgorithm( QgsVectorSimplifyMethod::SnappedToGridGlobal ); + simplifyMethod.setSimplifyAlgorithm( Qgis::VectorSimplificationAlgorithm::SnappedToGridGlobal ); simplifyMethod.setThreshold( 0.1f ); // (pixels). We are quite conservative here. This could possibly be bumped all the way up to 1. But let's play it safe. return simplifyMethod; } diff --git a/src/core/layout/qgslayoutitemmap.cpp b/src/core/layout/qgslayoutitemmap.cpp index ac8e6010880..76d2977bfe7 100644 --- a/src/core/layout/qgslayoutitemmap.cpp +++ b/src/core/layout/qgslayoutitemmap.cpp @@ -1720,7 +1720,7 @@ QgsMapSettings QgsLayoutItemMap::mapSettings( const QgsRectangle &extent, QSizeF if ( !mLayout->renderContext().isPreviewRender() ) { //if outputting layout, we disable optimisations like layer simplification by default, UNLESS the context specifically tells us to use them - jobMapSettings.setFlag( Qgis::MapSettingsFlag::UseRenderingOptimization, mLayout->renderContext().simplifyMethod().simplifyHints() != QgsVectorSimplifyMethod::NoSimplification ); + jobMapSettings.setFlag( Qgis::MapSettingsFlag::UseRenderingOptimization, mLayout->renderContext().simplifyMethod().simplifyHints() != Qgis::VectorRenderingSimplificationFlags( Qgis::VectorRenderingSimplificationFlag::NoSimplification ) ); jobMapSettings.setSimplifyMethod( mLayout->renderContext().simplifyMethod() ); jobMapSettings.setRendererUsage( Qgis::RendererUsage::Export ); } diff --git a/src/core/layout/qgslayoutrendercontext.cpp b/src/core/layout/qgslayoutrendercontext.cpp index 3e71ffdf034..4df0a84fc73 100644 --- a/src/core/layout/qgslayoutrendercontext.cpp +++ b/src/core/layout/qgslayoutrendercontext.cpp @@ -22,7 +22,7 @@ QgsLayoutRenderContext::QgsLayoutRenderContext( QgsLayout *layout ) , mFlags( FlagAntialiasing | FlagUseAdvancedEffects ) , mLayout( layout ) { - mSimplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + mSimplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::NoSimplification ); } void QgsLayoutRenderContext::setFlags( const QgsLayoutRenderContext::Flags flags ) diff --git a/src/core/qgis.h b/src/core/qgis.h index 93a8fdc14f3..a6e3c7a6181 100644 --- a/src/core/qgis.h +++ b/src/core/qgis.h @@ -2531,6 +2531,48 @@ class CORE_EXPORT Qgis }; Q_ENUM( TextCharacterVerticalAlignment ) + /** + * Simplification algorithms for vector features. + * + * \note Prior to QGIS 3.28 this was available as QgsVectorSimplifyMethod::SimplifyAlgorithm + * + * \since QGIS 3.28 + */ + enum class VectorSimplificationAlgorithm SIP_MONKEYPATCH_SCOPEENUM_UNNEST( QgsVectorSimplifyMethod, SimplifyAlgorithm ) : int + { + Distance = 0, //!< The simplification uses the distance between points to remove duplicate points + SnapToGrid = 1, //!< The simplification uses a grid (similar to ST_SnapToGrid) to remove duplicate points + Visvalingam = 2, //!< The simplification gives each point in a line an importance weighting, so that least important points are removed first + SnappedToGridGlobal = 3, //!< Snap to a global grid based on the tolerance. Good for consistent results for incoming vertices, regardless of their feature + }; + Q_ENUM( VectorSimplificationAlgorithm ) + + /** + * Simplification flags for vector feature rendering. + * + * \note Prior to QGIS 3.36 this was available as QgsVectorSimplifyMethod::SimplifyHint + * + * \since QGIS 3.36 + */ + enum class VectorRenderingSimplificationFlag SIP_MONKEYPATCH_SCOPEENUM_UNNEST( QgsVectorSimplifyMethod, SimplifyHint ) : int SIP_ENUM_BASETYPE( IntFlag ) + { + NoSimplification = 0, //!< No simplification can be applied + GeometrySimplification = 1, //!< The geometries can be simplified using the current map2pixel context state + AntialiasingSimplification = 2, //!< The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size' + FullSimplification = 3, //!< All simplification hints can be applied ( Geometry + AA-disabling ) + }; + Q_ENUM( VectorRenderingSimplificationFlag ) + + /** + * Simplification flags for vector feature rendering. + * + * \note Prior to QGIS 3.36 this was available as QgsVectorSimplifyMethod::SimplifyHints + * + * \since QGIS 3.36 + */ + Q_DECLARE_FLAGS( VectorRenderingSimplificationFlags, VectorRenderingSimplificationFlag ) SIP_MONKEYPATCH_FLAGS_UNNEST( QgsVectorSimplifyMethod, SimplifyHints ) + Q_FLAG( VectorRenderingSimplificationFlags ) + /** * Rendering subcomponent properties. * @@ -3894,7 +3936,8 @@ class CORE_EXPORT Qgis /** * Legend JSON export flags. * - * Flags to control JSON attributes when exporting a legend in JSON format. + * Flags to co + * Q_DECLARE_OPERATORS_FOR_FLAGS( QgsVectorSimplifyMethod::SimplifyHints )ntrol JSON attributes when exporting a legend in JSON format. * * \since QGIS 3.36 */ @@ -5156,7 +5199,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingFeatureSourceFlags ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingParameterTypeFlags ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingParameterFlags ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::DataItemProviderCapabilities ) - +Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::VectorRenderingSimplificationFlags ) // hack to workaround warnings when casting void pointers // retrieved from QLibrary::resolve to function pointers. diff --git a/src/core/qgsmapsettings.cpp b/src/core/qgsmapsettings.cpp index a9c5efe9ca3..a89548cc89a 100644 --- a/src/core/qgsmapsettings.cpp +++ b/src/core/qgsmapsettings.cpp @@ -42,7 +42,7 @@ QgsMapSettings::QgsMapSettings() , mSegmentationTolerance( M_PI_2 / 90 ) { mScaleCalculator.setMapUnits( Qgis::DistanceUnit::Unknown ); - mSimplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + mSimplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::NoSimplification ); updateDerived(); } diff --git a/src/core/qgsrendercontext.cpp b/src/core/qgsrendercontext.cpp index 3e76cf3f6d4..504dd3e0143 100644 --- a/src/core/qgsrendercontext.cpp +++ b/src/core/qgsrendercontext.cpp @@ -31,7 +31,7 @@ QgsRenderContext::QgsRenderContext() : mFlags( Qgis::RenderContextFlag::DrawEditingInfo | Qgis::RenderContextFlag::UseAdvancedEffects | Qgis::RenderContextFlag::DrawSelection | Qgis::RenderContextFlag::UseRenderingOptimization ) { - mVectorSimplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + mVectorSimplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::NoSimplification ); // For RenderMetersInMapUnits support, when rendering in Degrees, the Ellipsoid must be set // - for Previews/Icons the default Extent can be used mDistanceArea.setEllipsoid( mDistanceArea.sourceCrs().ellipsoidAcronym() ); diff --git a/src/core/qgsvectorsimplifymethod.cpp b/src/core/qgsvectorsimplifymethod.cpp index 4a6a944d1aa..a69cd049d68 100644 --- a/src/core/qgsvectorsimplifymethod.cpp +++ b/src/core/qgsvectorsimplifymethod.cpp @@ -17,7 +17,7 @@ #include "qgsvectorsimplifymethod.h" QgsVectorSimplifyMethod::QgsVectorSimplifyMethod() - : mSimplifyHints( Qgis::DEFAULT_MAPTOPIXEL_THRESHOLD > 1 ? QgsVectorSimplifyMethod::FullSimplification : QgsVectorSimplifyMethod::GeometrySimplification ) + : mSimplifyHints( Qgis::DEFAULT_MAPTOPIXEL_THRESHOLD > 1 ? Qgis::VectorRenderingSimplificationFlag::FullSimplification : Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ) , mThreshold( Qgis::DEFAULT_MAPTOPIXEL_THRESHOLD ) { } diff --git a/src/core/qgsvectorsimplifymethod.h b/src/core/qgsvectorsimplifymethod.h index 8ecd056e177..27d9037cf23 100644 --- a/src/core/qgsvectorsimplifymethod.h +++ b/src/core/qgsvectorsimplifymethod.h @@ -21,6 +21,7 @@ #include "qgis_core.h" #include "qgis_sip.h" +#include "qgis.h" /** * \ingroup core @@ -33,37 +34,15 @@ class CORE_EXPORT QgsVectorSimplifyMethod //! construct a default object QgsVectorSimplifyMethod(); - //! Simplification flags for fast rendering of features - enum SimplifyHint SIP_ENUM_BASETYPE( IntFlag ) - { - NoSimplification = 0, //!< No simplification can be applied - GeometrySimplification = 1, //!< The geometries can be simplified using the current map2pixel context state - AntialiasingSimplification = 2, //!< The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size' - FullSimplification = 3, //!< All simplification hints can be applied ( Geometry + AA-disabling ) - }; - Q_ENUM( SimplifyHint ) - Q_DECLARE_FLAGS( SimplifyHints, SimplifyHint ) - Q_FLAG( SimplifyHints ) - //! Sets the simplification hints of the vector layer managed - void setSimplifyHints( SimplifyHints simplifyHints ) { mSimplifyHints = simplifyHints; } + void setSimplifyHints( Qgis::VectorRenderingSimplificationFlags simplifyHints ) { mSimplifyHints = simplifyHints; } //! Gets the simplification hints of the vector layer managed - inline SimplifyHints simplifyHints() const { return mSimplifyHints; } - - //! Types of local simplification algorithms that can be used - enum SimplifyAlgorithm - { - Distance = 0, //!< The simplification uses the distance between points to remove duplicate points - SnapToGrid = 1, //!< The simplification uses a grid (similar to ST_SnapToGrid) to remove duplicate points - Visvalingam = 2, //!< The simplification gives each point in a line an importance weighting, so that least important points are removed first - SnappedToGridGlobal = 3, //!< Snap to a global grid based on the tolerance. Good for consistent results for incoming vertices, regardless of their feature - }; - Q_ENUM( SimplifyAlgorithm ) + inline Qgis::VectorRenderingSimplificationFlags simplifyHints() const { return mSimplifyHints; } //! Sets the local simplification algorithm of the vector layer managed - void setSimplifyAlgorithm( SimplifyAlgorithm simplifyAlgorithm ) { mSimplifyAlgorithm = simplifyAlgorithm; } + void setSimplifyAlgorithm( Qgis::VectorSimplificationAlgorithm simplifyAlgorithm ) { mSimplifyAlgorithm = simplifyAlgorithm; } //! Gets the local simplification algorithm of the vector layer managed - inline SimplifyAlgorithm simplifyAlgorithm() const { return mSimplifyAlgorithm; } + inline Qgis::VectorSimplificationAlgorithm simplifyAlgorithm() const { return mSimplifyAlgorithm; } //! Sets the tolerance of simplification in map units. Represents the maximum distance in map units between two coordinates which can be considered equal void setTolerance( double tolerance ) { mTolerance = tolerance; } @@ -87,9 +66,9 @@ class CORE_EXPORT QgsVectorSimplifyMethod private: //! Simplification hints for fast rendering of features of the vector layer managed - SimplifyHints mSimplifyHints; + Qgis::VectorRenderingSimplificationFlags mSimplifyHints; //! Simplification algorithm - SimplifyAlgorithm mSimplifyAlgorithm = QgsVectorSimplifyMethod::Distance; + Qgis::VectorSimplificationAlgorithm mSimplifyAlgorithm = Qgis::VectorSimplificationAlgorithm::Distance; //! Simplification tolerance, it represents the maximum distance between two coordinates which can be considered equal double mTolerance = 1; //! Simplification threshold @@ -100,6 +79,5 @@ class CORE_EXPORT QgsVectorSimplifyMethod float mMaximumScale = 1; }; -Q_DECLARE_OPERATORS_FOR_FLAGS( QgsVectorSimplifyMethod::SimplifyHints ) #endif // QGSVECTORSIMPLIFYMETHOD_H diff --git a/src/core/symbology/qgslinesymbollayer.cpp b/src/core/symbology/qgslinesymbollayer.cpp index 2e2ef43eae3..89fe664299f 100644 --- a/src/core/symbology/qgslinesymbollayer.cpp +++ b/src/core/symbology/qgslinesymbollayer.cpp @@ -14,7 +14,6 @@ ***************************************************************************/ #include "qgslinesymbollayer.h" -#include "qgscurve.h" #include "qgscurvepolygon.h" #include "qgsdxfexport.h" #include "qgssymbollayerutils.h" @@ -451,7 +450,7 @@ void QgsSimpleLineSymbolLayer::renderPolyline( const QPolygonF &pts, QgsSymbolRe // Disable 'Antialiasing' if the geometry was generalized in the current RenderContext (We known that it must have least #2 points). std::unique_ptr< QgsScopedQPainterState > painterState; if ( points.size() <= 2 && - ( context.renderContext().vectorSimplifyMethod().simplifyHints() & QgsVectorSimplifyMethod::AntialiasingSimplification ) && + ( context.renderContext().vectorSimplifyMethod().simplifyHints() & Qgis::VectorRenderingSimplificationFlag::AntialiasingSimplification ) && QgsAbstractGeometrySimplifier::isGeneralizableByDeviceBoundingBox( points, context.renderContext().vectorSimplifyMethod().threshold() ) && ( p->renderHints() & QPainter::Antialiasing ) ) { diff --git a/src/core/symbology/qgssymbollayer.cpp b/src/core/symbology/qgssymbollayer.cpp index b66e0a54b2c..c2c594439a2 100644 --- a/src/core/symbology/qgssymbollayer.cpp +++ b/src/core/symbology/qgssymbollayer.cpp @@ -864,7 +864,7 @@ void QgsFillSymbolLayer::_renderPolygon( QPainter *p, const QPolygonF &points, c // Disable 'Antialiasing' if the geometry was generalized in the current RenderContext (We known that it must have least #5 points). if ( points.size() <= 5 && - ( context.renderContext().vectorSimplifyMethod().simplifyHints() & QgsVectorSimplifyMethod::AntialiasingSimplification ) && + ( context.renderContext().vectorSimplifyMethod().simplifyHints() & Qgis::VectorRenderingSimplificationFlag::AntialiasingSimplification ) && QgsAbstractGeometrySimplifier::isGeneralizableByDeviceBoundingBox( points, context.renderContext().vectorSimplifyMethod().threshold() ) && ( p->renderHints() & QPainter::Antialiasing ) ) { diff --git a/src/core/vector/qgsvectorlayer.cpp b/src/core/vector/qgsvectorlayer.cpp index 12af50d7fdf..0e50945dc72 100644 --- a/src/core/vector/qgsvectorlayer.cpp +++ b/src/core/vector/qgsvectorlayer.cpp @@ -114,8 +114,8 @@ const QgsSettingsEntryDouble *QgsVectorLayer::settingsSimplifyDrawingTol = new QgsSettingsEntryDouble( QStringLiteral( "simplifyDrawingTol" ), QgsSettingsTree::sTreeQgis, Qgis::DEFAULT_MAPTOPIXEL_THRESHOLD ); const QgsSettingsEntryBool *QgsVectorLayer::settingsSimplifyLocal = new QgsSettingsEntryBool( QStringLiteral( "simplifyLocal" ), QgsSettingsTree::sTreeQgis, true ); const QgsSettingsEntryDouble *QgsVectorLayer::settingsSimplifyMaxScale = new QgsSettingsEntryDouble( QStringLiteral( "simplifyMaxScale" ), QgsSettingsTree::sTreeQgis, 1.0 ); -const QgsSettingsEntryEnumFlag *QgsVectorLayer::settingsSimplifyDrawingHints = new QgsSettingsEntryEnumFlag( QStringLiteral( "simplifyDrawingHints" ), QgsSettingsTree::sTreeQgis, QgsVectorSimplifyMethod::SimplifyHint::NoSimplification ); -const QgsSettingsEntryEnumFlag *QgsVectorLayer::settingsSimplifyAlgorithm = new QgsSettingsEntryEnumFlag( QStringLiteral( "simplifyAlgorithm" ), QgsSettingsTree::sTreeQgis, QgsVectorSimplifyMethod::SimplifyAlgorithm::Distance ); +const QgsSettingsEntryEnumFlag *QgsVectorLayer::settingsSimplifyDrawingHints = new QgsSettingsEntryEnumFlag( QStringLiteral( "simplifyDrawingHints" ), QgsSettingsTree::sTreeQgis, Qgis::VectorRenderingSimplificationFlag::NoSimplification ); +const QgsSettingsEntryEnumFlag *QgsVectorLayer::settingsSimplifyAlgorithm = new QgsSettingsEntryEnumFlag( QStringLiteral( "simplifyAlgorithm" ), QgsSettingsTree::sTreeQgis, Qgis::VectorSimplificationAlgorithm::Distance ); #ifdef TESTPROVIDERLIB @@ -1303,7 +1303,7 @@ bool QgsVectorLayer::setSubsetString( const QString &subset ) return res; } -bool QgsVectorLayer::simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const +bool QgsVectorLayer::simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, Qgis::VectorRenderingSimplificationFlag simplifyHint ) const { // non fatal for now -- the "rasterize" processing algorithm is not thread safe and calls this QGIS_PROTECT_QOBJECT_THREAD_ACCESS_NON_FATAL @@ -2889,8 +2889,8 @@ bool QgsVectorLayer::readStyle( const QDomNode &node, QString &errorMessage, QDomElement e = node.toElement(); // get the simplification drawing settings - mSimplifyMethod.setSimplifyHints( static_cast< QgsVectorSimplifyMethod::SimplifyHints >( e.attribute( QStringLiteral( "simplifyDrawingHints" ), QStringLiteral( "1" ) ).toInt() ) ); - mSimplifyMethod.setSimplifyAlgorithm( static_cast< QgsVectorSimplifyMethod::SimplifyAlgorithm >( e.attribute( QStringLiteral( "simplifyAlgorithm" ), QStringLiteral( "0" ) ).toInt() ) ); + mSimplifyMethod.setSimplifyHints( static_cast< Qgis::VectorRenderingSimplificationFlags >( e.attribute( QStringLiteral( "simplifyDrawingHints" ), QStringLiteral( "1" ) ).toInt() ) ); + mSimplifyMethod.setSimplifyAlgorithm( static_cast< Qgis::VectorSimplificationAlgorithm >( e.attribute( QStringLiteral( "simplifyAlgorithm" ), QStringLiteral( "0" ) ).toInt() ) ); mSimplifyMethod.setThreshold( e.attribute( QStringLiteral( "simplifyDrawingTol" ), QStringLiteral( "1" ) ).toFloat() ); mSimplifyMethod.setForceLocalOptimization( e.attribute( QStringLiteral( "simplifyLocal" ), QStringLiteral( "1" ) ).toInt() ); mSimplifyMethod.setMaximumScale( e.attribute( QStringLiteral( "simplifyMaxScale" ), QStringLiteral( "1" ) ).toFloat() ); @@ -3248,8 +3248,8 @@ bool QgsVectorLayer::writeStyle( QDomNode &node, QDomDocument &doc, QString &err // save the simplification drawing settings if ( categories.testFlag( Rendering ) ) { - mapLayerNode.setAttribute( QStringLiteral( "simplifyDrawingHints" ), QString::number( mSimplifyMethod.simplifyHints() ) ); - mapLayerNode.setAttribute( QStringLiteral( "simplifyAlgorithm" ), QString::number( mSimplifyMethod.simplifyAlgorithm() ) ); + mapLayerNode.setAttribute( QStringLiteral( "simplifyDrawingHints" ), QString::number( static_cast< int >( mSimplifyMethod.simplifyHints() ) ) ); + mapLayerNode.setAttribute( QStringLiteral( "simplifyAlgorithm" ), QString::number( static_cast< int >( mSimplifyMethod.simplifyAlgorithm() ) ) ); mapLayerNode.setAttribute( QStringLiteral( "simplifyDrawingTol" ), QString::number( mSimplifyMethod.threshold() ) ); mapLayerNode.setAttribute( QStringLiteral( "simplifyLocal" ), mSimplifyMethod.forceLocalOptimization() ? 1 : 0 ); mapLayerNode.setAttribute( QStringLiteral( "simplifyMaxScale" ), QString::number( mSimplifyMethod.maximumScale() ) ); diff --git a/src/core/vector/qgsvectorlayer.h b/src/core/vector/qgsvectorlayer.h index 496e05370ea..e0568d5faa7 100644 --- a/src/core/vector/qgsvectorlayer.h +++ b/src/core/vector/qgsvectorlayer.h @@ -34,7 +34,6 @@ #include "qgsfields.h" #include "qgsvectordataprovider.h" #include "qgsvectorlayertoolscontext.h" -#include "qgsvectorsimplifymethod.h" #include "qgseditformconfig.h" #include "qgsattributetableconfig.h" #include "qgsaggregatecalculator.h" @@ -43,6 +42,7 @@ #include "qgsexpressioncontextscopegenerator.h" #include "qgsexpressioncontext.h" #include "qgsabstractprofilesource.h" +#include "qgsvectorsimplifymethod.h" class QPainter; class QImage; @@ -414,8 +414,8 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte static const QgsSettingsEntryDouble *settingsSimplifyMaxScale SIP_SKIP; static const QgsSettingsEntryDouble *settingsSimplifyDrawingTol SIP_SKIP; - static const QgsSettingsEntryEnumFlag *settingsSimplifyAlgorithm SIP_SKIP; - static const QgsSettingsEntryEnumFlag *settingsSimplifyDrawingHints SIP_SKIP; + static const QgsSettingsEntryEnumFlag *settingsSimplifyAlgorithm SIP_SKIP; + static const QgsSettingsEntryEnumFlag *settingsSimplifyDrawingHints SIP_SKIP; /** * Setting options for loading vector layers. @@ -2330,7 +2330,7 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte * Returns whether the VectorLayer can apply the specified simplification hint * \note Do not use in 3rd party code - may be removed in future version! */ - bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const; + bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, Qgis::VectorRenderingSimplificationFlag simplifyHint ) const; /** * Returns the conditional styles that are set for this layer. Style information is diff --git a/src/core/vector/qgsvectorlayerrenderer.cpp b/src/core/vector/qgsvectorlayerrenderer.cpp index 3ce09630ed6..519f29f00fd 100644 --- a/src/core/vector/qgsvectorlayerrenderer.cpp +++ b/src/core/vector/qgsvectorlayerrenderer.cpp @@ -133,16 +133,16 @@ QgsVectorLayerRenderer::QgsVectorLayerRenderer( QgsVectorLayer *layer, QgsRender // if there's already a simplification method specified via the context, we respect that. Otherwise, we fall back // to the layer's individual setting - if ( renderContext()->vectorSimplifyMethod().simplifyHints() != QgsVectorSimplifyMethod::NoSimplification ) + if ( renderContext()->vectorSimplifyMethod().simplifyHints() != Qgis::VectorRenderingSimplificationFlags( Qgis::VectorRenderingSimplificationFlag::NoSimplification ) ) { mSimplifyMethod = renderContext()->vectorSimplifyMethod(); - mSimplifyGeometry = renderContext()->vectorSimplifyMethod().simplifyHints() & QgsVectorSimplifyMethod::GeometrySimplification || - renderContext()->vectorSimplifyMethod().simplifyHints() & QgsVectorSimplifyMethod::FullSimplification; + mSimplifyGeometry = renderContext()->vectorSimplifyMethod().simplifyHints() & Qgis::VectorRenderingSimplificationFlag::GeometrySimplification || + renderContext()->vectorSimplifyMethod().simplifyHints() & Qgis::VectorRenderingSimplificationFlag::FullSimplification; } else { mSimplifyMethod = layer->simplifyMethod(); - mSimplifyGeometry = layer->simplifyDrawingCanbeApplied( *renderContext(), QgsVectorSimplifyMethod::GeometrySimplification ); + mSimplifyGeometry = layer->simplifyDrawingCanbeApplied( *renderContext(), Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); } mVertexMarkerOnlyForSelection = QgsSettingsRegistryCore::settingsDigitizingMarkerOnlyForSelected->value(); @@ -442,14 +442,14 @@ bool QgsVectorLayerRenderer::renderInternal( QgsFeatureRenderer *renderer, int r else { QgsVectorSimplifyMethod vectorMethod; - vectorMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + vectorMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::NoSimplification ); context.setVectorSimplifyMethod( vectorMethod ); } } else { QgsVectorSimplifyMethod vectorMethod; - vectorMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + vectorMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::NoSimplification ); context.setVectorSimplifyMethod( vectorMethod ); } diff --git a/src/gui/settings/qgssettingseditorwidgetregistry.cpp b/src/gui/settings/qgssettingseditorwidgetregistry.cpp index 02a5997f15c..97eb876abe9 100644 --- a/src/gui/settings/qgssettingseditorwidgetregistry.cpp +++ b/src/gui/settings/qgssettingseditorwidgetregistry.cpp @@ -22,9 +22,6 @@ #include "qgssettingsenumflageditorwidgetwrapper.h" #include "qgssettingsentry.h" -#include "qgsvectorsimplifymethod.h" - - #if defined( HAVE_QTSERIALPORT ) #include #endif @@ -57,8 +54,8 @@ QgsSettingsEditorWidgetRegistry::QgsSettingsEditorWidgetRegistry() addWrapper( new QgsSettingsEnumEditorWidgetWrapper() ); addWrapper( new QgsSettingsEnumEditorWidgetWrapper() ); - addWrapper( new QgsSettingsEnumEditorWidgetWrapper() ); - addWrapper( new QgsSettingsEnumEditorWidgetWrapper() ); + addWrapper( new QgsSettingsEnumEditorWidgetWrapper() ); + addWrapper( new QgsSettingsEnumEditorWidgetWrapper() ); addWrapper( new QgsSettingsEnumEditorWidgetWrapper() ); // flags diff --git a/src/gui/vector/qgsvectorlayerproperties.cpp b/src/gui/vector/qgsvectorlayerproperties.cpp index bbbb1abee54..fd9a8a11f02 100644 --- a/src/gui/vector/qgsvectorlayerproperties.cpp +++ b/src/gui/vector/qgsvectorlayerproperties.cpp @@ -21,7 +21,6 @@ #include "qgsactionmanager.h" #include "qgsjoindialog.h" -#include "qgssldexportcontext.h" #include "qgsvectorlayerselectionproperties.h" #include "qgswmsdimensiondialog.h" #include "qgsapplication.h" @@ -620,7 +619,7 @@ void QgsVectorLayerProperties::syncToLayer() // get simplify drawing configuration const QgsVectorSimplifyMethod &simplifyMethod = mLayer->simplifyMethod(); - mSimplifyDrawingGroupBox->setChecked( simplifyMethod.simplifyHints() != QgsVectorSimplifyMethod::NoSimplification ); + mSimplifyDrawingGroupBox->setChecked( simplifyMethod.simplifyHints() != Qgis::VectorRenderingSimplificationFlags( Qgis::VectorRenderingSimplificationFlag::NoSimplification ) ); mSimplifyDrawingSpinBox->setValue( simplifyMethod.threshold() ); mSimplifyDrawingSpinBox->setClearValue( 1.0 ); @@ -693,10 +692,10 @@ void QgsVectorLayerProperties::syncToLayer() } // Default local simplification algorithm - mSimplifyAlgorithmComboBox->addItem( tr( "Distance" ), QgsVectorSimplifyMethod::Distance ); - mSimplifyAlgorithmComboBox->addItem( tr( "SnapToGrid" ), QgsVectorSimplifyMethod::SnapToGrid ); - mSimplifyAlgorithmComboBox->addItem( tr( "Visvalingam" ), QgsVectorSimplifyMethod::Visvalingam ); - mSimplifyAlgorithmComboBox->setCurrentIndex( mSimplifyAlgorithmComboBox->findData( simplifyMethod.simplifyAlgorithm() ) ); + mSimplifyAlgorithmComboBox->addItem( tr( "Distance" ), QVariant::fromValue( Qgis::VectorSimplificationAlgorithm::Distance ) ); + mSimplifyAlgorithmComboBox->addItem( tr( "SnapToGrid" ), QVariant::fromValue( Qgis::VectorSimplificationAlgorithm::SnapToGrid ) ); + mSimplifyAlgorithmComboBox->addItem( tr( "Visvalingam" ), QVariant::fromValue( Qgis::VectorSimplificationAlgorithm::Visvalingam ) ); + mSimplifyAlgorithmComboBox->setCurrentIndex( mSimplifyAlgorithmComboBox->findData( QVariant::fromValue( simplifyMethod.simplifyAlgorithm() ) ) ); QStringList myScalesList = Qgis::defaultProjectScales().split( ',' ); myScalesList.append( QStringLiteral( "1:1" ) ); @@ -883,15 +882,16 @@ void QgsVectorLayerProperties::apply() mLayer->setLegendUrlFormat( mLayerLegendUrlFormatComboBox->currentText() ); //layer simplify drawing configuration - QgsVectorSimplifyMethod::SimplifyHints simplifyHints = QgsVectorSimplifyMethod::NoSimplification; + Qgis::VectorRenderingSimplificationFlags simplifyHints = Qgis::VectorRenderingSimplificationFlag::NoSimplification; if ( mSimplifyDrawingGroupBox->isChecked() ) { - simplifyHints |= QgsVectorSimplifyMethod::GeometrySimplification; - if ( mSimplifyDrawingSpinBox->value() > 1 ) simplifyHints |= QgsVectorSimplifyMethod::AntialiasingSimplification; + simplifyHints |= Qgis::VectorRenderingSimplificationFlag::GeometrySimplification; + if ( mSimplifyDrawingSpinBox->value() > 1 ) + simplifyHints |= Qgis::VectorRenderingSimplificationFlag::AntialiasingSimplification; } QgsVectorSimplifyMethod simplifyMethod = mLayer->simplifyMethod(); simplifyMethod.setSimplifyHints( simplifyHints ); - simplifyMethod.setSimplifyAlgorithm( static_cast< QgsVectorSimplifyMethod::SimplifyAlgorithm >( mSimplifyAlgorithmComboBox->currentData().toInt() ) ); + simplifyMethod.setSimplifyAlgorithm( mSimplifyAlgorithmComboBox->currentData().value< Qgis::VectorSimplificationAlgorithm >() ); simplifyMethod.setThreshold( mSimplifyDrawingSpinBox->value() ); simplifyMethod.setForceLocalOptimization( !mSimplifyDrawingAtProvider->isChecked() ); simplifyMethod.setMaximumScale( mSimplifyMaximumScaleComboBox->scale() ); diff --git a/tests/src/core/testqgs25drenderer.cpp b/tests/src/core/testqgs25drenderer.cpp index 6b57209c82c..76069f332bf 100644 --- a/tests/src/core/testqgs25drenderer.cpp +++ b/tests/src/core/testqgs25drenderer.cpp @@ -80,7 +80,7 @@ void TestQgs25DRenderer::initTestCase() myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); //need a very high height to check for stacking diff --git a/tests/src/core/testqgsblendmodes.cpp b/tests/src/core/testqgsblendmodes.cpp index 54a3896c4a9..5a21c71a402 100644 --- a/tests/src/core/testqgsblendmodes.cpp +++ b/tests/src/core/testqgsblendmodes.cpp @@ -97,7 +97,7 @@ void TestQgsBlendModes::initTestCase() myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); diff --git a/tests/src/core/testqgscentroidfillsymbol.cpp b/tests/src/core/testqgscentroidfillsymbol.cpp index e9935f97770..eb02d4545e6 100644 --- a/tests/src/core/testqgscentroidfillsymbol.cpp +++ b/tests/src/core/testqgscentroidfillsymbol.cpp @@ -91,7 +91,7 @@ void TestQgsCentroidFillSymbol::initTestCase() myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); //setup gradient fill diff --git a/tests/src/core/testqgsgradients.cpp b/tests/src/core/testqgsgradients.cpp index 5b451fece44..d2557e89fb4 100644 --- a/tests/src/core/testqgsgradients.cpp +++ b/tests/src/core/testqgsgradients.cpp @@ -96,7 +96,7 @@ void TestQgsGradients::initTestCase() myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); // We only need maprender instead of mapcanvas @@ -389,7 +389,7 @@ void TestQgsGradients::gradientSymbolFromQml() QVERIFY( setQml( "gradient" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); QVERIFY( imageCheck( "gradient_from_qml" ) ); } diff --git a/tests/src/core/testqgsinvertedpolygonrenderer.cpp b/tests/src/core/testqgsinvertedpolygonrenderer.cpp index 52d3f6bfd0a..60a1906e442 100644 --- a/tests/src/core/testqgsinvertedpolygonrenderer.cpp +++ b/tests/src/core/testqgsinvertedpolygonrenderer.cpp @@ -84,7 +84,7 @@ void TestQgsInvertedPolygon::initTestCase() mpPolysLayer = new QgsVectorLayer( myPolyFileInfo.filePath(), myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); mMapSettings.setLayers( QList() << mpPolysLayer ); diff --git a/tests/src/core/testqgslayeredsymbollevel.cpp b/tests/src/core/testqgslayeredsymbollevel.cpp index 81e88ae0b8a..5fdfa316aac 100644 --- a/tests/src/core/testqgslayeredsymbollevel.cpp +++ b/tests/src/core/testqgslayeredsymbollevel.cpp @@ -33,10 +33,8 @@ #include #include #include -#include "qgslayoutitemmap.h" #include "qgsmultirenderchecker.h" #include "qgsexpressioncontextutils.h" -#include "qgslayout.h" /** * \ingroup UnitTests @@ -82,7 +80,7 @@ void TestQgsLayeredSymbolLevel::initTestCase() myRoadsFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpRoadsLayer->setSimplifyMethod( simplifyMethod ); mMapSettings.setLayers( QList() << mpRoadsLayer ); diff --git a/tests/src/core/testqgslayoutatlas.cpp b/tests/src/core/testqgslayoutatlas.cpp index efd773f156c..6d33e8ce80d 100644 --- a/tests/src/core/testqgslayoutatlas.cpp +++ b/tests/src/core/testqgslayoutatlas.cpp @@ -96,7 +96,7 @@ void TestQgsLayoutAtlas::initTestCase() QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mVectorLayer->setSimplifyMethod( simplifyMethod ); } diff --git a/tests/src/core/testqgslayoutcontext.cpp b/tests/src/core/testqgslayoutcontext.cpp index e5750917dfb..5b5eee7821d 100644 --- a/tests/src/core/testqgslayoutcontext.cpp +++ b/tests/src/core/testqgslayoutcontext.cpp @@ -253,11 +253,11 @@ void TestQgsLayoutContext::simplifyMethod() QgsLayout l( QgsProject::instance() ); QgsLayoutRenderContext context( &l ); // must default to no simplification - QCOMPARE( context.simplifyMethod().simplifyHints(), QgsVectorSimplifyMethod::NoSimplification ); + QCOMPARE( context.simplifyMethod().simplifyHints(), Qgis::VectorRenderingSimplificationFlag::NoSimplification ); QgsVectorSimplifyMethod simplify; - simplify.setSimplifyHints( QgsVectorSimplifyMethod::GeometrySimplification ); + simplify.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); context.setSimplifyMethod( simplify ); - QCOMPARE( context.simplifyMethod().simplifyHints(), QgsVectorSimplifyMethod::GeometrySimplification ); + QCOMPARE( context.simplifyMethod().simplifyHints(), Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); } QGSTEST_MAIN( TestQgsLayoutContext ) diff --git a/tests/src/core/testqgslayoutmap.cpp b/tests/src/core/testqgslayoutmap.cpp index 314c82da324..8263ad59fdd 100644 --- a/tests/src/core/testqgslayoutmap.cpp +++ b/tests/src/core/testqgslayoutmap.cpp @@ -32,7 +32,6 @@ #include "qgsrenderedfeaturehandlerinterface.h" #include "qgspallabeling.h" #include "qgsvectorlayerlabeling.h" -#include "qgstemporalrangeobject.h" #include "qgsfontutils.h" #include "qgsannotationlayer.h" #include "qgsannotationmarkeritem.h" @@ -880,23 +879,23 @@ void TestQgsLayoutMap::testSimplificationMethod() l.renderContext().mIsPreviewRender = false; QgsMapSettings settings = map->mapSettings( map->extent(), map->rect().size(), 300, false ); // should default to no simplification during exports - QCOMPARE( settings.simplifyMethod().simplifyHints(), QgsVectorSimplifyMethod::NoSimplification ); + QCOMPARE( settings.simplifyMethod().simplifyHints(), Qgis::VectorRenderingSimplificationFlags() ); QVERIFY( !( settings.flags() & Qgis::MapSettingsFlag::UseRenderingOptimization ) ); // set a simplification method to use QgsVectorSimplifyMethod method; - method.setSimplifyHints( QgsVectorSimplifyMethod::GeometrySimplification ); + method.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); l.renderContext().setSimplifyMethod( method ); // should still have no simplification override for preview renders l.renderContext().mIsPreviewRender = true; settings = map->mapSettings( map->extent(), map->rect().size(), 300, false ); - QCOMPARE( settings.simplifyMethod().simplifyHints(), QgsVectorSimplifyMethod::NoSimplification ); + QCOMPARE( settings.simplifyMethod().simplifyHints(), Qgis::VectorRenderingSimplificationFlags() ); QVERIFY( settings.flags() & Qgis::MapSettingsFlag::UseRenderingOptimization ); // for exports, we respect the layout context's simplify method l.renderContext().mIsPreviewRender = false; settings = map->mapSettings( map->extent(), map->rect().size(), 300, false ); - QCOMPARE( settings.simplifyMethod().simplifyHints(), QgsVectorSimplifyMethod::GeometrySimplification ); + QCOMPARE( settings.simplifyMethod().simplifyHints(), Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); QVERIFY( settings.flags() & Qgis::MapSettingsFlag::UseRenderingOptimization ); } diff --git a/tests/src/core/testqgslinefillsymbol.cpp b/tests/src/core/testqgslinefillsymbol.cpp index e425cc73c9e..21bc54ec9d8 100644 --- a/tests/src/core/testqgslinefillsymbol.cpp +++ b/tests/src/core/testqgslinefillsymbol.cpp @@ -107,7 +107,7 @@ void TestQgsLineFillSymbol::initTestCase() myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); //setup gradient fill @@ -170,7 +170,7 @@ void TestQgsLineFillSymbol::viewportLineFillSymbol() QVERIFY( layer->isValid() ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); layer->setSimplifyMethod( simplifyMethod ); //setup gradient fill diff --git a/tests/src/core/testqgsmapsettings.cpp b/tests/src/core/testqgsmapsettings.cpp index 09db2e3397b..c035b9cfdfe 100644 --- a/tests/src/core/testqgsmapsettings.cpp +++ b/tests/src/core/testqgsmapsettings.cpp @@ -116,11 +116,11 @@ void TestQgsMapSettings::testGettersSetters() QCOMPARE( ms.textRenderFormat(), Qgis::TextRenderFormat::AlwaysOutlines ); // must default to no simplification - QCOMPARE( ms.simplifyMethod().simplifyHints(), QgsVectorSimplifyMethod::NoSimplification ); + QCOMPARE( ms.simplifyMethod().simplifyHints(), Qgis::VectorRenderingSimplificationFlags() ); QgsVectorSimplifyMethod simplify; - simplify.setSimplifyHints( QgsVectorSimplifyMethod::GeometrySimplification ); + simplify.setSimplifyHints( Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); ms.setSimplifyMethod( simplify ); - QCOMPARE( ms.simplifyMethod().simplifyHints(), QgsVectorSimplifyMethod::GeometrySimplification ); + QCOMPARE( ms.simplifyMethod().simplifyHints(), Qgis::VectorRenderingSimplificationFlag::GeometrySimplification ); QVERIFY( ms.zRange().isInfinite() ); ms.setZRange( QgsDoubleRange( 1, 10 ) ); diff --git a/tests/src/core/testqgspainteffect.cpp b/tests/src/core/testqgspainteffect.cpp index 461b98d55bf..06fc937ff1a 100644 --- a/tests/src/core/testqgspainteffect.cpp +++ b/tests/src/core/testqgspainteffect.cpp @@ -783,7 +783,7 @@ void TestQgsPaintEffect::layerEffectPolygon() QgsVectorLayer *polysLayer = new QgsVectorLayer( polyFileInfo.filePath(), polyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); polysLayer->setSimplifyMethod( simplifyMethod ); QgsMapSettings ms; @@ -813,7 +813,7 @@ void TestQgsPaintEffect::layerEffectLine() QgsVectorLayer *lineLayer = new QgsVectorLayer( lineFileInfo.filePath(), lineFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); lineLayer->setSimplifyMethod( simplifyMethod ); QgsMapSettings ms; @@ -871,7 +871,7 @@ void TestQgsPaintEffect::vectorLayerEffect() QgsVectorLayer *polysLayer = new QgsVectorLayer( polyFileInfo.filePath(), polyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); polysLayer->setSimplifyMethod( simplifyMethod ); QgsMapSettings ms; @@ -905,7 +905,7 @@ void TestQgsPaintEffect::mapUnits() QgsVectorLayer *lineLayer = new QgsVectorLayer( lineFileInfo.filePath(), lineFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); lineLayer->setSimplifyMethod( simplifyMethod ); QgsMapSettings ms; @@ -940,7 +940,7 @@ void TestQgsPaintEffect::layout() QgsVectorLayer *lineLayer = new QgsVectorLayer( lineFileInfo.filePath(), lineFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); lineLayer->setSimplifyMethod( simplifyMethod ); QgsSimpleLineSymbolLayer *line = new QgsSimpleLineSymbolLayer; diff --git a/tests/src/core/testqgspointpatternfillsymbol.cpp b/tests/src/core/testqgspointpatternfillsymbol.cpp index f28ab8dd662..834d8c25ed8 100644 --- a/tests/src/core/testqgspointpatternfillsymbol.cpp +++ b/tests/src/core/testqgspointpatternfillsymbol.cpp @@ -110,7 +110,7 @@ void TestQgsPointPatternFillSymbol::initTestCase() myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); // Register the layer with the registry @@ -199,7 +199,7 @@ void TestQgsPointPatternFillSymbol::viewportPointPatternFillSymbol() QVERIFY( layer->isValid() ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); layer->setSimplifyMethod( simplifyMethod ); //setup gradient fill @@ -225,7 +225,7 @@ void TestQgsPointPatternFillSymbol::viewportPointPatternFillSymbolVector() QVERIFY( layer->isValid() ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); layer->setSimplifyMethod( simplifyMethod ); //setup gradient fill diff --git a/tests/src/core/testqgsrasterfill.cpp b/tests/src/core/testqgsrasterfill.cpp index 164a81b4f62..78a4d809846 100644 --- a/tests/src/core/testqgsrasterfill.cpp +++ b/tests/src/core/testqgsrasterfill.cpp @@ -92,7 +92,7 @@ void TestQgsRasterFill::initTestCase() myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); // Register the layer with the registry diff --git a/tests/src/core/testqgsshapeburst.cpp b/tests/src/core/testqgsshapeburst.cpp index b695aefdc88..ba4f8cc26eb 100644 --- a/tests/src/core/testqgsshapeburst.cpp +++ b/tests/src/core/testqgsshapeburst.cpp @@ -93,7 +93,7 @@ void TestQgsShapeburst::initTestCase() myPolyFileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); // Register the layer with the registry @@ -188,7 +188,7 @@ void TestQgsShapeburst::shapeburstSymbolFromQml() { QVERIFY( setQml( "shapeburst" ) ); QgsVectorSimplifyMethod simplifyMethod; - simplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); + simplifyMethod.setSimplifyHints( Qgis::VectorRenderingSimplificationFlags() ); mpPolysLayer->setSimplifyMethod( simplifyMethod ); QVERIFY( imageCheck( "shapeburst_from_qml" ) ); }