wxManualTree_MPRWidget.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   wxMaracas
00004   Module:    $RCSfile: wxManualTree_MPRWidget.cxx,v $
00005   Language:  C++
00006   Date:      $Date: 2010/03/17 16:52:51 $
00007   Version:   $Revision: 1.4 $
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 "wxManualTree_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 #include "vtkInteractorStyle3DView.h"
00027 
00028 
00029 //-------------------------------------------------------------------
00030 //-------------------------------------------------------------------
00031 //-------------------------------------------------------------------
00032 
00033 BEGIN_EVENT_TABLE( wxManualTree_MPRWidget, wxPanel )
00034         EVT_MENU( 12121, wxManualTree_MPRWidget::OnRefreshView )
00035 //      EVT_MENU( 12122, wxManualTree_MPRWidget::OnDClickLeft  )
00036 END_EVENT_TABLE( );
00037 
00038 
00039 wxManualTree_MPRWidget::wxManualTree_MPRWidget( wxWindow* parent,
00040                           marImageData *marimageData ,double voxelSize)
00041 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
00042 {
00043 
00044         _voxelSize                                                      = voxelSize;
00045         _marimageData                                                   = marimageData;
00046 
00047         _wxvtk3Dbaseview_Clipping3D_C           = NULL;
00048         _wxvtkmpr3Dview_C                                       = NULL;
00049         _wxvtkclipping3Dview_C                          = NULL;
00050 
00051     wxSplitterWindow    *pnlSplitter    = new wxSplitterWindow( this , -1);
00052         
00053         int ww,hh;
00054         _MPRWidget2                                     = new wxMPRWidget2(pnlSplitter,_marimageData,voxelSize);
00055         wxPanel *       contour3DView   = Create3DViewContour( pnlSplitter , _MPRWidget2->GetVtkMPRBaseData());
00056         this->GetSize(&ww,&hh);
00057 
00058     pnlSplitter -> SplitVertically( _MPRWidget2, contour3DView , 600);
00059         wxBoxSizer      *sizer  = new wxBoxSizer(wxVERTICAL  );
00060         sizer           -> Add( pnlSplitter ,1,wxGROW  ,0);
00061         pnlSplitter     -> SetMinimumPaneSize( 50 );
00062         this            -> SetSizer(sizer);
00063 //EEDxx2.4
00064 //      FitInside();
00065 
00066 }
00067 
00068 //----------------------------------------------------------------------------
00069 
00070 wxManualTree_MPRWidget::~wxManualTree_MPRWidget( )
00071 {
00072         if (_wxvtk3Dbaseview_Clipping3D_C       != NULL) { delete       _wxvtk3Dbaseview_Clipping3D_C;  }
00073         if (_wxvtkmpr3Dview_C                           != NULL) { delete       _wxvtkmpr3Dview_C;                              }
00074         if (_wxvtkclipping3Dview_C                      != NULL) { delete       _wxvtkclipping3Dview_C;                 }
00075 }
00076 
00077 
00078 //----------------------------------------------------------------------------
00079 wxPanel* wxManualTree_MPRWidget::Create3DViewContour( wxWindow *parent, vtkMPRBaseData *vtkmprbasedata)
00080 {
00081         wxWindow *wxwindow;
00082         wxPanel *panel=new wxPanel(parent,-1);
00083 
00084         wxSplitterWindow        *panelClipping3D        = new wxSplitterWindow( panel , -1);
00085         _wxvtk3Dbaseview_Clipping3D_C = new wxVtk3DBaseView( panelClipping3D );
00086 
00087         _wxvtkclipping3Dview_C = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D_C);
00088         vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer(); 
00089         vtkclipping3Ddataviewer->SetVtkMPRBaseData(vtkmprbasedata);
00090         vtkclipping3Ddataviewer->Configure();
00091         _wxvtkclipping3Dview_C->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer);
00092 
00093         _wxvtkmpr3Dview_C = new wxVtkMPR3DView( _wxvtk3Dbaseview_Clipping3D_C );
00094         vtkMPR3DDataViewer *vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); 
00095         vtkmpr3Ddataviewer->SetVtkMPRBaseData(vtkmprbasedata);
00096         vtkmpr3Ddataviewer->Configure();
00097         _wxvtkmpr3Dview_C->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
00098 
00099         wxWindow        *window3D                               = _wxvtk3Dbaseview_Clipping3D_C->GetWxVTKRenderWindowInteractor();
00100 
00101         wxPanel         *panelControl                   = new wxPanel(panelClipping3D,-1);      
00102         wxPanel         *controlPanelMPR3D              = _wxvtkmpr3Dview_C->CreateControlPanel(panelControl, false);
00103         wxPanel         *controlPanelClipping3D = _wxvtkclipping3Dview_C->CreateSurfControlPanel(panelControl);
00104 
00105 //      wxBoxSizer  *sizerCtrol             = new wxBoxSizer(wxVERTICAL);
00106         wxFlexGridSizer  *sizerCtrol             = new wxFlexGridSizer(1);
00107 
00108         sizerCtrol->Add(controlPanelMPR3D , 1, wxALL|wxEXPAND, 2);
00109         sizerCtrol->Add(controlPanelClipping3D , 1, wxALL|wxEXPAND, 2);
00110         panelControl->SetAutoLayout(true);
00111         panelControl->SetSizer(sizerCtrol);
00112         panelControl->SetSize(400,350);
00113         panelControl->Layout();
00114 
00115         int ww,hh;
00116         wxWindow *pp=this;
00117         while (pp->GetParent()!=NULL) pp=pp->GetParent();
00118         pp->GetSize(&ww,&hh);
00119 
00120 //EEDxx2.4
00121 //              panelClipping3D -> SetMinimumPaneSize( -50 );
00122         panelClipping3D -> SplitHorizontally( panelControl,window3D, (int)(hh*0.20) );
00123         wxwindow=panelClipping3D;
00124 
00125     wxBoxSizer *sizerH1 = new wxBoxSizer(wxHORIZONTAL);
00126         sizerH1->Add(wxwindow , 1, wxALL|wxEXPAND, 0);
00127         panel->SetAutoLayout(true);
00128         panel->SetSizer(sizerH1);
00129         panel->SetSize(400,400);
00130         panel->Layout();
00131 
00132 //EEDxx2.4
00133 //      panel->FitInside();
00134 //      FitInside();
00135 
00136         return panel;
00137 }
00138 //----------------------------------------------------------------------------
00139 void wxManualTree_MPRWidget::ConfigureContour()
00140 {       
00141         wxVtkBaseView *wxvtkbaseview;
00142         wxvtkbaseview                   = _MPRWidget2->GetWxVtkBaseView(0,2);
00143 
00144 //EED 3 oct 2006
00145         double spc[3];
00146         wxvtkbaseview->GetSpacing(spc);
00147 
00148         _manContourControl_2    = new manualContour3VControler(2);
00149         _mContourModel_2                = new manualContourModel();
00150         _mViewContour_2                 = new manualView3VContour(2);
00151         _mContourModel_2->SetCloseContour(false);
00152         _mViewContour_2->SetModel( _mContourModel_2 );
00153         _mViewContour_2->SetWxVtkBaseView( wxvtkbaseview );
00154         _mViewContour_2->SetRange( 1 );
00155         _mViewContour_2->SetMesureScale( _voxelSize     );
00156 
00157 //EED 3 oct 2006
00158         _mViewContour_2->SetSpacing(spc);
00159 
00160         ((vtkInteractorStyleBaseView*)wxvtkbaseview->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _manContourControl_2 );
00161 
00162         //
00163         wxvtkbaseview                   = _MPRWidget2->GetWxVtkBaseView(0,0);
00164         _manContourControl_0    = new manualContour3VControler(0);
00165         _mViewContour_0                 = new manualView3VContour(0);
00166         _mViewContour_0->SetModel( _mContourModel_2 );
00167         _mViewContour_0->SetWxVtkBaseView( wxvtkbaseview );
00168         _mViewContour_0->SetRange( 1 );
00169         _mViewContour_0->SetMesureScale( _voxelSize     );
00170 
00171 //EED 3 oct 2006
00172         _mViewContour_0->SetSpacing(spc);
00173 
00174         ((vtkInteractorStyleBaseView*)wxvtkbaseview->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _manContourControl_0 );
00175 
00176         //
00177         wxvtkbaseview                   = _MPRWidget2->GetWxVtkBaseView(0,1);
00178         _manContourControl_1    = new manualContour3VControler(1);
00179         _mViewContour_1                 = new manualView3VContour(1);
00180         _mViewContour_1->SetModel( _mContourModel_2 );
00181         _mViewContour_1->SetWxVtkBaseView( wxvtkbaseview );
00182         _mViewContour_1->SetRange( 1 );
00183         _mViewContour_1->SetMesureScale( _voxelSize     );
00184 
00185 //EED 3 oct 2006
00186         _mViewContour_1->SetSpacing(spc);
00187 
00188         ((vtkInteractorStyleBaseView*)wxvtkbaseview->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _manContourControl_1 );
00189 
00190 
00191         // perpendicular plane
00192         wxvtkbaseview                   = _MPRWidget2->GetWxVtkBaseView(0,3);
00193         _manContourControl_p    = new manualContourPerpPlaneControler();
00194         _mViewContour_p                 = new manualViewPerpPlaneContour();
00195         _mViewContour_p         ->      SetModel( _mContourModel_2 );
00196         _mViewContour_p         ->      SetWxVtkBaseView( wxvtkbaseview );
00197         _mViewContour_p         ->      SetRange( 1 );
00198         _mViewContour_p->SetMesureScale( _voxelSize     );
00199 
00200 //EED 3 oct 2006
00201         _mViewContour_p->SetSpacing(spc);
00202 
00203 //      wxvtkbaseview->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manContourControl_p );
00204         ((vtkInteractorStyleBaseView*)wxvtkbaseview->GetInteractorStyleBaseView())->InsertInteractorStyleMaracas( 0, _manContourControl_p );
00205 
00206         vtkPlane2DView *vtkplane2Dview = (vtkPlane2DView*)wxvtkbaseview;
00207         _manContourControl_p->SetVtkInteractorStylePlane2D( vtkplane2Dview->GetInteractorstyleplane2D() );
00208 
00209         //
00210         wxvtkbaseview                           = _wxvtkclipping3Dview_C->GetWxvtk3Dbaseview();
00211         _manContourControl_3V3D         = new manualContour3V3DControler();
00212         _mViewContour_3D                        = new manualView3DContour();
00213         _mViewContour_3D->SetModel( _mContourModel_2 );
00214         _mViewContour_3D->SetWxVtkBaseView( wxvtkbaseview );
00215         _mViewContour_3D->SetRange( 1 );
00216         _mViewContour_3D->SetMesureScale(_voxelSize     );
00217 
00218 //EED 3 oct 2006
00219         _mViewContour_3D->SetSpacing(spc);
00220 
00221         int dim[3];
00222         this->_marimageData->GetImageData()->GetDimensions( dim );  // image t=0
00223         _mViewContour_3D->SetDimensions( dim[0],dim[1],dim[2] );
00224         _mViewContour_3D->SetVtkMPRBaseData( _wxvtkmpr3Dview_C->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData() );
00225         ((vtkInteractorStyleBaseView*)wxvtkbaseview->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _manContourControl_3V3D );
00226 
00227         //
00228         _manContourControl_0    -> SetVtkMPRBaseData( _MPRWidget2->GetVtkMPRBaseData() );
00229         _manContourControl_1    -> SetVtkMPRBaseData( _MPRWidget2->GetVtkMPRBaseData() );
00230         _manContourControl_2    -> SetVtkMPRBaseData( _MPRWidget2->GetVtkMPRBaseData() );
00231         _manContourControl_p    -> SetVtkMPRBaseData( _MPRWidget2->GetVtkMPRBaseData() );
00232         _manContourControl_3V3D -> SetVtkMPRBaseData( _MPRWidget2->GetVtkMPRBaseData() );
00233 
00234         _manContourControl_0    -> SetModelView( _mContourModel_2 , _mViewContour_0 );
00235         _manContourControl_0    -> AddManualViewBaseContour( _mViewContour_1    );
00236         _manContourControl_0    -> AddManualViewBaseContour( _mViewContour_2    );
00237         _manContourControl_0    -> AddManualViewBaseContour( _mViewContour_p    );
00238         _manContourControl_0    -> AddManualViewBaseContour( _mViewContour_3D   );
00239 
00240         _manContourControl_1    -> SetModelView( _mContourModel_2 , _mViewContour_1);
00241         _manContourControl_1    -> AddManualViewBaseContour( _mViewContour_2    );
00242         _manContourControl_1    -> AddManualViewBaseContour( _mViewContour_0    );
00243         _manContourControl_1    -> AddManualViewBaseContour( _mViewContour_p    );
00244         _manContourControl_1    -> AddManualViewBaseContour( _mViewContour_3D   );
00245 
00246         _manContourControl_2    -> SetModelView( _mContourModel_2 , _mViewContour_2 );
00247         _manContourControl_2    -> AddManualViewBaseContour( _mViewContour_0    );
00248         _manContourControl_2    -> AddManualViewBaseContour( _mViewContour_1    );
00249         _manContourControl_2    -> AddManualViewBaseContour( _mViewContour_p    );
00250         _manContourControl_2    -> AddManualViewBaseContour( _mViewContour_3D   );
00251 
00252 
00253         //
00254         wxvtkbaseview                           = _wxvtkclipping3Dview_C->GetWxvtk3Dbaseview();
00255         manualContour3VControler *_manContourControl_3V = new manualContour3VControler(-1);
00256         _manContourControl_3V   -> SetModelView( _mContourModel_2 , _mViewContour_3D );
00257         _manContourControl_3V   -> AddManualViewBaseContour( _mViewContour_2    );
00258         _manContourControl_3V   -> AddManualViewBaseContour( _mViewContour_0    );
00259         _manContourControl_3V   -> AddManualViewBaseContour( _mViewContour_1    );
00260         _manContourControl_3V   -> AddManualViewBaseContour( _mViewContour_p    );
00261         _manContourControl_3V   -> SetVtkInteractorStyleBaseView ((vtkInteractorStyleBaseView*)wxvtkbaseview->GetInteractorStyleBaseView() );
00262         _manContourControl_3V3D -> SetManualContour3VControler( _manContourControl_3V );
00263         _manContourControl_3V3D -> SetModelView( _mContourModel_2 , _mViewContour_3D );
00264 
00265         //
00266         wxvtkbaseview                   = _MPRWidget2->GetWxVtkBaseView(0,3);
00267         manualContour3VControler *_manContourControl_3V_p = new manualContour3VControler(-1);
00268         _manContourControl_3V_p -> SetModelView( _mContourModel_2 , _mViewContour_p );
00269         _manContourControl_3V_p -> AddManualViewBaseContour( _mViewContour_2    );
00270         _manContourControl_3V_p -> AddManualViewBaseContour( _mViewContour_0    );
00271         _manContourControl_3V_p -> AddManualViewBaseContour( _mViewContour_1    );
00272         _manContourControl_3V_p -> AddManualViewBaseContour( _mViewContour_3D   );
00273         _manContourControl_3V_p -> SetVtkInteractorStyleBaseView ((vtkInteractorStyleBaseView*)wxvtkbaseview->GetInteractorStyleBaseView() );
00274         _manContourControl_p    -> SetManualContour3VControler( _manContourControl_3V_p );
00275         _manContourControl_p    -> SetModelView( _mContourModel_2 , _mViewContour_p );
00276 
00277 
00278         //
00279         _manContourControl_0    -> CreateNewManualContour();
00280         _manContourControl_1    -> CreateNewManualContour();
00281         _manContourControl_2    -> CreateNewManualContour();
00282         _manContourControl_p    -> CreateNewManualContour();
00283         _manContourControl_3V3D -> CreateNewManualContour();
00284 
00285         _manContourControl_0    -> SetActive(true);
00286         _manContourControl_1    -> SetActive(true);
00287         _manContourControl_2    -> SetActive(true);
00288         _manContourControl_p    -> SetActive(true);
00289         _manContourControl_3V3D -> SetActive(true);
00290 
00291         _manContourControl_0    -> SetEasyCreation(false);
00292         _manContourControl_1    -> SetEasyCreation(false);
00293         _manContourControl_2    -> SetEasyCreation(false);
00294         _manContourControl_p    -> SetEasyCreation(false);
00295         _manContourControl_3V3D -> SetEasyCreation(false);
00296 
00297         _mViewContour_0                 -> RefreshContour();
00298         _mViewContour_1                 -> RefreshContour();
00299         _mViewContour_2                 -> RefreshContour();
00300         _mViewContour_p                 -> RefreshContour();
00301         _mViewContour_3D                -> RefreshContour();
00302 
00303 }
00304 
00305 //----------------------------------------------------------------------------
00306 void wxManualTree_MPRWidget::ConfigureVTK(){
00307         _MPRWidget2->ConfigureVTK();
00308         _wxvtk3Dbaseview_Clipping3D_C   ->  Configure();
00309         _wxvtkmpr3Dview_C                               ->      Configure();
00310         _wxvtkclipping3Dview_C                  ->      Configure();
00311 
00312         vtkInteractorStyle3DView *vtkinteractorstyle3Dview      = new vtkInteractorStyle3DView();
00313         vtkinteractorstyle3Dview->SetWxVtkMPR3DView(_wxvtkmpr3Dview_C);
00314         vtkinteractorstyle3Dview->SetWxVtkClipping3DView(_wxvtkclipping3Dview_C);
00315         ((vtkInteractorStyleBaseView*)_wxvtk3Dbaseview_Clipping3D_C->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( vtkinteractorstyle3Dview );
00316 
00317         ConfigureContour();
00318 }
00319 
00320 //----------------------------------------------------------------------------
00321 vtkMPRBaseData  *wxManualTree_MPRWidget::GetVtkMPRBaseData(){
00322         return _MPRWidget2->GetVtkMPRBaseData();
00323 }
00324 //----------------------------------------------------------------------------
00325 vtkPlane2DView *wxManualTree_MPRWidget::GetVtkPlane2DView()
00326 {
00327         return _MPRWidget2->GetVtkPlane2DView();
00328 }
00329 //----------------------------------------------------------------------------
00330 manualContourModel *wxManualTree_MPRWidget::GetManualContourModel()
00331 {
00332         return _mContourModel_2;
00333 }
00334 //----------------------------------------------------------------------------
00335 void wxManualTree_MPRWidget::OnRefreshView(wxCommandEvent & event)
00336 {
00337         RefreshView();
00338 }
00339 //----------------------------------------------------------------------------
00340 void wxManualTree_MPRWidget::RefreshView()
00341 {
00342         this->_MPRWidget2->RefreshView();
00343         _wxvtkmpr3Dview_C                               -> RefreshView();
00344         _wxvtkclipping3Dview_C                  -> Refresh();
00345         _wxvtk3Dbaseview_Clipping3D_C   -> Refresh();
00346         _mViewContour_p                                 -> Refresh();
00347 }
00348 
00349 
00350 // EOF - wxManualTree_MPRWidget.cxx
00351 
00352 
00353 
00354 

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1