]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIODicomImageReader.cpp
*** empty log message ***
[creaImageIO.git] / src2 / creaImageIODicomImageReader.cpp
index 0dde6ca0638979dab31be9f925054098d1a3a0f1..8a5863bf7413ad5fda0ad63521301573b53e29b5 100644 (file)
@@ -1,14 +1,12 @@
 #include <creaImageIODicomImageReader.h>
-#include <gdcmFile.h> 
+
 #include <vtkGdcmReader.h>
 #include <creaImageIOSystem.h>
 #include "boost/filesystem/path.hpp"
 
 #include <creaImageIOTreeAttributeDescriptor.h>
 #include <vtkStringArray.h>
-#ifdef _DEBUG
-#define new DEBUG_NEW
-#endif
+
 namespace creaImageIO
 {
 
@@ -95,7 +93,7 @@ namespace creaImageIO
     return str;
   }
   //========================================================================
-
   //=====================================================================
   void DicomImageReader::ReadAttributes(const std::string& filename, 
                      std::map<std::string,std::string>& attr)
@@ -103,7 +101,8 @@ namespace creaImageIO
     GimmickMessage(2,"Reading attributes from DICOM file '"
                   <<filename<<"'"<<std::endl);
 
-    GDCM_NAME_SPACE::File* file = GDCM_NAME_SPACE::File::New();
+    //GDCM_NAME_SPACE::File* file = GDCM_NAME_SPACE::File::New();
+       boost::shared_ptr<GDCM_NAME_SPACE::File> file(GDCM_NAME_SPACE::File::New(), DicomImageReader::deleter());
 
     GDCM_NAME_SPACE::Document *doc= GDCM_NAME_SPACE::File::New();
     doc->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
@@ -112,7 +111,7 @@ namespace creaImageIO
     file->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
     file->SetFileName(filename.c_str());
     file->Load();
-    if (file->IsReadable() ||((GDCM_NAME_SPACE::Document*) file)->IsReadable())
+    if (file->IsReadable())// ||((GDCM_NAME_SPACE::Document*) file)->IsReadable())
       {
        std::map<std::string,std::string>::iterator i;
        for (i=attr.begin();i!=attr.end();++i)
@@ -135,18 +134,18 @@ namespace creaImageIO
              }
            else
              {
-               uint16_t gr;
                uint16_t el;
+               uint16_t gr;
+               
                tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el);
                if ( ( gr!=0 ) && ( el!=0 ) )
                  {
-                   std::string val = file->GetEntryString(gr,el);
+                   std::string val =  file->GetEntryString(gr,el);
                    i->second = irclean(val);
                  }
              }
          }
       }
-    file->Delete();
   }
 
   //=====================================================================