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/04 17:01:03 $
+ Version: $Revision: 1.6 $
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 "gdcmDirList.h"
+#include "gdcmFile.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))
+
+//namespace GDCM_NAME_SPACE
+//{
class vtkGdcm4DSplitter {
public:
-
+
vtkGdcm4DSplitter();
- ~vtkGdcm4DSplitter(){};
+ ~vtkGdcm4DSplitter(){};
bool setDirName(std::string &dirName);
bool setVectDirName(std::vector<std::string> &vectDirName);
- bool setVectFileName(std::vector<std::string> &vectFileName);
-
+ bool setVectFileName(std::vector<std::string> &vectFileName);
+
+ // 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;
+ 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;}
-
- 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;}
+
+ // Sort
+ // ====
+ inline void setSortOnPosition() {SortOnPosition=true; SortOnOrientation=false; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=false;
+ SortOnPosition=true;}
+ // use setSortOnUserFunction, instead!
+ // 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;}
+
inline void setSortConvertToFloat(bool conv) {SortConvertToFloat=conv;}
-
- inline void setSortOnFileName() {SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=true;}
+
+ inline void setSortOnFileName() {SortOnPosition=false; SortOnOrientation=false; SortOnTag=false; SortOnFileName=true; SortOnUserFunction=false;}
+
inline void setRecursive(bool recursive) { Recursive=recursive;}
+ // SortOnOrientation : not yet made
+ //inline void setSortOnOrientation(){SortOnPosition=false; SortOnOrientation=true; SortOnTag=false; SortOnFileName=false; SortOnUserFunction=false;}
+
std::vector<vtkImageData*> *GetImageDataVector();
vtkImageData *GetImageData();
- bool Go();
-
+ 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);
+
// Data
// ----
- public:
+ public:
protected:
private:
std::string DirName;
std::vector<std::string> VectDirName;
std::vector<std::string> VectFileName;
-
+
bool SplitOnPosition;
bool SplitOnOrientation;
bool SplitOnTag;
-
+
unsigned short int SplitGroup;
unsigned short int SplitElem;
bool SplitConvertToFloat;
-
+
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;
bool verbose;
std::vector<vtkImageData*> *ImageDataVector;
- vtkImageData *ImageData;
+ vtkImageData *ImageData;
};
-
+
//} // end namespace gdcm
//-----------------------------------------------------------------------------