#include <cpPluginsIO/ImageWriter.h>
#include <cpPlugins/Image.h>
-
-#include <itkImageFileWriter.h>
-#include <itkImageFileWriter.hxx>
-#include <itkImageAlgorithm.hxx>
+#include <cpPlugins_Instances/ImagesIO.h>
// -------------------------------------------------------------------------
cpPluginsIO::ImageWriter::
}
// -------------------------------------------------------------------------
-std::string cpPluginsIO::ImageWriter::
+void 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( ) ) );
- }
+ auto image = this->GetInputData( "Input" )->GetITK< itk::DataObject >( );
+ cpPlugins_Image_Demangle_Dim ( _GD0, image, 2 );
+ else cpPlugins_Image_Demangle_Dim( _GD0, image, 3 );
+ else this->_Error( "No valid input image dimension" );
}
// -------------------------------------------------------------------------
-template< class I >
-std::string cpPluginsIO::ImageWriter::
-_GD0( I* image )
+template< class _TImage >
+void cpPluginsIO::ImageWriter::
+_GD0( _TImage* 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 );
+ static const unsigned int D = _TImage::ImageDimension;
+ cpPlugins_Image_Demangle_Pixel_AllScalars ( _GD1, image, D );
+ else cpPlugins_Image_Demangle_ColorPixel_AllScalars( _GD1, image, RGB, D );
+ else cpPlugins_Image_Demangle_ColorPixel_AllScalars( _GD1, image, RGBA, D );
}
// -------------------------------------------------------------------------
-template< class I >
-std::string cpPluginsIO::ImageWriter::
-_GD1( I* image )
+template< class _TImage >
+void cpPluginsIO::ImageWriter::
+_GD1( _TImage* image )
{
- if( image == NULL )
- return( "IO::ImageWriter: Invalid pixel type." );
- auto f = this->_CreateITK< itk::ImageFileWriter< I > >( );
+ typedef itk::ImageFileWriter< _TImage > _TFilter;
+ auto f = this->_CreateITK< _TFilter >( );
f->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
f->SetInput( image );
- f->Update( );
- return( "" );
+ try
+ {
+ f->Update( );
+ }
+ catch( itk::ExceptionObject& err )
+ {
+ this->_Error( err.GetDescription( ) );
+
+ } // yrt
}
// eof - $RCSfile$