X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vtk%2FvtkgdcmSerieViewer2.cxx;h=7b108e37ae1fd6e8a12206b95fb005cd79aceb71;hb=f2dd700472606cce1b889e6527ca7ed68a6bbde6;hp=d8af5dcca76cd6a3afd4d8318a56eb1dcdfe2dc2;hpb=5f30f5b0aa4f5499957765a78ba63a94c7c8e277;p=gdcm.git diff --git a/vtk/vtkgdcmSerieViewer2.cxx b/vtk/vtkgdcmSerieViewer2.cxx index d8af5dcc..7b108e37 100755 --- a/vtk/vtkgdcmSerieViewer2.cxx +++ b/vtk/vtkgdcmSerieViewer2.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: vtkgdcmSerieViewer2.cxx,v $ Language: C++ - Date: $Date: 2006/05/11 20:01:28 $ - Version: $Revision: 1.5 $ + Date: $Date: 2007/06/21 14:47:16 $ + Version: $Revision: 1.11 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -16,11 +16,12 @@ =========================================================================*/ // This example illustrates how the vtkGdcmReader vtk class can -// use the result of gdcm::SerieHelper constructor and check +// use the result of GDCM_NAME_SPACE::SerieHelper constructor and check // the various Setters : // SerieHelper::SetOrderToReverse, // SerieHelper::SetUserLessThanFunction // SerieHelper::SetLoadMode +// SerieHelper::SetDropDuplicatePositions // vtkGdcmReader::SetUserFunction // vtkGdcmReader::SetCoherentFileList // Usage: @@ -51,10 +52,10 @@ #define vtkFloatingPointType float #endif -void userSuppliedMirrorFunction (uint8_t *im, gdcm::File *f); -void userSuppliedUpsideDownFunction(uint8_t *im, gdcm::File *f); -bool userSuppliedLessThanFunction(gdcm::File *f1, gdcm::File *f2); -bool userSuppliedLessThanFunction2(gdcm::File *f1, gdcm::File *f2); +void userSuppliedMirrorFunction (uint8_t *im, GDCM_NAME_SPACE::File *f); +void userSuppliedUpsideDownFunction(uint8_t *im, GDCM_NAME_SPACE::File *f); +bool userSuppliedLessThanFunction(GDCM_NAME_SPACE::File *f1, GDCM_NAME_SPACE::File *f2); +bool userSuppliedLessThanFunction2(GDCM_NAME_SPACE::File *f1, GDCM_NAME_SPACE::File *f2); int orderNb; uint16_t *elemsToOrderOn; @@ -86,7 +87,7 @@ public: if ( event == vtkCommand::CharEvent ) { #if (VTK_MAJOR_VERSION >= 5) - int max = ImageViewer->GetWholeMax(); + int max = ImageViewer->GetSliceMax(); int slice = (ImageViewer->GetSlice() + 1 ) % ++max; ImageViewer->SetSlice( slice ); #else @@ -114,7 +115,7 @@ int main(int argc, char *argv[]) " usage: vtkgdcmSerieViewer dirname=sourcedirectory ", " [noshadowseq][noshadow][noseq] ", " [reverse] [{[mirror]|[topdown]|[rotate]}] ", - " [order=] [check][debug] ", + " [order=] [nodup][check][debug] ", " sourcedirectory : name of the directory holding the images ", " if it holds more than one serie, ", " only the first one is displayed. ", @@ -124,19 +125,20 @@ int main(int argc, char *argv[]) " reverse : user wants to sort the images reverse order ", " mirror : user wants to 'mirror' the images | just some simple", " upsidedown : user wants to 'upsidedown' the images| examples of user", - " | definedfunctions", + " | suppliedfunction", " check : user wants to force more coherence checking ", " order= : group1-elem1,group2-elem2,... (in hexa, no space) ", " if we want to use them as a sort criterium ", " Right now : ValEntries only -just an example- ", " or ", " order= : order=name if we want to sort on file name (why not ?) ", - " debug : user wants to run the program in 'debug mode' ", + " nodup : user wants to drop duplicate positions ", + " debug : developper wants to run the program in 'debug mode' ", FINISH_USAGE // Initialize Arguments Manager - gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv); + GDCM_NAME_SPACE::ArgMgr *am= new GDCM_NAME_SPACE::ArgMgr(argc, argv); if (argc == 1 || am->ArgMgrDefined("usage") ) { @@ -147,19 +149,19 @@ int main(int argc, char *argv[]) char *dirName = am->ArgMgrWantString("dirname",usage); - int loadMode = gdcm::LD_ALL; + int loadMode = GDCM_NAME_SPACE::LD_ALL; if ( am->ArgMgrDefined("noshadowseq") ) - loadMode |= gdcm::LD_NOSHADOWSEQ; + loadMode |= GDCM_NAME_SPACE::LD_NOSHADOWSEQ; else { if ( am->ArgMgrDefined("noshadow") ) - loadMode |= gdcm::LD_NOSHADOW; + loadMode |= GDCM_NAME_SPACE::LD_NOSHADOW; if ( am->ArgMgrDefined("noseq") ) - loadMode |= gdcm::LD_NOSEQ; + loadMode |= GDCM_NAME_SPACE::LD_NOSEQ; } int reverse = am->ArgMgrDefined("reverse"); - + int nodup = am->ArgMgrDefined("nodup"); int mirror = am->ArgMgrDefined("mirror"); int upsidedown = am->ArgMgrDefined("upsidedown"); @@ -179,7 +181,7 @@ int main(int argc, char *argv[]) elemsToOrderOn = am->ArgMgrGetXInt16Enum("order", &orderNb); if (am->ArgMgrDefined("debug")) - gdcm::Debug::DebugOn(); + GDCM_NAME_SPACE::Debug::DebugOn(); /* if unused Param we give up */ if ( am->ArgMgrPrintUnusedLabels() ) @@ -193,7 +195,7 @@ int main(int argc, char *argv[]) // ----------------------- End Arguments Manager ---------------------- - gdcm::SerieHelper *sh = gdcm::SerieHelper::New(); + GDCM_NAME_SPACE::SerieHelper *sh = GDCM_NAME_SPACE::SerieHelper::New(); sh->SetLoadMode(loadMode); if (reverse) sh->SetSortOrderToReverse(); @@ -202,8 +204,8 @@ int main(int argc, char *argv[]) // Just to see int nbFiles; - // For all the 'Single Serie UID' FileSets of the gdcm::Serie - gdcm::FileList *l = sh->GetFirstSingleSerieUIDFileSet(); + // For all the 'Single Serie UID' FileSets of the GDCM_NAME_SPACE::Serie + GDCM_NAME_SPACE::FileList *l = sh->GetFirstSingleSerieUIDFileSet(); if (l == 0 ) { std::cout << "Oops! No 'Single Serie UID' FileSet found ?!?" << std::endl; @@ -215,13 +217,20 @@ int main(int argc, char *argv[]) else if (orderNb != 0) sh->SetUserLessThanFunction(userSuppliedLessThanFunction); + if (nodup) + sh->SetDropDuplicatePositions(true); + while (l) { nbFiles = l->size() ; if ( l->size() > 1 ) { std::cout << "Sort list : " << nbFiles << " long" << std::endl; - sh->OrderFileList(l); // sort the list + + //--------------------------------------------------------- + sh->OrderFileList(l); // sort the list (and compute ZSpacing !) + //--------------------------------------------------------- + double zsp = sh->GetZSpacing(); std::cout << "List sorted, ZSpacing = " << zsp << std::endl; break; // The first one is OK. user will have to check @@ -353,7 +362,7 @@ int main(int argc, char *argv[]) } \ } -void userSuppliedMirrorFunction(uint8_t *im, gdcm::File *f) +void userSuppliedMirrorFunction(uint8_t *im, GDCM_NAME_SPACE::File *f) { if (f->GetZSize() != 1) { @@ -408,7 +417,7 @@ void userSuppliedMirrorFunction(uint8_t *im, gdcm::File *f) } \ } -void userSuppliedUpsideDownFunction(uint8_t *im, gdcm::File *f) +void userSuppliedUpsideDownFunction(uint8_t *im, GDCM_NAME_SPACE::File *f) { if (f->GetZSize() != 1) { @@ -454,12 +463,12 @@ void userSuppliedUpsideDownFunction(uint8_t *im, gdcm::File *f) // -------------------------------------------------------- -bool userSuppliedLessThanFunction(gdcm::File *f1, gdcm::File *f2) +bool userSuppliedLessThanFunction(GDCM_NAME_SPACE::File *f1, GDCM_NAME_SPACE::File *f2) { // for *this* user supplied function, I supposed only ValEntries are checked. // std::string s1, s2; - gdcm::DataEntry *e1,*e2; + GDCM_NAME_SPACE::DataEntry *e1,*e2; for (int ri=0; riGetFileName() << "] vs [" << f2->GetFileName() << "]" << std::endl;