00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined SOCPUBUFFERFROMVOLUMEREADER_H
00024 #define SOCPUBUFFERFROMVOLUMEREADER_H
00025
00026 class SoVolumeReader;
00027 class SoDataSet;
00028
00029
00030 #include <Inventor/SbDataType.h>
00031 #include <Inventor/devices/SoCpuBufferObject.h>
00032
00033
00034 #include <LDM/SoLDMTileID.h>
00035 #include <LDM/tiles/SoBufferPropertiesInterface.h>
00036 #include <LDM/tiles/SoLDMBufferObjectInterface.h>
00037
00038 class SoGLBufferObject;
00039
00051 class SoCpuBufferFromVolumeReader: public SoCpuBufferObject, public SoBufferPropertiesInterface, public SoLDMBufferObjectInterface
00052 {
00053 SO_TYPED_CLASS_HEADER();
00054
00055
00056 public:
00057
00064 SoCpuBufferFromVolumeReader( SoDataSet* dataset, SoLDMTileID tileId );
00065
00077 virtual void map( SoBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition, size_t mappingSize = SO_BUFFER_SIZE_ALL);
00078
00084 virtual void map( SoCpuBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL );
00085
00091 virtual void map( SoGLBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL );
00092
00103 virtual void* map(AccessMode accessMode, size_t offset = 0, size_t count = SO_BUFFER_SIZE_ALL);
00104
00113 virtual void unmap( SoCpuBufferObject* bufferObject );
00114
00123 virtual void unmap( SoGLBufferObject* bufferObject );
00124
00131 void unmap( SoBufferObject* bufferObject );
00132
00138 virtual void unmap();
00139
00146 virtual bool setSize( size_t size );
00147
00156 bool getMinMax ( double& min, double& max);
00157
00161 size_t getRealSize() const;
00162
00163 private:
00167 virtual ~SoCpuBufferFromVolumeReader();
00168
00169 SoINTERNAL private:
00170
00171 virtual SoCpuBufferObject* createCachedBuffer();
00172
00173 virtual void prefetchBuffer();
00174
00175 private:
00176
00177 SoLDMTileID m_tileId;
00178 SoDataSet* m_ds;
00179
00183 SoCpuBufferFromVolumeReader() {}
00184
00185 };
00186
00187 #endif //SOCPUBUFFERFROMVOLUMEREADER_H
00188
00189