]> Creatis software - FrontAlgorithms.git/blob - plugins/Plugins/MultiplyImageAndDistanceMap.cxx
Architecture revisited.
[FrontAlgorithms.git] / plugins / Plugins / MultiplyImageAndDistanceMap.cxx
1 #include "MultiplyImageAndDistanceMap.h"
2 #include <cpPlugins/DataObjects/Image.h>
3
4 #include <fpa/Image/MultiplyImageAndDistanceMap.h>
5 #include <fpa/Image/MultiplyImageAndDistanceMap.hxx>
6
7 /* TODO
8    #include <fpa/Image/Dijkstra.h>
9    #include <fpa/Base/Algorithm.hxx>
10    #include <fpa/Base/Dijkstra.hxx>
11    #include <fpa/Image/Algorithm.hxx>
12    #include <fpa/Image/Dijkstra.hxx>
13 */
14
15 // -------------------------------------------------------------------------
16 fpaPlugins::MultiplyImageAndDistanceMap::
17 MultiplyImageAndDistanceMap( )
18   : Superclass( )
19 {
20   typedef cpPlugins::DataObjects::Image _TImage;
21   this->_ConfigureInput< _TImage >( "Input", true, false );
22   this->_ConfigureInput< _TImage >( "DistanceMap", true, false );
23   this->_ConfigureOutput< _TImage >( "Output" );
24
25   /* TODO
26      this->_ConfigureOutput< cpPlugins::BaseObjects::DataObject >( "MST" );
27      std::vector< std::string > choices;
28      choices.push_back( "float" );
29      choices.push_back( "double" );
30      this->m_Parameters.ConfigureAsChoices( "ResultType", choices );
31      this->m_Parameters.SetSelectedChoice( "ResultType", "float" );
32      this->m_Parameters.ConfigureAsBool( "FillNodeQueue" );
33      this->m_Parameters.SetBool( "FillNodeQueue", false );
34   */
35 }
36
37 // -------------------------------------------------------------------------
38 fpaPlugins::MultiplyImageAndDistanceMap::
39 ~MultiplyImageAndDistanceMap( )
40 {
41 }
42
43 // -------------------------------------------------------------------------
44 void fpaPlugins::MultiplyImageAndDistanceMap::
45 _GenerateData( )
46 {
47   auto o = this->GetInputData( "Input" );
48   cpPlugins_Demangle_ImageScalars_Dims( o, _GD0 );
49   else this->_Error( "Invalid input image." );
50 }
51
52 // -------------------------------------------------------------------------
53 template< class _TImage >
54 void fpaPlugins::MultiplyImageAndDistanceMap::
55 _GD0( _TImage* image )
56 {
57   typedef itk::Image< float, _TImage::ImageDimension > _TFloat;
58   typedef itk::Image< double, _TImage::ImageDimension > _TDouble;
59
60   auto f = this->GetInputData< _TFloat >( "DistanceMap" );
61   auto d = this->GetInputData< _TDouble >( "DistanceMap" );
62   if     ( f != NULL ) this->_GD1( image, f );
63   else if( d != NULL ) this->_GD1( image, d );
64   else this->_Error( "Invalid distance map." );
65 }
66
67 // -------------------------------------------------------------------------
68 template< class _TImage, class _TDistanceMap >
69  void fpaPlugins::MultiplyImageAndDistanceMap::
70 _GD1( _TImage* input, _TDistanceMap* dmap )
71 {
72   typedef fpa::Image::MultiplyImageAndDistanceMap< _TImage, _TDistanceMap > _TFilter;
73
74   auto filter = this->_CreateITK< _TFilter >( );
75   filter->SetInput( input );
76   filter->SetDistanceMap( dmap );
77   filter->Update( );
78   this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) );
79 }
80
81 // eof - $RCSfile$