00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkConeBeamRealTimePD_h
00012 #define __mitkConeBeamRealTimePD_h
00013
00014 #include "mitkConeBeamPD.h"
00015 #include "mitkICVolume.h"
00016 #include "mitkRawReader.h"
00017 #include "mitkRCPtr.h"
00018 #include <string>
00019 #include <windows.h>
00020 using std::string;
00021 using std::ifstream;
00026
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 class MITK_RECONSTRUCTION_API mitkConeBeamRealTimePD : public mitkConeBeamPD
00041 {
00042 public:
00043 MITK_TYPE(mitkConeBeamRealTimePD,mitkConeBeamPD)
00044
00045 virtual void PrintSelf(ostream& os);
00046
00047 mitkConeBeamRealTimePD();
00048
00054 virtual unsigned long long GetActualMemorySize() const ;
00055
00059 virtual void ShallowCopy(mitkDataObject *src);
00060
00064 virtual void DeepCopy(mitkDataObject *src);
00065
00070 void SetBlockSize(int m){m_BlockSize = m; totalBlockNum = this->GetFrameNum()/m;}
00071
00075 bool SetFileName(const char *m);
00076
00077
00081 void SetIsOneFile(bool onefile) {IsOneFile = onefile;}
00082
00086 void SetFilePostfixNum(int m) {fix = m;}
00087
00091
00092 virtual void const* GetFrameForRead(int frameIdx);
00093
00097
00098 virtual void* GetFrameForWrite(int frameIdx){return NULL;};
00102
00103
00104 virtual void* GetFrameForReadWrite(int frameIdx) ;
00108 int GetRecycleNum() const {return recycleNum; }
00109
00113 void SetRecycleNum(int m) {recycleNum = m; }
00114
00115 virtual bool Allocate();
00116
00117 virtual void Initialize();
00118
00119 void SetFileBeginName(int m) {beginName = m;}
00120
00121 protected:
00122 void ErrorReport(const char *m);
00123 static unsigned __stdcall ReadData( void* para);
00124 virtual ~mitkConeBeamRealTimePD();
00125
00126 private:
00127 bool IsOneFile;
00128 FILE *fp;
00129 int m_BlockSize;
00130
00131 int recycleNum;
00132 int totalBlockNum;
00133 int mBlockHead;
00134 int beginName;
00135 int mBlockBytes;
00136 int fix;
00137 bool isfileNameFixLength;
00138 mitkRawReader *reader;
00139 string filename;
00140 string savedFn;
00141 mitkRCPtr<mitkVolume> m_Data1;
00142 mitkRCPtr<mitkVolume> m_Data2;
00143 int beUsing;
00144 const int maxEffectBlock;
00145 HANDLE readDataThread;
00146 unsigned readDataThreadID;
00147 HANDLE readyUse;
00148 HANDLE readyRead;
00149 private:
00150 mitkConeBeamRealTimePD(const mitkConeBeamRealTimePD&);
00151 void operator = (const mitkConeBeamRealTimePD&);
00152
00153
00154 };
00155
00156
00157
00158
00159
00160
00161 #endif
00162