X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FBasicFilters%2FRGBImageToOtherChannelsFilter.cxx;h=13e6732abc1bd7410ffd31e00ccbc321b3294613;hb=d6f15d4cb764982e2b09060a9c0f38636891590c;hp=7f5b1fc8f923860d20694910bab28c39c0368127;hpb=c3c3da5217b6eb255db9c0424f22d4e01250901e;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/BasicFilters/RGBImageToOtherChannelsFilter.cxx b/lib/cpPlugins/Plugins/BasicFilters/RGBImageToOtherChannelsFilter.cxx index 7f5b1fc..13e6732 100644 --- a/lib/cpPlugins/Plugins/BasicFilters/RGBImageToOtherChannelsFilter.cxx +++ b/lib/cpPlugins/Plugins/BasicFilters/RGBImageToOtherChannelsFilter.cxx @@ -13,14 +13,13 @@ RGBImageToOtherChannelsFilter( ) { typedef cpPlugins::Interface::Parameters TParameters; - this->m_ClassName = "cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter"; - this->m_ClassCategory = "ImageToImageFilter"; - this->SetNumberOfInputs( 1 ); - this->SetNumberOfOutputs( 1 ); - this->_MakeOutput< cpPlugins::Interface::Image >( 0 ); + this->_AddInput( "Input" ); + this->_MakeOutput< cpPlugins::Interface::Image >( "Output" ); - this->m_DefaultParameters.Configure( TParameters::String, "OutChannel" ); - this->m_Parameters = this->m_DefaultParameters; + std::vector< std::string > choices; + choices.push_back( "HSV" ); + choices.push_back( "YPbPr" ); + this->m_Parameters->ConfigureAsChoices( "OutChannel", choices ); } // ------------------------------------------------------------------------- @@ -29,45 +28,20 @@ cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter:: { } -// ------------------------------------------------------------------------- -#define cpPlugins_Plugins_RGBImageToOtherChannelsFilter( P, D, I, O, r, f ) \ - cpPlugins_Image_Input_Demangle( P< char >, D, I, O, r, f ); \ - else cpPlugins_Image_Input_Demangle( P< short >, D, I, O, r, f ); \ - else cpPlugins_Image_Input_Demangle( P< int >, D, I, O, r, f ); \ - else cpPlugins_Image_Input_Demangle( P< long >, D, I, O, r, f ); \ - else cpPlugins_Image_Input_Demangle( \ - P< unsigned char >, D, I, O, r, f \ - ); \ - else cpPlugins_Image_Input_Demangle( \ - P< unsigned short >, D, I, O, r, f \ - ); \ - else cpPlugins_Image_Input_Demangle( \ - P< unsigned int >, D, I, O, r, f \ - ); \ - else cpPlugins_Image_Input_Demangle( \ - P< unsigned long >, D, I, O, r, f \ - ) - // ------------------------------------------------------------------------- std::string cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter:: _GenerateData( ) { cpPlugins::Interface::Image* image = - this->GetInput< cpPlugins::Interface::Image >( 0 ); + this->GetInput< cpPlugins::Interface::Image >( "Input" ); if( image == NULL ) return( "RGBImageToOtherChannelsFilter: No input image." ); itk::DataObject* itk_image = NULL; std::string r = ""; - cpPlugins_Plugins_RGBImageToOtherChannelsFilter( - itk::RGBPixel, 2, image, itk_image, r, _DemangleOutput - ); - else cpPlugins_Plugins_RGBImageToOtherChannelsFilter( - itk::RGBPixel, 3, image, itk_image, r, _DemangleOutput - ); - else cpPlugins_Plugins_RGBImageToOtherChannelsFilter( - itk::RGBPixel, 4, image, itk_image, r, _DemangleOutput - ); + cpPlugins_Image_Demangle_AllRGBTypes( 2, image, itk_image, r, _GD0 ); + else cpPlugins_Image_Demangle_AllRGBTypes( 3, image, itk_image, r, _GD0 ); + else cpPlugins_Image_Demangle_AllRGBTypes( 4, image, itk_image, r, _GD0 ); else r = "RGBImageToOtherChannelsFilter: Input image type not supported."; return( r ); } @@ -75,11 +49,11 @@ _GenerateData( ) // ------------------------------------------------------------------------- template< class I > std::string cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter:: -_DemangleOutput( itk::DataObject* image ) +_GD0( itk::DataObject* image ) { typedef typename I::PixelType _P; - std::string outc = this->m_Parameters.GetValueAsString( "OutChannel" ); + std::string outc = this->m_Parameters->GetSelectedChoice( "OutChannel" ); std::string r = ""; using namespace cpExtensions::Algorithms; @@ -107,22 +81,16 @@ _RealGD( itk::DataObject* image ) _F; // Configure filter - _F* filter = dynamic_cast< _F* >( this->m_RealProcessObject.GetPointer( ) ); - if( filter == NULL ) - { - this->m_RealProcessObject = _F::New( ); - filter = dynamic_cast< _F* >( this->m_RealProcessObject.GetPointer( ) ); - - } // fi + _F* filter = this->_CreateITK< _F >( ); filter->SetInput( dynamic_cast< I* >( image ) ); filter->Update( ); // Connect output cpPlugins::Interface::Image* out = - this->GetOutput< cpPlugins::Interface::Image >( 0 ); + this->GetOutput< cpPlugins::Interface::Image >( "Output" ); if( out != NULL ) { - out->SetITKImage< _O >( filter->GetOutput( ) ); + out->SetITK< _O >( filter->GetOutput( ) ); return( "" ); } else