diff --git a/python/core/auto_additions/qgis.py b/python/core/auto_additions/qgis.py index ebb88d0bba2..cf65991f9a3 100644 --- a/python/core/auto_additions/qgis.py +++ b/python/core/auto_additions/qgis.py @@ -3789,3 +3789,10 @@ Qgis.TileChildrenAvailability.NeedFetching.__doc__ = "Tile has children, but the Qgis.TileChildrenAvailability.__doc__ = "Possible availability states for a tile's children.\n\n.. versionadded:: 3.34\n\n" + '* ``NoChildren``: ' + Qgis.TileChildrenAvailability.NoChildren.__doc__ + '\n' + '* ``Available``: ' + Qgis.TileChildrenAvailability.Available.__doc__ + '\n' + '* ``NeedFetching``: ' + Qgis.TileChildrenAvailability.NeedFetching.__doc__ # -- Qgis.TileChildrenAvailability.baseClass = Qgis +# monkey patching scoped based enum +Qgis.TiledMeshRequestFlag.NoHierarchyFetch.__doc__ = "Do not allow hierarchy fetching when hierarchy is not currently available. Avoids network requests, but may result in an incomplete tile set. If set, then callers will need to manually perform hierarchy fetches as required." +Qgis.TiledMeshRequestFlag.__doc__ = "Flags which control how tiled mesh requests behave.\n\n.. versionadded:: 3.34\n\n" + '* ``NoHierarchyFetch``: ' + Qgis.TiledMeshRequestFlag.NoHierarchyFetch.__doc__ +# -- +Qgis.TiledMeshRequestFlag.baseClass = Qgis +Qgis.TiledMeshRequestFlags.baseClass = Qgis +TiledMeshRequestFlags = Qgis # dirty hack since SIP seems to introduce the flags in module diff --git a/python/core/auto_generated/qgis.sip.in b/python/core/auto_generated/qgis.sip.in index 734e00eb556..74ecd53eb0d 100644 --- a/python/core/auto_generated/qgis.sip.in +++ b/python/core/auto_generated/qgis.sip.in @@ -2188,6 +2188,14 @@ The development version NeedFetching, }; + enum class TiledMeshRequestFlag + { + NoHierarchyFetch, + }; + + typedef QFlags TiledMeshRequestFlags; + + static const double DEFAULT_SEARCH_RADIUS_MM; static const float DEFAULT_MAPTOPIXEL_THRESHOLD; @@ -2350,6 +2358,8 @@ QFlags operator|(Qgis::VectorTileProviderCap QFlags operator|(Qgis::TiledMeshProviderCapability f1, QFlags f2); +QFlags operator|(Qgis::TiledMeshRequestFlag f1, QFlags f2); + diff --git a/python/core/auto_generated/tiledmesh/qgstiledmeshrequest.sip.in b/python/core/auto_generated/tiledmesh/qgstiledmeshrequest.sip.in index 7ed160109c9..4cb5f210eae 100644 --- a/python/core/auto_generated/tiledmesh/qgstiledmeshrequest.sip.in +++ b/python/core/auto_generated/tiledmesh/qgstiledmeshrequest.sip.in @@ -26,6 +26,20 @@ Tiled mesh data request. QgsTiledMeshRequest(); + void setFlags( Qgis::TiledMeshRequestFlags flags ); +%Docstring +Sets ``flags`` that affect how tiles will be fetched. + +.. seealso:: :py:func:`flags` +%End + + Qgis::TiledMeshRequestFlags flags() const; +%Docstring +Returns the flags which affect how tiles are fetched. + +.. seealso:: :py:func:`setFlags` +%End + QgsOrientedBox3D filterBox() const; %Docstring Returns the box from which data will be taken, in the layer's CRS. diff --git a/src/core/qgis.h b/src/core/qgis.h index 6883a98fd22..85e82aa3c0b 100644 --- a/src/core/qgis.h +++ b/src/core/qgis.h @@ -3830,6 +3830,25 @@ class CORE_EXPORT Qgis }; Q_ENUM( TileChildrenAvailability ) + /** + * Flags which control how tiled mesh requests behave. + * + * \since QGIS 3.34 + */ + enum class TiledMeshRequestFlag : int + { + NoHierarchyFetch = 1 << 0, //!< Do not allow hierarchy fetching when hierarchy is not currently available. Avoids network requests, but may result in an incomplete tile set. If set, then callers will need to manually perform hierarchy fetches as required. + }; + Q_ENUM( TiledMeshRequestFlag ) + + /** + * Flags which control how tiled mesh requests behave. + * + * \since QGIS 3.34 + */ + Q_DECLARE_FLAGS( TiledMeshRequestFlags, TiledMeshRequestFlag ) + Q_FLAG( TiledMeshRequestFlags ) + /** * Identify search radius in mm * \since QGIS 2.3 @@ -3994,6 +4013,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::VectorFileWriterCapabilities ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::VectorTileProviderFlags ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::VectorTileProviderCapabilities ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::TiledMeshProviderCapabilities ) +Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::TiledMeshRequestFlags ) // hack to workaround warnings when casting void pointers // retrieved from QLibrary::resolve to function pointers. diff --git a/src/core/tiledmesh/qgstiledmeshrequest.h b/src/core/tiledmesh/qgstiledmeshrequest.h index 6f5801a4a05..c93d05d312e 100644 --- a/src/core/tiledmesh/qgstiledmeshrequest.h +++ b/src/core/tiledmesh/qgstiledmeshrequest.h @@ -38,6 +38,20 @@ class CORE_EXPORT QgsTiledMeshRequest QgsTiledMeshRequest(); + /** + * Sets \a flags that affect how tiles will be fetched. + * + * \see flags() + */ + void setFlags( Qgis::TiledMeshRequestFlags flags ) { mFlags = flags; } + + /** + * Returns the flags which affect how tiles are fetched. + * + * \see setFlags() + */ + Qgis::TiledMeshRequestFlags flags() const { return mFlags; } + /** * Returns the box from which data will be taken, in the layer's CRS. * @@ -111,6 +125,7 @@ class CORE_EXPORT QgsTiledMeshRequest private: + Qgis::TiledMeshRequestFlags mFlags; QgsOrientedBox3D mFilterBox; QgsFeedback *mFeedback = nullptr; double mRequiredGeometricError = 0; diff --git a/tests/src/python/test_qgstiledmeshrequest.py b/tests/src/python/test_qgstiledmeshrequest.py index e8f9e0c500d..cc49fa5ab2d 100644 --- a/tests/src/python/test_qgstiledmeshrequest.py +++ b/tests/src/python/test_qgstiledmeshrequest.py @@ -15,6 +15,7 @@ import unittest import qgis # NOQA from qgis.core import ( + Qgis, QgsTiledMeshRequest, QgsFeedback, QgsOrientedBox3D @@ -32,6 +33,16 @@ class TestQgsTiledMeshRequest(QgisTestCase): def test_basic(self): request = QgsTiledMeshRequest() + self.assertEqual(request.flags(), + Qgis.TiledMeshRequestFlags()) + request.setFlags( + Qgis.TiledMeshRequestFlags(Qgis.TiledMeshRequestFlag.NoHierarchyFetch) + ) + self.assertEqual(request.flags(), + Qgis.TiledMeshRequestFlags( + Qgis.TiledMeshRequestFlag.NoHierarchyFetch + )) + request.setRequiredGeometricError(1.2) self.assertEqual(request.requiredGeometricError(), 1.2)