]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Plugins/IO/ImageWriter.cxx
c2b9b8a9795f461d8547968c7d76d63320249d36
[cpPlugins.git] / lib / cpPlugins / Plugins / IO / ImageWriter.cxx
1 #include "ImageWriter.h"
2 #include <cpPlugins/Interface/Image.h>
3
4 #include <itkImageFileWriter.h>
5
6 // -------------------------------------------------------------------------
7 cpPlugins::IO::ImageWriter::
8 ImageWriter( )
9   : Superclass( )
10 {
11   this->SetNumberOfInputs( 1 );
12
13   using namespace cpPlugins::Interface;
14   this->m_DefaultParameters.Configure( Parameters::String, "FileName" );
15   this->m_Parameters = this->m_DefaultParameters;
16 }
17
18 // -------------------------------------------------------------------------
19 cpPlugins::IO::ImageWriter::
20 ~ImageWriter( )
21 {
22 }
23
24 // -------------------------------------------------------------------------
25 std::string cpPlugins::IO::ImageWriter::
26 _GenerateData( )
27 {
28   cpPlugins::Interface::Image* image =
29     this->GetInput< cpPlugins::Interface::Image >( 0 );
30   if( image == NULL )
31     return( "ImageWriter: No input image." );
32
33   itk::DataObject* itk_image = NULL;
34   std::string r = "";
35   /*
36   cpPlugins_Image_Demangle_AllTypes( 2, image, itk_image, r, _RealGD );
37   else cpPlugins_Image_Demangle_AllTypes( 3, image, itk_image, r, _RealGD );
38   else cpPlugins_Image_Demangle_AllTypes( 4, image, itk_image, r, _RealGD );
39   else cpPlugins_VectorImage_Demangle_AllTypes( 2, image, itk_image, r, _RealGD );
40   else cpPlugins_VectorImage_Demangle_AllTypes( 3, image, itk_image, r, _RealGD );
41   else cpPlugins_VectorImage_Demangle_AllTypes( 4, image, itk_image, r, _RealGD );
42   else */r = "ImageWriter: Input image type not supported.";
43
44   return( r );
45 }
46
47 // -------------------------------------------------------------------------
48 template< class I >
49 std::string cpPlugins::IO::ImageWriter::
50 _RealGD( itk::DataObject* image )
51 {
52   // Get filename
53   std::string fname = this->m_Parameters.GetValueAsString( "FileName" );
54
55   typedef itk::ImageFileWriter< I > _W;
56   _W* writer = this->_CreateITK< _W >( );
57   writer->SetFileName( fname );
58   writer->SetInput( dynamic_cast< I* >( image ) );
59   try
60   {
61     writer->Update( );
62   }
63   catch( itk::ExceptionObject& err )
64   {
65     return( "ImageWriter: " + std::string( err.GetDescription( ) ) );
66
67   } // yrt
68   return( "" );
69 }
70
71 // eof - $RCSfile$