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 SOCPUBUFFERCOMPRESSED_H
00024 #define SOCPUBUFFERCOMPRESSED_H
00025
00026 class SoDataCompressor;
00027
00028
00029 #include <Inventor/devices/SoCpuBufferObject.h>
00030 #include <Inventor/devices/SoGLBufferObject.h>
00031
00032
00033 #include <LDM/tiles/SoBufferPropertiesInterface.h>
00034 #include <LDM/tiles/SoLDMBufferObjectInterface.h>
00035 #include <LDM/compressors/SoDataCompressor.h>
00036
00051 class SoCpuBufferCompressed: public SoCpuBufferObject, public SoBufferPropertiesInterface, public SoLDMBufferObjectInterface
00052 {
00053 SO_TYPED_CLASS_HEADER();
00054
00055
00056 public:
00057
00058
00062 SoCpuBufferCompressed();
00063
00067 SoCpuBufferCompressed(SoDataCompressor* compressor);
00068
00080 virtual void map( SoBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL );
00081
00087 virtual void map( SoCpuBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL);
00088
00094 virtual void map( SoGLBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL);
00095
00102 virtual void* map( AccessMode accessMode, size_t offset = 0, size_t count = SO_BUFFER_SIZE_ALL );
00103
00112 virtual void unmap( SoCpuBufferObject* bufferObject );
00113
00122 virtual void unmap( SoGLBufferObject* bufferObject );
00123
00132 virtual void unmap( SoBufferObject* bufferObject );
00133
00139 virtual void unmap();
00140
00149 virtual bool getMinMax ( double& min, double& max);
00150
00157 virtual void setMinMax(const double& min, const double& max);
00158
00162 size_t getRealSize() const;
00163
00169 virtual void setCompressor( SoDataCompressor* compressor );
00170
00177 virtual bool setSize( size_t size );
00178
00179 private:
00180 SoCpuBufferCompressed(SoDataCompressor* compressor, const SoDataCompressor::TileInfo& tileInfo);
00181 bool setTileInfo( const SoDataCompressor::TileInfo& tileInfo);
00182
00183 private:
00187 virtual ~SoCpuBufferCompressed();
00188
00189 SoINTERNAL private:
00190
00191 virtual SoCpuBufferObject* createCachedBuffer();
00192
00193 virtual void prefetchBuffer();
00194
00195 private:
00196 SoDataCompressor* m_compressor;
00197 SoDataCompressor::TileInfo m_tileInfo;
00198
00199
00200 };
00201
00202 #endif //SOCPUBUFFERCOMPRESSED_H
00203