File VolumeDataAccess.h
-
namespace OpenVDS
Typedefs
-
using VolumeData2DInterpolatingAccessorR64 = VolumeDataReadAccessor<FloatVector2, double>
-
using VolumeData2DInterpolatingAccessorR32 = VolumeDataReadAccessor<FloatVector2, float>
-
using VolumeData2DReadAccessorR64 = VolumeDataReadAccessor<IntVector2, double>
-
using VolumeData2DReadAccessorU64 = VolumeDataReadAccessor<IntVector2, uint64_t>
-
using VolumeData2DReadAccessorR32 = VolumeDataReadAccessor<IntVector2, float>
-
using VolumeData2DReadAccessorU32 = VolumeDataReadAccessor<IntVector2, uint32_t>
-
using VolumeData2DReadAccessorU16 = VolumeDataReadAccessor<IntVector2, uint16_t>
-
using VolumeData2DReadAccessorU8 = VolumeDataReadAccessor<IntVector2, uint8_t>
-
using VolumeData2DReadAccessor1Bit = VolumeDataReadAccessor<IntVector2, bool>
-
using VolumeData2DReadWriteAccessorR64 = VolumeDataReadWriteAccessor<IntVector2, double>
-
using VolumeData2DReadWriteAccessorU64 = VolumeDataReadWriteAccessor<IntVector2, uint64_t>
-
using VolumeData2DReadWriteAccessorR32 = VolumeDataReadWriteAccessor<IntVector2, float>
-
using VolumeData2DReadWriteAccessorU32 = VolumeDataReadWriteAccessor<IntVector2, uint32_t>
-
using VolumeData2DReadWriteAccessorU16 = VolumeDataReadWriteAccessor<IntVector2, uint16_t>
-
using VolumeData2DReadWriteAccessorU8 = VolumeDataReadWriteAccessor<IntVector2, uint8_t>
-
using VolumeData2DReadWriteAccessor1Bit = VolumeDataReadWriteAccessor<IntVector2, bool>
-
using VolumeData3DInterpolatingAccessorR64 = VolumeDataReadAccessor<FloatVector3, double>
-
using VolumeData3DInterpolatingAccessorR32 = VolumeDataReadAccessor<FloatVector3, float>
-
using VolumeData3DReadAccessorR64 = VolumeDataReadAccessor<IntVector3, double>
-
using VolumeData3DReadAccessorU64 = VolumeDataReadAccessor<IntVector3, uint64_t>
-
using VolumeData3DReadAccessorR32 = VolumeDataReadAccessor<IntVector3, float>
-
using VolumeData3DReadAccessorU32 = VolumeDataReadAccessor<IntVector3, uint32_t>
-
using VolumeData3DReadAccessorU16 = VolumeDataReadAccessor<IntVector3, uint16_t>
-
using VolumeData3DReadAccessorU8 = VolumeDataReadAccessor<IntVector3, uint8_t>
-
using VolumeData3DReadAccessor1Bit = VolumeDataReadAccessor<IntVector3, bool>
-
using VolumeData3DReadWriteAccessorR64 = VolumeDataReadWriteAccessor<IntVector3, double>
-
using VolumeData3DReadWriteAccessorU64 = VolumeDataReadWriteAccessor<IntVector3, uint64_t>
-
using VolumeData3DReadWriteAccessorR32 = VolumeDataReadWriteAccessor<IntVector3, float>
-
using VolumeData3DReadWriteAccessorU32 = VolumeDataReadWriteAccessor<IntVector3, uint32_t>
-
using VolumeData3DReadWriteAccessorU16 = VolumeDataReadWriteAccessor<IntVector3, uint16_t>
-
using VolumeData3DReadWriteAccessorU8 = VolumeDataReadWriteAccessor<IntVector3, uint8_t>
-
using VolumeData3DReadWriteAccessor1Bit = VolumeDataReadWriteAccessor<IntVector3, bool>
-
using VolumeData4DInterpolatingAccessorR64 = VolumeDataReadAccessor<FloatVector4, double>
-
using VolumeData4DInterpolatingAccessorR32 = VolumeDataReadAccessor<FloatVector4, float>
-
using VolumeData4DReadAccessorR64 = VolumeDataReadAccessor<IntVector4, double>
-
using VolumeData4DReadAccessorU64 = VolumeDataReadAccessor<IntVector4, uint64_t>
-
using VolumeData4DReadAccessorR32 = VolumeDataReadAccessor<IntVector4, float>
-
using VolumeData4DReadAccessorU32 = VolumeDataReadAccessor<IntVector4, uint32_t>
-
using VolumeData4DReadAccessorU16 = VolumeDataReadAccessor<IntVector4, uint16_t>
-
using VolumeData4DReadAccessorU8 = VolumeDataReadAccessor<IntVector4, uint8_t>
-
using VolumeData4DReadAccessor1Bit = VolumeDataReadAccessor<IntVector4, bool>
-
using VolumeData4DReadWriteAccessorR64 = VolumeDataReadWriteAccessor<IntVector4, double>
-
using VolumeData4DReadWriteAccessorU64 = VolumeDataReadWriteAccessor<IntVector4, uint64_t>
-
using VolumeData4DReadWriteAccessorR32 = VolumeDataReadWriteAccessor<IntVector4, float>
-
using VolumeData4DReadWriteAccessorU32 = VolumeDataReadWriteAccessor<IntVector4, uint32_t>
-
using VolumeData4DReadWriteAccessorU16 = VolumeDataReadWriteAccessor<IntVector4, uint16_t>
-
using VolumeData4DReadWriteAccessorU8 = VolumeDataReadWriteAccessor<IntVector4, uint8_t>
-
using VolumeData4DReadWriteAccessor1Bit = VolumeDataReadWriteAccessor<IntVector4, bool>
-
template<typename T>
struct IndexRegion
-
class IVolumeDataAccessor
Subclassed by OpenVDS::IVolumeDataAccessorWithRegions< INDEX >
Public Functions
-
virtual VolumeDataLayout const *GetLayout() = 0
-
class Manager
Public Functions
-
virtual void DestroyVolumeDataAccessor(IVolumeDataAccessor *accessor) = 0
-
virtual IVolumeDataAccessor *CloneVolumeDataAccessor(IVolumeDataAccessor const &accessor) = 0
-
virtual void DestroyVolumeDataAccessor(IVolumeDataAccessor *accessor) = 0
-
virtual VolumeDataLayout const *GetLayout() = 0
-
template<typename INDEX>
class IVolumeDataAccessorWithRegions : public OpenVDS::IVolumeDataAccessor, public OpenVDS::IVolumeDataRegions<INDEX> Subclassed by OpenVDS::IVolumeDataReadAccessor< INDEX, T >
Public Functions
-
virtual IndexRegion<INDEX> CurrentRegion() = 0
-
virtual IndexRegion<INDEX> CurrentRegion() = 0
-
template<typename INDEX, typename T>
class IVolumeDataReadAccessor : public OpenVDS::IVolumeDataAccessorWithRegions<INDEX> Subclassed by OpenVDS::IVolumeDataReadWriteAccessor< INDEX, T >
-
template<typename INDEX, typename T>
class IVolumeDataReadWriteAccessor : public OpenVDS::IVolumeDataReadAccessor<INDEX, T>
-
template<typename INDEX>
class IVolumeDataRegions Subclassed by OpenVDS::IVolumeDataAccessorWithRegions< INDEX >
Public Functions
-
virtual int64_t RegionCount() = 0
-
virtual IndexRegion<INDEX> Region(int64_t region) = 0
Protected Functions
-
inline virtual ~IVolumeDataRegions()
-
virtual int64_t RegionCount() = 0
-
class VolumeDataPage
Public Functions
-
virtual VolumeDataPageAccessor &GetVolumeDataPageAccessor() const = 0
-
virtual void GetMinMax(int (&min)[Dimensionality_Max], int (&max)[Dimensionality_Max]) const = 0
-
virtual void GetMinMaxExcludingMargin(int (&minExcludingMargin)[Dimensionality_Max], int (&maxExcludingMargin)[Dimensionality_Max]) const = 0
-
virtual ReadErrorException GetError() const = 0
-
virtual const void *GetBuffer(int (&size)[Dimensionality_Max], int (&pitch)[Dimensionality_Max]) = 0
-
inline const void *GetBuffer(int (&pitch)[Dimensionality_Max])
-
virtual void *GetWritableBuffer(int (&size)[Dimensionality_Max], int (&pitch)[Dimensionality_Max]) = 0
-
inline void *GetWritableBuffer(int (&pitch)[Dimensionality_Max])
-
virtual void UpdateWrittenRegion(const int (&writtenMin)[Dimensionality_Max], const int (&writtenMax)[Dimensionality_Max]) = 0
-
virtual void Release() = 0
-
virtual VolumeDataPageAccessor &GetVolumeDataPageAccessor() const = 0
-
class VolumeDataPageAccessor
Public Types
-
enum AccessMode
Values:
-
enumerator AccessMode_ReadOnly
The volume data page accessor will only be used for reading.
-
enumerator AccessMode_ReadWrite
The volume data page accessor will be used for reading and writing (can only be used with LOD 0, the other LODs will be automatically updated)
-
enumerator AccessMode_Create
The volume data page accessor will be used to write new data, overwriting any existing data (can only be used with LOD 0, the other LODs will be automatically created)
-
enumerator AccessMode_CreateWithoutLODGeneration
The volume data page accessor will be used to write new data, overwriting any existing data (each LOD has to be created separately)
-
enumerator AccessMode_ReadWriteWithoutLODGeneration
The volume data page accessor will be used used for reading and writing (each LOD has to be created separately)
-
enumerator AccessMode_ReadOnly
Public Functions
-
virtual VolumeDataLayout const *GetLayout() const = 0
-
virtual int GetLOD() const = 0
-
virtual int GetChannelIndex() const = 0
-
virtual VolumeDataChannelDescriptor GetChannelDescriptor() const = 0
-
virtual void GetNumSamples(int (&numSamples)[Dimensionality_Max]) const = 0
-
virtual int64_t GetChunkCount() const = 0
-
virtual void GetChunkMinMax(int64_t chunk, int (&min)[Dimensionality_Max], int (&max)[Dimensionality_Max]) const = 0
-
virtual void GetChunkMinMaxExcludingMargin(int64_t chunk, int (&minExcludingMargin)[Dimensionality_Max], int (&maxExcludingMargin)[Dimensionality_Max]) const = 0
-
virtual uint64_t GetChunkVolumeDataHash(int64_t chunkIndex) const = 0
Get the volume data hash for the given chunk index. The value returned may be tested using the methods VolumeDataHash_IsDefined, VolumeDataHash_IsNoValue, and VolumeDataHash_IsConstant defined in VolumeData.h.
- Parameters:
chunkIndex – The chunk index to get the volume data hash for.
- Returns:
The volume data hash for the chunk.
-
virtual int64_t GetChunkIndex(const int (&position)[Dimensionality_Max]) const = 0
-
virtual int64_t GetMappedChunkIndex(int64_t primaryChannelChunkIndex) const = 0
Get the chunk index for this VolumeDataPageAccessor corresponding to the given chunk index in the primary channel. Because some channels can have mappings (e.g. one value per trace), the number of chunks can be less than in the primary channel and we need to have a mapping to figure out the chunk index in each channel that is produced together.
- Parameters:
primaryChannelChunkIndex – The index of the chunk in the primary channel (channel 0) that we want to map to a chunk index for this VolumeDataPageAccessor.
- Returns:
The chunk index for this VolumeDataPageAccessor corresponding to the given chunk index in the primary channel.
-
virtual int64_t GetPrimaryChannelChunkIndex(int64_t chunkIndex) const = 0
Get the primary channel chunk index corresponding to the given chunk index of this VolumeDataPageAccessor. In order to avoid creating duplicates requests when a channel is mapped, we need to know which primary channel chunk index is representative of a particular mapped chunk index.
- Parameters:
chunkIndex – The chunk index for this VolumeDataPageAccessor that we want the representative primary channel chunk index of.
- Returns:
The primary channel chunk index corresponding to the given chunk index for this VolumeDataPageAccessor.
-
virtual int64_t GetSuperChunkCount() const = 0
Get the number of super-chunks for this VolumeDataPageAccessor. Each super-chunk is an overlapping block of chunks from the remap source of this VolumeDataPageAccessor and the chunks in this VolumeDataPageAccessor. In order to produce the chunks as efficiently as possible (if there are more chunks than super-chunks), any code that iterates over all the chunks of a page accessor should iterate over the super-chunks and then over the chunks within each super-chunk.
- Returns:
The number of super-chunks for this VolumeDataPageAccessor.
-
inline std::vector<int64_t> GetChunkIndicesInSuperChunk(int64_t superChunkIndex) const
Get the list of chunks in the given super-chunk. Each super-chunk is an overlapping block of chunks from the remap source of this VolumeDataPageAccessor and the chunks in this VolumeDataPageAccessor. In order to produce the chunks as efficiently as possible (if there are more chunks than super-chunks), any code that iterates over all the chunks of a page accessor should iterate over the super-chunks and then over the chunks within each super-chunk.
- Parameters:
superChunkIndex – The super-chunk index for this VolumeDataPageAccessor that we want the list of chunks in.
- Returns:
The list of chunks in the super-chunk
-
virtual int AddReference() = 0
-
virtual int RemoveReference() = 0
-
virtual int GetMaxPages() = 0
-
virtual void SetMaxPages(int maxPages) = 0
-
virtual VolumeDataPage *CreatePage(int64_t chunkIndex) = 0
-
virtual void CopyPage(int64_t chunkIndex, VolumeDataPageAccessor const &source) = 0
Copy a page of data from another VolumeDataPageAccessor with a compatible layout. This method is not blocking so if you want to access the copied data you need to call ReadPage which will block until the copy is done and return the copied data.
- Parameters:
chunkIndex – The chunk index to copy
source – The VolumeDataPageAccessor to copy data from
-
virtual VolumeDataPage *ReadPage(int64_t chunkIndex) = 0
-
virtual VolumeDataPage *ReadPageAtPosition(const int (&position)[Dimensionality_Max]) = 0
-
virtual void Commit() = 0
-
enum AccessMode
-
template<typename INDEX, typename T>
class VolumeDataReadAccessor - #include <VolumeDataAccess.h>
A class that provides random read access to the voxel values of a VDS.
Subclassed by OpenVDS::VolumeDataReadWriteAccessor< INDEX, T >
Public Functions
-
inline VolumeDataLayout const *GetLayout() const
-
inline int64_t RegionCount() const
-
inline IndexRegion<INDEX> Region(int64_t region) const
-
inline IndexRegion<INDEX> CurrentRegion() const
-
inline VolumeDataReadAccessor()
-
inline VolumeDataReadAccessor(IVolumeDataReadAccessor<INDEX, T> *accessor)
-
inline VolumeDataReadAccessor(VolumeDataReadAccessor const &readAccessor)
-
inline ~VolumeDataReadAccessor()
Protected Attributes
-
IVolumeDataReadAccessor<INDEX, T> *m_accessor
-
inline VolumeDataLayout const *GetLayout() const
-
template<typename INDEX, typename T>
class VolumeDataReadWriteAccessor : public OpenVDS::VolumeDataReadAccessor<INDEX, T> - #include <VolumeDataAccess.h>
A class that provides random read/write access to the voxel values of a VDS.
Public Functions
-
inline void Commit()
-
inline void Cancel()
-
inline VolumeDataReadWriteAccessor()
-
inline VolumeDataReadWriteAccessor(IVolumeDataReadWriteAccessor<INDEX, T> *accessor)
-
inline VolumeDataReadWriteAccessor(VolumeDataReadWriteAccessor const &readWriteAccessor)
Protected Functions
-
inline IVolumeDataReadWriteAccessor<INDEX, T> *Accessor()
-
inline void Commit()
-
using VolumeData2DInterpolatingAccessorR64 = VolumeDataReadAccessor<FloatVector2, double>