5 #include <CesiumAsync/IAssetAccessor.h>
6 #include <CesiumGeospatial/Projection.h>
7 #include <CesiumGltfReader/GltfReader.h>
8 #include <CesiumUtility/Assert.h>
9 #include <CesiumUtility/CreditSystem.h>
10 #include <CesiumUtility/ErrorList.h>
11 #include <CesiumUtility/IntrusivePointer.h>
12 #include <CesiumUtility/ReferenceCounted.h>
13 #include <CesiumUtility/Tracing.h>
15 #include <spdlog/fwd.h>
22 class RasterOverlayTile;
23 class IPrepareRasterOverlayRendererResources;
49 std::vector<CesiumUtility::Credit> credits{};
63 bool moreDetailAvailable =
false;
82 std::vector<CesiumUtility::Credit>
credits{};
131 RasterOverlayTileProvider> {
146 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
148 CESIUM_DEFAULT_ELLIPSOID) noexcept;
169 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
170 std::optional<CesiumUtility::Credit> credit,
171 const std::shared_ptr<IPrepareRasterOverlayRendererResources>&
172 pPrepareRendererResources,
173 const std::shared_ptr<spdlog::logger>& pLogger,
199 bool isPlaceholder() const noexcept {
return this->_pPlaceholder !=
nullptr; }
212 const std::shared_ptr<CesiumAsync::IAssetAccessor>&
214 return this->_pAssetAccessor;
221 return this->_asyncSystem;
228 const std::shared_ptr<IPrepareRasterOverlayRendererResources>&
230 return this->_pPrepareRendererResources;
237 const std::shared_ptr<spdlog::logger>&
getLogger() const noexcept {
238 return this->_pLogger;
245 return this->_projection;
253 return this->_coverageRectangle;
277 const glm::dvec2& targetScreenPixels);
288 CESIUM_ASSERT(this->_totalTilesCurrentlyLoading > -1);
289 return this->_totalTilesCurrentlyLoading;
307 const std::optional<CesiumUtility::Credit>&
getCredit() const noexcept {
373 const std::string& url,
374 const std::vector<CesiumAsync::IAssetAccessor::THeader>& headers = {},
379 doLoad(RasterOverlayTile& tile,
bool isThrottledLoad);
388 void beginTileLoad(
bool isThrottledLoad) noexcept;
398 void finalizeTileLoad(
bool isThrottledLoad) noexcept;
403 std::shared_ptr<CesiumAsync::IAssetAccessor> _pAssetAccessor;
404 std::optional<CesiumUtility::Credit> _credit;
405 std::shared_ptr<IPrepareRasterOverlayRendererResources>
406 _pPrepareRendererResources;
407 std::shared_ptr<spdlog::logger> _pLogger;
411 int64_t _tileDataBytes;
412 int32_t _totalTilesCurrentlyLoading;
413 int32_t _throttledTilesCurrentlyLoading;
414 CESIUM_TRACE_DECLARE_TRACK_SET(
416 "Raster Overlay Tile Loading Slot");
A system for managing asynchronous requests and tasks.
A value that will be available in the future, as produced by AsyncSystem.
A quadratic surface defined in Cartesian coordinates.
Provides individual tiles for a RasterOverlay on demand.
void removeTile(RasterOverlayTile *pTile) noexcept
Removes a no-longer-referenced tile from this provider's cache and deletes it.
bool loadTileThrottled(RasterOverlayTile &tile)
Loads a tile, unless there are too many tile loads already in progress.
const std::shared_ptr< spdlog::logger > & getLogger() const noexcept
Gets the logger to which to send messages about the tile provider and tiles.
virtual CesiumAsync::Future< LoadedRasterOverlayImage > loadTileImage(RasterOverlayTile &overlayTile)=0
Loads the image for a tile.
const CesiumGeometry::Rectangle & getCoverageRectangle() const noexcept
Returns the coverage CesiumGeometry::Rectangle of this instance.
CesiumAsync::Future< TileProviderAndTile > loadTile(RasterOverlayTile &tile)
Loads a tile immediately, without throttling requests.
CesiumUtility::IntrusivePointer< RasterOverlayTile > getTile(const CesiumGeometry::Rectangle &rectangle, const glm::dvec2 &targetScreenPixels)
Returns a new RasterOverlayTile with the given specifications.
CesiumAsync::Future< LoadedRasterOverlayImage > loadTileImageFromUrl(const std::string &url, const std::vector< CesiumAsync::IAssetAccessor::THeader > &headers={}, LoadTileImageFromUrlOptions &&options={}) const
Loads an image from a URL and optionally some request headers.
const CesiumAsync::AsyncSystem & getAsyncSystem() const noexcept
Gets the async system used to do work in threads.
RasterOverlay & getOwner() noexcept
Returns the RasterOverlay that created this instance.
const RasterOverlay & getOwner() const noexcept
Returns the RasterOverlay that created this instance.
virtual ~RasterOverlayTileProvider() noexcept
Default destructor.
RasterOverlayTileProvider(const CesiumUtility::IntrusivePointer< const RasterOverlay > &pOwner, const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const CesiumGeospatial::Ellipsoid &ellipsoid CESIUM_DEFAULT_ELLIPSOID) noexcept
uint32_t getNumberOfTilesLoading() const noexcept
Returns the number of tiles that are currently loading.
const CesiumGeospatial::Projection & getProjection() const noexcept
Returns the CesiumGeospatial::Projection of this instance.
const std::shared_ptr< IPrepareRasterOverlayRendererResources > & getPrepareRendererResources() const noexcept
Gets the interface used to prepare raster overlay images for rendering.
int64_t getTileDataBytes() const noexcept
Gets the number of bytes of tile data that are currently loaded.
RasterOverlayTileProvider(const CesiumUtility::IntrusivePointer< const RasterOverlay > &pOwner, const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, std::optional< CesiumUtility::Credit > credit, const std::shared_ptr< IPrepareRasterOverlayRendererResources > &pPrepareRendererResources, const std::shared_ptr< spdlog::logger > &pLogger, const CesiumGeospatial::Projection &projection, const CesiumGeometry::Rectangle &coverageRectangle) noexcept
Creates a new instance.
const std::optional< CesiumUtility::Credit > & getCredit() const noexcept
Get the per-TileProvider Credit if one exists.
const std::shared_ptr< CesiumAsync::IAssetAccessor > & getAssetAccessor() const noexcept
Get the system to use for asychronous requests and threaded work.
Raster image data for a tile in a quadtree.
The base class for a rasterized image that can be draped over a Tileset. The image may be very,...
A reference-counted base class, meant to be used with IntrusivePointer.
std::variant< GeographicProjection, WebMercatorProjection > Projection
A projection.
Classes for raster overlays, which allow draping massive 2D textures over a model.
Options for RasterOverlayTileProvider::loadTileImageFromUrl.
CesiumGeometry::Rectangle rectangle
The rectangle definining the bounds of the image being loaded, expressed in the RasterOverlayTileProv...
std::vector< CesiumUtility::Credit > credits
The credits to display with this tile.
bool moreDetailAvailable
Whether more detailed data, beyond this image, is available within the bounds of this image.
bool allowEmptyImages
Whether empty (zero length) images are accepted as a valid response.
Summarizes the result of loading an image of a RasterOverlay.
Holds a tile and its corresponding tile provider. Used as the return value of RasterOverlayTileProvid...
The container to store the error and warning list when loading a tile or glTF content.