X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FBasicFilters%2FMultiplyImageFilter.cxx;fp=lib%2FcpPlugins%2FPlugins%2FBasicFilters%2FMultiplyImageFilter.cxx;h=48d1a9e31c7db58ba6231f7903ea29383c73f0a7;hb=6ffc11d77924d6ab7e94db95d41105982ac73e00;hp=0000000000000000000000000000000000000000;hpb=a89305e04527ebe2e81d0d1a62bbe34e0d35a141;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/BasicFilters/MultiplyImageFilter.cxx b/lib/cpPlugins/Plugins/BasicFilters/MultiplyImageFilter.cxx new file mode 100644 index 0000000..48d1a9e --- /dev/null +++ b/lib/cpPlugins/Plugins/BasicFilters/MultiplyImageFilter.cxx @@ -0,0 +1,70 @@ +#include "MultiplyImageFilter.h" +#include + +#include + +// ------------------------------------------------------------------------- +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$