1 #include <cpExtensions/Config.h>
3 #ifdef cpExtensions_QT4
5 #include <cpExtensions/QT/SimpleMPRWidget.h>
6 #include <cpExtensions/QT/ImageWidget.h>
7 #include <cpPlugins/Interface/Workspace.h>
9 #include <QApplication>
11 #include <QMainWindow>
12 #include <QHBoxLayout>
14 #include <vtkImageData.h>
17 #include <vtkImageTracerWidget.h>
18 #include <vtkSmartPointer.h>
19 #include <vtkGlyphSource2D.h>
23 #endif // cpExtensions_QT4
25 //----------------------------------------------------------------------------
26 int main( int argc, char* argv[] )
28 #ifdef cpExtensions_QT4
33 std::cerr << "Usage: " << argv[ 0 ] << " image_file(s)" << std::endl;
39 cpPlugins::Interface::Plugins::Pointer interface =
40 cpPlugins::Interface::Plugins::New( );
43 interface->LoadEnvironments( );
44 interface->GuessPlugins( );
46 catch( std::exception& err )
48 std::cerr << "Error caught: " << err.what( ) << std::endl;
54 typedef cpPlugins::Interface::Workspace _TWorkspace;
55 _TWorkspace::Pointer ws = _TWorkspace::New( );
56 ws->PrintExecutionOn( );
59 auto reader = ws->CreateFilter( "IO", "ImageReader", "reader" );
60 auto params = reader->GetParameters( );
61 for( int i = 1; i < argc; ++i )
62 params->AddToOpenFileNameList( "FileNames", argv[ i ] );
69 catch( std::exception& err )
71 std::cerr << "Error caugth: " << err.what( ) << std::endl;
76 vtkSmartPointer< vtkImageTracerWidget > itw;
79 auto image = reader->GetOutputData< vtkImageData >( "Output" );
80 auto dim = image->GetDataDimension( );
86 QApplication app( argc, argv );
88 wnd.setGeometry( 0, 0, 1024, 768 );
94 auto view = new cpExtensions::QT::ImageWidget( &wnd );
95 view->SetImage( image, 2, "image" );
96 view->SetQuadrant( 2 );
97 view->SetImageOpacity( 0.5 );
100 itw = vtkSmartPointer< vtkImageTracerWidget >::New( );
101 itw->SetCaptureRadius(1.5);
102 itw->GetGlyphSource()->SetColor(1, 0, 0);
103 itw->GetGlyphSource()->SetScale(3.0);
104 itw->GetGlyphSource()->SetRotationAngle(45.0);
105 itw->GetGlyphSource()->Modified();
106 itw->ProjectToPlaneOn();
107 itw->SetProjectionNormalToZAxes();
108 itw->SetProjectionPosition(
110 view->GetImageActor( )->GetBounds( )[ 4 ] +
111 view->GetImageActor( )->GetBounds( )[ 5 ]
114 itw->SetViewProp( view->GetImageActor( ) );
115 itw->SetInputData( image );
116 itw->SetInteractor( view->GetInteractor( ) );
118 itw->SnapToImageOn( );
122 vtkSmartPointer< vtkSplineWidget > isw =
123 vtkSmartPointer< vtkSplineWidget >::New( );
124 isw.SetCurrentRenderer(ren2)
125 isw.SetDefaultRenderer(ren2)
126 isw.SetInputConnection(extract.GetOutputPort())
127 isw.SetInteractor(iren)
128 bnds = imageActor2.GetBounds()
129 isw.PlaceWidget(bnds[0], bnds[1], bnds[2], bnds[3], bnds[4], bnds[5])
130 isw.ProjectToPlaneOn()
131 isw.SetProjectionNormalToXAxes()
132 isw.SetProjectionPosition(pos)
139 auto view = new cpExtensions::QT::SimpleMPRWidget( &wnd );
140 view->SetImage( image, "image" );
145 // Start application and show data
146 wnd.setCentralWidget( wdg );
148 return( app.exec( ) );
153 std::cerr << "Unmanaged dimension." << std::endl;
159 #else // cpExtensions_QT4
161 #endif // cpExtensions_QT4