]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Plugins/ImageReader.cxx
...
[cpPlugins.git] / lib / cpPlugins / Plugins / ImageReader.cxx
index fc752efaafe5d8227b2be6f91e70bebd6ae2c452..73611cb4a7130c7ac13d309d3afc6e4485f1df5d 100644 (file)
@@ -49,7 +49,7 @@ _GenerateData( )
     {
       io->SetFileName( names[ 0 ] );
       io->ReadImageInformation( );
-      if( names.size( ) == 1 )
+      if( names.size( ) >= 1 )
       {
         switch( io->GetNumberOfDimensions( ) )
         {
@@ -57,19 +57,7 @@ _GenerateData( )
         case 3: r = this->_GD0< 3 >( io, names ); break;
         case 4: r = this->_GD0< 4 >( io, names ); break;
         default:
-          r = "ImageReader: Single image dimension not supported.";
-          break;
-        } // hctiws
-      }
-      else if( names.size( ) > 1 )
-      {
-        switch( io->GetNumberOfDimensions( ) )
-        {
-        case 1: r = this->_GD0< 2 >( io, names ); break;
-        case 2: r = this->_GD0< 3 >( io, names ); break;
-        case 3: r = this->_GD0< 4 >( io, names ); break;
-        default:
-          r = "ImageReader: Multiple images dimension not supported.";
+          r = "ImageReader: Image dimension not supported.";
           break;
         } // hctiws
 
@@ -149,8 +137,26 @@ _GD0( itk::ImageIOBase* io, const TStringList& names )
       case itk::ImageIOBase::SHORT:
         r = this->_RealGD< itk::RGBPixel< short >, 2 >( names );
         break;
+      case itk::ImageIOBase::UINT:
+        r = this->_RealGD< itk::RGBPixel< unsigned int >, 2 >( names );
+        break;
+      case itk::ImageIOBase::INT:
+        r = this->_RealGD< itk::RGBPixel< int >, 2 >( names );
+        break;
+      case itk::ImageIOBase::ULONG:
+        r = this->_RealGD< itk::RGBPixel< unsigned long >, 2 >( names );
+        break;
+      case itk::ImageIOBase::LONG:
+        r = this->_RealGD< itk::RGBPixel< long >, 2 >( names );
+        break;
+      case itk::ImageIOBase::FLOAT:
+        r = this->_RealGD< itk::RGBPixel< float >, 2 >( names );
+        break;
+      case itk::ImageIOBase::DOUBLE:
+        r = this->_RealGD< itk::RGBPixel< double >, 2 >( names );
+        break;
       default:
-        r = "ImageReader: Scalar pixel type not supported.";
+        r = "ImageReader: RGB pixel type not supported.";
         break;
       } // hctiws
     }
@@ -170,8 +176,26 @@ _GD0( itk::ImageIOBase* io, const TStringList& names )
       case itk::ImageIOBase::SHORT:
         r = this->_RealGD< itk::RGBPixel< short >, 3 >( names );
         break;
+      case itk::ImageIOBase::UINT:
+        r = this->_RealGD< itk::RGBPixel< unsigned int >, 3 >( names );
+        break;
+      case itk::ImageIOBase::INT:
+        r = this->_RealGD< itk::RGBPixel< int >, 3 >( names );
+        break;
+      case itk::ImageIOBase::ULONG:
+        r = this->_RealGD< itk::RGBPixel< unsigned long >, 3 >( names );
+        break;
+      case itk::ImageIOBase::LONG:
+        r = this->_RealGD< itk::RGBPixel< long >, 3 >( names );
+        break;
+      case itk::ImageIOBase::FLOAT:
+        r = this->_RealGD< itk::RGBPixel< float >, 3 >( names );
+        break;
+      case itk::ImageIOBase::DOUBLE:
+        r = this->_RealGD< itk::RGBPixel< double >, 3 >( names );
+        break;
       default:
-        r = "ImageReader: Scalar pixel type not supported.";
+        r = "ImageReader: RGB pixel type not supported.";
         break;
       } // hctiws
     }
@@ -191,8 +215,26 @@ _GD0( itk::ImageIOBase* io, const TStringList& names )
       case itk::ImageIOBase::SHORT:
         r = this->_RealGD< itk::RGBPixel< short >, 4 >( names );
         break;
+      case itk::ImageIOBase::UINT:
+        r = this->_RealGD< itk::RGBPixel< unsigned int >, 4 >( names );
+        break;
+      case itk::ImageIOBase::INT:
+        r = this->_RealGD< itk::RGBPixel< int >, 4 >( names );
+        break;
+      case itk::ImageIOBase::ULONG:
+        r = this->_RealGD< itk::RGBPixel< unsigned long >, 4 >( names );
+        break;
+      case itk::ImageIOBase::LONG:
+        r = this->_RealGD< itk::RGBPixel< long >, 4 >( names );
+        break;
+      case itk::ImageIOBase::FLOAT:
+        r = this->_RealGD< itk::RGBPixel< float >, 4 >( names );
+        break;
+      case itk::ImageIOBase::DOUBLE:
+        r = this->_RealGD< itk::RGBPixel< double >, 4 >( names );
+        break;
       default:
-        r = "ImageReader: Scalar pixel type not supported.";
+        r = "ImageReader: RGB pixel type not supported.";
         break;
       } // hctiws
 
@@ -216,8 +258,26 @@ _GD0( itk::ImageIOBase* io, const TStringList& names )
       case itk::ImageIOBase::SHORT:
         r = this->_RealGD< itk::RGBAPixel< short >, 2 >( names );
         break;
+      case itk::ImageIOBase::UINT:
+        r = this->_RealGD< itk::RGBAPixel< unsigned int >, 2 >( names );
+        break;
+      case itk::ImageIOBase::INT:
+        r = this->_RealGD< itk::RGBAPixel< int >, 2 >( names );
+        break;
+      case itk::ImageIOBase::ULONG:
+        r = this->_RealGD< itk::RGBAPixel< unsigned long >, 2 >( names );
+        break;
+      case itk::ImageIOBase::LONG:
+        r = this->_RealGD< itk::RGBAPixel< long >, 2 >( names );
+        break;
+      case itk::ImageIOBase::FLOAT:
+        r = this->_RealGD< itk::RGBAPixel< float >, 2 >( names );
+        break;
+      case itk::ImageIOBase::DOUBLE:
+        r = this->_RealGD< itk::RGBAPixel< double >, 2 >( names );
+        break;
       default:
-        r = "ImageReader: Scalar pixel type not supported.";
+        r = "ImageReader: RGBA pixel type not supported.";
         break;
       } // hctiws
     }
@@ -237,8 +297,26 @@ _GD0( itk::ImageIOBase* io, const TStringList& names )
       case itk::ImageIOBase::SHORT:
         r = this->_RealGD< itk::RGBAPixel< short >, 3 >( names );
         break;
+      case itk::ImageIOBase::UINT:
+        r = this->_RealGD< itk::RGBAPixel< unsigned int >, 3 >( names );
+        break;
+      case itk::ImageIOBase::INT:
+        r = this->_RealGD< itk::RGBAPixel< int >, 3 >( names );
+        break;
+      case itk::ImageIOBase::ULONG:
+        r = this->_RealGD< itk::RGBAPixel< unsigned long >, 3 >( names );
+        break;
+      case itk::ImageIOBase::LONG:
+        r = this->_RealGD< itk::RGBAPixel< long >, 3 >( names );
+        break;
+      case itk::ImageIOBase::FLOAT:
+        r = this->_RealGD< itk::RGBAPixel< float >, 3 >( names );
+        break;
+      case itk::ImageIOBase::DOUBLE:
+        r = this->_RealGD< itk::RGBAPixel< double >, 3 >( names );
+        break;
       default:
-        r = "ImageReader: Scalar pixel type not supported.";
+        r = "ImageReader: RGBA pixel type not supported.";
         break;
       } // hctiws
     }
@@ -258,8 +336,26 @@ _GD0( itk::ImageIOBase* io, const TStringList& names )
       case itk::ImageIOBase::SHORT:
         r = this->_RealGD< itk::RGBAPixel< short >, 4 >( names );
         break;
+      case itk::ImageIOBase::UINT:
+        r = this->_RealGD< itk::RGBAPixel< unsigned int >, 4 >( names );
+        break;
+      case itk::ImageIOBase::INT:
+        r = this->_RealGD< itk::RGBAPixel< int >, 4 >( names );
+        break;
+      case itk::ImageIOBase::ULONG:
+        r = this->_RealGD< itk::RGBAPixel< unsigned long >, 4 >( names );
+        break;
+      case itk::ImageIOBase::LONG:
+        r = this->_RealGD< itk::RGBAPixel< long >, 4 >( names );
+        break;
+      case itk::ImageIOBase::FLOAT:
+        r = this->_RealGD< itk::RGBAPixel< float >, 4 >( names );
+        break;
+      case itk::ImageIOBase::DOUBLE:
+        r = this->_RealGD< itk::RGBAPixel< double >, 4 >( names );
+        break;
       default:
-        r = "ImageReader: Scalar pixel type not supported.";
+        r = "ImageReader: RGBA pixel type not supported.";
         break;
       } // hctiws
 
@@ -324,7 +420,7 @@ _GD0( itk::ImageIOBase* io, const TStringList& names )
       r = this->_RealGD< itk::CovariantVector< double, D >, D >( names );
       break;
     default:
-      r = "ImageReader: Vector type not supported.";
+      r = "ImageReader: CovariantVector type not supported.";
       break;
     } // hctiws
   }
@@ -416,6 +512,11 @@ _RealGD( const TStringList& names )
 {
   typedef itk::Image< P, D > _I;
 
+  cpPlugins::Interface::Image* out =
+    this->GetOutput< cpPlugins::Interface::Image >( 0 );
+  if( out == NULL )
+    return( "ImageReader: No output object properly created." );
+
   std::string r = "";
   if( names.size( ) == 1 )
   {
@@ -434,22 +535,12 @@ _RealGD( const TStringList& names )
     try
     {
       reader->Update( );
-      cpPlugins::Interface::Image* out =
-        this->_Output< cpPlugins::Interface::Image >( 0 );
-      if( out != NULL )
-        out->SetITKImage< _I >( reader->GetOutput( ) );
-      else
-        r = "ImageReader: output not correctly created.";
+      out->SetITKImage< _I >( reader->GetOutput( ) );
     }
     catch( itk::ExceptionObject& err )
     {
       r = "ImageReader: " + std::string( err.GetDescription( ) );
-      cpPlugins::Interface::Image* out =
-        this->_Output< cpPlugins::Interface::Image >( 0 );
-      if( out != NULL )
-        out->SetITKImage< _I >( NULL );
-      else
-        r = "ImageReader: output not correctly created.";
+      out->SetITKImage< _I >( NULL );
 
     } // yrt
   }
@@ -472,26 +563,18 @@ _RealGD( const TStringList& names )
     } // fi
     std::set< std::string >::const_iterator fnIt = ordered_names.begin( );
     for( ; fnIt != ordered_names.end( ); ++fnIt )
+    {
       reader->AddFileName( *fnIt );
+    }
     try
     {
       reader->Update( );
-      cpPlugins::Interface::Image* out =
-        this->_Output< cpPlugins::Interface::Image >( 0 );
-      if( out != NULL )
-        out->SetITKImage< _I >( reader->GetOutput( ) );
-      else
-        r = "ImageReader: output not correctly created.";
+      out->SetITKImage< _I >( reader->GetOutput( ) );
     }
     catch( itk::ExceptionObject& err )
     {
       r = "ImageReader: " + std::string( err.GetDescription( ) );
-      cpPlugins::Interface::Image* out =
-        this->_Output< cpPlugins::Interface::Image >( 0 );
-      if( out != NULL )
-        out->SetITKImage< _I >( NULL );
-      else
-        r = "ImageReader: output not correctly created.";
+      out->SetITKImage< _I >( NULL );
 
     } // yrt
   }