]> Creatis software - cpMesh.git/blob - appli/InteractiveDeformableMeshSegmentation/MainWnd.h
d3bef88941c9b95640823a073623f54a67eddc1d
[cpMesh.git] / appli / InteractiveDeformableMeshSegmentation / MainWnd.h
1 #ifndef __MAINWND__H__
2 #define __MAINWND__H__
3
4 // Standard stuff
5 #include <map>
6 #include <string>
7
8 // Qt stuff
9 #include <QMainWindow>
10
11 // vtk stuff
12 #include <vtkOrientationMarkerWidget.h>
13 #include <vtkRenderer.h>
14 #include <vtkSmartPointer.h>
15
16 // Plugins interface
17 #include <cpPlugins/Interface/Interface.h>
18 #include <cpPlugins/Interface/ProcessObject.h>
19 #include <cpPlugins/Interface/DataObject.h>
20
21 // Local stuff
22 #include "InteractorStyleImage.h"
23 #include "VolumeActors.h"
24
25
26 /*
27   #include <itkImage.h>
28   #include <itkImageToVTKImageFilter.h>
29
30   #include <cpm/DataStructures/QuadEdgeMesh.h>
31
32   #include <cpm/VTK/MeshMapper.h>
33   #include <cpm/Algorithms/QuadEdge/MeshPlaneCutterFilter.h>
34 */
35
36 // -------------------------------------------------------------------------
37 namespace Ui
38 {
39   class MainWnd;
40 }
41
42 // -------------------------------------------------------------------------
43 /**
44  */
45 class MainWnd
46   : public QMainWindow
47 {
48   Q_OBJECT;
49
50 public:
51   // Plugins types
52   typedef cpPlugins::Interface::Interface     TPluginsInterface;
53   typedef cpPlugins::Interface::DataObject    TPluginData;
54   typedef cpPlugins::Interface::ProcessObject TPlugin;
55   typedef TPlugin::TParameters                TParameters;
56
57 public:
58   explicit MainWnd( QWidget* parent = 0 );
59   virtual ~MainWnd( );
60
61 protected:
62   void _LoadApplicationPreferences( );
63   TPluginData* _LoadImage(
64     const std::string& image_type, const std::string& image_dim
65     );
66   void _UpdateEnabledFlags( );
67
68   /* TODO
69      bool _ParametersDialog( TParameters& parameters );
70      template< class I >
71   */
72
73   /*
74     void _SliceMesh( int axis );
75     static void _SliceEventCallback(
76     vtkObject* caller,
77     long unsigned int eventId,
78     void* clientData, void* callData
79     );
80   */
81
82 private slots:
83   void _triggered_actionReloadPlugins( );
84   void _triggered_actionOpenInputImage( );
85   void _triggered_actionOpenSegmentedImage( );
86   void _triggered_actionSwitchMode( );
87   
88   /* TODO
89      void triggered_aOpenSegmentedImage( );
90      void triggered_aFilterSegmentedImage( );
91      void triggered_aSegmentedImageToMesh( );
92      void triggered_aLoadInputImage( );
93      void triggered_aLoadSegmentedImage( );
94   */
95
96 private:
97   Ui::MainWnd* m_UI;
98
99   // Application preferences
100   std::string m_ApplicationPreferencesFile;
101   std::map< std::string, std::string > m_ApplicationPreferences;
102
103   // Plugins objects
104   std::string       m_PluginsConfigurationFile;
105   TPluginsInterface m_Plugins;
106
107   // Needed object from plugins
108   std::string m_ImageReaderClassName;
109   std::string m_ImageSeriesReaderClassName;
110   std::string m_ImageWriterClassName;
111
112   // Historic objects
113   std::string m_LastOpenedFile;
114
115   // Real data
116   TPluginData* m_InputImage;
117   TPluginData* m_SegmentedImage;
118
119   /* TODO
120      // Inputs
121      TImage::Pointer    m_Image;
122      TImage::Pointer    m_Segmentation;
123      TMesh::Pointer     m_Mesh;
124      TVTKImage::Pointer m_VTKImage;
125      TVTKImage::Pointer m_VTKSegmentation;
126   */
127
128   // Visualization stuff
129   vtkSmartPointer< vtkRenderer >        m_3DRenderer;
130   vtkSmartPointer< vtkRenderer >        m_XPlaneRenderer;
131   vtkSmartPointer< vtkRenderer >        m_YPlaneRenderer;
132   vtkSmartPointer< vtkRenderer >        m_ZPlaneRenderer;
133   vtkSmartPointer< vtkRenderer >        m_AuxRenderer;
134   vtkSmartPointer< idms::VolumeActors > m_ImageActors;
135   vtkSmartPointer< idms::InteractorStyleImage > m_XStyle;
136   vtkSmartPointer< idms::InteractorStyleImage > m_YStyle;
137   vtkSmartPointer< idms::InteractorStyleImage > m_ZStyle;
138   vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
139
140   /*
141     TTriangulation::Pointer                 m_Mesh;
142     vtkSmartPointer< TTriangulationMapper > m_MeshMapper;
143     vtkSmartPointer< vtkActor >             m_MeshActor;
144     TCutter::Pointer m_ZCutter;
145   */
146 };
147
148 #endif // __MAINWND__H__
149
150 // eof - $RCSfile$