/*========================================================================= Program: wxMaracas Module: $RCSfile: marGdcmDicom.h,v $ Language: C++ Date: $Date: 2008/10/31 16:32:55 $ Version: $Revision: 1.1 $ Copyright: (c) 2002, 2003 License: This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #ifndef __MAR__KERNEL__MARGDCMDICOM__HXX__ #define __MAR__KERNEL__MARGDCMDICOM__HXX__ #include #include #include #include #include "gdcmDicomDir.h" #include "gdcmSerieHelper.h" #include "gdcmDicomDirPatient.h" #include "gdcmDicomDirStudy.h" #include "gdcmDicomDirSerie.h" #include "gdcmDicomDirImage.h" #include "marDicomBase.h" typedef std::vector SerieInfo; //DICOM info for each serie /** * Shouldn't we break the dependencies to wx ??? * * We use vector instead of list for efficiency: for access time * futhermore the number of patient is not changing a lot, so we * might add the number of patient to params.dat, to allocate the right * number of vector * */ // EED // class MAR_KERNEL_EXPORT marGdcmDicom : public marObject class marGdcmDicom : public marFilesBase { public: marGdcmDicom( marParameters* p = NULL ); ~marGdcmDicom( ){ reset( ); } void loadActualSerie(wxGauge* gauge ); void loadVolume( bool force = false, wxGauge* gauge = NULL); void PrepareLoadVolumeDispers(); virtual bool loadImage(int i); bool loadFileDicom(void* p_vol,int *dim,char *namefile); /** * General methods */ void reset( ); void Cleaning_gdcmFileList(); void copyFrom( const marObject& from ); /** * Persistence methods */ bool save( std::ofstream& os ); bool load( std::ifstream& is ); void CreateDicomFile( ); void FillDicomInfo(bool parseDir); wxString GetPatientName(); GDCM_NAME_SPACE::DicomDir* getGdcmDicomDir(); GDCM_NAME_SPACE::DicomDirStudy* getActualStudy(); void setActualPatient(GDCM_NAME_SPACE::DicomDirPatient *patient); void setActualStudy(GDCM_NAME_SPACE::DicomDirStudy *study); void setActualSerie(GDCM_NAME_SPACE::DicomDirSerie *serie); void setIniSlice(int iniSlice); void setEndSlice(int endSlice); GDCM_NAME_SPACE::DicomDirSerie *getActualSerie(); private: std::vector< SerieInfo > m_DicomInfo; GDCM_NAME_SPACE::DicomDir *_dicomDir; GDCM_NAME_SPACE::DicomDirPatient *_actualPatient; GDCM_NAME_SPACE::DicomDirStudy *_actualStudy; GDCM_NAME_SPACE::DicomDirSerie *_actualSerie; GDCM_NAME_SPACE::DicomDirImage *_actualImage; int _iniSlice; int _endSlice; virtual void CreateSerieHelper(); void CreateEmptyVoxel(); void ExtactSpacing(); void ExtactInterceptSlope(); bool SerieVerification( GDCM_NAME_SPACE::FileList *gdcmFileList ); bool SerieVerificationEqImageSize( GDCM_NAME_SPACE::FileList *gdcmFileList ); // bool SerieVerificationEqImageOrientation( GDCM_NAME_SPACE::GdcmFileList *gdcmFileList ); protected: GDCM_NAME_SPACE::FileList _gdcmFileList; }; //------------------------------------------------------------------- class marGdcmDicomILPD : public marGdcmDicom { public: marGdcmDicomILPD( marParameters* p = NULL ); private: virtual void CreateSerieHelper(); protected: }; //------------------------------------------------------------------- #endif // __MAR__KERNEL__MARGDCMDICOM__HXX__