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 SOCUDADATAEXTRACT_H
00024 #define SOCUDADATAEXTRACT_H
00025
00026 #include <Inventor/SbString.h>
00027
00028 #include <Inventor/STL/vector>
00029
00030 #include <Inventor/algorithms/SoDataExtract.h>
00031
00032 #include <Inventor/cuda/algorithms/SoCudaAlgorithmsDefs.h>
00033
00034 class SoCudaHandle;
00035 class SoCudaBufferObject;
00036
00058 class SoCudaDataExtract : public SoDataExtract
00059 {
00060 public:
00061
00063 SoCudaDataExtract();
00064
00065 private:
00067 virtual ~SoCudaDataExtract();
00068
00069
00071 static void initClass();
00072
00074 static void exitClass();
00075
00076 public:
00080 virtual int getXSliceFromTile( SoBufferObject* inputTile, int dimx,int dimy,int dimz, int datumSize, int slice, SoBufferObject* outputSlice);
00081
00085 virtual int getYSliceFromTile( SoBufferObject* inputTile, int dimx,int dimy,int dimz, int datumSize, int slice, SoBufferObject* outputSlice);
00086
00090 virtual int getZSliceFromTile( SoBufferObject* inputTile, int dimx,int dimy,int dimz, int datumSize, int slice, SoBufferObject* outputSlice);
00091
00095 virtual int copyTile( SoBufferObject* inputTile,int tileDimx, int tileDimy, int tileDimz, int originX, int originY, int originZ, int datumSize,
00096 int bufDimX, int bufDimY, int bufDimZ,int vMinX, int vMinY, int vMinZ, int vMaxX, int vMaxY, int vMaxZ,
00097 SoBufferObject* outputBuffer );
00098
00102 virtual int copyPlane( SoBufferObject* inputTile, int tileDimX, int tileDimY, int tileDimZ, int originX, int originY, int originZ,
00103 int datumSize, int bufDimX, int qminX, int qminY, int qminZ,
00104 int qmaxX, int qmaxY, int qmaxZ, float normI, float normJ, float normK,
00105 float distance, int xAxis, int yAxis, int zAxis, SoBufferObject* outputBuffer );
00106
00107
00108
00112 int getXSliceFromTile( SoCudaBufferObject* inputTile, int dimx,int dimy,int dimz, int datumSize, int slice, SoCudaBufferObject* outputSlice);
00113
00117 int getYSliceFromTile( SoCudaBufferObject* inputTile, int dimx,int dimy,int dimz, int datumSize, int slice, SoCudaBufferObject* outputSlice);
00118
00122 int getZSliceFromTile( SoCudaBufferObject* inputTile, int dimx,int dimy,int dimz, int datumSize, int slice, SoCudaBufferObject* outputSlice);
00123
00127 int copyTile( SoCudaBufferObject* inputTile,int tileDimx, int tileDimy, int tileDimz, int originX, int originY, int originZ, int datumSize,
00128 int bufDimX, int bufDimY, int bufDimZ,int vMinX, int vMinY, int vMinZ, int vMaxX, int vMaxY, int vMaxZ,
00129 SoCudaBufferObject* outputBuffer );
00130
00134 int copyPlane( SoCudaBufferObject* inputTile, int tileDimX, int tileDimY, int tileDimZ, int originX, int originY, int originZ,
00135 int datumSize, int bufDimX, int qminX, int qminY, int qminZ,
00136 int qmaxX, int qmaxY, int qmaxZ, float normI, float normJ, float normK,
00137 float distance, int xAxis, int yAxis, int zAxis, SoCudaBufferObject* outputBuffer );
00138
00139 private:
00140
00141 SoCudaHandle* m_getSliceFromTileHandle;
00142 SoCudaHandle* m_copyTileHandle;
00143 SoCudaHandle* m_copyPlaneHandle;
00144
00145 };
00146
00147 #endif //SODATAEXTRACT_H
00148
00149