QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgstiledsceneindex.h
Go to the documentation of this file.
1/***************************************************************************
2 qgstiledsceneindex.h
3 --------------------
4 begin : June 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ******************************************************************
8 ***************************************************************************/
9
10/***************************************************************************
11 * *
12 * This program is free software; you can redistribute it and/or modify *
13 * it under the terms of the GNU General Public License as published by *
14 * the Free Software Foundation; either version 2 of the License, or *
15 * (at your option) any later version. *
16 * *
17 ***************************************************************************/
18
19#ifndef QGSTILEDSCENEINDEX_H
20#define QGSTILEDSCENEINDEX_H
21
22#include "qgis.h"
23#include "qgis_core.h"
24
25#include <QCache>
26#include <QMutex>
27
29class QgsFeedback;
31
32#ifndef SIP_RUN
33
44{
45 public:
46
49
52
56 virtual QgsTiledSceneTile rootTile() const = 0;
57
64 virtual long long parentTileId( long long id ) const = 0;
65
71 virtual QVector< long long > childTileIds( long long id ) const = 0;
72
76 virtual QgsTiledSceneTile getTile( long long id ) = 0;
77
83 virtual QVector< long long > getTiles( const QgsTiledSceneRequest &request ) = 0;
84
92 QByteArray retrieveContent( const QString &uri, QgsFeedback *feedback = nullptr );
93
99 virtual Qgis::TileChildrenAvailability childAvailability( long long id ) const = 0;
100
110 virtual bool fetchHierarchy( long long id, QgsFeedback *feedback = nullptr ) = 0;
111
112 protected:
113
122 virtual QByteArray fetchContent( const QString &uri, QgsFeedback *feedback = nullptr ) = 0;
123
124 private:
125
126 // we have to use a mutex to protect a QCache, not a read/write lock
127 // see https://bugreports.qt.io/browse/QTBUG-19794
128 mutable QMutex mCacheMutex;
129 QCache< QString, QByteArray > mContentCache;
130
131};
132#endif
133
146class CORE_EXPORT QgsTiledSceneIndex
147{
148 public:
149
158
160
165
169 bool isValid() const;
170
175
179 QgsTiledSceneTile getTile( long long id );
180
187 long long parentTileId( long long id ) const;
188
194 QVector< long long > childTileIds( long long id ) const;
195
201 QVector< long long > getTiles( const QgsTiledSceneRequest &request );
202
209
219 bool fetchHierarchy( long long id, QgsFeedback *feedback = nullptr );
220
228 QByteArray retrieveContent( const QString &uri, QgsFeedback *feedback = nullptr );
229
230 private:
231
232 std::shared_ptr<QgsAbstractTiledSceneIndex> mIndex;
233};
234
235
236#endif // QGSTILEDSCENEINDEX_H
TileChildrenAvailability
Possible availability states for a tile's children.
Definition qgis.h:5668
An abstract base class for tiled scene data provider indices.
QgsAbstractTiledSceneIndex & operator=(const QgsAbstractTiledSceneIndex &other)=delete
virtual QVector< long long > childTileIds(long long id) const =0
Returns a list of the tile IDs of any children for the tile with matching id.
virtual long long parentTileId(long long id) const =0
Returns the tile ID of the parent tile of the tile with matching id, or -1 if the tile has no parent.
virtual ~QgsAbstractTiledSceneIndex()
virtual QgsTiledSceneTile rootTile() const =0
Returns the root tile for the index.
QByteArray retrieveContent(const QString &uri, QgsFeedback *feedback=nullptr)
Retrieves index content for the specified uri.
virtual QByteArray fetchContent(const QString &uri, QgsFeedback *feedback=nullptr)=0
Fetches index content for the specified uri.
virtual bool fetchHierarchy(long long id, QgsFeedback *feedback=nullptr)=0
Populates the tile with the given id by fetching any sub datasets attached to the tile.
virtual QgsTiledSceneTile getTile(long long id)=0
Returns the tile with matching id, or an invalid tile if the matching tile is not available.
QgsAbstractTiledSceneIndex(const QgsAbstractTiledSceneIndex &other)=delete
virtual Qgis::TileChildrenAvailability childAvailability(long long id) const =0
Returns the availability for a tile's children.
virtual QVector< long long > getTiles(const QgsTiledSceneRequest &request)=0
Returns the tile IDs which match the given request.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Qgis::TileChildrenAvailability childAvailability(long long id) const
Returns the availability for a tile's children.
QgsTiledSceneTile rootTile() const
Returns the root tile for the index.
QByteArray retrieveContent(const QString &uri, QgsFeedback *feedback=nullptr)
Retrieves index content for the specified uri.
bool fetchHierarchy(long long id, QgsFeedback *feedback=nullptr)
Populates the tile with the given id by fetching any sub datasets attached to the tile.
QVector< long long > childTileIds(long long id) const
Returns a list of the tile IDs of any children for the tile with matching id.
QgsTiledSceneIndex(QgsAbstractTiledSceneIndex *index=nullptr)
Constructor for QgsTiledSceneIndex.
QgsTiledSceneTile getTile(long long id)
Returns the tile with matching id, or an invalid tile if the matching tile is not available.
QgsTiledSceneIndex & operator=(const QgsTiledSceneIndex &other)
QVector< long long > getTiles(const QgsTiledSceneRequest &request)
Returns the list of tile IDs which match the given request.
long long parentTileId(long long id) const
Returns the tile ID of the parent tile of the tile with matching id, or -1 if the tile has no parent.
bool isValid() const
Returns true if the index is valid.
Tiled scene data request.
Represents an individual tile from a tiled scene data source.
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_TRANSFER
Definition qgis_sip.h:36