1 /*=========================================================================
4 Module: $RCSfile: wxManualSegmentation_MPRWidget.cxx,v $
6 Date: $Date: 2009/05/14 13:54:57 $
7 Version: $Revision: 1.1 $
9 Copyright: (c) 2002, 2003
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.
16 =========================================================================*/
19 #include "wxManualSegmentation_MPRWidget.h"
22 #include <wx/splitter.h>
23 #include <wx/notebook.h>
24 #include <wx/colordlg.h>
27 //#include "../tools/MaracasTools.h"
31 //-------------------------------------------------------------------
32 //-------------------------------------------------------------------
33 //-------------------------------------------------------------------
35 BEGIN_EVENT_TABLE( wxManualSegmentation_MPRWidget, wxPanel )
36 EVT_MENU( 12121, wxManualSegmentation_MPRWidget::OnRefreshView )
37 // EVT_MENU( 12122, wxManualSegmentation_MPRWidget::OnDClickLeft )
41 wxManualSegmentation_MPRWidget::wxManualSegmentation_MPRWidget( wxWindow* parent,
42 marImageData *marimageData ,double voxelSize)
43 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
46 _voxelSize = voxelSize;
47 _marimageData = marimageData;
49 _wxvtk3Dbaseview_Clipping3D_C = NULL;
50 _wxvtkmpr3Dview_C = NULL;
51 _wxvtkclipping3Dview_C = NULL;
53 wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1);
56 _MPRWidget2 = new wxMPRWidget2(pnlSplitter,_marimageData,voxelSize);
57 wxPanel * contour3DView = Create3DViewContour( pnlSplitter , _MPRWidget2->GetVtkMPRBaseData());
58 this->GetSize(&ww,&hh);
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);
74 MaracasTools* maracasTools = MaracasTools::GetInstance();
75 maracasTools->SetMPRWidget(this);
76 wxFrame* maracasToolsFrame = maracasTools->GetToolbox(this);
77 maracasToolsFrame->Show();
84 //----------------------------------------------------------------------------
86 wxManualSegmentation_MPRWidget::~wxManualSegmentation_MPRWidget( )
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; }
94 //----------------------------------------------------------------------------
95 wxPanel* wxManualSegmentation_MPRWidget::Create3DViewContour( wxWindow *parent, vtkMPRBaseData *vtkmprbasedata)
98 wxPanel *panel=new wxPanel(parent,-1);
100 wxSplitterWindow *panelClipping3D = new wxSplitterWindow( panel , -1);
101 _wxvtk3Dbaseview_Clipping3D_C = new wxVtk3DBaseView( panelClipping3D );
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);
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);
115 wxWindow *window3D = _wxvtk3Dbaseview_Clipping3D_C->GetWxVTKRenderWindowInteractor();
117 wxPanel *panelControl = new wxPanel(panelClipping3D,-1);
118 wxPanel *controlPanelMPR3D = _wxvtkmpr3Dview_C->CreateControlPanel(panelControl);
119 wxPanel *controlPanelClipping3D = _wxvtkclipping3Dview_C->CreateControlPanel(panelControl);
121 // wxBoxSizer *sizerCtrol = new wxBoxSizer(wxVERTICAL);
122 wxFlexGridSizer *sizerCtrol = new wxFlexGridSizer(1);
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();
133 while (pp->GetParent()!=NULL) pp=pp->GetParent();
134 pp->GetSize(&ww,&hh);
137 // panelClipping3D -> SetMinimumPaneSize( -50 );
138 panelClipping3D -> SplitHorizontally( panelControl,window3D, (int)(hh*0.20) );
139 wxwindow=panelClipping3D;
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);
149 // panel->FitInside();
159 //----------------------------------------------------------------------------
160 void wxManualSegmentation_MPRWidget::ConfigureVTK(){
161 _MPRWidget2->ConfigureVTK();
162 _wxvtk3Dbaseview_Clipping3D_C -> Configure();
163 _wxvtkmpr3Dview_C -> Configure();
164 _wxvtkclipping3Dview_C -> Configure();
166 vtkInteractorStyle3DView *vtkinteractorstyle3Dview = new vtkInteractorStyle3DView();
167 vtkinteractorstyle3Dview->SetWxVtkMPR3DView(_wxvtkmpr3Dview_C);
168 vtkinteractorstyle3Dview->SetWxVtkClipping3DView(_wxvtkclipping3Dview_C);
169 _wxvtk3Dbaseview_Clipping3D_C->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( vtkinteractorstyle3Dview );
173 //----------------------------------------------------------------------------
174 vtkMPRBaseData *wxManualSegmentation_MPRWidget::GetVtkMPRBaseData(){
175 return _MPRWidget2->GetVtkMPRBaseData();
177 //----------------------------------------------------------------------------
178 vtkPlane2DView *wxManualSegmentation_MPRWidget::GetVtkPlane2DView()
180 return _MPRWidget2->GetVtkPlane2DView();
182 //----------------------------------------------------------------------------
183 void wxManualSegmentation_MPRWidget::OnRefreshView(wxCommandEvent & event)
187 //----------------------------------------------------------------------------
188 void wxManualSegmentation_MPRWidget::RefreshView()
190 this->_MPRWidget2->RefreshView();
191 _wxvtkmpr3Dview_C -> RefreshView();
192 _wxvtkclipping3Dview_C -> Refresh();
193 _wxvtk3Dbaseview_Clipping3D_C -> Refresh();
197 vtkRenderer* wxManualSegmentation_MPRWidget::GetRenderer(){
198 return _wxvtkmpr3Dview_C->GetWxvtk3Dbaseview()->GetRenderer();
203 // EOF - wxManualSegmentation_MPRWidget.cxx