cesium-native 0.43.0
Loading...
Searching...
No Matches
RasterOverlay.h
1#pragma once
2
3#include "Library.h"
4#include "RasterOverlayLoadFailureDetails.h"
5
6#include <CesiumAsync/AsyncSystem.h>
7#include <CesiumAsync/IAssetAccessor.h>
8#include <CesiumGeospatial/Ellipsoid.h>
9#include <CesiumGltf/Ktx2TranscodeTargets.h>
10#include <CesiumUtility/IntrusivePointer.h>
11#include <CesiumUtility/ReferenceCounted.h>
12
13#include <nonstd/expected.hpp>
14#include <spdlog/fwd.h>
15
16#include <any>
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
29class IPrepareRasterOverlayRendererResources;
30class RasterOverlayTileProvider;
31
35struct CESIUMRASTEROVERLAYS_API RasterOverlayOptions {
40 int32_t maximumSimultaneousTileLoads = 20;
41
53 int64_t subTileCacheBytes = 16 * 1024 * 1024;
54
66 int32_t maximumTextureSize = 2048;
67
76 double maximumScreenSpaceError = 2.0;
77
83
96
100 bool showCreditsOnScreen = false;
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 Promise.h:11
A promise that can be resolved or rejected by an asynchronous task.
Definition Promise.h:18
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:38
static const Ellipsoid WGS84
An Ellipsoid instance initialized to the WGS84 standard.
Definition Ellipsoid.h:47
Details on a failure while attempting to load a raster overlay tile.
The base class for a rasterized image that can be draped over a Cesium3DTilesSelection::Tileset....
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.
A smart pointer that calls addReference and releaseReference on the controlled object.
A reference-counted base class, meant to be used with IntrusivePointer.
Classes that support asynchronous operations.
Classes for raster overlays, which allow draping massive 2D textures over a model.
Utility classes for Cesium.
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...
std::function< void(const RasterOverlayLoadFailureDetails &)> loadErrorCallback
A callback function that is invoked when a raster overlay resource fails to load.
CesiumGltf::Ktx2TranscodeTargets ktx2TranscodeTargets
For each possible input transmission format, this struct names the ideal target gpu-compressed pixel ...