X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FIO%2FImageWriter.cxx;h=234c916f99f5955407294607dc9edd948ebc1eeb;hb=7e29f3aec097ba1bff1894fed6eb1094276c5b72;hp=c2b9b8a9795f461d8547968c7d76d63320249d36;hpb=f2f39f66027a98bd8dac50bade5618e0136bbefa;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/IO/ImageWriter.cxx b/lib/cpPlugins/Plugins/IO/ImageWriter.cxx index c2b9b8a..234c916 100644 --- a/lib/cpPlugins/Plugins/IO/ImageWriter.cxx +++ b/lib/cpPlugins/Plugins/IO/ImageWriter.cxx @@ -8,11 +8,12 @@ cpPlugins::IO::ImageWriter:: ImageWriter( ) : Superclass( ) { - this->SetNumberOfInputs( 1 ); - - using namespace cpPlugins::Interface; - this->m_DefaultParameters.Configure( Parameters::String, "FileName" ); - this->m_Parameters = this->m_DefaultParameters; + this->_AddInput( "Input" ); + this->m_Parameters->ConfigureAsSaveFileName( "FileName" ); + this->m_Parameters->SetAcceptedFileExtensions( + "FileName", + "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)" + ); } // ------------------------------------------------------------------------- @@ -25,22 +26,39 @@ cpPlugins::IO::ImageWriter:: std::string cpPlugins::IO::ImageWriter:: _GenerateData( ) { - cpPlugins::Interface::Image* image = - this->GetInput< cpPlugins::Interface::Image >( 0 ); - if( image == NULL ) - return( "ImageWriter: No input image." ); + // Thank you very much Microsoft !!! :-@ + std::string r = this->_GD0_Image< 2 >( ); + if( r != "" ) r = this->_GD0_Image< 3 >( ); + if( r != "" ) r = this->_GD0_Image< 4 >( ); + if( r != "" ) r = this->_GD0_VectorImage< 2 >( ); + if( r != "" ) r = this->_GD0_VectorImage< 3 >( ); + if( r != "" ) r = this->_GD0_VectorImage< 4 >( ); + return( r ); +} +// ------------------------------------------------------------------------- +template< unsigned int D > +std::string cpPlugins::IO::ImageWriter:: +_GD0_Image( ) +{ + auto image = this->GetInputData< cpPlugins::Interface::Image >( "Input" ); itk::DataObject* itk_image = NULL; std::string r = ""; - /* - cpPlugins_Image_Demangle_AllTypes( 2, image, itk_image, r, _RealGD ); - else cpPlugins_Image_Demangle_AllTypes( 3, image, itk_image, r, _RealGD ); - else cpPlugins_Image_Demangle_AllTypes( 4, image, itk_image, r, _RealGD ); - else cpPlugins_VectorImage_Demangle_AllTypes( 2, image, itk_image, r, _RealGD ); - else cpPlugins_VectorImage_Demangle_AllTypes( 3, image, itk_image, r, _RealGD ); - else cpPlugins_VectorImage_Demangle_AllTypes( 4, image, itk_image, r, _RealGD ); - else */r = "ImageWriter: Input image type not supported."; + cpPlugins_Image_Demangle_AllTypes( D, image, itk_image, r, _RealGD ); + else r = "ImageWriter: Input image type not supported."; + return( r ); +} +// ------------------------------------------------------------------------- +template< unsigned int D > +std::string cpPlugins::IO::ImageWriter:: +_GD0_VectorImage( ) +{ + auto image = this->GetInputData< cpPlugins::Interface::Image >( "Input" ); + itk::DataObject* itk_image = NULL; + std::string r = ""; + cpPlugins_VectorImage_Demangle_AllTypes( D, image, itk_image, r, _RealGD ); + else r = "ImageWriter: Input image type not supported."; return( r ); } @@ -49,12 +67,9 @@ template< class I > std::string cpPlugins::IO::ImageWriter:: _RealGD( itk::DataObject* image ) { - // Get filename - std::string fname = this->m_Parameters.GetValueAsString( "FileName" ); - typedef itk::ImageFileWriter< I > _W; _W* writer = this->_CreateITK< _W >( ); - writer->SetFileName( fname ); + writer->SetFileName( this->m_Parameters->GetSaveFileName( "FileName" ) ); writer->SetInput( dynamic_cast< I* >( image ) ); try {