#include #include #include // ------------------------------------------------------------------------- cpPlugins::Plugins::ImageWriter:: ImageWriter( ) : Superclass( ) { this->m_ClassName = "cpPlugins::ImageWriter"; this->m_ClassCategory = "ImageWriter"; this->SetNumberOfInputs( 1 ); using namespace cpPlugins::Interface; this->m_DefaultParameters.Configure( Parameters::String, "FileName" ); this->m_Parameters = this->m_DefaultParameters; } // ------------------------------------------------------------------------- cpPlugins::Plugins::ImageWriter:: ~ImageWriter( ) { } // ------------------------------------------------------------------------- std::string cpPlugins::Plugins::ImageWriter:: _GenerateData( ) { cpPlugins::Interface::Image* image = this->_Input< cpPlugins::Interface::Image >( 0 ); if( image == NULL ) return( "ImageWriter: No input image." ); itk::DataObject* itk_image = NULL; std::string r = ""; cpPlugins_Image_Input_Demangle_Dimension_AllTypes( 2, image, itk_image, r, _RealGD ); else cpPlugins_Image_Input_Demangle_Dimension_AllTypes( 3, image, itk_image, r, _RealGD ); else cpPlugins_Image_Input_Demangle_Dimension_AllTypes( 4, image, itk_image, r, _RealGD ); else cpPlugins_Image_Input_Demangle( itk::DiffusionTensor3D< float >, 3, image, itk_image, r, _RealGD ); else cpPlugins_Image_Input_Demangle( itk::DiffusionTensor3D< double >, 3, image, itk_image, r, _RealGD ); else r = "ImageWriter: Input image type not supported."; return( r ); } // ------------------------------------------------------------------------- template< class I > std::string cpPlugins::Plugins::ImageWriter:: _RealGD( itk::DataObject* image ) { typedef itk::ImageFileWriter< I > _W; // Get filename std::string fname = this->m_Parameters.GetValueAsString( "FileName" ); _W* writer = dynamic_cast< _W* >( this->m_RealProcessObject.GetPointer( ) ); if( writer == NULL ) { this->m_RealProcessObject = _W::New( ); writer = dynamic_cast< _W* >( this->m_RealProcessObject.GetPointer( ) ); } // fi writer->SetFileName( fname ); writer->SetInput( dynamic_cast< I* >( image ) ); try { writer->Update( ); } catch( itk::ExceptionObject& err ) { return( "ImageWriter: " + std::string( err.GetDescription( ) ) ); } // yrt return( "" ); } // eof - $RCSfile$