File VolumeDataAccessManager.h

namespace OpenVDS

Typedefs

using VolumeDataRequest1Bit = VolumeDataRequest_t<uint8_t>
using VolumeDataRequestByte = VolumeDataRequest_t<uint8_t>
using VolumeDataRequestUShort = VolumeDataRequest_t<uint16_t>
using VolumeDataRequestUInt = VolumeDataRequest_t<uint32_t>
using VolumeDataRequestULong = VolumeDataRequest_t<uint64_t>
using VolumeDataRequestFloat = VolumeDataRequest_t<float>
using VolumeDataRequestDouble = VolumeDataRequest_t<double>
class IHasVolumeDataAccess

Public Functions

virtual IVolumeDataAccessManager *GetVolumeDataAccessManager() = 0

Protected Functions

inline IHasVolumeDataAccess()
inline virtual ~IHasVolumeDataAccess()
class IVolumeDataAccessManager

Public Types

typedef void (*ErrorHandler)(Error *error, int errorCode, const char *errorMessage)

Public Functions

virtual void AddRef() = 0
virtual void Release() = 0
virtual int RefCount() const = 0
virtual VolumeDataLayout const *GetVolumeDataLayout() = 0

Get the VolumeDataLayout object for a VDS.

Returns:

The VolumeDataLayout object associated with the VDS or NULL if there is no valid VolumeDataLayout.

virtual VDSProduceStatus GetVDSProduceStatus(DimensionsND dimensionsND, int LOD, int channel) = 0

Get the produce status for the specific DimensionsND/LOD/Channel combination.

Parameters:
  • dimensionsND – The dimensions group we’re getting the produce status for.

  • LOD – The LOD level we’re getting the produce status for.

  • channel – The channel index we’re getting the produce status for.

Returns:

The produce status for the specific DimensionsND/LOD/Channel combination.

virtual int64_t GetVDSChunkCount(DimensionsND dimensionsND, int LOD, int channel) = 0

Get the chunk count for the specific DimensionsND/LOD/Channel combination.

Parameters:
  • dimensionsND – The dimensions group we’re getting the chunk count for.

  • LOD – The LOD level we’re getting the chunk count status for.

  • channel – The channel index we’re getting the chunk count status for.

Returns:

The chunk count for the specific DimensionsND/LOD/Channel combination.

virtual VolumeDataPageAccessor *CreateVolumeDataPageAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, VolumeDataPageAccessor::AccessMode accessMode, int chunkMetadataPageSize = 1024) = 0

Create a VolumeDataPageAccessor object for the VDS.

Parameters:
  • dimensionsND – The dimensions group that the volume data page accessor will access.

  • LOD – The LOD level that the volume data page accessor will access.

  • channel – The channel index that the volume data page accessor will access.

  • maxPages – The maximum number of pages that the volume data page accessor will cache.

  • accessMode – This specifies the access mode (ReadOnly/ReadWrite/Create) of the volume data page accessor.

  • chunkMetadataPageSize – The chunk metadata page size of the layer. This controls how many chunk metadata entries are written per page, and is only used when the access mode is Create. If this number is too low it will degrade performance, but in certain situations it can be advantageous to make this number a multiple of the number of chunks in some of the dimensions. Do not change this from the default (1024) unless you know exactly what you are doing.

Returns:

A VolumeDataPageAccessor object for the VDS.

virtual void DestroyVolumeDataPageAccessor(VolumeDataPageAccessor *volumeDataPageAccessor) = 0

Destroy a volume data page accessor object.

Parameters:

volumeDataPageAccessor – The VolumeDataPageAccessor object to destroy.

virtual void DestroyVolumeDataAccessor(IVolumeDataAccessor *accessor) = 0
virtual IVolumeDataAccessor *CloneVolumeDataAccessor(IVolumeDataAccessor const &accessor) = 0
virtual IVolumeDataReadWriteAccessor<IntVector2, bool> *Create2DVolumeDataAccessor1Bit(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector2, uint8_t> *Create2DVolumeDataAccessorU8(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector2, uint16_t> *Create2DVolumeDataAccessorU16(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector2, uint32_t> *Create2DVolumeDataAccessorU32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector2, uint64_t> *Create2DVolumeDataAccessorU64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector2, float> *Create2DVolumeDataAccessorR32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector2, double> *Create2DVolumeDataAccessorR64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector3, bool> *Create3DVolumeDataAccessor1Bit(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector3, uint8_t> *Create3DVolumeDataAccessorU8(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector3, uint16_t> *Create3DVolumeDataAccessorU16(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector3, uint32_t> *Create3DVolumeDataAccessorU32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector3, uint64_t> *Create3DVolumeDataAccessorU64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector3, float> *Create3DVolumeDataAccessorR32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector3, double> *Create3DVolumeDataAccessorR64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector4, bool> *Create4DVolumeDataAccessor1Bit(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector4, uint8_t> *Create4DVolumeDataAccessorU8(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector4, uint16_t> *Create4DVolumeDataAccessorU16(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector4, uint32_t> *Create4DVolumeDataAccessorU32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector4, uint64_t> *Create4DVolumeDataAccessorU64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector4, float> *Create4DVolumeDataAccessorR32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadWriteAccessor<IntVector4, double> *Create4DVolumeDataAccessorR64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue) = 0
virtual IVolumeDataReadAccessor<FloatVector2, float> *Create2DInterpolatingVolumeDataAccessorR32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue, InterpolationMethod interpolationMethod) = 0
virtual IVolumeDataReadAccessor<FloatVector2, double> *Create2DInterpolatingVolumeDataAccessorR64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue, InterpolationMethod interpolationMethod) = 0
virtual IVolumeDataReadAccessor<FloatVector3, float> *Create3DInterpolatingVolumeDataAccessorR32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue, InterpolationMethod interpolationMethod) = 0
virtual IVolumeDataReadAccessor<FloatVector3, double> *Create3DInterpolatingVolumeDataAccessorR64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue, InterpolationMethod interpolationMethod) = 0
virtual IVolumeDataReadAccessor<FloatVector4, float> *Create4DInterpolatingVolumeDataAccessorR32(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue, InterpolationMethod interpolationMethod) = 0
virtual IVolumeDataReadAccessor<FloatVector4, double> *Create4DInterpolatingVolumeDataAccessorR64(VolumeDataPageAccessor *volumeDataPageAccessor, float replacementNoValue, InterpolationMethod interpolationMethod) = 0
virtual int64_t GetVolumeSubsetBufferSize(const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], VolumeDataFormat format, int LOD = 0, int channel = 0) = 0

Compute the buffer size (in bytes) for a volume subset request.

Parameters:
  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • format – Voxel format of the destination buffer.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

Returns:

The buffer size needed.

virtual int64_t RequestVolumeSubset(void *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], VolumeDataFormat format, optional<float> replacementNoValue = optional<float>()) = 0

Request a subset of the input VDS.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least as many elements of format as indicated by minVoxelCoordinates and maxVoxelCoordinates.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • format – Voxel format of the destination buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

The RequestID which can be used to query the status of the request, cancel the request or wait for the request to complete.

virtual int64_t GetProjectedVolumeSubsetBufferSize(const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], DimensionsND projectedDimensions, VolumeDataFormat format, int LOD = 0, int channel = 0) = 0

Compute the buffer size (in bytes) for a projected volume subset request.

Parameters:
  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • projectedDimensions – The 2D dimension group that the plane in the source dimensiongroup is projected into. It must be a 2D subset of the source dimensions.

  • format – Voxel format of the destination buffer.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

Returns:

The buffer size needed.

virtual int64_t RequestProjectedVolumeSubset(void *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], FloatVector4 const &voxelPlane, DimensionsND projectedDimensions, VolumeDataFormat format, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>()) = 0

Request a subset projected from an arbitrary 3D plane through the subset onto one of the sides of the subset.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least as many elements of format as indicated by minVoxelCoordinates and maxVoxelCoordinates for the projected dimensions.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • voxelPlane – The plane equation for the projection from the dimension source to the projected dimensions (which must be a 2D subset of the source dimensions).

  • projectedDimensions – The 2D dimension group that the plane in the source dimensiongroup is projected into. It must be a 2D subset of the source dimensions.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • format – Voxel format of the destination buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

The RequestID which can be used to query the status of the request, cancel the request or wait for the request to complete.

virtual int64_t GetVolumeSamplesBufferSize(int sampleCount, int channel = 0) = 0

Compute the buffer size (in bytes) for a volume samples request.

Parameters:
  • sampleCount – Number of samples to request.

  • channel – The channel index the requested data is read from.

Returns:

The buffer size needed.

virtual int64_t RequestVolumeSamples(float *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const float (*samplePositions)[VolumeDataLayout::Dimensionality_Max], int sampleCount, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>()) = 0

Request sampling of the input VDS at the specified coordinates.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least sampleCount elements.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • samplePositions – Pointer to array of VolumeDataLayout::Dimensionality_Max-elements indicating the positions to sample. May be deleted once RequestVolumeSamples return, as HueSpace makes a deep copy of the data.

  • sampleCount – Number of samples to request.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

The RequestID which can be used to query the status of the request, cancel the request or wait for the request to complete.

virtual int64_t GetVolumeTracesBufferSize(int traceCount, int traceDimension, int LOD = 0, int channel = 0) = 0

Compute the buffer size (in bytes) for a volume traces request.

Parameters:
  • traceCount – Number of traces to request.

  • traceDimension – The dimension to trace

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

Returns:

The buffer size needed.

virtual int64_t RequestVolumeTraces(float *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const float (*tracePositions)[VolumeDataLayout::Dimensionality_Max], int traceCount, InterpolationMethod interpolationMethod, int traceDimension, optional<float> replacementNoValue = optional<float>()) = 0

Request traces from the input VDS.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least traceCount * number of samples in the traceDimension.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • tracePositions – Pointer to array of traceCount VolumeDataLayout::Dimensionality_Max-elements indicating the trace positions.

  • traceCount – Number of traces to request.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • traceDimension – The dimension to trace

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

The RequestID which can be used to query the status of the request, cancel the request or wait for the request to complete.

virtual int64_t PrefetchVolumeChunk(DimensionsND dimensionsND, int LOD, int channel, int64_t chunkIndex) = 0

Force production of a specific volume data chunk.

Parameters:
  • dimensionsND – The dimensiongroup the requested chunk belongs to.

  • LOD – The LOD level the requested chunk belongs to.

  • channel – The channel index the requested chunk belongs to.

  • chunkIndex – The index of the chunk to prefetch.

Returns:

The RequestID which can be used to query the status of the request, cancel the request or wait for the request to complete.

virtual bool IsCompleted(int64_t requestID) = 0

Check if a request completed successfully. If the request completed, the buffer now contains valid data.

Parameters:

requestID – The RequestID to check for completion.

Returns:

Either IsCompleted, IsCanceled or WaitForCompletion will return true a single time, after that the request is taken out of the system.

virtual bool IsCanceled(int64_t requestID) = 0

Check if a request was canceled (e.g. the VDS was invalidated before the request was processed). If the request was canceled, the buffer does not contain valid data.

Parameters:

requestID – The RequestID to check for cancellation.

Returns:

Either IsCompleted, IsCanceled or WaitForCompletion will return true a single time, after that the request is taken out of the system.

virtual bool IsCanceled(int64_t requestID, ReadErrorException *error) = 0

Check if a request was canceled (e.g. the VDS was invalidated before the request was processed). If the request was canceled, the buffer does not contain valid data.

Parameters:
  • requestID – The RequestID to check for cancellation.

  • error – This out parameter will be set to the error that caused the cancellation.

Returns:

Either IsCompleted, IsCanceled or WaitForCompletion will return true a single time, after that the request is taken out of the system.

virtual bool WaitForCompletion(int64_t requestID, int millisecondsBeforeTimeout = 0) = 0

Wait for a request to complete successfully. If the request completed, the buffer now contains valid data.

Parameters:
  • requestID – The RequestID to wait for completion of.

  • millisecondsBeforeTimeout – The number of milliseconds to wait before timing out (optional). A value of 0 indicates there is no timeout and we will wait for however long it takes. Note that the request is not automatically canceled if the wait times out, you can also use this mechanism to e.g. update a progress bar while waiting. If you want to cancel the request you have to explicitly call CancelRequest() and then wait for the request to stop writing to the buffer.

Returns:

Either IsCompleted, IsCanceled or WaitForCompletion will return true a single time, after that the request is taken out of the system. Whenever WaitForCompletion returns false you need to call IsCanceled() to know if that was because of a timeout or if the request was canceled.

virtual void Cancel(int64_t requestID) = 0

Try to cancel the request. You still have to call WaitForCompletion/IsCanceled to make sure the buffer is not being written to and to take the job out of the system. It is possible that the request has completed concurrently with the call to Cancel in which case WaitForCompletion will return true.

Parameters:

requestID – The RequestID to cancel.

virtual void CancelAndWaitForCompletion(int64_t requestID) = 0

Cancel the request and wait for it to complete. This call will block until the request has completed so you can be sure the buffer is not being written to and the job is taken out of the system.

Parameters:

requestID – The RequestID to cancel.

virtual float GetCompletionFactor(int64_t requestID) = 0

Get the completion factor (between 0 and 1) of the request.

Parameters:

requestID – The RequestID to get the completion factor of.

Returns:

A factor (between 0 and 1) indicating how much of the request has been completed.

virtual void Flush(ErrorHandler errorHandler, Error *error = nullptr) = 0

Flush any pending writes and write updated layer status.

Public Static Attributes

static constexpr int Dimensionality_Max = VolumeDataLayout::Dimensionality_Max

the maximum number of dimensions a VDS can have

Protected Functions

inline IVolumeDataAccessManager()
inline virtual ~IVolumeDataAccessManager()
class VolumeDataAccessManager

Public Types

typedef VolumeDataPageAccessor::AccessMode AccessMode

Public Functions

inline VolumeDataAccessManager()
inline VolumeDataAccessManager(IVolumeDataAccessManager *manager)
inline VolumeDataAccessManager(VolumeDataAccessManager const &rhs)
inline ~VolumeDataAccessManager()
inline VolumeDataAccessManager &operator=(const VolumeDataAccessManager &rhs)
inline VolumeDataLayout const *GetVolumeDataLayout()

Get the VolumeDataLayout object for a VDS.

Returns:

The VolumeDataLayout object associated with the VDS or NULL if there is no valid VolumeDataLayout.

inline VDSProduceStatus GetVDSProduceStatus(DimensionsND dimensionsND, int LOD, int channel) const

Get the produce status for the specific DimensionsND/LOD/Channel combination.

Parameters:
  • dimensionsND – The dimensions group we’re getting the produce status for.

  • LOD – The LOD level we’re getting the produce status for.

  • channel – The channel index we’re getting the produce status for.

Returns:

The produce status for the specific DimensionsND/LOD/Channel combination.

inline int64_t GetVDSChunkCount(DimensionsND dimensionsND, int LOD, int channel) const

Get the chunk count for the specific DimensionsND/LOD/Channel combination.

Parameters:
  • dimensionsND – The dimensions group we’re getting the chunk count for.

  • LOD – The LOD level we’re getting the chunk count status for.

  • channel – The channel index we’re getting the chunk count status for.

Returns:

The chunk count for the specific DimensionsND/LOD/Channel combination.

inline std::shared_ptr<VolumeDataPageAccessor> CreateVolumeDataPageAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, AccessMode accessMode, int chunkMetadataPageSize = 1024)

Create a VolumeDataPageAccessor object for the VDS.

Parameters:
  • dimensionsND – The dimensions group that the volume data page accessor will access.

  • LOD – The LOD level that the volume data page accessor will access.

  • channel – The channel index that the volume data page accessor will access.

  • maxPages – The maximum number of pages that the volume data page accessor will cache.

  • accessMode – This specifies the access mode (ReadOnly/ReadWrite/Create) of the volume data page accessor.

  • chunkMetadataPageSize – The chunk metadata page size of the layer. This controls how many chunk metadata entries are written per page, and is only used when the access mode is Create. If this number is too low it will degrade performance, but in certain situations it can be advantageous to make this number a multiple of the number of chunks in some of the dimensions. Do not change this from the default (1024) unless you know exactly what you are doing.

Returns:

A VolumeDataPageAccessor object for the VDS.

template<typename INDEX, typename T>
VolumeDataReadAccessor<INDEX, T> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
template<typename INDEX, typename T>
VolumeDataReadAccessor<INDEX, T> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
template<typename INDEX, typename T>
VolumeDataReadWriteAccessor<INDEX, T> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
template<typename INDEX, typename T>
VolumeDataReadWriteAccessor<INDEX, T> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
template<typename INDEX, typename T>
VolumeDataReadAccessor<INDEX, T> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue = optional<float>())
template<typename INDEX, typename T>
VolumeDataReadAccessor<INDEX, T> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DInterpolatingAccessorR64 CreateVolumeData2DInterpolatingAccessorR64(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DInterpolatingAccessorR64 CreateVolumeData2DInterpolatingAccessorR64(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DInterpolatingAccessorR32 CreateVolumeData2DInterpolatingAccessorR32(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DInterpolatingAccessorR32 CreateVolumeData2DInterpolatingAccessorR32(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessor1Bit CreateVolumeData2DReadAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessor1Bit CreateVolumeData2DReadAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorU8 CreateVolumeData2DReadAccessorU8(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorU8 CreateVolumeData2DReadAccessorU8(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorU16 CreateVolumeData2DReadAccessorU16(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorU16 CreateVolumeData2DReadAccessorU16(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorU32 CreateVolumeData2DReadAccessorU32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorU32 CreateVolumeData2DReadAccessorU32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorU64 CreateVolumeData2DReadAccessorU64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorU64 CreateVolumeData2DReadAccessorU64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorR32 CreateVolumeData2DReadAccessorR32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorR32 CreateVolumeData2DReadAccessorR32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorR64 CreateVolumeData2DReadAccessorR64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadAccessorR64 CreateVolumeData2DReadAccessorR64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessor1Bit CreateVolumeData2DReadWriteAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessor1Bit CreateVolumeData2DReadWriteAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorU8 CreateVolumeData2DReadWriteAccessorU8(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorU8 CreateVolumeData2DReadWriteAccessorU8(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorU16 CreateVolumeData2DReadWriteAccessorU16(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorU16 CreateVolumeData2DReadWriteAccessorU16(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorU32 CreateVolumeData2DReadWriteAccessorU32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorU32 CreateVolumeData2DReadWriteAccessorU32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorU64 CreateVolumeData2DReadWriteAccessorU64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorU64 CreateVolumeData2DReadWriteAccessorU64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorR32 CreateVolumeData2DReadWriteAccessorR32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorR32 CreateVolumeData2DReadWriteAccessorR32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorR64 CreateVolumeData2DReadWriteAccessorR64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData2DReadWriteAccessorR64 CreateVolumeData2DReadWriteAccessorR64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DInterpolatingAccessorR64 CreateVolumeData3DInterpolatingAccessorR64(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DInterpolatingAccessorR64 CreateVolumeData3DInterpolatingAccessorR64(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DInterpolatingAccessorR32 CreateVolumeData3DInterpolatingAccessorR32(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DInterpolatingAccessorR32 CreateVolumeData3DInterpolatingAccessorR32(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessor1Bit CreateVolumeData3DReadAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessor1Bit CreateVolumeData3DReadAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorU8 CreateVolumeData3DReadAccessorU8(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorU8 CreateVolumeData3DReadAccessorU8(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorU16 CreateVolumeData3DReadAccessorU16(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorU16 CreateVolumeData3DReadAccessorU16(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorU32 CreateVolumeData3DReadAccessorU32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorU32 CreateVolumeData3DReadAccessorU32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorU64 CreateVolumeData3DReadAccessorU64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorU64 CreateVolumeData3DReadAccessorU64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorR32 CreateVolumeData3DReadAccessorR32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorR32 CreateVolumeData3DReadAccessorR32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorR64 CreateVolumeData3DReadAccessorR64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadAccessorR64 CreateVolumeData3DReadAccessorR64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessor1Bit CreateVolumeData3DReadWriteAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessor1Bit CreateVolumeData3DReadWriteAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorU8 CreateVolumeData3DReadWriteAccessorU8(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorU8 CreateVolumeData3DReadWriteAccessorU8(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorU16 CreateVolumeData3DReadWriteAccessorU16(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorU16 CreateVolumeData3DReadWriteAccessorU16(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorU32 CreateVolumeData3DReadWriteAccessorU32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorU32 CreateVolumeData3DReadWriteAccessorU32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorU64 CreateVolumeData3DReadWriteAccessorU64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorU64 CreateVolumeData3DReadWriteAccessorU64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorR32 CreateVolumeData3DReadWriteAccessorR32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorR32 CreateVolumeData3DReadWriteAccessorR32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorR64 CreateVolumeData3DReadWriteAccessorR64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData3DReadWriteAccessorR64 CreateVolumeData3DReadWriteAccessorR64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DInterpolatingAccessorR64 CreateVolumeData4DInterpolatingAccessorR64(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DInterpolatingAccessorR64 CreateVolumeData4DInterpolatingAccessorR64(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DInterpolatingAccessorR32 CreateVolumeData4DInterpolatingAccessorR32(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DInterpolatingAccessorR32 CreateVolumeData4DInterpolatingAccessorR32(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessor1Bit CreateVolumeData4DReadAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessor1Bit CreateVolumeData4DReadAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorU8 CreateVolumeData4DReadAccessorU8(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorU8 CreateVolumeData4DReadAccessorU8(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorU16 CreateVolumeData4DReadAccessorU16(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorU16 CreateVolumeData4DReadAccessorU16(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorU32 CreateVolumeData4DReadAccessorU32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorU32 CreateVolumeData4DReadAccessorU32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorU64 CreateVolumeData4DReadAccessorU64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorU64 CreateVolumeData4DReadAccessorU64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorR32 CreateVolumeData4DReadAccessorR32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorR32 CreateVolumeData4DReadAccessorR32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorR64 CreateVolumeData4DReadAccessorR64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadAccessorR64 CreateVolumeData4DReadAccessorR64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessor1Bit CreateVolumeData4DReadWriteAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessor1Bit CreateVolumeData4DReadWriteAccessor1Bit(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorU8 CreateVolumeData4DReadWriteAccessorU8(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorU8 CreateVolumeData4DReadWriteAccessorU8(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorU16 CreateVolumeData4DReadWriteAccessorU16(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorU16 CreateVolumeData4DReadWriteAccessorU16(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorU32 CreateVolumeData4DReadWriteAccessorU32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorU32 CreateVolumeData4DReadWriteAccessorU32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorU64 CreateVolumeData4DReadWriteAccessorU64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorU64 CreateVolumeData4DReadWriteAccessorU64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorR32 CreateVolumeData4DReadWriteAccessorR32(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorR32 CreateVolumeData4DReadWriteAccessorR32(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorR64 CreateVolumeData4DReadWriteAccessorR64(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue = optional<float>())
inline VolumeData4DReadWriteAccessorR64 CreateVolumeData4DReadWriteAccessorR64(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue = optional<float>())
inline int64_t GetVolumeSubsetBufferSize(const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], VolumeDataFormat format, int LOD = 0, int channel = 0)

Compute the buffer size (in bytes) for a volume subset request.

Parameters:
  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • format – Voxel format of the destination buffer.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

Returns:

The buffer size needed.

template<typename VALUETYPE>
inline int64_t GetVolumeSubsetBufferSize(const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], int LOD = 0, int channel = 0)
inline std::shared_ptr<VolumeDataRequest> RequestVolumeSubset(void *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], VolumeDataFormat format, optional<float> replacementNoValue = optional<float>())

Request a subset of the input VDS.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least as many elements of format as indicated by minVoxelCoordinates and maxVoxelCoordinates.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • format – Voxel format of the destination buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline std::shared_ptr<VolumeDataRequest1Bit> RequestVolumeSubset1Bit(uint8_t *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max])

Request a subset of the input VDS.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least as many elements of format as indicated by minVoxelCoordinates and maxVoxelCoordinates.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

template<typename VALUETYPE>
inline std::shared_ptr<VolumeDataRequest_t<VALUETYPE>> RequestVolumeSubset(VALUETYPE *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], optional<float> replacementNoValue = optional<float>())

Request a subset of the input VDS.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least as many elements of format as indicated by minVoxelCoordinates and maxVoxelCoordinates.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline std::shared_ptr<VolumeDataRequest> RequestVolumeSubset(DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], VolumeDataFormat format, optional<float> replacementNoValue = optional<float>())

Request a subset of the input VDS, using an automatically allocated buffer.

Parameters:
  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • format – Voxel format of the destination buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline std::shared_ptr<VolumeDataRequest1Bit> RequestVolumeSubset1Bit(DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max])

Request a subset of the input VDS, using an automatically allocated buffer.

Parameters:
  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

template<typename VALUETYPE>
inline std::shared_ptr<VolumeDataRequest_t<VALUETYPE>> RequestVolumeSubset(DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], optional<float> replacementNoValue = optional<float>())

Request a subset of the input VDS, using an automatically allocated typed buffer.

Parameters:
  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline int64_t GetProjectedVolumeSubsetBufferSize(const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], DimensionsND projectedDimensions, VolumeDataFormat format, int LOD = 0, int channel = 0)

Compute the buffer size (in bytes) for a projected volume subset request.

Parameters:
  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • projectedDimensions – The 2D dimension group that the plane in the source dimensiongroup is projected into. It must be a 2D subset of the source dimensions.

  • format – Voxel format of the destination buffer.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

Returns:

The buffer size needed.

template<typename VALUETYPE>
inline int64_t GetProjectedVolumeSubsetBufferSize(const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], DimensionsND projectedDimensions, int LOD = 0, int channel = 0)
inline std::shared_ptr<VolumeDataRequest> RequestProjectedVolumeSubset(void *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], FloatVector4 const &voxelPlane, DimensionsND projectedDimensions, VolumeDataFormat format, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())

Request a subset projected from an arbitrary 3D plane through the subset onto one of the sides of the subset.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least as many elements of format as indicated by minVoxelCoordinates and maxVoxelCoordinates for the projected dimensions.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • voxelPlane – The plane equation for the projection from the dimension source to the projected dimensions (which must be a 2D subset of the source dimensions).

  • projectedDimensions – The 2D dimension group that the plane in the source dimensiongroup is projected into. It must be a 2D subset of the source dimensions.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • format – Voxel format of the destination buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline std::shared_ptr<VolumeDataRequest> RequestProjectedVolumeSubset(DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], FloatVector4 const &voxelPlane, DimensionsND projectedDimensions, VolumeDataFormat format, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())

Request a subset projected from an arbitrary 3D plane through the subset onto one of the sides of the subset, using an automatically allocated buffer.

Parameters:
  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • voxelPlane – The plane equation for the projection from the dimension source to the projected dimensions (which must be a 2D subset of the source dimensions).

  • projectedDimensions – The 2D dimension group that the plane in the source dimensiongroup is projected into. It must be a 2D subset of the source dimensions.

  • format – Voxel format of the destination buffer.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

template<typename VALUETYPE>
inline std::shared_ptr<VolumeDataRequest_t<VALUETYPE>> RequestProjectedVolumeSubset(DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], FloatVector4 const &voxelPlane, DimensionsND projectedDimensions, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())

Request a subset projected from an arbitrary 3D plane through the subset onto one of the sides of the subset, using an automatically allocated typed buffer.

Parameters:
  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • voxelPlane – The plane equation for the projection from the dimension source to the projected dimensions (which must be a 2D subset of the source dimensions).

  • projectedDimensions – The 2D dimension group that the plane in the source dimensiongroup is projected into. It must be a 2D subset of the source dimensions.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

template<typename VALUETYPE>
inline std::shared_ptr<VolumeDataRequest_t<VALUETYPE>> RequestProjectedVolumeSubset(void *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], FloatVector4 const &voxelPlane, DimensionsND projectedDimensions, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())

Request a subset projected from an arbitrary 3D plane through the subset onto one of the sides of the subset, using an automatically allocated typed buffer.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least as many elements of format as indicated by minVoxelCoordinates and maxVoxelCoordinates for the projected dimensions.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • minVoxelCoordinates – The minimum voxel coordinates to request in each dimension (inclusive).

  • maxVoxelCoordinates – The maximum voxel coordinates to request in each dimension (exclusive).

  • voxelPlane – The plane equation for the projection from the dimension source to the projected dimensions (which must be a 2D subset of the source dimensions).

  • projectedDimensions – The 2D dimension group that the plane in the source dimensiongroup is projected into. It must be a 2D subset of the source dimensions.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline int64_t GetVolumeSamplesBufferSize(int sampleCount, int channel = 0)

Compute the buffer size (in bytes) for a volume samples request.

Parameters:
  • sampleCount – Number of samples to request.

  • channel – The channel index the requested data is read from.

Returns:

The buffer size needed.

inline std::shared_ptr<VolumeDataRequestFloat> RequestVolumeSamples(float *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const float (*samplePositions)[VolumeDataLayout::Dimensionality_Max], int sampleCount, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())

Request sampling of the input VDS at the specified coordinates.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least sampleCount elements.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • samplePositions – Pointer to array of VolumeDataLayout::Dimensionality_Max-elements indicating the positions to sample. May be deleted once RequestVolumeSamples return, as HueSpace makes a deep copy of the data.

  • sampleCount – Number of samples to request.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline std::shared_ptr<VolumeDataRequestFloat> RequestVolumeSamples(DimensionsND dimensionsND, int LOD, int channel, const float (*samplePositions)[VolumeDataLayout::Dimensionality_Max], int sampleCount, InterpolationMethod interpolationMethod, optional<float> replacementNoValue = optional<float>())

Request sampling of the input VDS at the specified coordinates, using an automatically allocated buffer.

Parameters:
  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • samplePositions – Pointer to array of VolumeDataLayout::Dimensionality_Max-elements indicating the positions to sample. May be deleted once RequestVolumeSamples return, as HueSpace makes a deep copy of the data.

  • sampleCount – Number of samples to request.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline int64_t GetVolumeTracesBufferSize(int traceCount, int traceDimension, int LOD = 0, int channel = 0)

Compute the buffer size (in bytes) for a volume traces request.

Parameters:
  • traceCount – Number of traces to request.

  • traceDimension – The dimension to trace

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

Returns:

The buffer size needed.

inline std::shared_ptr<VolumeDataRequestFloat> RequestVolumeTraces(DimensionsND dimensionsND, int LOD, int channel, const float (*tracePositions)[VolumeDataLayout::Dimensionality_Max], int traceCount, InterpolationMethod interpolationMethod, int traceDimension, optional<float> replacementNoValue = optional<float>())

Request traces from the input VDS, using an automatically allocated buffer.

Parameters:
  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • tracePositions – Pointer to array of traceCount VolumeDataLayout::Dimensionality_Max-elements indicating the trace positions.

  • traceCount – Number of traces to request.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • traceDimension – The dimension to trace

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline std::shared_ptr<VolumeDataRequestFloat> RequestVolumeTraces(float *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const float (*tracePositions)[VolumeDataLayout::Dimensionality_Max], int traceCount, InterpolationMethod interpolationMethod, int traceDimension, optional<float> replacementNoValue = optional<float>())

Request traces from the input VDS.

Parameters:
  • buffer – Pointer to a preallocated buffer holding at least traceCount * number of samples in the traceDimension.

  • bufferByteSize – The size of the provided buffer, in bytes.

  • dimensionsND – The dimensiongroup the requested data is read from.

  • LOD – The LOD level the requested data is read from.

  • channel – The channel index the requested data is read from.

  • tracePositions – Pointer to array of traceCount VolumeDataLayout::Dimensionality_Max-elements indicating the trace positions.

  • traceCount – Number of traces to request.

  • interpolationMethod – Interpolation method to use when sampling the buffer.

  • traceDimension – The dimension to trace

  • replacementNoValue – If specified, this value is used to replace regions of the input VDS that has no data.

Returns:

A VolumeDataRequest instance encapsulating the request status and buffer.

inline std::shared_ptr<VolumeDataRequest> PrefetchVolumeChunk(DimensionsND dimensionsND, int LOD, int channel, int64_t chunkIndex)

Force production of a specific volume data chunk.

Parameters:
  • dimensionsND – The dimensiongroup the requested chunk belongs to.

  • LOD – The LOD level the requested chunk belongs to.

  • channel – The channel index the requested chunk belongs to.

  • chunkIndex – The index of the chunk to prefetch.

Returns:

A VolumeDataRequest instance encapsulating the request status.

inline void Flush(Error &error)

Flush any pending writes and write updated layer status.

template<>
inline VolumeDataReadAccessor<IntVector2, double> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, uint64_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, float> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, uint32_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, uint16_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, uint8_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, bool> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, double> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, uint64_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, float> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, uint32_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, uint16_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, uint8_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, bool> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, double> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, uint64_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, float> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, uint32_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, uint16_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, uint8_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, bool> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, double> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, uint64_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, float> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, uint32_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, uint16_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, uint8_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector2, bool> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, double> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, uint64_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, float> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, uint32_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, uint16_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, uint8_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector3, bool> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, double> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, uint64_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, float> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, uint32_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, uint16_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, uint8_t> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<IntVector4, bool> CreateVolumeDataReadAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, double> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, uint64_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, float> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, uint32_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, uint16_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, uint8_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, bool> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, double> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, uint64_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, float> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, uint32_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, uint16_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, uint8_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, bool> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, double> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, uint64_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, float> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, uint32_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, uint16_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, uint8_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, bool> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, double> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, uint64_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, float> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, uint32_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, uint16_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, uint8_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector2, bool> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, double> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, uint64_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, float> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, uint32_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, uint16_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, uint8_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector3, bool> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, double> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, uint64_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, float> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, uint32_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, uint16_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, uint8_t> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadWriteAccessor<IntVector4, bool> CreateVolumeDataReadWriteAccessor(DimensionsND dimensionsND, int LOD, int channel, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector2, double> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector2, float> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector3, double> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector3, float> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector4, double> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector4, float> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, int maxPages, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector2, double> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector2, float> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector3, double> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector3, float> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector4, double> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue)
template<>
inline VolumeDataReadAccessor<FloatVector4, float> CreateInterpolatingVolumeDataAccessor(DimensionsND dimensionsND, int LOD, int channel, InterpolationMethod interpolationMethod, optional<float> replacementNoValue)

Public Static Attributes

static constexpr AccessMode AccessMode_ReadOnly = VolumeDataPageAccessor::AccessMode_ReadOnly
static constexpr AccessMode AccessMode_ReadWrite = VolumeDataPageAccessor::AccessMode_ReadWrite
static constexpr AccessMode AccessMode_Create = VolumeDataPageAccessor::AccessMode_Create
static constexpr AccessMode AccessMode_CreateWithoutLODGeneration = VolumeDataPageAccessor::AccessMode_CreateWithoutLODGeneration
static constexpr AccessMode AccessMode_ReadWriteWithoutLODGeneration = VolumeDataPageAccessor::AccessMode_ReadWriteWithoutLODGeneration
static constexpr int Dimensionality_Max = VolumeDataLayout::Dimensionality_Max

the maximum number of dimensions a VDS can have

static constexpr int maxPagesDefault = 8

the default maxPages for VolumeDataPageAccessors

Private Functions

inline bool IsValid() const
inline bool EnsureValid() const
inline void Dispose()
template<class VOLUMEDATAREQUEST>
inline std::shared_ptr<VOLUMEDATAREQUEST> DoRequestVolumeSubset(VOLUMEDATAREQUEST *request, void *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], VolumeDataFormat format, optional<float> const &replacementNoValue)
template<class VOLUMEDATAREQUEST>
inline std::shared_ptr<VOLUMEDATAREQUEST> DoRequestProjectedVolumeSubset(VOLUMEDATAREQUEST *request, void *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const int (&minVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], const int (&maxVoxelCoordinates)[VolumeDataLayout::Dimensionality_Max], FloatVector4 const &voxelPlane, DimensionsND projectedDimensions, VolumeDataFormat format, InterpolationMethod interpolationMethod, optional<float> const &replacementNoValue)
inline std::shared_ptr<VolumeDataRequestFloat> DoRequestVolumeSamples(VolumeDataRequestFloat *request, float *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const float (*samplePositions)[VolumeDataLayout::Dimensionality_Max], int sampleCount, InterpolationMethod interpolationMethod, optional<float> const &replacementNoValue)
inline std::shared_ptr<VolumeDataRequestFloat> DoRequestVolumeTraces(VolumeDataRequestFloat *request, float *buffer, int64_t bufferByteSize, DimensionsND dimensionsND, int LOD, int channel, const float (*tracePositions)[VolumeDataLayout::Dimensionality_Max], int traceCount, InterpolationMethod interpolationMethod, int traceDimension, optional<float> const &replacementNoValue)

Private Members

IVolumeDataAccessManager *m_IVolumeDataAccessManager
class VolumeDataRequest
#include <VolumeDataAccessManager.h>

A VolumeDataRequest encapsulates an asynchronous request for volume data from a VDS object instance.

When created by a VolumeDataAccessManager a VolumeDataRequest will be active. The request remains active until either IsCompleted(), IsCanceled() or WaitForCompletion() returns true.

It is supported to access a VolumeDataRequest from a different thread than where it was created, but concurrent access to the same instance from multiple threads can result in race conditions.

Subclassed by OpenVDS::VolumeDataRequest_t< VALUETYPE >

Public Functions

inline VolumeDataRequest()
inline VolumeDataRequest(IVolumeDataAccessManager *manager)
inline VolumeDataRequest(IVolumeDataAccessManager *manager, void *buffer, int64_t bufferByteSize, VolumeDataFormat bufferDataType)
inline VolumeDataRequest(IVolumeDataAccessManager *manager, int64_t bufferByteSize, VolumeDataFormat bufferDataType)
inline virtual ~VolumeDataRequest()

Destructor will automatically cancel the request if it is still active.

inline void ValidateRequest()

Check if the request object is valid. Throws an InvalidOperation exception if the request object is not valid.

inline int64_t RequestID() const

Get the ID of the request.

Returns:

The ID of the request.

inline bool IsCompleted()

Check if the request completed successfully. If the request completed, the buffer now contains valid data.

Returns:

The request is active until either IsCompleted, IsCanceled or WaitForCompletion returns true.

inline bool IsCanceled()

Check if the request was canceled (e.g. the VDS was invalidated before the request was processed). If the request was canceled, the buffer does not contain valid data.

Returns:

The request is active until either IsCompleted, IsCanceled or WaitForCompletion returns true.

inline bool WaitForCompletion(int millisecondsBeforeTimeout = 0)

Wait for the VolumeDataRequest to complete successfully. If the request completed, the buffer now contains valid data.

Parameters:

millisecondsBeforeTimeout – The number of milliseconds to wait before timing out (optional). A value of 0 indicates there is no timeout and we will wait for however long it takes. Note that the request is not automatically canceled if the wait times out, you can also use this mechanism to e.g. update a progress bar while waiting. If you want to cancel the request you have to explicitly call CancelRequest() and then wait for the request to stop writing to the buffer.

Returns:

The request is active until either IsCompleted, IsCanceled or WaitForCompletion returns true. Whenever WaitForCompletion returns false you need to call IsCanceled() to know if that was because of a timeout or if the request was canceled.

inline void Cancel()

Try to cancel the request. You still have to call WaitForCompletion/IsCanceled to make sure the buffer is not being written to and to take the job out of the system. It is possible that the request has completed concurrently with the call to Cancel in which case WaitForCompletion will return true.

inline void CancelAndWaitForCompletion()

Cancel the request and wait for it to complete. This call will block until the request has completed so you can be sure the buffer is not being written to and the job is taken out of the system.

inline int GetErrorCode()

Get the error code of a request that has been cancelled.

Returns:

The error code. If the error code is positive, it corresponds to the enum values in Hue::HueSpaceLib::ErrorCode. Compute plugins may set their own negative error code, which causes the return value of this method to be a plain int value that does not correspond to one of the enum values.

inline std::string GetErrorMessage()

Get the error string of a request that has been cancelled.

Returns:

The error string.

inline float GetCompletionFactor()

Get the completion factor (between 0 and 1) of the request.

Returns:

A factor (between 0 and 1) indicating how much of the request has been completed.

inline void *Buffer() const

Get the pointer to the buffer the request is writing to.

Returns:

The pointer to the buffer the request is writing to.

inline int64_t BufferByteSize() const

Get the size of the buffer the request is writing to.

Returns:

The size of the buffer the request is writing to.

inline VolumeDataFormat BufferDataType() const

Get the volume data format of the buffer the request is writing to.

Returns:

The volume data format of the buffer the request is writing to.

Protected Functions

inline void SetJobID(int64_t id)
inline virtual bool IsDataOwner() const
inline void CancelInternal()

Protected Attributes

IVolumeDataAccessManager *m_Manager
void *m_Buffer
int64_t m_BufferByteSize
VolumeDataFormat m_BufferDataType
bool m_IsCompleted
bool m_IsCanceled
int64_t m_JobID
std::vector<uint8_t> m_Data
ReadErrorException m_Error

Protected Static Functions

static inline void Deleter(VolumeDataRequest *pcThis)

Friends

friend class VolumeDataAccessManager
template<>
struct RequestFormat<double>

Public Static Attributes

static constexpr VolumeDataFormat format = VolumeDataFormat::Format_R64
template<>
struct RequestFormat<float>

Public Static Attributes

static constexpr VolumeDataFormat format = VolumeDataFormat::Format_R32
template<>
struct RequestFormat<uint16_t>

Public Static Attributes

static constexpr VolumeDataFormat format = VolumeDataFormat::Format_U16
template<>
struct RequestFormat<uint32_t>

Public Static Attributes

static constexpr VolumeDataFormat format = VolumeDataFormat::Format_U32
template<>
struct RequestFormat<uint64_t>

Public Static Attributes

static constexpr VolumeDataFormat format = VolumeDataFormat::Format_U64
template<>
struct RequestFormat<uint8_t>

Public Static Attributes

static constexpr VolumeDataFormat format = VolumeDataFormat::Format_U8
template<typename VALUETYPE>
class VolumeDataRequest_t : public OpenVDS::VolumeDataRequest

Public Types

using element_t = VALUETYPE

Public Functions

inline virtual ~VolumeDataRequest_t() override
inline virtual std::vector<VALUETYPE> &Data()

Protected Functions

inline virtual bool IsDataOwner() const override
inline VolumeDataRequest_t(IVolumeDataAccessManager *manager, void *buffer, int64_t bufferByteSize)
inline VolumeDataRequest_t(IVolumeDataAccessManager *manager, int64_t bufferByteSize)
inline void EnsureRequestCompleted()

Protected Attributes

std::vector<VALUETYPE> m_TypedData

Friends

friend class VolumeDataAccessManager