]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOImageReader.cpp
No newline at end of file
[creaImageIO.git] / src2 / creaImageIOImageReader.cpp
index a7937ccc8e7e017816a2f359c849ace037d0a514..3e02d4005fb8ec8f2ae4e647aed556ff775af81c 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <creaImageIOVtkImageReader.h>
 #include <creaImageIODicomImageReader.h>
+#include <creaImageIOUltrasonixImageReader.h>
 
 #include <vtkPNGReader.h>
 #include <vtkTIFFReader.h>
@@ -22,40 +23,6 @@ namespace creaImageIO
   
 
 
-  //===================================================================== 
-  /*
-  void IRFillFields(DicomNode* node, 
-                 GDCM_NAME_SPACE::File* gdcmFile)
-  {
-    const DicomNodeTypeDescription::FieldDescriptionMapType& dm
-      = node->GetTypeDescription().GetFieldDescriptionMap();
-    DicomNodeTypeDescription::FieldDescriptionMapType::const_iterator i;
-    
-       
-    DicomNode::FieldValueMapType& vm = node->GetFieldValueMap();
-    for (i=dm.begin(); i!=dm.end(); ++i)
-      {
-       if ( (i->second.flags==0) && 
-            (i->second.group!=0) && 
-            (i->second.element!=0) )
-         {
-               uint16_t gr = i->second.group;
-               uint16_t el = i->second.element;
-
-               std::string val = gdcmFile->GetEntryString(gr,el);
-
-           vm[i->first] = irclean(val);
-         }
-       else 
-         {
-           vm[i->first] = "";
-         }
-      }
-  }
-  */
-  //=====================================================================
-
-
 
 
   //=====================================================================
@@ -77,6 +44,7 @@ namespace creaImageIO
     Register(new VtkImageReader(vtkMetaImageReader::New(),"MHD",".mhd"));
     //   Register(new VtkImageReader(vtkGESignalReader::New()));
     Register(new DicomImageReader);
+    Register(new UltrasonixImageReader);
 
     /*
     std::cout << "## Registered file extensions : "<<std::endl;
@@ -114,7 +82,7 @@ namespace creaImageIO
   ImageReader::~ImageReader()
   {
     //    std::cout << "#### ImageReader::~ImageReader()"<<std::endl;
-    std::vector<SpecificImageReader*>::iterator i;
+    std::vector<AbstractImageReader*>::iterator i;
     for (i=mReader.begin(); i!=mReader.end(); i++)
       {
        //      std::cout << "#### ImageReader::UnRegister("
@@ -131,25 +99,25 @@ namespace creaImageIO
   //=====================================================================
 
   //=====================================================================
-  void ImageReader::Register(SpecificImageReader* r)
+  void ImageReader::Register(AbstractImageReader* r)
   {
     //    std::cout << "#### ImageReader::Register("<<r->GetName()<<")"<<std::endl;
     mReader.push_back(r);
-    r->PushBackExtensions(mKnownExtensions);
+    //    r->PushBackExtensions(mKnownExtensions);
   }
   //=====================================================================
 
   //=====================================================================
   // Returns true iff the file is readable
-  bool ImageReader::CanRead( const std::string& filename, 
-                            const std::string& exclude )
+  bool ImageReader::CanRead( const std::string& filename ) 
+  //                        const std::string& exclude )
   {
     //    std::cout << "## ImageReader::CanRead("<<filename<<")"<<std::endl;
     bool ok = false;
-    std::vector<SpecificImageReader*>::iterator i;
+    std::vector<AbstractImageReader*>::iterator i;
     for (i=mReader.begin(); i!=mReader.end(); i++)
       {
-       if ((*i)->GetName()==exclude) continue;
+       //      if ((*i)->GetName()==exclude) continue;
        ok = (*i)->CanRead(filename);
        if (ok) 
          {
@@ -164,13 +132,13 @@ namespace creaImageIO
 
   //=====================================================================
   // Reads the file (CanRead must be called before : no test here)
-  vtkImageData*  ImageReader::ReadImage( const std::string& filename
-                                        const std::string& exclude )
+  vtkImageData*  ImageReader::ReadImage( const std::string& filename)
+  //                                    const std::string& exclude )
   {
     //    std::cout << "## ImageReader::Read("<<filename<<")"<<std::endl;
     if (mLastFilename!=filename)
       {
-       if (!CanRead(filename,exclude)) 
+       if (!CanRead(filename)) //,exclude)) 
          { 
            //      std::cout << "  -- Cannot read image "<<std::endl;
            vtkImageData* im = vtkImageData::New();
@@ -187,6 +155,7 @@ namespace creaImageIO
        i->ShallowCopy(mUnreadableImage);
       }
     //    std::cout << "i="<<i<<std::endl;
+    //std::cout<<"return: "<<i->GetScalarTypeAsString()<<", pointer="<<i<<std::endl;
     return i;
   }
   //=====================================================================
@@ -210,5 +179,16 @@ namespace creaImageIO
   //=====================================================================
 
 
-
+  //=====================================================================
+  /// Pushes back all kwown extensions (without dot) in the vector given
+  void ImageReader::PushBackExtensions(std::vector<std::string>& v)
+  {
+    std::vector<AbstractImageReader*>::iterator i;
+    for (i=mReader.begin(); i!=mReader.end(); i++)
+      {
+       (*i)->PushBackExtensions(v);
+      }
+  }
+  //=====================================================================
+  
 } // namespace creaImageIO