#include <cpPlugins/Plugins/ImageWriter.h>
+#include <cpPlugins/Interface/Image.h>
+
+#include <itkImageFileWriter.h>
// -------------------------------------------------------------------------
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;
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std::string cpPlugins::Plugins::ImageWriter::
-GetClassName( ) const
+_GenerateData( )
{
- return( "cpPlugins::Plugins::ImageWriter" );
+ cpPlugins::Interface::Image* image =
+ this->GetInput< 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
+ );
+#ifndef _WIN32 // win32: Nested loops error ????
+ 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
+ );
+#endif // _WIN32
+ else r = "ImageWriter: Input image type not supported.";
+
+ return( r );
}
// -------------------------------------------------------------------------
-bool cpPlugins::Plugins::ImageWriter::
-Update( )
+template< class I >
+std::string cpPlugins::Plugins::ImageWriter::
+_RealGD( itk::DataObject* image )
{
- return( false );
+ 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$