]> Creatis software - cpPlugins.git/blob - plugins/cpPluginsIO/ImageWriter.cxx
...
[cpPlugins.git] / plugins / cpPluginsIO / ImageWriter.cxx
1 #include <cpPluginsIO/ImageWriter.h>
2 #include <cpPlugins/Image.h>
3 #include <cpPlugins_Instances/ImageIO.h>
4
5 // -------------------------------------------------------------------------
6 cpPluginsIO::ImageWriter::
7 ImageWriter( )
8   : Superclass( )
9 {
10   this->_AddInput( "Input" );
11   this->m_Parameters.Clear( );
12   this->m_Parameters.ConfigureAsSaveFileName( "FileName" );
13   this->m_Parameters.SetAcceptedFileExtensions(
14     "FileName",
15     "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
16     );
17 }
18
19 // -------------------------------------------------------------------------
20 cpPluginsIO::ImageWriter::
21 ~ImageWriter( )
22 {
23 }
24
25 // -------------------------------------------------------------------------
26 std::string cpPluginsIO::ImageWriter::
27 _GenerateData( )
28 {
29   auto input = this->GetInputData( "Input" );
30   try
31   {
32     std::string   r = cpPlugin_Image_Demangle_Dim( _GD0, input, 3 );
33     if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 2 );
34     if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 4 );
35     if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 1 );
36     return( r );
37   }
38   catch( itk::ExceptionObject& err )
39   {
40     return( "IO::ImageWriter: " + std::string( err.GetDescription( ) ) );
41   }
42 }
43
44 // -------------------------------------------------------------------------
45 template< class _TInput >
46 std::string cpPluginsIO::ImageWriter::
47 _GD0( _TInput* image )
48 {
49   static const unsigned int D = _TInput::ImageDimension;
50   if( image == NULL )
51     return( "IO::ImageWriter: Invalid image dimension." );
52
53   std::string   cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD1, image, D );
54   if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllColor( r, _GD1, image, D );
55   return( r );
56 }
57
58 // -------------------------------------------------------------------------
59 template< class _TInput >
60 std::string cpPluginsIO::ImageWriter::
61 _GD1( _TInput* image )
62 {
63   typedef itk::ImageFileWriter< _TInput > _TFilter;
64
65   if( image == NULL )
66     return( "IO::ImageWriter: Invalid pixel type." );
67   auto f = this->_CreateITK< _TFilter >( );
68   f->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
69   f->SetInput( image );
70   f->Update( );
71   return( "" );
72 }
73
74 // eof - $RCSfile$