QGIS API Documentation 3.37.0-Master (fa0c88a90b0)
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_core.h"
23#include "qgis.h"
24
25#include <QCache>
26#include <QMutex>
27
29class QgsFeedback;
31
32#ifndef SIP_RUN
33
44{
45 public:
46
49
54
58 virtual QgsTiledSceneTile rootTile() const = 0;
59
66 virtual long long parentTileId( long long id ) const = 0;
67
73 virtual QVector< long long > childTileIds( long long id ) const = 0;
74
78 virtual QgsTiledSceneTile getTile( long long id ) = 0;
79
85 virtual QVector< long long > getTiles( const QgsTiledSceneRequest &request ) = 0;
86
94 QByteArray retrieveContent( const QString &uri, QgsFeedback *feedback = nullptr );
95
101 virtual Qgis::TileChildrenAvailability childAvailability( long long id ) const = 0;
102
112 virtual bool fetchHierarchy( long long id, QgsFeedback *feedback = nullptr ) = 0;
113
114 protected:
115
124 virtual QByteArray fetchContent( const QString &uri, QgsFeedback *feedback = nullptr ) = 0;
125
126 private:
127
128 // we have to use a mutex to protect a QCache, not a read/write lock
129 // see https://bugreports.qt.io/browse/QTBUG-19794
130 mutable QMutex mCacheMutex;
131 QCache< QString, QByteArray > mContentCache;
132
133};
134#endif
135
148class CORE_EXPORT QgsTiledSceneIndex
149{
150 public:
151
160
162
165 QgsTiledSceneIndex &operator=( const QgsTiledSceneIndex &other );
166
170 bool isValid() const;
171
175 QgsTiledSceneTile rootTile() const;
176
180 QgsTiledSceneTile getTile( long long id );
181
188 long long parentTileId( long long id ) const;
189
195 QVector< long long > childTileIds( long long id ) const;
196
202 QVector< long long > getTiles( const QgsTiledSceneRequest &request );
203
209 Qgis::TileChildrenAvailability childAvailability( long long id ) const;
210
220 bool fetchHierarchy( long long id, QgsFeedback *feedback = nullptr );
221
229 QByteArray retrieveContent( const QString &uri, QgsFeedback *feedback = nullptr );
230
231 private:
232
233 std::shared_ptr<QgsAbstractTiledSceneIndex> mIndex;
234};
235
236
237#endif // QGSTILEDSCENEINDEX_H
TileChildrenAvailability
Possible availability states for a tile's children.
Definition: qgis.h:4528
An abstract base class for tiled scene data provider indices.
QgsAbstractTiledSceneIndex & operator=(const QgsAbstractTiledSceneIndex &other)=delete
QgsAbstractTiledSceneIndex cannot be copied.
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.
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
QgsAbstractTiledSceneIndex cannot be copied.
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
An index for tiled scene data providers.
Tiled scene data request.
Represents an individual tile from a tiled scene data source.
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36