X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vtk%2FvtkGdcm4DSplitter.h;h=c643a95af3e1eb8d2c9116a4aba38e6d5091760a;hb=a13370a2d5abfe74b91cedf9512bd644c80737e1;hp=04d8abbffc78f6b7359ad89fac6946bbfe15c6ff;hpb=9c2a69fd5efbcd96f0130811bc0043a0b5d69c92;p=gdcm.git diff --git a/vtk/vtkGdcm4DSplitter.h b/vtk/vtkGdcm4DSplitter.h index 04d8abbf..c643a95a 100644 --- a/vtk/vtkGdcm4DSplitter.h +++ b/vtk/vtkGdcm4DSplitter.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: vtkGdcm4DSplitter.h,v $ Language: C++ - Date: $Date: 2011/03/29 12:49:27 $ - Version: $Revision: 1.1 $ + Date: $Date: 2011/04/15 15:14:40 $ + Version: $Revision: 1.10 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,81 +21,127 @@ #include #include -#include "gdcmDirList.h" +#include "gdcmDirList.h" +#include "gdcmFile.h" +#include "gdcmSerieHelper.h" -//namespace GDCM_NAME_SPACE -//{ +typedef bool (*FoncComp)(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2); + +#define CALL_MEMBER_FONC(object, ptrToFoncMember) ((object).*(ptrToFoncMember)) + + typedef struct + { + std::string strIPP; + double dist; + GDCM_NAME_SPACE::File *file; + } ELEM; + + +//namespace GDCM_NAME_SPACE +//{ class vtkGdcm4DSplitter { public: - +//----------------------------------------------------------------------------- + vtkGdcm4DSplitter(); - ~vtkGdcm4DSplitter(){}; - bool setDirName(std::string &dirName); - bool setVectDirName(std::vector &vectDirName); - bool setVectFileName(std::vector &vectFileName); + ~vtkGdcm4DSplitter(); + + // Locate Data to process + // ====================== + void setRecursive(bool recursive); + bool setDirName (std::string &dirName); + bool setVectDirName (std::vector &vectDirName); + bool setVectFileName(std::vector &vectFileName); - inline void setSplitOnPosition() {SplitOnPosition=true; SplitOnOrientation=false; SplitOnTag=false;} - inline void setSplitOnOrientation(){SplitOnPosition=false; SplitOnOrientation=true; SplitOnTag=false;} - inline void setSplitOnTag(unsigned short int splitGroup, unsigned short int splitElem) - {SplitOnPosition=false; SplitOnOrientation=false; SplitOnTag=true; - SplitGroup=splitGroup; SplitElem=splitElem;} - inline void setSplitConvertToFloat(bool conv) {SplitConvertToFloat=conv;} + bool setVectGdcmFile(std::vector *vectGdcmFile); - inline void setSortOnPosition() {SortOnPosition=true; SortOnOrientation=false; SortOnTag=false; SortOnFileName=false;} - // SortOnOrientation : not yet made - //inline void setSortOnOrientation(){SortOnPosition=false; SortOnOrientation=true; SortOnTag=false; SortOnFileName=false;} - inline void setSortOnTag(unsigned short int sortGroup, unsigned short int sortElem) - {SortOnPosition=false; SortOnOrientation=false; SortOnTag=true; SortOnFileName=false; - SortGroup=sortGroup; SortElem=sortElem;} - inline void setSortConvertToFloat(bool conv) {SortConvertToFloat=conv;} - - inline void setSortOnFileName() {SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=true;} - inline void setRecursive(bool recursive) { Recursive=recursive;} + bool SetFlipY(bool f) { FlipY = f;} + + // Split + // ===== + void setSplitOnPosition(); + void setSplitOnOrientation(); + void setSplitOnTag(unsigned short int splitGroup, unsigned short int splitElem); + + void setSplitConvertToFloat(bool conv); + + void setSplitOnly(bool s); + + // Sort + // ==== + void setSortOnPosition(); + // use setSortOnUserFunction, instead! + // void setSortOnTag(unsigned short int sortGroup, unsigned short int sortElem) + // {SortOnPosition=false; SortOnOrientation=false; SortOnTag=true; SortOnFileName=false; SortOnUserFunction=false; + // SortGroup=sortGroup; SortElem=sortElem;} + + void setSortOnUserFunction (FoncComp f); + + //void setSortConvertToFloat(bool conv); + + void setSortOnFileName(); + + // SortOnOrientation : not yet made; IOP sorter missing! + //inline void setSortOnOrientation(){SortOnPosition=false; SortOnOrientation=true; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=false;} std::vector *GetImageDataVector(); vtkImageData *GetImageData(); - bool Go(); - + std::vector< GDCM_NAME_SPACE::FileList *> *GetVectGdcmFileLists(); + + bool Go(); + protected: private: bool CompareOnSortTag (GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2); - bool CompareOnSortTagConvertToFloat(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2); - + bool CompareOnSortTagConvertToFloat(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2); + void reorgXCoherentFileSetmap (GDCM_NAME_SPACE::XCoherentFileSetmap &xcm); + bool sortVectElem(std::vector *le); + // Data // ---- - public: + public: protected: private: std::string DirName; std::vector VectDirName; std::vector VectFileName; - + bool SplitOnPosition; bool SplitOnOrientation; bool SplitOnTag; - + unsigned short int SplitGroup; unsigned short int SplitElem; bool SplitConvertToFloat; - + bool SplitOnly; + bool SortOnPosition; bool SortOnOrientation; - bool SortOnTag; + bool SortOnTag; bool SortOnFileName; + bool SortOnUserFunction; + + FoncComp UserCompareFunction; unsigned short int SortGroup; unsigned short int SortElem; bool SortConvertToFloat; - + bool Recursive; int TypeDir; - int TypeResult; + //int TypeResult; bool verbose; std::vector *ImageDataVector; - vtkImageData *ImageData; + vtkImageData *ImageData; + //std::vector VectGdcmFile; + GDCM_NAME_SPACE::FileList *VectGdcmFile; + GDCM_NAME_SPACE::XCoherentFileSetmap xcm; + //std::vector > VectGdcmFileLists; + std::vector VectGdcmFileLists; + bool FlipY; }; - + //} // end namespace gdcm //-----------------------------------------------------------------------------