]> Creatis software - cpPlugins.git/blob - plugins/ITKIO/ImageWriter.cxx
Cast image filter added. ROI filter modified.
[cpPlugins.git] / plugins / ITKIO / ImageWriter.cxx
1 #include <ITKIO/ImageWriter.h>
2 #include <cpInstances/Image.h>
3 #include <cpPlugins/QT/SaveFileDialog.h>
4
5 #define ITKIOImageBase_HIDDEN
6 #include <itkImageFileWriter.h>
7 #include <itkImage.h>
8
9 #ifdef cpPlugins_QT4
10 #  include <QApplication>
11 #endif // cpPlugins_QT4
12
13 // -------------------------------------------------------------------------
14 QDialog* cpPluginsITKIO::ImageWriter::
15 CreateQDialog( )
16 {
17 #ifdef cpPlugins_QT4
18   cpPlugins::QT::SaveFileDialog* dlg = NULL;
19   if( QApplication::instance( ) != NULL )
20   {
21     dlg = new cpPlugins::QT::SaveFileDialog( );
22     dlg->SetParameters( &( this->m_Parameters ), "FileName" );
23
24   } // fi
25   return( dlg );
26 #else // cpPlugins_QT4
27   return( NULL );
28 #endif // cpPlugins_QT4
29 }
30
31 // -------------------------------------------------------------------------
32 cpPluginsITKIO::ImageWriter::
33 ImageWriter( )
34   : Superclass( )
35 {
36   this->_ConfigureInput< cpInstances::Image >( "Input", true, false );
37   this->m_Parameters.ConfigureAsSaveFileName( "FileName", "" );
38   this->m_Parameters.SetAcceptedFileExtensions(
39     "FileName",
40     "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
41     );
42 }
43
44 // -------------------------------------------------------------------------
45 cpPluginsITKIO::ImageWriter::
46 ~ImageWriter( )
47 {
48 }
49
50 // -------------------------------------------------------------------------
51 void cpPluginsITKIO::ImageWriter::
52 _GenerateData( )
53 {
54   auto o = this->GetInputData( "Input" );
55   cpPlugins_Demangle_Image_ProcessDims_1( o, _GD0 )
56     cpPlugins_Demangle_Image_DiffTensors3D_1( o, _GD1 )
57     this->_Error( "Invalid input image dimension." );
58 }
59
60 // -------------------------------------------------------------------------
61 template< class _TImage >
62 void cpPluginsITKIO::ImageWriter::
63 _GD0( _TImage* image )
64 {
65   cpPlugins_Demangle_Image_ScalarPixels_1( image, _GD1, _TImage::ImageDimension )
66     cpPlugins_Demangle_Image_ComplexPixels_1( image, _GD1, _TImage::ImageDimension )
67     cpPlugins_Demangle_Image_ColorPixels_1( image, _GD1, _TImage::ImageDimension )
68     cpPlugins_Demangle_Image_VectorPixels_1( image, _GD1, _TImage::ImageDimension )
69     this->_Error( "Invalid input image pixel type." );
70 }
71
72 // -------------------------------------------------------------------------
73 template< class _TImage >
74 void cpPluginsITKIO::ImageWriter::
75 _GD1( _TImage* image )
76 {
77   typedef itk::ImageFileWriter< _TImage > _TFilter;
78
79   auto f = this->_CreateITK< _TFilter >( );
80   f->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
81   f->SetInput( image );
82   try
83   {
84     f->Update( );
85   }
86   catch( itk::ExceptionObject& err )
87   {
88     this->_Error( err.GetDescription( ) );
89
90   } // yrt
91 }
92
93 // eof - $RCSfile$