#include #undef ITK_MANUAL_INSTANTIATION #include #include #include // ------------------------------------------------------------------------- #define cpPlugins_ImageWriter_Dimension( r, d, i, f ) \ if( dynamic_cast< itk::ImageBase< d >* >( i ) != NULL ) \ r = this->f< d >( i ) // ------------------------------------------------------------------------- #define cpPlugins_ImageWriter_Pixel( r, p, d, i, f ) \ if( dynamic_cast< itk::Image< p, d >* >( i ) != NULL ) \ r = this->f< p, d >( i ) // ------------------------------------------------------------------------- #define cpPlugins_ImageWriter_RGB( r, p, d, i, f ) \ if( \ dynamic_cast< itk::Image< itk::RGBPixel< p >, d >* >( i ) != NULL \ ) \ r = this->f< itk::RGBPixel< p >, d >( i ) // ------------------------------------------------------------------------- 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( ) { itk::DataObject* i = this->m_Inputs[ 0 ]->GetITKDataObject( ); std::string r = "ImageWriter: Image dimension not supported."; cpPlugins_ImageWriter_Dimension ( r, 1, i, _GD0 ); else cpPlugins_ImageWriter_Dimension( r, 2, i, _GD0 ); else cpPlugins_ImageWriter_Dimension( r, 3, i, _GD0 ); return( r ); } // ------------------------------------------------------------------------- template< unsigned int D > std::string cpPlugins::Plugins::ImageWriter:: _GD0( itk::DataObject* i ) { std::string r = "ImageWriter: Image pixel type not supported"; cpPlugins_ImageWriter_Pixel ( r, char , D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, short , D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, int , D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, long , D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, unsigned char , D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, unsigned short, D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, unsigned int , D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, unsigned long , D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, float , D, i, _GD1 ); else cpPlugins_ImageWriter_Pixel( r, double , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, char , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, short , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, int , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, long , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, unsigned char , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, unsigned short, D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, unsigned int , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, unsigned long , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, float , D, i, _GD1 ); else cpPlugins_ImageWriter_RGB ( r, double , D, i, _GD1 ); return( r ); } // ------------------------------------------------------------------------- template< class P, unsigned int D > std::string cpPlugins::Plugins::ImageWriter:: _GD1( itk::DataObject* i ) { typedef itk::Image< P, D > _I; typedef itk::ImageFileWriter< _I > _W; // Get filename using namespace cpPlugins::Interface; Parameters::TString 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* >( i ) ); try { writer->Update( ); } catch( itk::ExceptionObject& err ) { return( "ImageWriter: " + std::string( err.GetDescription( ) ) ); } // yrt return( "" ); } // eof - $RCSfile$