]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Plugins/BasicFilters/MultiplyImageFilter.cxx
MAC compilation issues solved... Now some tests please
[cpPlugins.git] / lib / cpPlugins / Plugins / BasicFilters / MultiplyImageFilter.cxx
diff --git a/lib/cpPlugins/Plugins/BasicFilters/MultiplyImageFilter.cxx b/lib/cpPlugins/Plugins/BasicFilters/MultiplyImageFilter.cxx
new file mode 100644 (file)
index 0000000..48d1a9e
--- /dev/null
@@ -0,0 +1,70 @@
+#include "MultiplyImageFilter.h"
+#include <cpPlugins/Interface/Image.h>
+
+#include <itkMultiplyImageFilter.h>
+
+// -------------------------------------------------------------------------
+cpPlugins::BasicFilters::MultiplyImageFilter::
+MultiplyImageFilter( )
+  : Superclass( )
+{
+  this->_AddInput( "Input0" );
+  this->_AddInput( "Input1", false );
+  this->_AddOutput< cpPlugins::Interface::Image >( "Output" );
+
+  this->m_Parameters->ConfigureAsReal( "Constant" );
+  this->m_Parameters->SetReal( "Constant", 1 );
+}
+
+// -------------------------------------------------------------------------
+cpPlugins::BasicFilters::MultiplyImageFilter::
+~MultiplyImageFilter( )
+{
+}
+
+// -------------------------------------------------------------------------
+std::string cpPlugins::BasicFilters::MultiplyImageFilter::
+_GenerateData( )
+{
+  auto image = this->GetInputData< cpPlugins::Interface::Image >( "Input0" );
+  itk::DataObject* itk_image = NULL;
+  std::string r = "";
+  cpPlugins_Image_Demangle_AllScalarTypes( 2, image, itk_image, r, _GD0 );
+  else cpPlugins_Image_Demangle_AllScalarTypes( 3, image, itk_image, r, _GD0 );
+  else cpPlugins_Image_Demangle_AllScalarTypes( 4, image, itk_image, r, _GD0 );
+  else r = "MultiplyImageFilter: Input image type not supported.";
+  return( r );
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+std::string cpPlugins::BasicFilters::MultiplyImageFilter::
+_GD0( itk::DataObject* image )
+{
+  return( this->_RealGD< I, I >( image ) );
+}
+
+// -------------------------------------------------------------------------
+template< class I, class O >
+inline std::string cpPlugins::BasicFilters::MultiplyImageFilter::
+_RealGD( itk::DataObject* image )
+{
+  typedef itk::MultiplyImageFilter< I, I, O > _F;
+  typedef typename I::PixelType _IP;
+
+  // Get parameters
+  _IP c = _IP( this->m_Parameters->GetReal( "Constant" ) );
+
+  // Configure filter
+  _F* filter = this->_CreateITK< _F >( );
+  filter->SetInput( dynamic_cast< I* >( image ) );
+  filter->SetConstant( c );
+  filter->Update( );
+
+  // Connect output
+  auto out = this->GetOutputData< cpPlugins::Interface::Image >( "Output" );
+  out->SetITK( filter->GetOutput( ) );
+  return( "" );
+}
+
+// eof - $RCSfile$