X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FImageReader.cxx;h=73611cb4a7130c7ac13d309d3afc6e4485f1df5d;hb=96914c02e23847c9d4ecdd085da689e61abb58f8;hp=d4ca0ba1471f500df0036b130cdb87b93e6e032e;hpb=a3cae0375976d524c957493a3cc565b9f5b20bce;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/ImageReader.cxx b/lib/cpPlugins/Plugins/ImageReader.cxx index d4ca0ba..73611cb 100644 --- a/lib/cpPlugins/Plugins/ImageReader.cxx +++ b/lib/cpPlugins/Plugins/ImageReader.cxx @@ -1,21 +1,8 @@ #include #include -#include #include -#define ITK_MANUAL_INSTANTIATION -#include - -#include -#include -#include -#include -#include -#include -#include - -#undef ITK_MANUAL_INSTANTIATION #include #include @@ -62,7 +49,7 @@ _GenerateData( ) { io->SetFileName( names[ 0 ] ); io->ReadImageInformation( ); - if( names.size( ) == 1 ) + if( names.size( ) >= 1 ) { switch( io->GetNumberOfDimensions( ) ) { @@ -70,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 @@ -162,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 } @@ -183,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 } @@ -204,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 @@ -229,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 } @@ -250,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 } @@ -271,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 @@ -337,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 } @@ -379,6 +462,21 @@ _GD0( itk::ImageIOBase* io, const TStringList& names ) break; } // hctiws } + else if( D == 4 ) + { + switch( ct ) + { + case itk::ImageIOBase::FLOAT: + r = this->_RealGD< itk::DiffusionTensor3D< float >, 4 >( names ); + break; + case itk::ImageIOBase::DOUBLE: + r = this->_RealGD< itk::DiffusionTensor3D< double >, 4 >( names ); + break; + default: + r = "ImageReader: Diffusion tensor type not supported."; + break; + } // hctiws + } else r = "ImageReader: Diffusion tensor dimension not supported."; } @@ -414,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 ) { @@ -432,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 } @@ -470,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 }