]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Plugins/IO/ImageWriter.cxx
...
[cpPlugins.git] / lib / cpPlugins / Plugins / IO / ImageWriter.cxx
index ba9417324d4f394d4e8c552a0ef6bef94bd7f105..234c916f99f5955407294607dc9edd948ebc1eeb 100644 (file)
@@ -8,13 +8,12 @@ cpPlugins::IO::ImageWriter::
 ImageWriter( )
   : Superclass( )
 {
-  this->m_ClassName = "cpPlugins::IO::ImageWriter";
-  this->m_ClassCategory = "ImageWriter";
-  this->SetNumberOfInputs( 1 );
-
-  using namespace cpPlugins::Interface;
-  this->m_DefaultParameters.Configure( Parameters::String, "FileName" );
-  this->m_Parameters = this->m_DefaultParameters;
+  this->_AddInput( "Input" );
+  this->m_Parameters->ConfigureAsSaveFileName( "FileName" );
+  this->m_Parameters->SetAcceptedFileExtensions(
+    "FileName",
+    "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
+    );
 }
 
 // -------------------------------------------------------------------------
@@ -27,22 +26,39 @@ cpPlugins::IO::ImageWriter::
 std::string cpPlugins::IO::ImageWriter::
 _GenerateData( )
 {
-  cpPlugins::Interface::Image* image =
-    this->GetInput< cpPlugins::Interface::Image >( 0 );
-  if( image == NULL )
-    return( "ImageWriter: No input image." );
+  // Thank you very much Microsoft !!! :-@
+  std::string   r = this->_GD0_Image< 2 >( );
+  if( r != "" ) r = this->_GD0_Image< 3 >( );
+  if( r != "" ) r = this->_GD0_Image< 4 >( );
+  if( r != "" ) r = this->_GD0_VectorImage< 2 >( );
+  if( r != "" ) r = this->_GD0_VectorImage< 3 >( );
+  if( r != "" ) r = this->_GD0_VectorImage< 4 >( );
+  return( r );
+}
 
+// -------------------------------------------------------------------------
+template< unsigned int D >
+std::string cpPlugins::IO::ImageWriter::
+_GD0_Image( )
+{
+  auto image = this->GetInputData< cpPlugins::Interface::Image >( "Input" );
   itk::DataObject* itk_image = NULL;
   std::string r = "";
-  /*
-  cpPlugins_Image_Demangle_AllTypes( 2, image, itk_image, r, _RealGD );
-  else cpPlugins_Image_Demangle_AllTypes( 3, image, itk_image, r, _RealGD );
-  else cpPlugins_Image_Demangle_AllTypes( 4, image, itk_image, r, _RealGD );
-  else cpPlugins_VectorImage_Demangle_AllTypes( 2, image, itk_image, r, _RealGD );
-  else cpPlugins_VectorImage_Demangle_AllTypes( 3, image, itk_image, r, _RealGD );
-  else cpPlugins_VectorImage_Demangle_AllTypes( 4, image, itk_image, r, _RealGD );
-  else */r = "ImageWriter: Input image type not supported.";
+  cpPlugins_Image_Demangle_AllTypes( D, image, itk_image, r, _RealGD );
+  else r = "ImageWriter: Input image type not supported.";
+  return( r );
+}
 
+// -------------------------------------------------------------------------
+template< unsigned int D >
+std::string cpPlugins::IO::ImageWriter::
+_GD0_VectorImage( )
+{
+  auto image = this->GetInputData< cpPlugins::Interface::Image >( "Input" );
+  itk::DataObject* itk_image = NULL;
+  std::string r = "";
+  cpPlugins_VectorImage_Demangle_AllTypes( D, image, itk_image, r, _RealGD );
+  else r = "ImageWriter: Input image type not supported.";
   return( r );
 }
 
@@ -51,12 +67,9 @@ template< class I >
 std::string cpPlugins::IO::ImageWriter::
 _RealGD( itk::DataObject* image )
 {
-  // Get filename
-  std::string fname = this->m_Parameters.GetValueAsString( "FileName" );
-
   typedef itk::ImageFileWriter< I > _W;
   _W* writer = this->_CreateITK< _W >( );
-  writer->SetFileName( fname );
+  writer->SetFileName( this->m_Parameters->GetSaveFileName( "FileName" ) );
   writer->SetInput( dynamic_cast< I* >( image ) );
   try
   {