--- /dev/null
+#include <cpPluginsIO/ImageWriter.h>
+#include <cpPlugins/Image.h>
+
+#include <itkImageFileWriter.h>
+#include <itkImageFileWriter.hxx>
+#include <itkImageAlgorithm.hxx>
+
+// -------------------------------------------------------------------------
+cpPluginsIO::ImageWriter::
+ImageWriter( )
+ : Superclass( )
+{
+ this->_AddInput( "Input" );
+ this->m_Parameters.Clear( );
+ this->m_Parameters.ConfigureAsSaveFileName( "FileName" );
+ this->m_Parameters.SetAcceptedFileExtensions(
+ "FileName",
+ "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
+ );
+}
+
+// -------------------------------------------------------------------------
+cpPluginsIO::ImageWriter::
+~ImageWriter( )
+{
+}
+
+// -------------------------------------------------------------------------
+std::string cpPluginsIO::ImageWriter::
+_GenerateData( )
+{
+ auto input = this->GetInputData( "Input" );
+ try
+ {
+ std::string r = cpPlugin_Image_Demangle_Dim( _GD0, input, 3 );
+ if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 2 );
+ if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 4 );
+ if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 1 );
+ return( r );
+ }
+ catch( itk::ExceptionObject& err )
+ {
+ return( "IO::ImageWriter: " + std::string( err.GetDescription( ) ) );
+ }
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+std::string cpPluginsIO::ImageWriter::
+_GD0( I* image )
+{
+ static const unsigned int D = I::ImageDimension;
+ if( image == NULL )
+ return( "IO::ImageWriter: Invalid image dimension." );
+
+ std::string cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD1, image, D );
+ if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllColor( r, _GD1, image, D );
+ return( r );
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+std::string cpPluginsIO::ImageWriter::
+_GD1( I* image )
+{
+ if( image == NULL )
+ return( "IO::ImageWriter: Invalid pixel type." );
+ auto f = this->_CreateITK< itk::ImageFileWriter< I > >( );
+ f->SetFileName( this->m_Parameters.GetOpenFileName( "FileName" ) );
+ f->SetInput( image );
+ f->Update( );
+ return( "" );
+}
+
+// eof - $RCSfile$