3#include <CesiumAsync/AsyncSystem.h>
4#include <CesiumAsync/IAssetAccessor.h>
5#include <CesiumAsync/SharedAssetDepot.h>
6#include <CesiumGeometry/QuadtreeTileID.h>
7#include <CesiumGeometry/QuadtreeTilingScheme.h>
8#include <CesiumRasterOverlays/IPrepareRasterOverlayRendererResources.h>
9#include <CesiumRasterOverlays/Library.h>
10#include <CesiumRasterOverlays/RasterOverlayTileProvider.h>
11#include <CesiumUtility/CreditSystem.h>
12#include <CesiumUtility/Result.h>
13#include <CesiumUtility/SharedAsset.h>
60 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
61 const std::shared_ptr<CesiumUtility::CreditSystem>& pCreditSystem,
62 std::optional<CesiumUtility::Credit> credit,
63 const std::shared_ptr<IPrepareRasterOverlayRendererResources>&
64 pPrepareRendererResources,
65 const std::shared_ptr<spdlog::logger>& pLogger,
69 uint32_t minimumLevel,
70 uint32_t maximumLevel,
72 uint32_t imageHeight)
noexcept;
87 uint32_t
getWidth() const noexcept {
return this->_imageWidth; }
92 uint32_t
getHeight() const noexcept {
return this->_imageHeight; }
99 return this->_tilingScheme;
113 const glm::dvec2& screenPixels);
130 struct LoadedQuadtreeImage
133 const std::shared_ptr<LoadedRasterOverlayImage>& pLoaded_,
134 const std::optional<CesiumGeometry::Rectangle>& subset_)
135 : pLoaded(pLoaded_), subset(subset_) {}
136 std::shared_ptr<LoadedRasterOverlayImage> pLoaded =
nullptr;
137 std::optional<CesiumGeometry::Rectangle> subset = std::nullopt;
139 int64_t getSizeBytes()
const {
141 accum += int64_t(
sizeof(LoadedQuadtreeImage));
143 accum += pLoaded->getSizeBytes();
164 mapRasterTilesToGeometryTile(
166 const glm::dvec2 targetScreenPixels);
168 struct CombinedImageMeasurements {
171 int32_t heightPixels;
173 int32_t bytesPerChannel;
176 static CombinedImageMeasurements measureCombinedImage(
181 static LoadedRasterOverlayImage combineImages(
186 uint32_t _minimumLevel;
187 uint32_t _maximumLevel;
188 uint32_t _imageWidth;
189 uint32_t _imageHeight;
A system for managing asynchronous requests and tasks.
A value that will be available in the future, as produced by AsyncSystem.
A depot for CesiumUtility::SharedAsset instances, which are potentially shared between multiple objec...
A value that will be available in the future, as produced by AsyncSystem. Unlike Future,...
Defines how a rectangular region is divided into quadtree tiles.
uint32_t getHeight() const noexcept
Returns the image height of this instance, in pixels.
uint32_t computeLevelFromTargetScreenPixels(const CesiumGeometry::Rectangle &rectangle, const glm::dvec2 &screenPixels)
Computes the best quadtree level to use for an image intended to cover a given projected rectangle wh...
uint32_t getMinimumLevel() const noexcept
Returns the minimum tile level of this instance.
uint32_t getWidth() const noexcept
Returns the image width of this instance, in pixels.
virtual CesiumAsync::Future< LoadedRasterOverlayImage > loadQuadtreeTileImage(const CesiumGeometry::QuadtreeTileID &tileID) const =0
Asynchronously loads a tile in the quadtree.
uint32_t getMaximumLevel() const noexcept
Returns the maximum tile level of this instance.
const CesiumGeometry::QuadtreeTilingScheme & getTilingScheme() const noexcept
Returns the CesiumGeometry::QuadtreeTilingScheme of this instance.
QuadtreeRasterOverlayTileProvider(const CesiumUtility::IntrusivePointer< const RasterOverlay > &pOwner, const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const std::shared_ptr< CesiumUtility::CreditSystem > &pCreditSystem, std::optional< CesiumUtility::Credit > credit, const std::shared_ptr< IPrepareRasterOverlayRendererResources > &pPrepareRendererResources, const std::shared_ptr< spdlog::logger > &pLogger, const CesiumGeospatial::Projection &projection, const CesiumGeometry::QuadtreeTilingScheme &tilingScheme, const CesiumGeometry::Rectangle &coverageRectangle, uint32_t minimumLevel, uint32_t maximumLevel, uint32_t imageWidth, uint32_t imageHeight) noexcept
Creates a new instance.
RasterOverlayTileProvider(const CesiumUtility::IntrusivePointer< const RasterOverlay > &pOwner, const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const std::shared_ptr< CesiumUtility::CreditSystem > &pCreditSystem, const CesiumGeospatial::Ellipsoid &ellipsoid=CesiumGeospatial::Ellipsoid::WGS84) noexcept
Raster image data for a tile in a quadtree.
A smart pointer that calls addReference and releaseReference on the controlled object.
An asset that is potentially shared between multiple objects, such as an image shared between multipl...
std::variant< GeographicProjection, WebMercatorProjection > Projection
A projection.
Classes for raster overlays, which allow draping massive 2D textures over a model.
Result< IntrusivePointer< T > > ResultPointer
A convenient shortcut for CesiumUtility::Result<CesiumUtility::IntrusivePointer<T>>.
Uniquely identifies a node in a quadtree.