]> Creatis software - cpPlugins.git/blobdiff - plugins/cpPluginsIO/ImageReader.cxx
...
[cpPlugins.git] / plugins / cpPluginsIO / ImageReader.cxx
index e9f3e59d178dd9ff2436941ae4395ef8691afdd6..e10d3836d79d2f3cf171faf80f7c3b839d3fccd6 100644 (file)
@@ -24,12 +24,11 @@ cpPluginsIO::ImageReader::
 }
 
 // -------------------------------------------------------------------------
-std::string cpPluginsIO::ImageReader::
+void cpPluginsIO::ImageReader::
 _GenerateData( )
 {
   // Get filenames
   auto fnames = this->m_Parameters.GetOpenFileNameList( "FileNames" );
-  std::string r = "";
   if( fnames.size( ) >= 1 )
   {
     // Guess image properties
@@ -47,30 +46,30 @@ _GenerateData( )
         switch( io->GetNumberOfDimensions( ) )
         {
           // TODO: case 1: r = this->_GD0< 1 >( io ); break;
-        case 2: r = this->_GD0< 2 >( io ); break;
-        case 3: r = this->_GD0< 3 >( io ); break;
+        case 2: this->_GD0< 2 >( io ); break;
+        case 3: this->_GD0< 3 >( io ); break;
           // TODO: case 4: r = this->_GD0< 4 >( io ); break;
         default:
-          r = "IO::ImageReader: Image dimension not supported.";
+          this->_Error( "Image dimension not supported." );
           break;
         } // hctiws
 
       } // fi
     }
     else
-      r =
-        "IO::ImageReader: Could not CreateImageIO for \"" +
+      this->_Error(
+        std::string( "Could not create an ImageIO for \"" ) +
         fnames[ 0 ] +
-        "\"";
+        std::string( "\"" )
+        );
   }
   else
-    r = "IO::ImageReader: No image(s) given";
-  return( r );
+    this->_Error( "No image(s) given" );
 }
 
 // -------------------------------------------------------------------------
 template< unsigned int _Dim >
-std::string cpPluginsIO::ImageReader::
+void cpPluginsIO::ImageReader::
 _GD0( itk::ImageIOBase* io )
 {
   typedef unsigned char  uchar;
@@ -81,73 +80,64 @@ _GD0( itk::ImageIOBase* io )
   itk::ImageIOBase::IOComponentType ct = io->GetComponentType( );
   itk::ImageIOBase::IOPixelType pt = io->GetPixelType( );
 
-  std::string r = "";
   if( pt == itk::ImageIOBase::SCALAR )
   {
     switch( ct )
     {
-    case itk::ImageIOBase::CHAR   : r = this->_GD1<   char, _Dim >( io ); break;
-    case itk::ImageIOBase::SHORT  : r = this->_GD1<  short, _Dim >( io ); break;
-    case itk::ImageIOBase::INT    : r = this->_GD1<    int, _Dim >( io ); break;
-    case itk::ImageIOBase::LONG   : r = this->_GD1<   long, _Dim >( io ); break;
-    case itk::ImageIOBase::FLOAT  : r = this->_GD1<  float, _Dim >( io ); break;
-    case itk::ImageIOBase::DOUBLE : r = this->_GD1< double, _Dim >( io ); break;
-    case itk::ImageIOBase::UCHAR  : r = this->_GD1<  uchar, _Dim >( io ); break;
-    case itk::ImageIOBase::USHORT : r = this->_GD1< ushort, _Dim >( io ); break;
-    case itk::ImageIOBase::UINT   : r = this->_GD1<   uint, _Dim >( io ); break;
-    case itk::ImageIOBase::ULONG  : r = this->_GD1<  ulong, _Dim >( io ); break;
-    default:
-      r = "IO::ImageReader: Scalar pixel type not supported.";
-      break;
+    case itk::ImageIOBase::CHAR   : this->_GD1<   char, _Dim >( io ); break;
+    case itk::ImageIOBase::SHORT  : this->_GD1<  short, _Dim >( io ); break;
+    case itk::ImageIOBase::INT    : this->_GD1<    int, _Dim >( io ); break;
+    case itk::ImageIOBase::LONG   : this->_GD1<   long, _Dim >( io ); break;
+    case itk::ImageIOBase::FLOAT  : this->_GD1<  float, _Dim >( io ); break;
+    case itk::ImageIOBase::DOUBLE : this->_GD1< double, _Dim >( io ); break;
+    case itk::ImageIOBase::UCHAR  : this->_GD1<  uchar, _Dim >( io ); break;
+    case itk::ImageIOBase::USHORT : this->_GD1< ushort, _Dim >( io ); break;
+    case itk::ImageIOBase::UINT   : this->_GD1<   uint, _Dim >( io ); break;
+    case itk::ImageIOBase::ULONG  : this->_GD1<  ulong, _Dim >( io ); break;
+    default: this->_Error( "Scalar pixel type not supported." ); break;
     } // hctiws
   }
   else if( pt == itk::ImageIOBase::RGB )
   {
     switch( ct )
     {
-    case itk::ImageIOBase::CHAR   : r = this->_GD1< itk::RGBPixel<   char >, _Dim >( io ); break;
-    case itk::ImageIOBase::SHORT  : r = this->_GD1< itk::RGBPixel<  short >, _Dim >( io ); break;
-    case itk::ImageIOBase::INT    : r = this->_GD1< itk::RGBPixel<    int >, _Dim >( io ); break;
-    case itk::ImageIOBase::LONG   : r = this->_GD1< itk::RGBPixel<   long >, _Dim >( io ); break;
-    case itk::ImageIOBase::FLOAT  : r = this->_GD1< itk::RGBPixel<  float >, _Dim >( io ); break;
-    case itk::ImageIOBase::DOUBLE : r = this->_GD1< itk::RGBPixel< double >, _Dim >( io ); break;
-    case itk::ImageIOBase::UCHAR  : r = this->_GD1< itk::RGBPixel<  uchar >, _Dim >( io ); break;
-    case itk::ImageIOBase::USHORT : r = this->_GD1< itk::RGBPixel< ushort >, _Dim >( io ); break;
-    case itk::ImageIOBase::UINT   : r = this->_GD1< itk::RGBPixel<   uint >, _Dim >( io ); break;
-    case itk::ImageIOBase::ULONG  : r = this->_GD1< itk::RGBPixel<  ulong >, _Dim >( io ); break;
-    default:
-      r = "IO::ImageReader: RGB pixel type not supported.";
-      break;
+    case itk::ImageIOBase::CHAR   : this->_GD1< itk::RGBPixel<   char >, _Dim >( io ); break;
+    case itk::ImageIOBase::SHORT  : this->_GD1< itk::RGBPixel<  short >, _Dim >( io ); break;
+    case itk::ImageIOBase::INT    : this->_GD1< itk::RGBPixel<    int >, _Dim >( io ); break;
+    case itk::ImageIOBase::LONG   : this->_GD1< itk::RGBPixel<   long >, _Dim >( io ); break;
+    case itk::ImageIOBase::FLOAT  : this->_GD1< itk::RGBPixel<  float >, _Dim >( io ); break;
+    case itk::ImageIOBase::DOUBLE : this->_GD1< itk::RGBPixel< double >, _Dim >( io ); break;
+    case itk::ImageIOBase::UCHAR  : this->_GD1< itk::RGBPixel<  uchar >, _Dim >( io ); break;
+    case itk::ImageIOBase::USHORT : this->_GD1< itk::RGBPixel< ushort >, _Dim >( io ); break;
+    case itk::ImageIOBase::UINT   : this->_GD1< itk::RGBPixel<   uint >, _Dim >( io ); break;
+    case itk::ImageIOBase::ULONG  : this->_GD1< itk::RGBPixel<  ulong >, _Dim >( io ); break;
+    default: this->_Error( "RGB pixel type not supported." ); break;
     } // hctiws
   }
   else if( pt == itk::ImageIOBase::RGBA )
   {
     switch( ct )
     {
-    case itk::ImageIOBase::CHAR   : r = this->_GD1< itk::RGBAPixel<   char >, _Dim >( io ); break;
-    case itk::ImageIOBase::SHORT  : r = this->_GD1< itk::RGBAPixel<  short >, _Dim >( io ); break;
-    case itk::ImageIOBase::INT    : r = this->_GD1< itk::RGBAPixel<    int >, _Dim >( io ); break;
-    case itk::ImageIOBase::LONG   : r = this->_GD1< itk::RGBAPixel<   long >, _Dim >( io ); break;
-    case itk::ImageIOBase::FLOAT  : r = this->_GD1< itk::RGBAPixel<  float >, _Dim >( io ); break;
-    case itk::ImageIOBase::DOUBLE : r = this->_GD1< itk::RGBAPixel< double >, _Dim >( io ); break;
-    case itk::ImageIOBase::UCHAR  : r = this->_GD1< itk::RGBAPixel<  uchar >, _Dim >( io ); break;
-    case itk::ImageIOBase::USHORT : r = this->_GD1< itk::RGBAPixel< ushort >, _Dim >( io ); break;
-    case itk::ImageIOBase::UINT   : r = this->_GD1< itk::RGBAPixel<   uint >, _Dim >( io ); break;
-    case itk::ImageIOBase::ULONG  : r = this->_GD1< itk::RGBAPixel<  ulong >, _Dim >( io ); break;
-    default:
-      r = "IO::ImageReader: RGBA pixel type not supported.";
-      break;
+    case itk::ImageIOBase::CHAR   : this->_GD1< itk::RGBAPixel<   char >, _Dim >( io ); break;
+    case itk::ImageIOBase::SHORT  : this->_GD1< itk::RGBAPixel<  short >, _Dim >( io ); break;
+    case itk::ImageIOBase::INT    : this->_GD1< itk::RGBAPixel<    int >, _Dim >( io ); break;
+    case itk::ImageIOBase::LONG   : this->_GD1< itk::RGBAPixel<   long >, _Dim >( io ); break;
+    case itk::ImageIOBase::FLOAT  : this->_GD1< itk::RGBAPixel<  float >, _Dim >( io ); break;
+    case itk::ImageIOBase::DOUBLE : this->_GD1< itk::RGBAPixel< double >, _Dim >( io ); break;
+    case itk::ImageIOBase::UCHAR  : this->_GD1< itk::RGBAPixel<  uchar >, _Dim >( io ); break;
+    case itk::ImageIOBase::USHORT : this->_GD1< itk::RGBAPixel< ushort >, _Dim >( io ); break;
+    case itk::ImageIOBase::UINT   : this->_GD1< itk::RGBAPixel<   uint >, _Dim >( io ); break;
+    case itk::ImageIOBase::ULONG  : this->_GD1< itk::RGBAPixel<  ulong >, _Dim >( io ); break;
+    default: this->_Error( "RGBA pixel type not supported." ); break;
     } // hctiws
   }
   else if( pt == itk::ImageIOBase::COMPLEX )
   {
     switch( ct )
     {
-    case itk::ImageIOBase::FLOAT  : r = this->_GD1< std::complex<  float >, _Dim >( io ); break;
-    case itk::ImageIOBase::DOUBLE : r = this->_GD1< std::complex< double >, _Dim >( io ); break;
-    default:
-      r = "IO::ImageReader: complex pixel type not supported.";
-      break;
+    case itk::ImageIOBase::FLOAT  : this->_GD1< std::complex< float >, _Dim >( io ); break;
+    case itk::ImageIOBase::DOUBLE : this->_GD1< std::complex< double >, _Dim >( io ); break;
+    default: this->_Error( "Complex pixel type not supported." ); break;
     } // hctiws
   }
   /* TODO
@@ -177,19 +167,17 @@ _GD0( itk::ImageIOBase* io )
      }
   */
   else
-    r = "IO::ImageReader: Image pixel type not yet supported.";
-  return( r );
+    this->_Error( "Image pixel type not yet supported." );
 }
 
 // -------------------------------------------------------------------------
 template< class _TPixel, unsigned int _Dim >
-std::string cpPluginsIO::ImageReader::
+void cpPluginsIO::ImageReader::
 _GD1( itk::ImageIOBase* io )
 {
   typedef itk::Image< _TPixel, _Dim > _TImage;
 
   // Get filenames
-  std::string r = "";
   auto fnames = this->m_Parameters.GetOpenFileNameList( "FileNames" );
   if( fnames.size( ) == 1 )
   {
@@ -203,7 +191,7 @@ _GD1( itk::ImageIOBase* io )
     }
     catch( itk::ExceptionObject& err )
     {
-      r = "IO::ImageReader: " + std::string( err.GetDescription( ) );
+      this->_Error( err.GetDescription( ) );
     }
   }
   else // if( fnames.size( ) > 1 )
@@ -219,11 +207,10 @@ _GD1( itk::ImageIOBase* io )
     }
     catch( itk::ExceptionObject& err )
     {
-      r = "IO::ImageReader: " + std::string( err.GetDescription( ) );
+      this->_Error( err.GetDescription( ) );
     }
 
   } // fi
-  return( r );
 }
 
 // eof - $RCSfile$