]> Creatis software - gdcm.git/blobdiff - vtk/vtkgdcmSerieViewer2.cxx
Fix mistypings
[gdcm.git] / vtk / vtkgdcmSerieViewer2.cxx
index 7b0f9b053b5c03bf0930154c56e27203bd3b0751..7b108e37ae1fd6e8a12206b95fb005cd79aceb71 100755 (executable)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: vtkgdcmSerieViewer2.cxx,v $
   Language:  C++
-  Date:      $Date: 2007/03/29 13:52:16 $
-  Version:   $Revision: 1.7 $
+  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
                                                                                 
 =========================================================================*/
 // 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:
 #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;
@@ -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.                  ",
@@ -131,12 +132,13 @@ int main(int argc, char *argv[])
    "                   Right now : ValEntries only -just an example-          ",
    "        or                                                                ",
    "      order=     : order=name if we want to sort on file name (why not ?) ",
+   "      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; ri<orderNb; ri++)
    {
       std::cout << std::hex << elemsToOrderOn[2*ri] << "|" 
@@ -499,7 +508,7 @@ bool userSuppliedLessThanFunction(gdcm::File *f1, gdcm::File *f2)
 // Warning : it's up to 'vtkgdcmSerieViewer' user to find a suitable data set !
 // --------------------------------------------------------
 
-bool userSuppliedLessThanFunction2(gdcm::File *f1, gdcm::File *f2)
+bool userSuppliedLessThanFunction2(GDCM_NAME_SPACE::File *f1, GDCM_NAME_SPACE::File *f2)
 {
    std::cout << "[" << f1->GetFileName() << "] vs [" 
                     << f2->GetFileName() << "]" << std::endl;