X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FImageReader.cxx;h=73611cb4a7130c7ac13d309d3afc6e4485f1df5d;hb=96914c02e23847c9d4ecdd085da689e61abb58f8;hp=24399718c9e5477f8c6a45fb6461abe95e5e0570;hpb=48412b66ce1d8d8831625f1a3f51f7e78825f9a1;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/ImageReader.cxx b/lib/cpPlugins/Plugins/ImageReader.cxx index 2439971..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,28 +49,15 @@ _GenerateData( ) { io->SetFileName( names[ 0 ] ); io->ReadImageInformation( ); - if( names.size( ) == 1 ) + if( names.size( ) >= 1 ) { switch( io->GetNumberOfDimensions( ) ) { - case 1: r = this->_GD0< 1 >( io, names ); break; case 2: r = this->_GD0< 2 >( io, names ); break; 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 @@ -163,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 } @@ -184,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 } @@ -205,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 @@ -230,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 } @@ -251,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 } @@ -272,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 @@ -283,9 +365,6 @@ _GD0( itk::ImageIOBase* io, const TStringList& names ) { switch( D ) { - case 1: - r = this->_RealGD< itk::Offset< 1 >, 1 >( names ); - break; case 2: r = this->_RealGD< itk::Offset< 2 >, 2 >( names ); break; @@ -341,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 } @@ -383,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."; } @@ -418,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 ) { @@ -436,12 +535,12 @@ _RealGD( const TStringList& names ) try { reader->Update( ); - this->m_Outputs[ 0 ]->SetITKDataObject( reader->GetOutput( ) ); + out->SetITKImage< _I >( reader->GetOutput( ) ); } catch( itk::ExceptionObject& err ) { r = "ImageReader: " + std::string( err.GetDescription( ) ); - this->m_Outputs[ 0 ]->SetITKDataObject( NULL ); + out->SetITKImage< _I >( NULL ); } // yrt } @@ -464,16 +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( ); - this->m_Outputs[ 0 ]->SetITKDataObject( reader->GetOutput( ) ); + out->SetITKImage< _I >( reader->GetOutput( ) ); } catch( itk::ExceptionObject& err ) { r = "ImageReader: " + std::string( err.GetDescription( ) ); - this->m_Outputs[ 0 ]->SetITKDataObject( NULL ); + out->SetITKImage< _I >( NULL ); } // yrt }