]> Creatis software - cpPlugins.git/blob - plugins/cpExtensions/PolyLineParametricPathWriter.cxx
...
[cpPlugins.git] / plugins / cpExtensions / PolyLineParametricPathWriter.cxx
1 #include <cpExtensions/PolyLineParametricPathWriter.h>
2 #include <cpInstances/DataObjects/Image.h>
3 #include <cpInstances/DataObjects/PolyLineParametricPath.h>
4
5 #include <itkImage.h>
6 #include <cpExtensions/DataStructures/PolyLineParametricPath.h>
7 #include <cpExtensions/Algorithms/PolyLineParametricPathWriter.h>
8 #include <cpPlugins/QT/SaveFileDialog.h>
9
10 #ifdef cpPlugins_QT4
11 #  include <QApplication>
12 #endif // cpPlugins_QT4
13
14 // -------------------------------------------------------------------------
15 QDialog* cpPluginscpExtensions::PolyLineParametricPathWriter::
16 CreateQDialog( )
17 {
18 #ifdef cpPlugins_QT4
19   cpPlugins::QT::SaveFileDialog* dlg = NULL;
20   if( QApplication::instance( ) != NULL )
21   {
22     dlg = new cpPlugins::QT::SaveFileDialog( );
23     dlg->SetParameters( &( this->m_Parameters ), "FileName" );
24
25   } // fi
26   return( dlg );
27 #else // cpPlugins_QT4
28   return( NULL );
29 #endif // cpPlugins_QT4
30 }
31
32 // -------------------------------------------------------------------------
33 cpPluginscpExtensions::PolyLineParametricPathWriter::
34 PolyLineParametricPathWriter( )
35   : Superclass( )
36 {
37   this->_ConfigureInput< cpInstances::DataObjects::PolyLineParametricPath >( "Input", true, false );
38   this->_ConfigureInput< cpInstances::DataObjects::Image >( "Image", false, false );
39   this->m_Parameters.ConfigureAsSaveFileName( "FileName", "" );
40   this->m_Parameters.SetAcceptedFileExtensions(
41     "FileName",
42     "PolyLineParametricPath files (*.txt)"
43     );
44 }
45
46 // -------------------------------------------------------------------------
47 cpPluginscpExtensions::PolyLineParametricPathWriter::
48 ~PolyLineParametricPathWriter( )
49 {
50 }
51
52 // -------------------------------------------------------------------------
53 void cpPluginscpExtensions::PolyLineParametricPathWriter::
54 _GenerateData( )
55 {
56   auto o = this->GetInputData( "Input" );
57   cpPlugins_Demangle_PolyLineParametricPath_All_1( o, _GD0 )
58     this->_Error( "Invalid input skeleton." );
59 }
60
61 // -------------------------------------------------------------------------
62 template< class _TPolyLineParametricPath >
63 void cpPluginscpExtensions::PolyLineParametricPathWriter::
64 _GD0( _TPolyLineParametricPath* skeleton )
65 {
66   auto o = this->GetInputData( "Image" );
67   cpPlugins_Demangle_Image_ScalarPixels_2( o, _GD1, _TPolyLineParametricPath::PathDimension, skeleton )
68     this->_GD1< itk::Image< unsigned char, _TPolyLineParametricPath::PathDimension >, _TPolyLineParametricPath >( NULL, skeleton );
69 }
70
71 // -------------------------------------------------------------------------
72 template< class _TImage, class _TPolyLineParametricPath >
73 void cpPluginscpExtensions::PolyLineParametricPathWriter::
74 _GD1( _TImage* image, _TPolyLineParametricPath* skeleton )
75 {
76   typedef cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLineParametricPath, _TImage > _TWriter;
77
78   auto filter = this->_CreateITK< _TWriter >( );
79   filter->SetInput( skeleton );
80   filter->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
81   filter->SetImage( image );
82   try
83   {
84     filter->Update( );
85   }
86   catch( itk::ExceptionObject& err )
87   {
88     this->_Error( err.GetDescription( ) );
89
90   } // yrt
91 }
92
93 // eof - $RCSfile$