X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FImageReader.cxx;h=73611cb4a7130c7ac13d309d3afc6e4485f1df5d;hb=682f9e89a6ad9d24eadc51751a56fd3f146d649b;hp=fc752efaafe5d8227b2be6f91e70bebd6ae2c452;hpb=3b51a08c6a78ed09578f198f6a13dd769d460bef;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/ImageReader.cxx b/lib/cpPlugins/Plugins/ImageReader.cxx index fc752ef..73611cb 100644 --- a/lib/cpPlugins/Plugins/ImageReader.cxx +++ b/lib/cpPlugins/Plugins/ImageReader.cxx @@ -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 }