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/20 15:03:54 $
+ Version: $Revision: 1.12 $
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);
+
+ void 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;}
+ 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 setSortOnUserFunction (FoncComp f)
- { UserCompareFunction=f;
- SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=true;}
+ void setSortOnUserFunction (FoncComp f);
- inline void setSortConvertToFloat(bool conv) {SortConvertToFloat=conv;}
+ //void setSortConvertToFloat(bool conv);
- inline void setSortOnFileName() {SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=true; SortOnUserFunction=false;}
+ void setSortOnFileName();
- inline void setRecursive(bool recursive) { Recursive=recursive;}
-
- // 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);
+ GDCM_NAME_SPACE::FileList * getGdcmFileList();
+
// Data
// ----
public:
protected:
private:
+
+ //
+ // Set by user
+ //
std::string DirName;
std::vector<std::string> VectDirName;
std::vector<std::string> VectFileName;
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;
+ //unsigned short int SortGroup;
+ //unsigned short int SortElem;
+ //bool SortConvertToFloat;
bool Recursive;
- int TypeDir;
- int TypeResult;
+ bool FlipY;
bool verbose;
+
+ //
+ // needed, to work
+ //
+ int TypeDir;
+ GDCM_NAME_SPACE::XCoherentFileSetmap xcm;
+
+ //
+ // may be got by user
+ //
std::vector<vtkImageData*> *ImageDataVector;
- vtkImageData *ImageData;
+ GDCM_NAME_SPACE::FileList *VectGdcmFile; // std::vector of gdcm::File*
+
+ std::vector<GDCM_NAME_SPACE::FileList *> VectGdcmFileLists; // result of the splitting operation
};
//} // end namespace gdcm