]> Creatis software - gdcm.git/blobdiff - src/gdcmSerieHelper.cxx
The bad hack I made to bypass illegal images where undefined length UN data
[gdcm.git] / src / gdcmSerieHelper.cxx
index 5c0919c4baca786a1be5f3e3b8cb8c2ba065e5de..eb6dd6a0c02c8844d76a7fd1ce03b15272017add 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmSerieHelper.cxx,v $
   Language:  C++
-  Date:      $Date: 2007/10/01 09:28:57 $
-  Version:   $Revision: 1.62 $
+  Date:      $Date: 2007/10/30 14:51:00 $
+  Version:   $Revision: 1.64 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -43,7 +43,7 @@ SerieHelper::SerieHelper()
    ClearAll();
    UserLessThanFunction = 0;
    DirectOrder = true;
-   
+   DropDuplicatePositions = false;   
 }
 
 /**
@@ -648,6 +648,8 @@ bool SerieHelper::ImagePositionPatientOrdering( FileList *fileList )
    bool first = true;
    ZSpacing = -1.0;  // will be updated if process doesn't fail
 
+   gdcmDebugMacro("============================================DropDuplicatePositions : " << DropDuplicatePositions );
+    
    std::multimap<double,File *> distmultimap;
    // Use a multimap to sort the distances from 0,0,0
    for ( FileList::const_iterator 
@@ -720,6 +722,8 @@ bool SerieHelper::ImagePositionPatientOrdering( FileList *fileList )
       }
    }
 
+   gdcmDebugMacro("After parsing vector, nb of elements : " << fileList->size() );
+
    // Find out if min/max are coherent
    if ( min == max )
    {
@@ -735,6 +739,9 @@ bool SerieHelper::ImagePositionPatientOrdering( FileList *fileList )
         it2 != distmultimap.end();
         ++it2)
    {
+   
+      gdcmDebugMacro("Check if image shares a common position : " << (*it2).second->GetFileName() );   
+   
       if (distmultimap.count((*it2).first) != 1)
       {
          gdcmWarningMacro("File: ["
@@ -1050,6 +1057,8 @@ std::string SerieHelper::CreateUserDefinedFileIdentifier( File *inFile )
    {
       const ExDetail &r = *it2;
       s = inFile->GetEntryString( r.group, r.elem );
+      if (s == "") // avoid troubles when empty string is found
+         s = "-";
 
       // User is allowed to ask for 'convertion', to allow further ordering
       // e.g : 100 would be *before* 20; 000020.00 vs 00100.00 : OK