wxManualSegmentation_MPRWidget.cxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "wxManualSegmentation_MPRWidget.h"
00020
00021 #include <wx/wx.h>
00022 #include <wx/splitter.h>
00023 #include <wx/notebook.h>
00024 #include <wx/colordlg.h>
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 BEGIN_EVENT_TABLE( wxManualSegmentation_MPRWidget, wxPanel )
00036 EVT_MENU( 12121, wxManualSegmentation_MPRWidget::OnRefreshView )
00037
00038 END_EVENT_TABLE( );
00039
00040
00041 wxManualSegmentation_MPRWidget::wxManualSegmentation_MPRWidget( wxWindow* parent,
00042 marImageData *marimageData ,double voxelSize)
00043 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
00044 {
00045
00046 _voxelSize = voxelSize;
00047 _marimageData = marimageData;
00048
00049 _wxvtk3Dbaseview_Clipping3D_C = NULL;
00050 _wxvtkmpr3Dview_C = NULL;
00051 _wxvtkclipping3Dview_C = NULL;
00052
00053 wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1);
00054
00055 int ww,hh;
00056 _MPRWidget2 = new wxMPRWidget2(pnlSplitter,_marimageData,voxelSize);
00057 wxPanel * contour3DView = Create3DViewContour( pnlSplitter , _MPRWidget2->GetVtkMPRBaseData());
00058 this->GetSize(&ww,&hh);
00059
00060 pnlSplitter -> SplitVertically( _MPRWidget2, contour3DView , 600);
00061 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL );
00062 sizer -> Add( pnlSplitter ,1,wxGROW ,0);
00063 pnlSplitter -> SetMinimumPaneSize( 50 );
00064 this -> SetSizer(sizer);
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082 }
00083
00084
00085
00086 wxManualSegmentation_MPRWidget::~wxManualSegmentation_MPRWidget( )
00087 {
00088 if (_wxvtk3Dbaseview_Clipping3D_C != NULL) { delete _wxvtk3Dbaseview_Clipping3D_C; }
00089 if (_wxvtkmpr3Dview_C != NULL) { delete _wxvtkmpr3Dview_C; }
00090 if (_wxvtkclipping3Dview_C != NULL) { delete _wxvtkclipping3Dview_C; }
00091 }
00092
00093
00094
00095 wxPanel* wxManualSegmentation_MPRWidget::Create3DViewContour( wxWindow *parent, vtkMPRBaseData *vtkmprbasedata)
00096 {
00097 wxWindow *wxwindow;
00098 wxPanel *panel=new wxPanel(parent,-1);
00099
00100 wxSplitterWindow *panelClipping3D = new wxSplitterWindow( panel , -1);
00101 _wxvtk3Dbaseview_Clipping3D_C = new wxVtk3DBaseView( panelClipping3D );
00102
00103 _wxvtkclipping3Dview_C = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D_C);
00104 vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer();
00105 vtkclipping3Ddataviewer->SetVtkMPRBaseData(vtkmprbasedata);
00106 vtkclipping3Ddataviewer->Configure();
00107 _wxvtkclipping3Dview_C->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer);
00108
00109 _wxvtkmpr3Dview_C = new wxVtkMPR3DView( _wxvtk3Dbaseview_Clipping3D_C );
00110 vtkMPR3DDataViewer *vtkmpr3Ddataviewer = new vtkMPR3DDataViewer();
00111 vtkmpr3Ddataviewer->SetVtkMPRBaseData(vtkmprbasedata);
00112 vtkmpr3Ddataviewer->Configure();
00113 _wxvtkmpr3Dview_C->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
00114
00115 wxWindow *window3D = _wxvtk3Dbaseview_Clipping3D_C->GetWxVTKRenderWindowInteractor();
00116
00117 wxPanel *panelControl = new wxPanel(panelClipping3D,-1);
00118 wxPanel *controlPanelMPR3D = _wxvtkmpr3Dview_C->CreateControlPanel(panelControl);
00119 wxPanel *controlPanelClipping3D = _wxvtkclipping3Dview_C->CreateControlPanel(panelControl);
00120
00121
00122 wxFlexGridSizer *sizerCtrol = new wxFlexGridSizer(1);
00123
00124 sizerCtrol->Add(controlPanelMPR3D , 1, wxALL|wxEXPAND, 2);
00125 sizerCtrol->Add(controlPanelClipping3D , 1, wxALL|wxEXPAND, 2);
00126 panelControl->SetAutoLayout(true);
00127 panelControl->SetSizer(sizerCtrol);
00128 panelControl->SetSize(400,350);
00129 panelControl->Layout();
00130
00131 int ww,hh;
00132 wxWindow *pp=this;
00133 while (pp->GetParent()!=NULL) pp=pp->GetParent();
00134 pp->GetSize(&ww,&hh);
00135
00136
00137
00138 panelClipping3D -> SplitHorizontally( panelControl,window3D, (int)(hh*0.20) );
00139 wxwindow=panelClipping3D;
00140
00141 wxBoxSizer *sizerH1 = new wxBoxSizer(wxHORIZONTAL);
00142 sizerH1->Add(wxwindow , 1, wxALL|wxEXPAND, 0);
00143 panel->SetAutoLayout(true);
00144 panel->SetSizer(sizerH1);
00145 panel->SetSize(400,400);
00146 panel->Layout();
00147
00148
00149
00150
00151
00152
00153
00154
00155 return panel;
00156 }
00157
00158
00159
00160 void wxManualSegmentation_MPRWidget::ConfigureVTK(){
00161 _MPRWidget2->ConfigureVTK();
00162 _wxvtk3Dbaseview_Clipping3D_C -> Configure();
00163 _wxvtkmpr3Dview_C -> Configure();
00164 _wxvtkclipping3Dview_C -> Configure();
00165
00166 vtkInteractorStyle3DView *vtkinteractorstyle3Dview = new vtkInteractorStyle3DView();
00167 vtkinteractorstyle3Dview->SetWxVtkMPR3DView(_wxvtkmpr3Dview_C);
00168 vtkinteractorstyle3Dview->SetWxVtkClipping3DView(_wxvtkclipping3Dview_C);
00169 _wxvtk3Dbaseview_Clipping3D_C->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( vtkinteractorstyle3Dview );
00170
00171 }
00172
00173
00174 vtkMPRBaseData *wxManualSegmentation_MPRWidget::GetVtkMPRBaseData(){
00175 return _MPRWidget2->GetVtkMPRBaseData();
00176 }
00177
00178 vtkPlane2DView *wxManualSegmentation_MPRWidget::GetVtkPlane2DView()
00179 {
00180 return _MPRWidget2->GetVtkPlane2DView();
00181 }
00182
00183 void wxManualSegmentation_MPRWidget::OnRefreshView(wxCommandEvent & event)
00184 {
00185 RefreshView();
00186 }
00187
00188 void wxManualSegmentation_MPRWidget::RefreshView()
00189 {
00190 this->_MPRWidget2->RefreshView();
00191 _wxvtkmpr3Dview_C -> RefreshView();
00192 _wxvtkclipping3Dview_C -> Refresh();
00193 _wxvtk3Dbaseview_Clipping3D_C -> Refresh();
00194 }
00195
00196
00197 vtkRenderer* wxManualSegmentation_MPRWidget::GetRenderer(){
00198 return _wxvtkmpr3Dview_C->GetWxvtk3Dbaseview()->GetRenderer();
00199 }
00200
00201
00202
00203
00204
00205
00206
00207