]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/include/wxManualSegmentation_MPRWidget.cxx
BUG macOs
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / include / wxManualSegmentation_MPRWidget.cxx
1 /*=========================================================================
2
3   Program:   wxMaracas
4   Module:    $RCSfile: wxManualSegmentation_MPRWidget.cxx,v $
5   Language:  C++
6   Date:      $Date: 2009/05/14 13:54:57 $
7   Version:   $Revision: 1.1 $
8
9   Copyright: (c) 2002, 2003
10   License:
11
12      This software is distributed WITHOUT ANY WARRANTY; without even
13      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14      PURPOSE.  See the above copyright notice for more information.
15
16 =========================================================================*/
17
18
19 #include "wxManualSegmentation_MPRWidget.h"
20
21 #include <wx/wx.h>
22 #include <wx/splitter.h>
23 #include <wx/notebook.h>
24 #include <wx/colordlg.h>
25
26 //EED 6 aout 2007
27 //#include "../tools/MaracasTools.h"
28
29
30
31 //-------------------------------------------------------------------
32 //-------------------------------------------------------------------
33 //-------------------------------------------------------------------
34
35 BEGIN_EVENT_TABLE( wxManualSegmentation_MPRWidget, wxPanel )
36         EVT_MENU( 12121, wxManualSegmentation_MPRWidget::OnRefreshView )
37 //      EVT_MENU( 12122, wxManualSegmentation_MPRWidget::OnDClickLeft  )
38 END_EVENT_TABLE( );
39
40
41 wxManualSegmentation_MPRWidget::wxManualSegmentation_MPRWidget( wxWindow* parent,
42                           marImageData *marimageData ,double voxelSize)
43 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
44 {
45
46         _voxelSize                                                      = voxelSize;
47         _marimageData                                                   = marimageData;
48
49         _wxvtk3Dbaseview_Clipping3D_C           = NULL;
50         _wxvtkmpr3Dview_C                                       = NULL;
51         _wxvtkclipping3Dview_C                          = NULL;
52
53     wxSplitterWindow    *pnlSplitter    = new wxSplitterWindow( this , -1);
54         
55         int ww,hh;
56         _MPRWidget2                                     = new wxMPRWidget2(pnlSplitter,_marimageData,voxelSize);
57         wxPanel *       contour3DView   = Create3DViewContour( pnlSplitter , _MPRWidget2->GetVtkMPRBaseData());
58         this->GetSize(&ww,&hh);
59
60     pnlSplitter -> SplitVertically( _MPRWidget2, contour3DView , 600);
61         wxBoxSizer      *sizer  = new wxBoxSizer(wxVERTICAL  );
62         sizer           -> Add( pnlSplitter ,1,wxGROW  ,0);
63         pnlSplitter     -> SetMinimumPaneSize( 50 );
64         this            -> SetSizer(sizer);
65         //EEDxx2.4
66         //      FitInside();
67         
68
69         
70         //TEST
71
72 //EED 6 aout 2007
73 /*
74         MaracasTools* maracasTools = MaracasTools::GetInstance();
75         maracasTools->SetMPRWidget(this);
76         wxFrame* maracasToolsFrame = maracasTools->GetToolbox(this);
77         maracasToolsFrame->Show();
78 */
79         
80         
81
82 }
83
84 //----------------------------------------------------------------------------
85
86 wxManualSegmentation_MPRWidget::~wxManualSegmentation_MPRWidget( )
87 {
88         if (_wxvtk3Dbaseview_Clipping3D_C       != NULL) { delete       _wxvtk3Dbaseview_Clipping3D_C;  }
89         if (_wxvtkmpr3Dview_C                           != NULL) { delete       _wxvtkmpr3Dview_C;                              }
90         if (_wxvtkclipping3Dview_C                      != NULL) { delete       _wxvtkclipping3Dview_C;                 }
91 }
92
93
94 //----------------------------------------------------------------------------
95 wxPanel* wxManualSegmentation_MPRWidget::Create3DViewContour( wxWindow *parent, vtkMPRBaseData *vtkmprbasedata)
96 {
97         wxWindow *wxwindow;
98         wxPanel *panel=new wxPanel(parent,-1);
99
100         wxSplitterWindow        *panelClipping3D        = new wxSplitterWindow( panel , -1);
101         _wxvtk3Dbaseview_Clipping3D_C = new wxVtk3DBaseView( panelClipping3D );
102
103         _wxvtkclipping3Dview_C = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D_C);
104         vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer(); 
105         vtkclipping3Ddataviewer->SetVtkMPRBaseData(vtkmprbasedata);
106         vtkclipping3Ddataviewer->Configure();
107         _wxvtkclipping3Dview_C->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer);
108
109         _wxvtkmpr3Dview_C = new wxVtkMPR3DView( _wxvtk3Dbaseview_Clipping3D_C );
110         vtkMPR3DDataViewer *vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); 
111         vtkmpr3Ddataviewer->SetVtkMPRBaseData(vtkmprbasedata);
112         vtkmpr3Ddataviewer->Configure();
113         _wxvtkmpr3Dview_C->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
114
115         wxWindow        *window3D                               = _wxvtk3Dbaseview_Clipping3D_C->GetWxVTKRenderWindowInteractor();
116
117         wxPanel         *panelControl                   = new wxPanel(panelClipping3D,-1);      
118         wxPanel         *controlPanelMPR3D              = _wxvtkmpr3Dview_C->CreateControlPanel(panelControl);
119         wxPanel         *controlPanelClipping3D = _wxvtkclipping3Dview_C->CreateControlPanel(panelControl);
120
121 //      wxBoxSizer  *sizerCtrol             = new wxBoxSizer(wxVERTICAL);
122         wxFlexGridSizer  *sizerCtrol        = new wxFlexGridSizer(1);
123
124         sizerCtrol->Add(controlPanelMPR3D , 1, wxALL|wxEXPAND, 2);
125         sizerCtrol->Add(controlPanelClipping3D , 1, wxALL|wxEXPAND, 2);
126         panelControl->SetAutoLayout(true);
127         panelControl->SetSizer(sizerCtrol);
128         panelControl->SetSize(400,350);
129         panelControl->Layout();
130
131         int ww,hh;
132         wxWindow *pp=this;
133         while (pp->GetParent()!=NULL) pp=pp->GetParent();
134         pp->GetSize(&ww,&hh);
135
136 //EEDxx2.4
137 //              panelClipping3D -> SetMinimumPaneSize( -50 );
138         panelClipping3D -> SplitHorizontally( panelControl,window3D, (int)(hh*0.20) );
139         wxwindow=panelClipping3D;
140
141     wxBoxSizer *sizerH1 = new wxBoxSizer(wxHORIZONTAL);
142         sizerH1->Add(wxwindow , 1, wxALL|wxEXPAND, 0);
143         panel->SetAutoLayout(true);
144         panel->SetSizer(sizerH1);
145         panel->SetSize(400,400);
146         panel->Layout();
147
148 //EEDxx2.4
149 //      panel->FitInside();
150 //      FitInside();
151
152
153
154
155         return panel;
156 }
157
158
159 //----------------------------------------------------------------------------
160 void wxManualSegmentation_MPRWidget::ConfigureVTK(){
161         _MPRWidget2->ConfigureVTK();
162         _wxvtk3Dbaseview_Clipping3D_C   ->  Configure();
163         _wxvtkmpr3Dview_C                               ->      Configure();
164         _wxvtkclipping3Dview_C                  ->      Configure();
165
166         vtkInteractorStyle3DView *vtkinteractorstyle3Dview      = new vtkInteractorStyle3DView();
167         vtkinteractorstyle3Dview->SetWxVtkMPR3DView(_wxvtkmpr3Dview_C);
168         vtkinteractorstyle3Dview->SetWxVtkClipping3DView(_wxvtkclipping3Dview_C);
169         _wxvtk3Dbaseview_Clipping3D_C->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( vtkinteractorstyle3Dview );
170
171 }
172
173 //----------------------------------------------------------------------------
174 vtkMPRBaseData  *wxManualSegmentation_MPRWidget::GetVtkMPRBaseData(){
175         return _MPRWidget2->GetVtkMPRBaseData();
176 }
177 //----------------------------------------------------------------------------
178 vtkPlane2DView *wxManualSegmentation_MPRWidget::GetVtkPlane2DView()
179 {
180         return _MPRWidget2->GetVtkPlane2DView();
181 }
182 //----------------------------------------------------------------------------
183 void wxManualSegmentation_MPRWidget::OnRefreshView(wxCommandEvent & event)
184 {
185         RefreshView();
186 }
187 //----------------------------------------------------------------------------
188 void wxManualSegmentation_MPRWidget::RefreshView()
189 {
190         this->_MPRWidget2->RefreshView();
191         _wxvtkmpr3Dview_C                               -> RefreshView();
192         _wxvtkclipping3Dview_C                  -> Refresh();
193         _wxvtk3Dbaseview_Clipping3D_C   -> Refresh();
194 }
195
196
197 vtkRenderer* wxManualSegmentation_MPRWidget::GetRenderer(){
198         return _wxvtkmpr3Dview_C->GetWxvtk3Dbaseview()->GetRenderer();
199 }
200
201
202
203 // EOF - wxManualSegmentation_MPRWidget.cxx
204
205
206
207