#ifdef cpExtensions_QT4
-#include <cpExtensions/QT/SimpleMPRWidget.h>
#include <cpExtensions/QT/ImageWidget.h>
+#include <cpExtensions/Visualization/WindowLevelImageActor.h>
#include <cpPlugins/Interface/Workspace.h>
#include <QApplication>
#include <QHBoxLayout>
#include <vtkImageData.h>
-
-
-#include <vtkImageTracerWidget.h>
-#include <vtkSmartPointer.h>
-#include <vtkGlyphSource2D.h>
-#include <vtkProp.h>
-
+#include <vtkPolyData.h>
#endif // cpExtensions_QT4
typedef cpPlugins::Interface::Workspace _TWorkspace;
_TWorkspace::Pointer ws = _TWorkspace::New( );
ws->PrintExecutionOn( );
-
- // Configure reader
- auto reader = ws->CreateFilter( "IO", "ImageReader", "reader" );
- auto params = reader->GetParameters( );
- for( int i = 1; i < argc; ++i )
- params->AddToOpenFileNameList( "FileNames", argv[ i ] );
+ ws->Load( argv[ 1 ] );
+
+ // Configure filters
+ /* TODO
+ auto reader = ws->CreateFilter( "IO", "ImageReader", "reader" );
+ auto widget = ws->CreateFilter( "Widgets", "SplineWidget", "spline" );
+ ws->Connect( "reader", "spline", "Output", "Input" );
+ auto params = reader->GetParameters( );
+ for( int i = 1; i < argc; ++i )
+ params->AddToOpenFileNameList( "FileNames", argv[ i ] );
+ */
+ auto reader = ws->GetFilter( "reader" );
+ auto spline = ws->GetFilter( "spline" );
+ auto seeds = ws->GetFilter( "seeds" );
+ auto axis = ws->GetFilter( "axis" );
+ auto writer = ws->GetFilter( "writer" );
+ auto raster = ws->GetFilter( "raster" );
// Execute reader
try
} // yrt
- vtkSmartPointer< vtkImageTracerWidget > itw;
-
- // Configure viewer
- auto image = reader->GetOutputData< vtkImageData >( "Output" );
- auto dim = image->GetDataDimension( );
- switch( dim )
- {
- case 2: case 3:
- {
- // Qt initialization
- QApplication app( argc, argv );
- QMainWindow wnd;
- wnd.setGeometry( 0, 0, 1024, 768 );
-
- // Create main widget
- QWidget* wdg = NULL;
- if( dim == 2 )
- {
- auto view = new cpExtensions::QT::ImageWidget( &wnd );
- view->SetImage( image, 2, "image" );
- view->SetQuadrant( 2 );
- view->SetImageOpacity( 0.5 );
- wdg = view;
-
- itw = vtkSmartPointer< vtkImageTracerWidget >::New( );
- itw->SetCaptureRadius(1.5);
- itw->GetGlyphSource()->SetColor(1, 0, 0);
- itw->GetGlyphSource()->SetScale(3.0);
- itw->GetGlyphSource()->SetRotationAngle(45.0);
- itw->GetGlyphSource()->Modified();
- itw->ProjectToPlaneOn();
- itw->SetProjectionNormalToZAxes();
- itw->SetProjectionPosition(
- (
- view->GetImageActor( )->GetBounds( )[ 4 ] +
- view->GetImageActor( )->GetBounds( )[ 5 ]
- ) / double( 2 )
- );
- itw->SetViewProp( view->GetImageActor( ) );
- itw->SetInputData( image );
- itw->SetInteractor( view->GetInteractor( ) );
- itw->PlaceWidget( );
- itw->SnapToImageOn( );
- itw->AutoCloseOn( );
-
- /* TODO
- vtkSmartPointer< vtkSplineWidget > isw =
- vtkSmartPointer< vtkSplineWidget >::New( );
- isw.SetCurrentRenderer(ren2)
- isw.SetDefaultRenderer(ren2)
- isw.SetInputConnection(extract.GetOutputPort())
- isw.SetInteractor(iren)
- bnds = imageActor2.GetBounds()
- isw.PlaceWidget(bnds[0], bnds[1], bnds[2], bnds[3], bnds[4], bnds[5])
- isw.ProjectToPlaneOn()
- isw.SetProjectionNormalToXAxes()
- isw.SetProjectionPosition(pos)
- */
-
- itw->On( );
- }
- else
- {
- auto view = new cpExtensions::QT::SimpleMPRWidget( &wnd );
- view->SetImage( image, "image" );
- wdg = view;
-
- } // fi
-
- // Start application and show data
- wnd.setCentralWidget( wdg );
- wnd.show( );
- return( app.exec( ) );
- }
- break;
- default:
- {
- std::cerr << "Unmanaged dimension." << std::endl;
- return( 1 );
- }
- break;
-
- } // hctiws
+ // Qt initialization
+ QApplication app( argc, argv );
+ QMainWindow wnd;
+ wnd.setGeometry( 0, 0, 1024, 768 );
+ cpExtensions::QT::ImageWidget view( &wnd );
+ view.SetImage(
+ reader->GetOutputData< vtkImageData >( "Output" ), 2, "image"
+ );
+ spline->AddInteractor( view.GetInteractor( ) );
+ seeds->AddInteractor( view.GetInteractor( ) );
+ spline->Update( );
+ seeds->Update( );
+
+ // Start application and show data
+ wnd.setCentralWidget( &view );
+ wnd.show( );
+ app.exec( );
+ spline->Modified( );
+ spline->Update( );
+ raster->Update( );
+ writer->Update( );
+
+ wnd.show( );
+ app.exec( );
+
+ seeds->Modified( );
+ seeds->Update( );
+ axis->Update( );
+ // view.Add( axis->GetOutputData< vtkPolyData >( "Output" ) );
+ wnd.show( );
+ return( app.exec( ) );
+
+ // TODO: widget->GetOutputData< vtkPolyData >( "Output" )->Print( std::cout );
+
+ /*
+ auto raster = ws->CreateFilter( "MeshToImageFilters", "RasterMeshFilter", "raster" );
+ ws->Connect( "spline", "raster", "Output", "Input" );
+ ws->Connect( "reader", "raster", "Output", "Template" );
+ raster->Update( );
+ */
+
#else // cpExtensions_QT4
return( 0 );
#endif // cpExtensions_QT4