cesium-native 0.48.0
Loading...
Searching...
No Matches
RasterOverlay.h
1#pragma once
2
3#include <CesiumAsync/AsyncSystem.h>
4#include <CesiumAsync/IAssetAccessor.h>
5#include <CesiumGeospatial/Ellipsoid.h>
6#include <CesiumGltf/Ktx2TranscodeTargets.h>
7#include <CesiumRasterOverlays/Library.h>
8#include <CesiumRasterOverlays/RasterOverlayLoadFailureDetails.h>
9#include <CesiumUtility/IntrusivePointer.h>
10#include <CesiumUtility/ReferenceCounted.h>
11
12#include <nonstd/expected.hpp>
13#include <spdlog/fwd.h>
14
15#include <any>
16#include <cstddef>
17#include <functional>
18#include <memory>
19#include <optional>
20#include <string>
21
22namespace CesiumUtility {
23struct Credit;
24class CreditSystem;
25} // namespace CesiumUtility
26
27namespace CesiumRasterOverlays {
28
31
35struct CESIUMRASTEROVERLAYS_API RasterOverlayOptions {
41
53 int64_t subTileCacheBytes = static_cast<int64_t>(16 * 1024 * 1024);
54
66 int32_t maximumTextureSize = 2048;
67
77
83
96
101
111
116};
117
135 : public CesiumUtility::ReferenceCountedNonThreadSafe<RasterOverlay> {
136public:
144 const std::string& name,
145 const RasterOverlayOptions& overlayOptions = RasterOverlayOptions());
146 virtual ~RasterOverlay() noexcept;
147
157 CesiumAsync::SharedFuture<void>&
158 getAsyncDestructionCompleteEvent(const CesiumAsync::AsyncSystem& asyncSystem);
159
163 const std::string& getName() const noexcept { return this->_name; }
164
168 RasterOverlayOptions& getOptions() noexcept { return this->_options; }
169
171 const RasterOverlayOptions& getOptions() const noexcept {
172 return this->_options;
173 }
174
178 const std::vector<CesiumUtility::Credit>& getCredits() const noexcept {
179 return this->_credits;
180 }
181
185 std::vector<CesiumUtility::Credit>& getCredits() noexcept {
186 return this->_credits;
187 }
188
200 const CesiumAsync::AsyncSystem& asyncSystem,
201 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
202 const CesiumGeospatial::Ellipsoid& ellipsoid
203 CESIUM_DEFAULT_ELLIPSOID) const;
204
212 using CreateTileProviderResult = nonstd::expected<
215
235 const CesiumAsync::AsyncSystem& asyncSystem,
236 const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
237 const std::shared_ptr<CesiumUtility::CreditSystem>& pCreditSystem,
238 const std::shared_ptr<IPrepareRasterOverlayRendererResources>&
239 pPrepareRendererResources,
240 const std::shared_ptr<spdlog::logger>& pLogger,
242
243private:
244 struct DestructionCompleteDetails {
245 CesiumAsync::AsyncSystem asyncSystem;
248 };
249
250 std::string _name;
251 RasterOverlayOptions _options;
252 std::vector<CesiumUtility::Credit> _credits;
253 std::optional<DestructionCompleteDetails> _destructionCompleteDetails;
254};
255
256} // namespace CesiumRasterOverlays
A system for managing asynchronous requests and tasks.
Definition AsyncSystem.h:36
A value that will be available in the future, as produced by AsyncSystem.
Definition Future.h:29
A promise that can be resolved or rejected by an asynchronous task.
Definition Promise.h:19
A value that will be available in the future, as produced by AsyncSystem. Unlike Future,...
A quadratic surface defined in Cartesian coordinates.
Definition Ellipsoid.h:39
static const Ellipsoid WGS84
An Ellipsoid instance initialized to the WGS84 standard.
Definition Ellipsoid.h:48
An interface between Cesium Native and the application using it, allowing Cesium Native to pass loade...
Details on a failure while attempting to load a raster overlay tile.
Provides individual tiles for a RasterOverlay on demand.
const std::vector< CesiumUtility::Credit > & getCredits() const noexcept
Gets the credits for this overlay.
CesiumUtility::IntrusivePointer< RasterOverlayTileProvider > createPlaceholder(const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const CesiumGeospatial::Ellipsoid &ellipsoid=CesiumGeospatial::Ellipsoid::WGS84) const
Create a placeholder tile provider can be used in place of the real one while createTileProvider comp...
const RasterOverlayOptions & getOptions() const noexcept
Gets options for this overlay.
std::vector< CesiumUtility::Credit > & getCredits() noexcept
Gets the credits for this overlay.
CesiumAsync::SharedFuture< void > & getAsyncDestructionCompleteEvent(const CesiumAsync::AsyncSystem &asyncSystem)
A future that resolves when this RasterOverlay has been destroyed (i.e. its destructor has been calle...
virtual CesiumAsync::Future< CreateTileProviderResult > createTileProvider(const CesiumAsync::AsyncSystem &asyncSystem, const std::shared_ptr< CesiumAsync::IAssetAccessor > &pAssetAccessor, const std::shared_ptr< CesiumUtility::CreditSystem > &pCreditSystem, const std::shared_ptr< IPrepareRasterOverlayRendererResources > &pPrepareRendererResources, const std::shared_ptr< spdlog::logger > &pLogger, CesiumUtility::IntrusivePointer< const RasterOverlay > pOwner) const =0
Begins asynchronous creation of a tile provider for this overlay and eventually returns it via a Futu...
RasterOverlay(const std::string &name, const RasterOverlayOptions &overlayOptions=RasterOverlayOptions())
Creates a new instance.
RasterOverlayOptions & getOptions() noexcept
Gets options for this overlay.
nonstd::expected< CesiumUtility::IntrusivePointer< RasterOverlayTileProvider >, RasterOverlayLoadFailureDetails > CreateTileProviderResult
A result from a call to createTileProvider. This is expected to be an IntrusivePointer to a RasterOve...
const std::string & getName() const noexcept
Gets the name of this overlay.
Creates and manages Credit objects. Avoids repetitions and tracks which credits should be shown and w...
A smart pointer that calls addReference and releaseReference on the controlled object.
Classes that support asynchronous operations.
Classes for raster overlays, which allow draping massive 2D textures over a model.
Utility classes for Cesium.
ReferenceCounted< T, false > ReferenceCountedNonThreadSafe
A reference-counted base class, meant to be used with IntrusivePointer. The reference count is not th...
STL namespace.
For each possible input transmission format, this struct names the ideal target gpu-compressed pixel ...
Options for loading raster overlays.
std::any rendererOptions
Arbitrary data that will be passed to Cesium3DTilesSelection::IPrepareRendererResources::prepareRaste...
double maximumScreenSpaceError
The maximum number of pixels of error when rendering this overlay. This is used to select an appropri...
bool showCreditsOnScreen
Whether or not to display the credits on screen.
int32_t maximumSimultaneousTileLoads
The maximum number of overlay tiles that may simultaneously be in the process of loading.
std::function< void(const RasterOverlayLoadFailureDetails &)> loadErrorCallback
A callback function that is invoked when a raster overlay resource fails to load.
CesiumGeospatial::Ellipsoid ellipsoid
The ellipsoid used for this raster overlay.
CesiumGltf::Ktx2TranscodeTargets ktx2TranscodeTargets
For each possible input transmission format, this struct names the ideal target gpu-compressed pixel ...
int32_t maximumTextureSize
The maximum pixel size of raster overlay textures, in either direction.
int64_t subTileCacheBytes
The maximum number of bytes to use to cache sub-tiles in memory.
Represents an HTML string that should be shown on screen to attribute third parties for used data,...