]> Creatis software - cpMesh.git/blob - appli/InteractiveDeformableMeshSegmentation/MainWnd.h
QuadEdgeMesh ported to cpPlugins/Extensions
[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::Object        TPluginObject;
54   typedef cpPlugins::Interface::DataObject    TPluginData;
55   typedef cpPlugins::Interface::ProcessObject TPlugin;
56   typedef TPlugin::TParameters                TParameters;
57
58   typedef std::map< std::string, std::string > TStringMap;
59
60 public:
61   explicit MainWnd( QWidget* parent = 0 );
62   virtual ~MainWnd( );
63
64 protected:
65   void _LoadApplicationPreferences( );
66   bool _LoadPlugins( );
67   bool _CheckClassesInPlugins( const TStringMap& classes );
68   TPluginData* _LoadImage(
69     const std::string& image_type, const std::string& image_dim
70     );
71   void _UpdateEnabledFlags( );
72
73   /* TODO
74      bool _ParametersDialog( TParameters& parameters );
75      template< class I >
76   */
77
78   /*
79     void _SliceMesh( int axis );
80     static void _SliceEventCallback(
81     vtkObject* caller,
82     long unsigned int eventId,
83     void* clientData, void* callData
84     );
85   */
86
87 private slots:
88   void _triggered_actionReloadPlugins( );
89   void _triggered_actionOpenInputImage( );
90   void _triggered_actionOpenSegmentedImage( );
91   void _triggered_actionSwitchMode( );
92   
93   /* TODO
94      void triggered_aOpenSegmentedImage( );
95      void triggered_aFilterSegmentedImage( );
96      void triggered_aSegmentedImageToMesh( );
97      void triggered_aLoadInputImage( );
98      void triggered_aLoadSegmentedImage( );
99   */
100
101 private:
102   Ui::MainWnd* m_UI;
103
104   // Application preferences
105   std::string m_ApplicationPreferencesFile;
106   TStringMap m_ApplicationPreferences;
107
108   // Plugins objects
109   std::string       m_PluginsConfigurationFile;
110   TPluginsInterface m_Plugins;
111
112   // Needed object from plugins
113   TStringMap m_BaseClasses;
114   TStringMap m_SegmentationClasses;
115   TStringMap m_SegmentationFilterClasses;
116   TStringMap m_MeshFilterClasses;
117
118   // Historic objects
119   std::string m_LastOpenedFile;
120
121   // Real data
122   TPluginData* m_InputImage;
123   TPluginData* m_SegmentedImage;
124
125   /* TODO
126      // Inputs
127      TImage::Pointer    m_Image;
128      TImage::Pointer    m_Segmentation;
129      TMesh::Pointer     m_Mesh;
130      TVTKImage::Pointer m_VTKImage;
131      TVTKImage::Pointer m_VTKSegmentation;
132   */
133
134   // Visualization stuff
135   vtkSmartPointer< vtkRenderer >        m_3DRenderer;
136   vtkSmartPointer< vtkRenderer >        m_XPlaneRenderer;
137   vtkSmartPointer< vtkRenderer >        m_YPlaneRenderer;
138   vtkSmartPointer< vtkRenderer >        m_ZPlaneRenderer;
139   vtkSmartPointer< vtkRenderer >        m_AuxRenderer;
140   vtkSmartPointer< idms::VolumeActors > m_ImageActors;
141   vtkSmartPointer< idms::InteractorStyleImage > m_XStyle;
142   vtkSmartPointer< idms::InteractorStyleImage > m_YStyle;
143   vtkSmartPointer< idms::InteractorStyleImage > m_ZStyle;
144   vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
145
146   /*
147     TTriangulation::Pointer                 m_Mesh;
148     vtkSmartPointer< TTriangulationMapper > m_MeshMapper;
149     vtkSmartPointer< vtkActor >             m_MeshActor;
150     TCutter::Pointer m_ZCutter;
151   */
152 };
153
154 #endif // __MAINWND__H__
155
156 // eof - $RCSfile$