1 /*=========================================================================
4 Module: $RCSfile: vtkGdcm4DSplitter.h,v $
6 Date: $Date: 2011/04/11 11:28:31 $
7 Version: $Revision: 1.8 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
19 #ifndef _VTKGDCM4DSPLITTER_H_
20 #define _VTKGDCM4DSPLITTER_H_
23 #include <vtkImageData.h>
24 #include "gdcmDirList.h"
27 typedef bool (*FoncComp)(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2);
29 #define CALL_MEMBER_FONC(object, ptrToFoncMember) ((object).*(ptrToFoncMember))
35 GDCM_NAME_SPACE::File *file;
39 //namespace GDCM_NAME_SPACE
41 class vtkGdcm4DSplitter {
45 ~vtkGdcm4DSplitter(){};
46 bool setDirName(std::string &dirName);
47 bool setVectDirName(std::vector<std::string> &vectDirName);
48 bool setVectFileName(std::vector<std::string> &vectFileName);
52 inline void setSplitOnPosition() {SplitOnPosition=true; SplitOnOrientation=false; SplitOnTag=false;}
53 inline void setSplitOnOrientation(){SplitOnPosition=false; SplitOnOrientation=true; SplitOnTag=false;}
54 inline void setSplitOnTag(unsigned short int splitGroup, unsigned short int splitElem)
55 {SplitOnPosition=false; SplitOnOrientation=false; SplitOnTag=true;
56 SplitGroup=splitGroup; SplitElem=splitElem;}
57 inline void setSplitConvertToFloat(bool conv) {SplitConvertToFloat=conv;}
61 inline void setSortOnPosition() {SortOnPosition=true; SortOnOrientation=false; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=false;
63 // use setSortOnUserFunction, instead!
64 // inline void setSortOnTag(unsigned short int sortGroup, unsigned short int sortElem)
65 // {SortOnPosition=false; SortOnOrientation=false; SortOnTag=true; SortOnFileName=false; SortOnUserFunction=false;
66 // SortGroup=sortGroup; SortElem=sortElem;}
68 inline void setSortOnUserFunction (FoncComp f)
69 { UserCompareFunction=f;
70 SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=true;}
72 inline void setSortConvertToFloat(bool conv) {SortConvertToFloat=conv;}
74 inline void setSortOnFileName() {SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=true; SortOnUserFunction=false;}
76 inline void setRecursive(bool recursive) { Recursive=recursive;}
78 // SortOnOrientation : not yet made
79 //inline void setSortOnOrientation(){SortOnPosition=false; SortOnOrientation=true; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=false;}
81 std::vector<vtkImageData*> *GetImageDataVector();
82 vtkImageData *GetImageData();
88 bool CompareOnSortTag (GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2);
89 bool CompareOnSortTagConvertToFloat(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2);
90 void reorgXCoherentFileSetmap (GDCM_NAME_SPACE::XCoherentFileSetmap &xcm);
91 bool sortVectElem(std::vector<ELEM> *le);
99 std::vector<std::string> VectDirName;
100 std::vector<std::string> VectFileName;
102 bool SplitOnPosition;
103 bool SplitOnOrientation;
106 unsigned short int SplitGroup;
107 unsigned short int SplitElem;
108 bool SplitConvertToFloat;
111 bool SortOnOrientation;
114 bool SortOnUserFunction;
116 FoncComp UserCompareFunction;
118 unsigned short int SortGroup;
119 unsigned short int SortElem;
120 bool SortConvertToFloat;
126 std::vector<vtkImageData*> *ImageDataVector;
127 vtkImageData *ImageData;
130 //} // end namespace gdcm
132 //-----------------------------------------------------------------------------