QGIS API Documentation 3.41.0-Master (3440c17df1d)
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_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
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
162 QgsTiledSceneIndex &operator=( const QgsTiledSceneIndex &other );
163
167 bool isValid() const;
168
172 QgsTiledSceneTile rootTile() const;
173
177 QgsTiledSceneTile getTile( long long id );
178
185 long long parentTileId( long long id ) const;
186
192 QVector< long long > childTileIds( long long id ) const;
193
199 QVector< long long > getTiles( const QgsTiledSceneRequest &request );
200
206 Qgis::TileChildrenAvailability childAvailability( long long id ) const;
207
217 bool fetchHierarchy( long long id, QgsFeedback *feedback = nullptr );
218
226 QByteArray retrieveContent( const QString &uri, QgsFeedback *feedback = nullptr );
227
228 private:
229
230 std::shared_ptr<QgsAbstractTiledSceneIndex> mIndex;
231};
232
233
234#endif // QGSTILEDSCENEINDEX_H
TileChildrenAvailability
Possible availability states for a tile's children.
Definition qgis.h:5266
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.
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
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