]> Creatis software - cpPlugins.git/blob - appli/examples/plugins/ImageTracer.cxx
Spline widget finished.
[cpPlugins.git] / appli / examples / plugins / ImageTracer.cxx
1 #include <cpExtensions/Config.h>
2
3 #ifdef cpExtensions_QT4
4
5 #include <cpExtensions/QT/ImageWidget.h>
6 #include <cpExtensions/Visualization/WindowLevelImageActor.h>
7 #include <cpPlugins/Interface/Workspace.h>
8
9 #include <QApplication>
10 #include <QWidget>
11 #include <QMainWindow>
12 #include <QHBoxLayout>
13
14 #include <vtkImageData.h>
15 #include <vtkPolyData.h>
16
17 #endif // cpExtensions_QT4
18
19 //----------------------------------------------------------------------------
20 int main( int argc, char* argv[] )
21 {
22 #ifdef cpExtensions_QT4
23
24   // Manage inputs
25   if( argc < 2 )
26   {
27     std::cerr << "Usage: " << argv[ 0 ] << " image_file(s)" << std::endl;
28     return( 1 );
29
30   } // fi
31
32   // Create interface
33   cpPlugins::Interface::Plugins::Pointer interface =
34     cpPlugins::Interface::Plugins::New( );
35   try
36   {
37     interface->LoadEnvironments( );
38     interface->GuessPlugins( );
39   }
40   catch( std::exception& err )
41   {
42     std::cerr << "Error caught: " << err.what( ) << std::endl;
43     return( 1 );
44
45   } // yrt
46
47   // Create workspace
48   typedef cpPlugins::Interface::Workspace _TWorkspace;
49   _TWorkspace::Pointer ws = _TWorkspace::New( );
50   ws->PrintExecutionOn( );
51   ws->Load( argv[ 1 ] );
52
53   // Configure filters
54   /* TODO
55      auto reader = ws->CreateFilter( "IO", "ImageReader", "reader" );
56      auto widget = ws->CreateFilter( "Widgets", "SplineWidget", "spline" );
57      ws->Connect( "reader", "spline", "Output", "Input" );
58      auto params = reader->GetParameters( );
59      for( int i = 1; i < argc; ++i )
60      params->AddToOpenFileNameList( "FileNames",  argv[ i ] );
61   */
62   auto reader = ws->GetFilter( "reader" );
63   auto spline = ws->GetFilter( "spline" );
64   auto seeds = ws->GetFilter( "seeds" );
65   auto axis = ws->GetFilter( "axis" );
66
67   // Execute reader
68   try
69   {
70     reader->Update( );
71   }
72   catch( std::exception& err )
73   {
74     std::cerr << "Error caugth: " << err.what( ) << std::endl;
75     return( 1 );
76
77   } // yrt
78
79   // Qt initialization
80   QApplication app( argc, argv );
81   QMainWindow wnd;
82   wnd.setGeometry( 0, 0, 1024, 768 );
83   cpExtensions::QT::ImageWidget view( &wnd );
84   view.SetImage(
85     reader->GetOutputData< vtkImageData >( "Output" ), 2, "image"
86     );
87   spline->AddInteractor( view.GetInteractor( ) );
88   spline->Update( );
89   seeds->AddInteractor( view.GetInteractor( ) );
90   seeds->Update( );
91
92   // Start application and show data
93   wnd.setCentralWidget( &view );
94   wnd.show( );
95   app.exec( );
96   spline->Modified( );
97   spline->Update( );
98
99   wnd.show( );
100   app.exec( );
101   
102   seeds->Modified( );
103   seeds->Update( );
104   axis->Update( );
105   // view.Add( axis->GetOutputData< vtkPolyData >( "Output" ) );
106   wnd.show( );
107   return( app.exec( ) );
108
109   // TODO: widget->GetOutputData< vtkPolyData >( "Output" )->Print( std::cout );
110
111   /*
112     auto raster = ws->CreateFilter( "MeshToImageFilters", "RasterMeshFilter", "raster" );
113     ws->Connect( "spline", "raster", "Output", "Input" );
114     ws->Connect( "reader", "raster", "Output", "Template" );
115     raster->Update( );
116   */
117   
118 #else // cpExtensions_QT4
119   return( 0 );
120 #endif // cpExtensions_QT4
121 }
122
123 // eof - $RCSfile$