wxManualSegmentation_MPRWidget.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   wxMaracas
00004   Module:    $RCSfile: wxManualSegmentation_MPRWidget.cxx,v $
00005   Language:  C++
00006   Date:      $Date: 2009/05/14 13:54:57 $
00007   Version:   $Revision: 1.1 $
00008 
00009   Copyright: (c) 2002, 2003
00010   License:
00011 
00012      This software is distributed WITHOUT ANY WARRANTY; without even
00013      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00014      PURPOSE.  See the above copyright notice for more information.
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 //EED 6 aout 2007
00027 //#include "../tools/MaracasTools.h"
00028 
00029 
00030 
00031 //-------------------------------------------------------------------
00032 //-------------------------------------------------------------------
00033 //-------------------------------------------------------------------
00034 
00035 BEGIN_EVENT_TABLE( wxManualSegmentation_MPRWidget, wxPanel )
00036         EVT_MENU( 12121, wxManualSegmentation_MPRWidget::OnRefreshView )
00037 //      EVT_MENU( 12122, wxManualSegmentation_MPRWidget::OnDClickLeft  )
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         //EEDxx2.4
00066         //      FitInside();
00067         
00068 
00069         
00070         //TEST
00071 
00072 //EED 6 aout 2007
00073 /*
00074         MaracasTools* maracasTools = MaracasTools::GetInstance();
00075         maracasTools->SetMPRWidget(this);
00076         wxFrame* maracasToolsFrame = maracasTools->GetToolbox(this);
00077         maracasToolsFrame->Show();
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 //      wxBoxSizer  *sizerCtrol             = new wxBoxSizer(wxVERTICAL);
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 //EEDxx2.4
00137 //              panelClipping3D -> SetMinimumPaneSize( -50 );
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 //EEDxx2.4
00149 //      panel->FitInside();
00150 //      FitInside();
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 // EOF - wxManualSegmentation_MPRWidget.cxx
00204 
00205 
00206 
00207 

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1