cesium-native 0.43.0
Loading...
Searching...
No Matches
RasterOverlayTile.h
1#pragma once
2
3#include <CesiumAsync/AsyncSystem.h>
4#include <CesiumAsync/IAssetRequest.h>
5#include <CesiumGeometry/Rectangle.h>
6#include <CesiumGltf/Model.h>
7#include <CesiumUtility/IntrusivePointer.h>
8#include <CesiumUtility/ReferenceCounted.h>
9
10#include <vector>
11
12namespace CesiumUtility {
13struct Credit;
14}
15
16namespace CesiumRasterOverlays {
17
18class RasterOverlay;
19class RasterOverlayTileProvider;
20
33 : public CesiumUtility::ReferenceCountedNonThreadSafe<RasterOverlayTile> {
34public:
38 enum class LoadState {
42 Placeholder = -2,
43
47 Failed = -1,
48
52 Unloaded = 0,
53
57 Loading = 1,
58
62 Loaded = 2,
63
67 Done = 3
68 };
69
80
82 No = 0,
83
85 Yes = 1,
86
89 Unknown = 2
90 };
91
103
125 RasterOverlayTileProvider& tileProvider,
126 const glm::dvec2& targetScreenPixels,
127 const CesiumGeometry::Rectangle& imageryRectangle) noexcept;
128
131
136 return *this->_pTileProvider;
137 }
138
143 return *this->_pTileProvider;
144 }
145
150
154 const RasterOverlay& getOverlay() const noexcept;
155
160 const CesiumGeometry::Rectangle& getRectangle() const noexcept {
161 return this->_rectangle;
162 }
163
171 glm::dvec2 getTargetScreenPixels() const noexcept {
172 return this->_targetScreenPixels;
173 }
174
178 LoadState getState() const noexcept { return this->_state; }
179
184 const std::vector<CesiumUtility::Credit>& getCredits() const noexcept {
185 return this->_tileCredits;
186 }
187
197 getImage() const noexcept {
198 return this->_pImage;
199 }
200
210 return this->_pImage;
211 }
212
223
227 void* getRendererResources() const noexcept {
228 return this->_pRendererResources;
229 }
230
236 void setRendererResources(void* pValue) noexcept {
237 this->_pRendererResources = pValue;
238 }
239
245 return this->_moreDetailAvailable;
246 }
247
248private:
249 friend class RasterOverlayTileProvider;
250
251 void setState(LoadState newState) noexcept;
252
253 // This is a raw pointer instead of an IntrusivePointer in order to avoid
254 // circular references, particularly among a placeholder tile provider and
255 // placeholder tile. However, to avoid undefined behavior, the tile provider
256 // is required to outlive the tile. In normal use, the RasterOverlayCollection
257 // ensures that this is true.
258 RasterOverlayTileProvider* _pTileProvider;
259 glm::dvec2 _targetScreenPixels;
260 CesiumGeometry::Rectangle _rectangle;
261 std::vector<CesiumUtility::Credit> _tileCredits;
262 LoadState _state;
264 void* _pRendererResources;
265 MoreDetailAvailable _moreDetailAvailable;
266};
267} // namespace CesiumRasterOverlays
Provides individual tiles for a RasterOverlay on demand.
Raster image data for a tile in a quadtree.
RasterOverlayTile(RasterOverlayTileProvider &tileProvider) noexcept
Constructs a placeholder tile for the tile provider.
void setRendererResources(void *pValue) noexcept
Set the renderer resources for this tile.
const std::vector< CesiumUtility::Credit > & getCredits() const noexcept
Returns the list of Credits needed for this tile.
CesiumUtility::IntrusivePointer< const CesiumGltf::ImageAsset > getImage() const noexcept
Returns the image data for the tile.
void * getRendererResources() const noexcept
Returns the renderer resources that have been created for this tile.
const RasterOverlayTileProvider & getTileProvider() const noexcept
Returns the RasterOverlayTileProvider that created this instance.
glm::dvec2 getTargetScreenPixels() const noexcept
Gets the number of screen pixels in each direction that should be covered by this tile's texture.
CesiumUtility::IntrusivePointer< CesiumGltf::ImageAsset > getImage() noexcept
Returns the image data for the tile.
MoreDetailAvailable isMoreDetailAvailable() const noexcept
Determines if more detailed data is available for the spatial area covered by this tile.
RasterOverlayTileProvider & getTileProvider() noexcept
Returns the RasterOverlayTileProvider that created this instance.
RasterOverlayTile(RasterOverlayTileProvider &tileProvider, const glm::dvec2 &targetScreenPixels, const CesiumGeometry::Rectangle &imageryRectangle) noexcept
Creates a new instance.
const CesiumGeometry::Rectangle & getRectangle() const noexcept
Returns the CesiumGeometry::Rectangle that defines the bounds of this tile in the raster overlay's pr...
RasterOverlay & getOverlay() noexcept
Returns the RasterOverlay that created this instance.
void loadInMainThread()
Create the renderer resources for the loaded image.
LoadState getState() const noexcept
Returns the current LoadState.
LoadState
Lifecycle states of a raster overlay tile.
@ Loading
The request for loading the image data is still pending.
@ Placeholder
Indicator for a placeholder tile.
@ Loaded
The image data has been loaded and the image has been created.
@ Failed
The image request or image creation failed.
@ Done
The rendering resources for the image data have been created.
MoreDetailAvailable
Tile availability states.
@ Unknown
It is not known whether more detailed raster tiles are available.
@ No
There are no more detailed raster tiles.
The base class for a rasterized image that can be draped over a Cesium3DTilesSelection::Tileset....
A smart pointer that calls addReference and releaseReference on the controlled object.
A reference-counted base class, meant to be used with IntrusivePointer.
Basic geometry classes for Cesium.
Classes for raster overlays, which allow draping massive 2D textures over a model.
Utility classes for Cesium.
A 2D rectangle.
Definition Rectangle.h:14