]> Creatis software - gdcm.git/blob - vtk/vtkGdcm4DSplitter.h
Deal with 4D image sets
[gdcm.git] / vtk / vtkGdcm4DSplitter.h
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: vtkGdcm4DSplitter.h,v $
5   Language:  C++
6   Date:      $Date: 2011/03/29 12:49:27 $
7   Version:   $Revision: 1.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.
12                                                                                 
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.
16                                                                                 
17 =========================================================================*/
18
19 #ifndef _VTKGDCM4DSPLITTER_H_
20 #define _VTKGDCM4DSPLITTER_H_
21
22 #include <vector>
23 #include <vtkImageData.h>
24 #include "gdcmDirList.h" 
25
26 //namespace GDCM_NAME_SPACE 
27 //{ 
28   class vtkGdcm4DSplitter {
29     public:
30     
31        vtkGdcm4DSplitter();
32        ~vtkGdcm4DSplitter(){};       
33        bool setDirName(std::string &dirName);
34        bool setVectDirName(std::vector<std::string> &vectDirName);
35        bool setVectFileName(std::vector<std::string> &vectFileName);       
36        
37        inline void setSplitOnPosition()   {SplitOnPosition=true;  SplitOnOrientation=false; SplitOnTag=false;}
38        inline void setSplitOnOrientation(){SplitOnPosition=false; SplitOnOrientation=true;  SplitOnTag=false;}
39        inline void setSplitOnTag(unsigned short int splitGroup, unsigned short int splitElem)       
40                                           {SplitOnPosition=false; SplitOnOrientation=false; SplitOnTag=true; 
41                                            SplitGroup=splitGroup;    SplitElem=splitElem;}
42        inline void setSplitConvertToFloat(bool conv) {SplitConvertToFloat=conv;}
43        
44        inline void setSortOnPosition()   {SortOnPosition=true;  SortOnOrientation=false; SortOnTag=false; SortOnFileName=false;}
45        // SortOnOrientation : not yet made
46        //inline void setSortOnOrientation(){SortOnPosition=false; SortOnOrientation=true;  SortOnTag=false; SortOnFileName=false;}     
47        inline void setSortOnTag(unsigned short int sortGroup, unsigned short int sortElem)       
48                                          {SortOnPosition=false; SortOnOrientation=false; SortOnTag=true; SortOnFileName=false;
49                                           SortGroup=sortGroup;     SortElem=sortElem;}
50        inline void setSortConvertToFloat(bool conv) {SortConvertToFloat=conv;}
51                                     
52        inline void setSortOnFileName()   {SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=true;}
53        inline void setRecursive(bool recursive) { Recursive=recursive;}
54
55         std::vector<vtkImageData*> *GetImageDataVector();
56         vtkImageData *GetImageData();
57
58         bool Go();  
59                 
60     protected:
61     private:
62        bool CompareOnSortTag              (GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2);
63        bool CompareOnSortTagConvertToFloat(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2); 
64                
65     // Data
66     // ----
67     public:  
68     protected:
69     private:
70        std::string DirName;
71        std::vector<std::string> VectDirName;
72        std::vector<std::string> VectFileName;
73        
74        bool SplitOnPosition;
75        bool SplitOnOrientation;
76        bool SplitOnTag;
77  
78        unsigned short int SplitGroup;
79        unsigned short int SplitElem;
80        bool SplitConvertToFloat;
81                     
82        bool SortOnPosition;
83        bool SortOnOrientation;
84        bool SortOnTag;    
85        bool SortOnFileName;
86
87        unsigned short int SortGroup;
88        unsigned short int SortElem;
89        bool SortConvertToFloat;
90               
91        bool Recursive;
92        int TypeDir;
93        int TypeResult;
94        bool verbose;
95        std::vector<vtkImageData*> *ImageDataVector;
96        vtkImageData *ImageData;               
97   };
98  
99 //} // end namespace gdcm
100
101 //-----------------------------------------------------------------------------
102 #endif