Add flags to QgsTiledMeshRequest

This commit is contained in:
Nyall Dawson 2023-08-04 11:32:13 +10:00
parent ad4ee07e7c
commit 5597a2a640
6 changed files with 77 additions and 0 deletions

View File

@ -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

View File

@ -2188,6 +2188,14 @@ The development version
NeedFetching,
};
enum class TiledMeshRequestFlag
{
NoHierarchyFetch,
};
typedef QFlags<Qgis::TiledMeshRequestFlag> TiledMeshRequestFlags;
static const double DEFAULT_SEARCH_RADIUS_MM;
static const float DEFAULT_MAPTOPIXEL_THRESHOLD;
@ -2350,6 +2358,8 @@ QFlags<Qgis::VectorTileProviderCapability> operator|(Qgis::VectorTileProviderCap
QFlags<Qgis::TiledMeshProviderCapability> operator|(Qgis::TiledMeshProviderCapability f1, QFlags<Qgis::TiledMeshProviderCapability> f2);
QFlags<Qgis::TiledMeshRequestFlag> operator|(Qgis::TiledMeshRequestFlag f1, QFlags<Qgis::TiledMeshRequestFlag> f2);

View File

@ -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.

View File

@ -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.

View File

@ -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;

View File

@ -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)