]> Creatis software - cpPlugins.git/blob - appli/examples/plugins/ShowImage.cxx
c7afea2d63d78b1150189066169fc1e3110ac44c
[cpPlugins.git] / appli / examples / plugins / ShowImage.cxx
1 #include <cpExtensions/Config.h>
2
3 #ifdef cpExtensions_QT4
4
5 #include <cpExtensions/QT/SimpleMPRWidget.h>
6 #include <cpExtensions/QT/ImageWidget.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
16 #endif // cpExtensions_QT4
17
18 //----------------------------------------------------------------------------
19 int main( int argc, char* argv[] )
20 {
21 #ifdef cpExtensions_QT4
22   typedef cpPlugins::Interface::Plugins   _TPlugins;
23   typedef cpPlugins::Interface::Workspace _TWorkspace;
24
25   // Manage inputs
26   if( argc < 2 )
27   {
28     std::cerr << "Usage: " << argv[ 0 ] << " image_file(s)" << std::endl;
29     return( 1 );
30
31   } // fi
32
33   // Create interface
34   _TPlugins::Pointer plugins = _TPlugins::New( );
35   try
36   {
37     plugins->LoadEnvironments( );
38     plugins->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   _TWorkspace::Pointer ws = _TWorkspace::New( );
49   ws->PrintExecutionOn( );
50
51   // Configure reader
52   auto reader = ws->CreateFilter( "IO", "ImageReader", "reader" );
53   auto params = reader->GetParameters( );
54   for( int i = 1; i < argc; ++i )
55     params->AddToOpenFileNameList( "FileNames",  argv[ i ] );
56
57   // Execute reader
58   try
59   {
60     reader->Update( );
61   }
62   catch( std::exception& err )
63   {
64     std::cerr << "Error caugth: " << err.what( ) << std::endl;
65     return( 1 );
66
67   } // yrt
68
69   // Configure viewer
70   auto image = reader->GetOutputData< vtkImageData >( "Output" );
71   auto dim = image->GetDataDimension( );
72   switch( dim )
73   {
74   case 2: case 3:
75   {
76     // Qt initialization
77     QApplication app( argc, argv );
78     QMainWindow wnd;
79     wnd.setGeometry( 0, 0, 1024, 768 );
80
81     // Create main widget
82     QWidget* wdg = NULL;
83     if( dim == 2 )
84     {
85       auto view = new cpExtensions::QT::ImageWidget( &wnd );
86       view->SetImage( image, 2, "image" );
87       wdg = view;
88     }
89     else
90     {
91       auto view = new cpExtensions::QT::SimpleMPRWidget( &wnd );
92       view->SetImage( image, "image" );
93       wdg = view;
94
95     } // fi
96
97     // Start application and show data
98     wnd.setCentralWidget( wdg );
99     wnd.show( );
100     return( app.exec( ) );
101   }
102   break;
103   default:
104   {
105     std::cerr << "Unmanaged dimension." << std::endl;
106     return( 1 );
107   }
108   break;
109
110   } // hctiws
111 #else // cpExtensions_QT4
112   return( 0 );
113 #endif // cpExtensions_QT4
114 }
115
116 // eof - $RCSfile$