]> Creatis software - gdcm.git/blobdiff - vtk/vtkGdcm4DSplitter.h
add SetFlipY()
[gdcm.git] / vtk / vtkGdcm4DSplitter.h
index 908cbe790046725e76f5eddc836c060338f62107..c643a95af3e1eb8d2c9116a4aba38e6d5091760a 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: vtkGdcm4DSplitter.h,v $
   Language:  C++
-  Date:      $Date: 2011/03/31 21:45:12 $
-  Version:   $Revision: 1.5 $
+  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
 #include <vector>
 #include <vtkImageData.h>
 #include "gdcmDirList.h"
+#include "gdcmFile.h"
+#include "gdcmSerieHelper.h"
+
+typedef  bool (*FoncComp)(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2);
 
-typedef  bool (*FoncComp)                       (GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2);
-//typedef  bool (vtkGdcm4DSplitter::*MembFoncComp)(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<std::string> &vectDirName);
+       ~vtkGdcm4DSplitter();
+
+       // Locate Data to process
+       // ======================
+       void setRecursive(bool recursive);
+       bool setDirName     (std::string &dirName);
+       bool setVectDirName (std::vector<std::string> &vectDirName);
        bool setVectFileName(std::vector<std::string> &vectFileName);
+       
+       bool setVectGdcmFile(std::vector<GDCM_NAME_SPACE::File *> *vectGdcmFile);
+       
+       bool SetFlipY(bool f) { FlipY = f;}
 
        // Split
        // =====
-       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;}
+       void setSplitOnPosition();
+       void setSplitOnOrientation();
+       void setSplitOnTag(unsigned short int splitGroup, unsigned short int splitElem);
 
+       void setSplitConvertToFloat(bool conv);
+
+       void setSplitOnly(bool s);
+       
        // Sort
        // ====
-       inline void setSortOnPosition()   {SortOnPosition=true; SortOnOrientation=false; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=false;
-                                          SortOnPosition=true;}
-
-       inline void setSortOnTag(unsigned short int sortGroup, unsigned short int sortElem)
-                                         {SortOnPosition=false; SortOnOrientation=false; SortOnTag=true; SortOnFileName=false; SortOnUserFunction=false;
-                                          SortGroup=sortGroup;  SortElem=sortElem;}
-
-       inline void setSortOnUserFunction (FoncComp f)
-                                         { UserCompareFunction=f;
-                                           SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=true;}
+       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;}
 
-       inline void setSortConvertToFloat(bool conv) {SortConvertToFloat=conv;}
+       void setSortOnUserFunction (FoncComp f);
 
-       inline void setSortOnFileName()   {SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=true; SortOnUserFunction=false;}
+       //void setSortConvertToFloat(bool conv);
 
-       inline void setRecursive(bool recursive) { Recursive=recursive;}
+       void setSortOnFileName();
 
-       // SortOnOrientation : not yet made
+       // SortOnOrientation : not yet made; IOP sorter missing!
        //inline void setSortOnOrientation(){SortOnPosition=false; SortOnOrientation=true;  SortOnTag=false; SortOnFileName=false; SortOnUserFunction=false;}
 
         std::vector<vtkImageData*> *GetImageDataVector();
         vtkImageData *GetImageData();
 
+        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);
+       void reorgXCoherentFileSetmap      (GDCM_NAME_SPACE::XCoherentFileSetmap &xcm);
+       bool sortVectElem(std::vector<ELEM> *le);
 
     // Data
     // ----
@@ -95,7 +114,8 @@ typedef  bool (*FoncComp)                       (GDCM_NAME_SPACE::File *file1, G
        unsigned short int SplitGroup;
        unsigned short int SplitElem;
        bool SplitConvertToFloat;
-
+       bool SplitOnly;
        bool SortOnPosition;
        bool SortOnOrientation;
        bool SortOnTag;
@@ -110,10 +130,16 @@ typedef  bool (*FoncComp)                       (GDCM_NAME_SPACE::File *file1, G
 
        bool Recursive;
        int TypeDir;
-       int TypeResult;
+       //int TypeResult;
        bool verbose;
        std::vector<vtkImageData*> *ImageDataVector;
        vtkImageData *ImageData;
+       //std::vector<GDCM_NAME_SPACE::File *> VectGdcmFile;
+       GDCM_NAME_SPACE::FileList *VectGdcmFile; 
+       GDCM_NAME_SPACE::XCoherentFileSetmap xcm;
+       //std::vector<std::vector<GDCM_NAME_SPACE::File *> > VectGdcmFileLists;
+       std::vector<GDCM_NAME_SPACE::FileList *> VectGdcmFileLists;
+       bool FlipY;
   };
 
 //} // end namespace gdcm