X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=plugins%2FITKIO%2FImageReader.cxx;h=90b032fc2fedfc01439bac24aff94887cbabbcf9;hb=8503ed517290328e3770807b09ff27bf55d66571;hp=c4f310e3842f558beee2a73fe63fa84e22af40ca;hpb=84d74813c987aaa92eed8579e2122f67c0d5159d;p=cpPlugins.git diff --git a/plugins/ITKIO/ImageReader.cxx b/plugins/ITKIO/ImageReader.cxx index c4f310e..90b032f 100644 --- a/plugins/ITKIO/ImageReader.cxx +++ b/plugins/ITKIO/ImageReader.cxx @@ -1,5 +1,5 @@ #include -#include +#include #include #define ITKIOImageBase_HIDDEN @@ -34,7 +34,7 @@ cpPluginsITKIO::ImageReader:: ImageReader( ) : Superclass( ) { - this->_ConfigureOutput< cpInstances::Image >( "Output" ); + this->_ConfigureOutput< cpInstances::DataObjects::Image >( "Output" ); this->m_Parameters.Clear( ); this->m_Parameters.ConfigureAsOpenFileNameList( "FileNames" ); this->m_Parameters.SetAcceptedFileExtensions( @@ -55,12 +55,18 @@ _GenerateData( ) { // Get filenames auto fnames = this->m_Parameters.GetOpenFileNameList( "FileNames" ); + std::string fname = ""; if( fnames.size( ) > 1 ) { std::stringstream fname_str; fname_str << fnames[ 0 ] << cpPlugins_PATH_SEPARATOR << fnames[ 1 ]; - std::string fname = fname_str.str( ); + fname = fname_str.str( ); + } + else if( fnames.size( ) == 1 ) + fname = fnames[ 0 ]; + if( fname != "" ) + { // Guess image properties itk::ImageIOBase::Pointer io = itk::ImageIOFactory::CreateImageIO( @@ -72,18 +78,18 @@ _GenerateData( ) io->ReadImageInformation( ); bool success = false; unsigned int dim = io->GetNumberOfDimensions( ); -#ifdef cpPlugins_CONFIG_PROCESS_DIMENSIONS_1 +#ifdef cpPlugins_PROCESS_DIMS_1 if( dim == 1 ) success = this->_GD0< 1 >( io ); -#endif // cpPlugins_CONFIG_PROCESS_DIMENSIONS_1 -#ifdef cpPlugins_CONFIG_PROCESS_DIMENSIONS_2 +#endif // cpPlugins_PROCESS_DIMS_1 +#ifdef cpPlugins_PROCESS_DIMS_2 if( dim == 2 ) success = this->_GD0< 2 >( io ); -#endif // cpPlugins_CONFIG_PROCESS_DIMENSIONS_2 -#ifdef cpPlugins_CONFIG_PROCESS_DIMENSIONS_3 +#endif // cpPlugins_PROCESS_DIMS_2 +#ifdef cpPlugins_PROCESS_DIMS_3 if( dim == 3 ) success = this->_GD0< 3 >( io ); -#endif // cpPlugins_CONFIG_PROCESS_DIMENSIONS_3 -#ifdef cpPlugins_CONFIG_PROCESS_DIMENSIONS_4 +#endif // cpPlugins_PROCESS_DIMS_3 +#ifdef cpPlugins_PROCESS_DIMS_4 if( dim == 4 ) success = this->_GD0< 4 >( io ); -#endif // cpPlugins_CONFIG_PROCESS_DIMENSIONS_4 +#endif // cpPlugins_PROCESS_DIMS_4 if( !success ) this->_Error( "Image dimension not supported." ); } @@ -114,150 +120,82 @@ _GD0( itk::ImageIOBase* io ) bool success = false; if( pt == itk::ImageIOBase::SCALAR ) { -#ifdef cpPlugins_CONFIG_INTEGER_TYPES_char if( ct == itk::ImageIOBase::CHAR ) success = this->_GD1< char, _Dim >( io ); if( ct == itk::ImageIOBase::UCHAR ) success = this->_GD1< uchar, _Dim >( io ); -#endif // cpPlugins_CONFIG_INTEGER_TYPES_char -#ifdef cpPlugins_CONFIG_INTEGER_TYPES_short if( ct == itk::ImageIOBase::SHORT ) success = this->_GD1< short, _Dim >( io ); if( ct == itk::ImageIOBase::USHORT ) success = this->_GD1< ushort, _Dim >( io ); -#endif // cpPlugins_CONFIG_INTEGER_TYPES_short -#ifdef cpPlugins_CONFIG_INTEGER_TYPES_int if( ct == itk::ImageIOBase::INT ) success = this->_GD1< int, _Dim >( io ); if( ct == itk::ImageIOBase::UINT ) success = this->_GD1< uint, _Dim >( io ); -#endif // cpPlugins_CONFIG_INTEGER_TYPES_int -#ifdef cpPlugins_CONFIG_INTEGER_TYPES_long if( ct == itk::ImageIOBase::LONG ) success = this->_GD1< long, _Dim >( io ); if( ct == itk::ImageIOBase::ULONG ) success = this->_GD1< ulong, _Dim >( io ); -#endif // cpPlugins_CONFIG_INTEGER_TYPES_long -#ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< float, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_float -#ifdef cpPlugins_CONFIG_REAL_TYPES_double if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< double, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_double } else if( pt == itk::ImageIOBase::RGB ) { -#ifdef cpPlugins_CONFIG_COLOR_PIXELS_RGBPixel -# ifdef cpPlugins_CONFIG_INTEGER_TYPES_char if( ct == itk::ImageIOBase::CHAR ) success = this->_GD1< itk::RGBPixel< char >, _Dim >( io ); if( ct == itk::ImageIOBase::UCHAR ) success = this->_GD1< itk::RGBPixel< uchar >, _Dim >( io ); -# endif // cpPlugins_CONFIG_INTEGER_TYPES_char -# ifdef cpPlugins_CONFIG_INTEGER_TYPES_short if( ct == itk::ImageIOBase::SHORT ) success = this->_GD1< itk::RGBPixel< short >, _Dim >( io ); if( ct == itk::ImageIOBase::USHORT ) success = this->_GD1< itk::RGBPixel< ushort >, _Dim >( io ); -# endif // cpPlugins_CONFIG_INTEGER_TYPES_short -# ifdef cpPlugins_CONFIG_INTEGER_TYPES_int if( ct == itk::ImageIOBase::INT ) success = this->_GD1< itk::RGBPixel< int >, _Dim >( io ); if( ct == itk::ImageIOBase::UINT ) success = this->_GD1< itk::RGBPixel< uint >, _Dim >( io ); -# endif // cpPlugins_CONFIG_INTEGER_TYPES_int -# ifdef cpPlugins_CONFIG_INTEGER_TYPES_long if( ct == itk::ImageIOBase::LONG ) success = this->_GD1< itk::RGBPixel< long >, _Dim >( io ); if( ct == itk::ImageIOBase::ULONG ) success = this->_GD1< itk::RGBPixel< ulong >, _Dim >( io ); -# endif // cpPlugins_CONFIG_INTEGER_TYPES_long -# ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::RGBPixel< float >, _Dim >( io ); -# endif // cpPlugins_CONFIG_REAL_TYPES_float -# ifdef cpPlugins_CONFIG_REAL_TYPES_double if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< itk::RGBPixel< double >, _Dim >( io ); -# endif // cpPlugins_CONFIG_REAL_TYPES_double -#endif // cpPlugins_CONFIG_COLOR_PIXELS_RGBPixel } else if( pt == itk::ImageIOBase::RGBA ) { -#ifdef cpPlugins_CONFIG_COLOR_PIXELS_RGBAPixel -# ifdef cpPlugins_CONFIG_INTEGER_TYPES_char if( ct == itk::ImageIOBase::CHAR ) success = this->_GD1< itk::RGBAPixel< char >, _Dim >( io ); if( ct == itk::ImageIOBase::UCHAR ) success = this->_GD1< itk::RGBAPixel< uchar >, _Dim >( io ); -# endif // cpPlugins_CONFIG_INTEGER_TYPES_char -# ifdef cpPlugins_CONFIG_INTEGER_TYPES_short if( ct == itk::ImageIOBase::SHORT ) success = this->_GD1< itk::RGBAPixel< short >, _Dim >( io ); if( ct == itk::ImageIOBase::USHORT ) success = this->_GD1< itk::RGBAPixel< ushort >, _Dim >( io ); -# endif // cpPlugins_CONFIG_INTEGER_TYPES_short -# ifdef cpPlugins_CONFIG_INTEGER_TYPES_int if( ct == itk::ImageIOBase::INT ) success = this->_GD1< itk::RGBAPixel< int >, _Dim >( io ); if( ct == itk::ImageIOBase::UINT ) success = this->_GD1< itk::RGBAPixel< uint >, _Dim >( io ); -# endif // cpPlugins_CONFIG_INTEGER_TYPES_int -# ifdef cpPlugins_CONFIG_INTEGER_TYPES_long if( ct == itk::ImageIOBase::LONG ) success = this->_GD1< itk::RGBAPixel< long >, _Dim >( io ); if( ct == itk::ImageIOBase::ULONG ) success = this->_GD1< itk::RGBAPixel< ulong >, _Dim >( io ); -# endif // cpPlugins_CONFIG_INTEGER_TYPES_long -# ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::RGBAPixel< float >, _Dim >( io ); -# endif // cpPlugins_CONFIG_REAL_TYPES_float -# ifdef cpPlugins_CONFIG_REAL_TYPES_double if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< itk::RGBAPixel< double >, _Dim >( io ); -# endif // cpPlugins_CONFIG_REAL_TYPES_double -#endif // cpPlugins_CONFIG_COLOR_PIXELS_RGBAPixel } else if( pt == itk::ImageIOBase::COMPLEX ) { -#ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< std::complex< float >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_float -#ifdef cpPlugins_CONFIG_REAL_TYPES_double if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< std::complex< double >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_double } else if( pt == itk::ImageIOBase::COVARIANTVECTOR ) { -#ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::CovariantVector< float, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_float -#ifdef cpPlugins_CONFIG_REAL_TYPES_double - if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::CovariantVector< double, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_double + if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< itk::CovariantVector< double, _Dim >, _Dim >( io ); } else if( pt == itk::ImageIOBase::POINT ) { -#ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::Point< float, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_float -#ifdef cpPlugins_CONFIG_REAL_TYPES_double - if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::Point< double, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_double + if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< itk::Point< double, _Dim >, _Dim >( io ); } else if( pt == itk::ImageIOBase::VECTOR ) { -#ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::Vector< float, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_float -#ifdef cpPlugins_CONFIG_REAL_TYPES_double - if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::Vector< double, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_double + if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< itk::Vector< double, _Dim >, _Dim >( io ); } else if( pt == itk::ImageIOBase::SYMMETRICSECONDRANKTENSOR ) { -#ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::SymmetricSecondRankTensor< float, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_float -#ifdef cpPlugins_CONFIG_REAL_TYPES_double - if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::SymmetricSecondRankTensor< double, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_double + if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< itk::SymmetricSecondRankTensor< double, _Dim >, _Dim >( io ); } else if( pt == itk::ImageIOBase::DIFFUSIONTENSOR3D ) { if( _Dim == 3 ) { -#ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::DiffusionTensor3D< float >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_float -#ifdef cpPlugins_CONFIG_REAL_TYPES_double - if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::DiffusionTensor3D< double >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_double + if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< itk::DiffusionTensor3D< double >, _Dim >( io ); } else this->_Error( "DiffusionTensor3D dimension not supported." ); } else if( pt == itk::ImageIOBase::MATRIX ) { -#ifdef cpPlugins_CONFIG_REAL_TYPES_float if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::Matrix< float, _Dim, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_float -#ifdef cpPlugins_CONFIG_REAL_TYPES_double - if( ct == itk::ImageIOBase::FLOAT ) success = this->_GD1< itk::Matrix< double, _Dim, _Dim >, _Dim >( io ); -#endif // cpPlugins_CONFIG_REAL_TYPES_double + if( ct == itk::ImageIOBase::DOUBLE ) success = this->_GD1< itk::Matrix< double, _Dim, _Dim >, _Dim >( io ); } else if( pt == itk::ImageIOBase::OFFSET ) { @@ -278,10 +216,13 @@ _GD1( itk::ImageIOBase* io ) // Get filenames auto fnames = this->m_Parameters.GetOpenFileNameList( "FileNames" ); - if( fnames.size( ) == 2 ) + if( fnames.size( ) == 1 || fnames.size( ) == 2 ) { std::stringstream fname_str; - fname_str << fnames[ 0 ] << cpPlugins_PATH_SEPARATOR << fnames[ 1 ]; + if( fnames.size( ) == 1 ) + fname_str << fnames[ 0 ]; + else + fname_str << fnames[ 0 ] << cpPlugins_PATH_SEPARATOR << fnames[ 1 ]; auto f = this->_CreateITK< itk::ImageFileReader< _TImage > >( ); f->SetFileName( fname_str.str( ) );