00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkRawConeBeamProjectData_h
00012 #define __mitkRawConeBeamProjectData_h
00013
00014 #include "mitkConeBeamProjectData.h"
00015 #include "mitkICVolume.h"
00016 #include "mitkRawReader.h"
00017 #include <string>
00018 #include <windows.h>
00019 using std::string;
00020 using std::ifstream;
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 class MITK_RECONSTRUCTION_API mitkRawConeBeamProjectData : public mitkConeBeamProjectData
00054 {
00055 public:
00056 MITK_TYPE(mitkRawConeBeamProjectData,mitkConeBeamProjectData)
00057
00058 virtual void PrintSelf(ostream& os);
00059
00060 mitkRawConeBeamProjectData();
00061
00067 virtual unsigned long long GetActualMemorySize() const ;
00068
00072 virtual void ShallowCopy(mitkDataObject *src);
00073
00077 virtual void DeepCopy(mitkDataObject *src);
00078
00083 void SetBlockSize(int m){m_BlockSize = m; totalBlockNum = this->GetAngleNum()/m;}
00084
00088 bool SetFileName(const char *m);
00089
00090
00094 void SetIsOneFile(bool onefile) {IsOneFile = onefile;}
00095
00099 void SetFilePostfixNum(int m) {fix = m;}
00100
00104 virtual void const* GetAngleSliceForRead(int sliceIdx);
00105
00109 virtual void* GetAngleSliceForWrite(int sliceIdx) {return NULL;}
00110
00114 virtual void* GetAngleSliceForReadWrite(int sliceIdx);
00115
00119 int GetGpuBlockNum() const {return gpuBlockNum; }
00120
00124 void SetGpuBlockNum(int m) {gpuBlockNum = m; }
00125
00126 virtual bool Allocate();
00127
00128 virtual void Initialize();
00129
00130 void SetFileBeginName(int m) {beginName = m;}
00131
00132 protected:
00133 void ErrorReport(const char *m);
00134 static unsigned __stdcall ReadData( void* para);
00135 virtual ~mitkRawConeBeamProjectData();
00136
00137 private:
00138 bool IsOneFile;
00139 FILE *fp;
00140 int m_BlockSize;
00141 int gpuBlockNum;
00142 int totalBlockNum;
00143 int mBlockHead;
00144 int beginName;
00145 int mBlockBytes;
00146 int fix;
00147 bool isfileNameFixLength;
00148 mitkRawReader *reader;
00149 string filename;
00150 string savedFn;
00151 mitkRCPtr<mitkVolume> m_Data1;
00152 mitkRCPtr<mitkVolume> m_Data2;
00153 int beUsing;
00154 const int maxEffectBlock;
00155 HANDLE readDataThread;
00156 unsigned readDataThreadID;
00157 HANDLE readyUse;
00158 HANDLE readyRead;
00159
00160 private:
00161 mitkRawConeBeamProjectData(const mitkRawConeBeamProjectData&);
00162 void operator = (const mitkRawConeBeamProjectData&);
00163
00164
00165 };
00166
00167
00168
00169
00170
00171
00172 #endif
00173