]> Creatis software - cpPlugins.git/blobdiff - plugins/IO/ImageWriter.cxx
...
[cpPlugins.git] / plugins / IO / ImageWriter.cxx
index a8b30b4321cc78f504d8a4a67627d12cf2b17587..55238a7fd5ee5dc8d73247927073b0dcdde210dc 100644 (file)
@@ -1,75 +1,12 @@
-#include <plugins/IO/ImageWriter.h>
-#include <plugins/IO/ImageWriterQDialog.h>
-#include <cpPlugins/Image.h>
-#include <cpPlugins_Instances_ImageWriters.h>
+#include <IO/ImageWriter.h>
+#include <cpPlugins/DataObjects/Image.h>
+#include <cpPlugins/QT/SaveFileDialog.h>
 
-#ifdef cpPlugins_QT4
-
-#include <QApplication>
-#include <QFileInfo>
-
-// -------------------------------------------------------------------------
-cpPluginsIO::ImageWriterQDialog::
-ImageWriterQDialog( QWidget* parent )
-  : QFileDialog( parent ),
-    m_ProcessObject( NULL )
-{
-  this->connect(
-    this, SIGNAL( accepted( ) ), this, SLOT( _dlg_Accepted( ) )
-    );
-  this->setWindowTitle( "Save an image" );
-}
-
-// -------------------------------------------------------------------------
-cpPluginsIO::ImageWriterQDialog::
-~ImageWriterQDialog( )
-{
-}
-
-// -------------------------------------------------------------------------
-void cpPluginsIO::ImageWriterQDialog::
-setProcessObject( cpPlugins::ProcessObject* obj )
-{
-  if( obj == NULL )
-    return;
-  this->m_ProcessObject = obj;
-  auto parameters = this->m_ProcessObject->GetParameters( );
-  auto extensions = parameters->GetAcceptedFileExtensions( "FileName" );
-  auto filename = parameters->GetSaveFileName( "FileName" );
-
-  QStringList filters;
-  if( extensions != "" )
-    filters << extensions.c_str( );
-  filters << "Any file (*)";
-  this->setFileMode( QFileDialog::AnyFile );
-  this->setNameFilters( filters );
-  this->setAcceptMode( QFileDialog::AcceptSave );
-  if( filename != "" )
-  {
-    QFileInfo info( filename.c_str( ) );
-    if( info.exists( ) )
-      this->setDirectory( info.canonicalPath( ) );
-    else
-      this->setDirectory( "." );
-  }
-  else
-    this->setDirectory( "." );
-}
-
-// -------------------------------------------------------------------------
-void cpPluginsIO::ImageWriterQDialog::
-_dlg_Accepted( )
-{
-  if( this->m_ProcessObject != NULL )
-  {
-    auto param = this->m_ProcessObject->GetParameters( );
-    auto files = this->selectedFiles( );
-    if( files.size( ) > 0 )
-      param->SetSaveFileName( "FileName", files.begin( )->toStdString( ) );
-
-  } // fi
-}
+#include <itkImageFileWriter.h>
+#include <itkImage.h>
 
+#ifdef cpPlugins_QT4
+#  include <QApplication>
 #endif // cpPlugins_QT4
 
 // -------------------------------------------------------------------------
@@ -77,11 +14,11 @@ QDialog* cpPluginsIO::ImageWriter::
 CreateQDialog( )
 {
 #ifdef cpPlugins_QT4
-  ImageWriterQDialog* dlg = NULL;
+  cpPlugins::QT::SaveFileDialog* dlg = NULL;
   if( QApplication::instance( ) != NULL )
   {
-    dlg = new ImageWriterQDialog( );
-    dlg->setProcessObject( this );
+    dlg = new cpPlugins::QT::SaveFileDialog( );
+    dlg->SetParameters( &( this->m_Parameters ), "FileName" );
 
   } // fi
   return( dlg );
@@ -95,9 +32,9 @@ cpPluginsIO::ImageWriter::
 ImageWriter( )
   : Superclass( )
 {
-  this->_AddInput( "Input" );
+  this->_ConfigureInput< cpPlugins::DataObjects::Image >( "Input", true, false );
   this->m_Parameters.Clear( );
-  this->m_Parameters.ConfigureAsSaveFileName( "FileName" );
+  this->m_Parameters.ConfigureAsSaveFileName( "FileName", "" );
   this->m_Parameters.SetAcceptedFileExtensions(
     "FileName",
     "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
@@ -114,13 +51,10 @@ cpPluginsIO::ImageWriter::
 void cpPluginsIO::ImageWriter::
 _GenerateData( )
 {
-  auto image = this->GetInputData( "Input" );
-  cpPlugins_Image_Demangle_Dim( _GD0, image, 1 );
-  else cpPlugins_Image_Demangle_Dim( _GD0, image, 2 );
-  else cpPlugins_Image_Demangle_Dim( _GD0, image, 3 );
-  else cpPlugins_Image_Demangle_Dim( _GD0, image, 4 );
-  else
-    this->_Error( "Invalid input itk::ImageBase" );
+  auto o = this->GetInputData( "Input" );
+  cpPlugins_Demangle_Image_ProcessDims_1( o, _GD0 )
+    cpPlugins_Demangle_Image_DiffTensors3D_1( o, _GD1 )
+    this->_Error( "Invalid input image dimension." );
 }
 
 // -------------------------------------------------------------------------
@@ -128,12 +62,11 @@ template< class _TImage >
 void cpPluginsIO::ImageWriter::
 _GD0( _TImage* image )
 {
-  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 );
-  else
-    this->_Error( "Invalid pixel type" );
+  cpPlugins_Demangle_Image_ScalarPixels_1( image, _GD1, _TImage::ImageDimension )
+    cpPlugins_Demangle_Image_ComplexPixels_1( image, _GD1, _TImage::ImageDimension )
+    cpPlugins_Demangle_Image_ColorPixels_1( image, _GD1, _TImage::ImageDimension )
+    cpPlugins_Demangle_Image_VectorPixels_1( image, _GD1, _TImage::ImageDimension )
+    this->_Error( "Invalid input image pixel type." );
 }
 
 // -------------------------------------------------------------------------
@@ -142,6 +75,7 @@ void cpPluginsIO::ImageWriter::
 _GD1( _TImage* image )
 {
   typedef itk::ImageFileWriter< _TImage > _TFilter;
+
   auto f = this->_CreateITK< _TFilter >( );
   f->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
   f->SetInput( image );