]> Creatis software - cpPlugins.git/blob - plugins/cpPluginsWidgets/NoInteractiveSeedWidget.cxx
...
[cpPlugins.git] / plugins / cpPluginsWidgets / NoInteractiveSeedWidget.cxx
1 #include "NoInteractiveSeedWidget.h"
2
3 #include <cpPlugins/Image.h>
4 #include <cpExtensions/DataStructures/ImageIndexesContainer.h>
5 #include <itkSimpleDataObjectDecorator.h>
6 #include <itkSimpleDataObjectDecorator.hxx>
7
8 // -------------------------------------------------------------------------
9 cpPluginsWidgets::NoInteractiveSeedWidget::
10 NoInteractiveSeedWidget( )
11   : Superclass( )
12 {
13   this->_AddInput( "ReferenceImage" );
14   this->_AddOutput< cpPlugins::DataObject >( "Output" );
15   this->m_Parameters.ConfigureAsString( "Text" );
16   this->m_Parameters.SetString( "Text", "" );
17 }
18
19 // -------------------------------------------------------------------------
20 cpPluginsWidgets::NoInteractiveSeedWidget::
21 ~NoInteractiveSeedWidget( )
22 {
23 }
24
25 // -------------------------------------------------------------------------
26 void cpPluginsWidgets::NoInteractiveSeedWidget::
27 _GenerateData( )
28 {
29   auto image = this->GetInputData( "ReferenceImage" )->GetITK< itk::DataObject >( );
30   cpPlugins_Image_Demangle_Dim     ( _GD0, image, 2 );
31   else cpPlugins_Image_Demangle_Dim( _GD0, image, 3 );
32   else this->_Error( "No valid input image." );
33 }
34
35 // -------------------------------------------------------------------------
36 template< class _TImage >
37 void cpPluginsWidgets::NoInteractiveSeedWidget::
38 _GD0( _TImage* image )
39 {
40   typedef
41     cpExtensions::DataStructures::ImageIndexesContainer< _TImage::ImageDimension >
42     _TContainer;
43
44   if( image != NULL )
45   {
46     auto container = this->_CreateITK< _TContainer >( );
47     std::string info = this->m_Parameters.GetString( "Text" );
48
49     std::istringstream str( info );
50     double x, y, z;
51     str >> x >> y >> z;
52     typename _TImage::PointType seed;
53     seed[ 0 ] = x;
54     seed[ 1 ] = y;
55     seed[ 2 ] = z;
56     typename _TImage::IndexType idx;
57     if( image->TransformPhysicalPointToIndex( seed, idx ) )
58       container->Get( ).push_back( idx );
59     container->SetReferenceImage( image );
60     this->GetOutputData( "Output" )->SetITK( container );
61   }
62   else
63     this->_Error( "Input image dimension not supported." );
64 }
65
66 // eof - $RCSfile$