wxManualRegistration3D.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   wxMaracas
00004   Module:    $RCSfile: wxManualRegistration3D.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 
00020 #include <wx/wx.h>
00021 #include <wx/splitter.h>
00022 #include <wx/notebook.h>
00023 #include <wx/colordlg.h>
00024 
00025 #include "wxManualRegistration3D.h"
00026 
00027 
00028 //-------------------------------------------------------------------
00029 //-------------------------------------------------------------------
00030 //-------------------------------------------------------------------
00031 
00032 BEGIN_EVENT_TABLE( wxManualRegistration3D, wxPanel )
00033         EVT_MENU( 12121, wxManualRegistration3D::OnRefreshView )
00034 //      EVT_MENU( 12122, wxManualTree_MPRWidget::OnDClickLeft  )
00035 END_EVENT_TABLE( );
00036 
00037 
00038 wxManualRegistration3D::wxManualRegistration3D( wxWindow* parent,
00039                           marImageData *marimageData )
00040 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
00041 {
00042 
00043         _marimageData                                                   = marimageData;
00044 
00045     _vtkmprbasedata_A = new vtkMPRBaseData();
00046         _vtkmprbasedata_A->SetMarImageData(_marimageData);
00047 
00048         _wxvtk3Dbaseview_Clipping3D                     = NULL;
00049         _wxvtkmpr3Dview_A                                       = NULL;
00050         _wxvtkclipping3Dview_A                          = NULL;
00051 
00052         _wxvtkmpr3Dview_B                                       = NULL;
00053         _wxvtkclipping3Dview_B                          = NULL;
00054 
00055         _panelCutting                                           = NULL;
00056 
00057     wxSplitterWindow    *pnlSplitter    = new wxSplitterWindow( this , -1);
00058 
00059 // EED borrame  
00060 //      int ww,hh;
00061 
00062         wxPanel *       view3Dpanel                             = Create3DView( pnlSplitter , _vtkmprbasedata_A );
00063         wxPanel *   registrationControl         = CreateRegistration3DControl( pnlSplitter ,_vtkmprbasedata_A);
00064 
00065 //      this->GetSize(&ww,&hh);
00066 
00067     pnlSplitter -> SplitVertically( view3Dpanel, registrationControl , 700);
00068         wxBoxSizer      *sizer  = new wxBoxSizer(wxVERTICAL  );
00069         sizer           -> Add( pnlSplitter ,1,wxGROW  ,0);
00070         pnlSplitter     -> SetMinimumPaneSize( 25 );
00071         this            -> SetSizer(sizer);
00072 
00073 
00074         _transform              = vtkTransform::New();
00075         _transformBak   = vtkTransform::New();
00076         _transformBak->Identity();
00077         xBak=0;
00078         yBak=0;
00079         zBak=0;
00080 }
00081 
00082 //----------------------------------------------------------------------------
00083 
00084 wxManualRegistration3D::~wxManualRegistration3D( )
00085 {
00086         if (_wxvtk3Dbaseview_Clipping3D         != NULL) { delete       _wxvtk3Dbaseview_Clipping3D;    }
00087         if (_wxvtkmpr3Dview_A                           != NULL) { delete       _wxvtkmpr3Dview_A;                              }
00088         if (_wxvtkclipping3Dview_A                      != NULL) { delete       _wxvtkclipping3Dview_A;                 }
00089 
00090         if (_wxvtkmpr3Dview_B                           != NULL) { delete       _wxvtkmpr3Dview_B;                              }
00091         if (_wxvtkclipping3Dview_B                      != NULL) { delete       _wxvtkclipping3Dview_B;                 }
00092 }
00093 
00094 
00095 
00096 //----------------------------------------------------------------------------
00097 void wxManualRegistration3D::ConfigureVTK()
00098 {
00099         _wxvtk3Dbaseview_Clipping3D             ->  Configure();
00100 //
00101         _wxvtkmpr3Dview_A                               ->      Configure();
00102         _wxvtkclipping3Dview_A                  ->      Configure();
00103         vtkInteractorStyle3DView *vtkinteractorstyle3Dview_A = new vtkInteractorStyle3DView();
00104         vtkinteractorstyle3Dview_A->SetWxVtkMPR3DView(_wxvtkmpr3Dview_A);
00105         vtkinteractorstyle3Dview_A->SetWxVtkClipping3DView(_wxvtkclipping3Dview_A);
00106         _wxvtk3Dbaseview_Clipping3D->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( vtkinteractorstyle3Dview_A );
00107 //
00108 }
00109 
00110 //----------------------------------------------------------------------------
00111 void wxManualRegistration3D::ConfigureVTK_B()
00112 {
00113         _wxvtkmpr3Dview_B                               ->      Configure();
00114         _wxvtkclipping3Dview_B                  ->      Configure();
00115         vtkInteractorStyle3DView *vtkinteractorstyle3Dview_B = new vtkInteractorStyle3DView();
00116         vtkinteractorstyle3Dview_B->SetWxVtkMPR3DView(_wxvtkmpr3Dview_B);
00117         vtkinteractorstyle3Dview_B->SetWxVtkClipping3DView(_wxvtkclipping3Dview_B);
00118         _wxvtk3Dbaseview_Clipping3D->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( vtkinteractorstyle3Dview_B );
00119 }
00120 
00121 //----------------------------------------------------------------------------
00122 void wxManualRegistration3D::OnRefreshView(wxCommandEvent & event)
00123 {
00124         RefreshView();
00125 }
00126 
00127 //----------------------------------------------------------------------------
00128 void wxManualRegistration3D::OnTracking(wxCommandEvent& event)
00129 {
00130         if (_wxvtkmpr3Dview_B!=NULL){
00131                 _wxvtkmpr3Dview_B->InitOrientationPointWidget();
00132 
00133                 double spc[3];
00134 
00135                 this->_marimageData->GetImageData()->GetSpacing(spc);  //image t=0
00136 
00137 
00138                 xBak  = spc[0] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX();
00139                 yBak  = spc[1] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY();
00140                 zBak  = spc[2] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ();
00141 
00142                 double mat[16];
00143                 mat[0]=_transform->GetMatrix()->GetElement(0,0);
00144                 mat[1]=_transform->GetMatrix()->GetElement(0,1);
00145                 mat[2]=_transform->GetMatrix()->GetElement(0,2);
00146                 mat[3]=_transform->GetMatrix()->GetElement(0,3);
00147 
00148                 mat[4]=_transform->GetMatrix()->GetElement(1,0);
00149                 mat[5]=_transform->GetMatrix()->GetElement(1,1);
00150                 mat[6]=_transform->GetMatrix()->GetElement(1,2);
00151                 mat[7]=_transform->GetMatrix()->GetElement(1,3);
00152 
00153                 mat[8]=_transform->GetMatrix()->GetElement(2,0);
00154                 mat[9]=_transform->GetMatrix()->GetElement(2,1);
00155                 mat[10]=_transform->GetMatrix()->GetElement(2,2);
00156                 mat[11]=_transform->GetMatrix()->GetElement(2,3);
00157 
00158                 mat[12]=_transform->GetMatrix()->GetElement(3,0);
00159                 mat[13]=_transform->GetMatrix()->GetElement(3,1);
00160                 mat[14]=_transform->GetMatrix()->GetElement(3,2);
00161                 mat[15]=_transform->GetMatrix()->GetElement(3,3);
00162 
00163                 _transformBak->SetMatrix(mat);
00164         }
00165 
00166 // EED 25 Janvier 2005 TestLoic
00167         this->_wxvtkmpr3Dview_A->TestLoic1();
00168 
00169 
00170 }
00171 
00172 
00173 //----------------------------------------------------------------------------
00174 void wxManualRegistration3D::RefreshView()
00175 {
00176         double spc[3];
00177 
00178         if ( _wxvtkmpr3Dview_B!=NULL )
00179         {
00180                 if (_btnTrack->GetValue()==true)
00181                 {
00182                 
00183                         this->_marimageData->GetImageData()->GetSpacing(spc);  // image t=0
00184                         vtkTransform *m = this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetTransformOrientation();
00185                         double x  = spc[0] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX();
00186                         double y  = spc[1] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY();
00187                         double z  = spc[2] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ();
00188                         double xx=this->_posX->GetValue()/30.0;
00189                         double yy=this->_posY->GetValue()/30.0;
00190                         double zz=this->_posZ->GetValue()/30.0;
00191                         double sx=this->_scaleX->GetValue()/100.0;
00192                         double sy=this->_scaleY->GetValue()/100.0;
00193                         double sz=this->_scaleZ->GetValue()/100.0;
00194                         _transform->Identity();
00195 //                      _transform->Translate(x,y,z);   
00196 
00197 
00198 
00199 //                      _transform->Translate((x-xBak),(y-yBak),(z-zBak) );
00200 //                      _transform->Translate( xBak , yBak , zBak  );
00201                         _transform->Translate( xx , yy , zz  );
00202                         _transform->Translate( x , y , z  );
00203                         _transform->Concatenate( m->GetMatrix() );
00204                         _transform->RotateX( _angAlfa->GetValue()/30.0 );
00205                         _transform->RotateY( _angBeta->GetValue()/30.0 );
00206                         _transform->RotateZ( _angGama->GetValue()/30.0 );
00207                         _transform->Scale( sx,sy,sz );  
00208                         _transform->Translate(-(xBak),-(yBak),-(zBak) );
00209 
00210                         _transform->Concatenate( _transformBak->GetMatrix() );
00211 
00212                 }
00213 
00214 
00215 
00216                 vtkClipping3DDataViewer *vtkclipping3Ddataviewer = _wxvtkclipping3Dview_B->GetVtkClipping3DDataViewer();
00217                 vtkActor *vtkactor;
00218                 int i;
00219                 for (i=0;i<4;i++)
00220                 {
00221                         vtkactor = vtkclipping3Ddataviewer->GetTissueActor(i);
00222                         vtkactor->SetUserTransform( _transform );       
00223                 }
00224                 _wxvtkmpr3Dview_B                               -> RefreshView();
00225                 _wxvtkclipping3Dview_B                  -> Refresh();
00226         }
00227 
00228         _wxvtkmpr3Dview_A                               -> RefreshView();
00229         _wxvtkclipping3Dview_A                  -> Refresh();
00230         _wxvtk3Dbaseview_Clipping3D             -> Refresh();
00231 
00232         if (_panelCutting!=NULL)
00233         {
00234                 _panelCutting->RefreshView();
00235         }
00236 
00237 }
00238 
00239 
00240 // EED 7 nov 2006
00241 //----------------------------------------------------------------------------
00242 wxPanel* wxManualRegistration3D::CreateRegistration3DControl( wxWindow *parent, vtkMPRBaseData *vtkmprbasedata)
00243 {
00244         wxPanel *panel = new wxPanel(parent,-1);
00245 
00246         int maxX = vtkmprbasedata->GetMaxPositionX();
00247         int maxY = vtkmprbasedata->GetMaxPositionY();
00248         int maxZ = vtkmprbasedata->GetMaxPositionZ();
00249         maxX=100;
00250         maxY=100;
00251         maxZ=100;
00252 
00253         _posX = new wxSlider( panel, -1,0 , -maxX*2, maxX*2, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00254         _posY = new wxSlider( panel, -1,0 , -maxY*2, maxY*2, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00255         _posZ = new wxSlider( panel, -1,0 , -maxZ*2, maxZ*2, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00256 
00257         _scaleX = new wxSlider( panel, -1,100 , 0, 200, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00258         _scaleY = new wxSlider( panel, -1,100 , 0, 200, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00259         _scaleZ = new wxSlider( panel, -1,100 , 0, 200, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00260 
00261 
00262         _angAlfa = new wxSlider( panel, -1,0 , -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00263         _angBeta = new wxSlider( panel, -1,0 , -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00264         _angGama = new wxSlider( panel, -1,0 , -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS  |wxSL_LABELS );
00265 
00266 
00267         _btnTrack = new wxCheckBox(panel, -1,_T("Tracking"));   
00268 
00269         _posX->SetTickFreq( 10, 0 );
00270         _posY->SetTickFreq( 10, 0 );
00271         _posZ->SetTickFreq( 10, 0 );
00272 
00273         _angAlfa->SetTickFreq( 30, 0 );
00274         _angBeta->SetTickFreq( 30, 0 );
00275         _angGama->SetTickFreq( 30, 0 );
00276 
00277 
00278 
00279 
00280         Connect(_posX->GetId()  , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00281         Connect(_posY->GetId()  , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00282         Connect(_posZ->GetId()  , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00283 
00284         Connect(_scaleX->GetId()        , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00285         Connect(_scaleY->GetId()        , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00286         Connect(_scaleZ->GetId()        , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00287 
00288         Connect(_angAlfa->GetId()       , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00289         Connect(_angBeta->GetId()       , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00290         Connect(_angGama->GetId()       , wxEVT_COMMAND_SLIDER_UPDATED          , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation   );
00291 
00292         Connect(_btnTrack->GetId()      , wxEVT_COMMAND_CHECKBOX_CLICKED                , (wxObjectEventFunction) &wxManualRegistration3D::OnTracking   );
00293 
00294 
00295     wxBoxSizer *sizerH1 = new wxBoxSizer(wxHORIZONTAL);
00296         sizerH1->Add( _posX, 1, wxALL|wxEXPAND, 5);
00297         sizerH1->Add( _posY, 1, wxALL|wxEXPAND, 5);
00298         sizerH1->Add( _posZ, 1, wxALL|wxEXPAND, 5);
00299 
00300 
00301     wxBoxSizer *sizerH2 = new wxBoxSizer(wxHORIZONTAL);
00302         sizerH2->Add( _scaleX, 1, wxALL|wxEXPAND, 5);
00303         sizerH2->Add( _scaleY, 1, wxALL|wxEXPAND, 5);
00304         sizerH2->Add( _scaleZ, 1, wxALL|wxEXPAND, 5);
00305         
00306     wxBoxSizer *sizerH3 = new wxBoxSizer(wxHORIZONTAL);
00307         sizerH3->Add( _angAlfa, 1, wxALL|wxEXPAND, 5);
00308         sizerH3->Add( _angBeta, 1, wxALL|wxEXPAND, 5);
00309         sizerH3->Add( _angGama, 1, wxALL|wxEXPAND, 5);
00310 
00311 
00312     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
00313         sizer->Add( sizerH1 , 1, wxALL|wxEXPAND, 0);
00314         sizer->Add( sizerH2 , 1, wxALL|wxEXPAND, 0);
00315         sizer->Add( sizerH3 , 1, wxALL|wxEXPAND, 0);
00316         sizer->Add( _btnTrack , 1, wxALL|wxEXPAND, 10);
00317         sizer->Add( new wxPanel(panel,-1) , 1, wxALL|wxEXPAND, 0);
00318         sizer->Add( new wxPanel(panel,-1) , 1, wxALL|wxEXPAND, 0);
00319         sizer->Add( new wxPanel(panel,-1) , 1, wxALL|wxEXPAND, 0);
00320 
00321         panel->SetAutoLayout(true);
00322         panel->SetSizer(sizer);
00323         panel->SetSize(400,400);
00324         panel->Layout();
00325 
00326         return panel;
00327 }
00328 //----------------------------------------------------------------------------
00329 void wxManualRegistration3D::OnPositionRotation(wxScrollEvent& event)
00330 {
00331 
00332         RefreshView();
00333 }
00334 
00335 //----------------------------------------------------------------------------
00336 wxPanel* wxManualRegistration3D::Create3DView( wxWindow *parent, vtkMPRBaseData *vtkmprbasedata)
00337 {
00338         wxWindow *wxwindow;
00339         wxPanel *panel=new wxPanel(parent,-1);
00340 //
00341         wxSplitterWindow        *panelClipping3D        = new wxSplitterWindow( panel , -1);
00342         _wxvtk3Dbaseview_Clipping3D                             = new wxVtk3DBaseView( panelClipping3D );
00343 //
00344         _wxvtkclipping3Dview_A = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D);
00345         vtkClipping3DDataViewer *vtkclipping3Ddataviewer_A = new vtkClipping3DDataViewer(); 
00346         vtkclipping3Ddataviewer_A->SetVtkMPRBaseData(vtkmprbasedata);
00347         vtkclipping3Ddataviewer_A->Configure();
00348         _wxvtkclipping3Dview_A->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer_A);
00349 
00350         _wxvtkmpr3Dview_A = new wxVtkMPR3DView( _wxvtk3Dbaseview_Clipping3D );
00351         vtkMPR3DDataViewer *vtkmpr3Ddataviewer_A = new vtkMPR3DDataViewer(); 
00352         vtkmpr3Ddataviewer_A->SetVtkMPRBaseData(vtkmprbasedata);
00353         vtkmpr3Ddataviewer_A->Configure();
00354         _wxvtkmpr3Dview_A->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer_A);
00355 
00356 //--
00357 
00358         wxWindow                        *window3D                       = _wxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
00359         wxSplitterWindow        *panelControlSplit      = new wxSplitterWindow(panelClipping3D,-1);     
00360 
00361 //
00362         wxPanel         *panelControl_A                         = new wxPanel(panelControlSplit,-1,wxDefaultPosition,wxSize(800,800));  
00363 
00364         wxPanel         *controlPanelMPR3D_A            = _wxvtkmpr3Dview_A->CreateControlPanel(panelControl_A);
00365         wxPanel         *controlPanelClipping3D_A       = _wxvtkclipping3Dview_A->CreateControlPanel(panelControl_A);
00366 
00367                          _btnCutImageData                       = new wxCheckBox(panelControl_A,-1,_T("Cut Module"));
00368                 Connect(_btnCutImageData->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED  , (wxObjectEventFunction) &wxManualRegistration3D::OnCutImagaData );
00369 
00370 
00371 //      wxBoxSizer              *sizerCtrol_A                           = new wxBoxSizer(wxVERTICAL);
00372         wxFlexGridSizer *sizerCtrol_A               = new wxFlexGridSizer(1);
00373 
00374         sizerCtrol_A->Add(controlPanelMPR3D_A           , 1, wxALL|wxEXPAND, 2);
00375         sizerCtrol_A->Add(controlPanelClipping3D_A      , 1, wxALL|wxEXPAND, 2);
00376         sizerCtrol_A->Add( _btnCutImageData                     , 1, wxALL, 2);
00377 
00378 
00379         panelControl_A->SetAutoLayout(true);
00380         panelControl_A->SetSizer(sizerCtrol_A);
00381         panelControl_A->SetSize(400,350);
00382         panelControl_A->Layout();
00383 
00384 
00385 //
00386         _panelControl_B                         = new wxPanel(panelControlSplit,-1,wxDefaultPosition,wxSize(800,800));  
00387 
00388 
00389         panelControlSplit->SplitVertically(panelControl_A, _panelControl_B);
00390         panelControlSplit->SetMinimumPaneSize( 20 );
00391 
00392         wxBoxSizer  *sizerCtrol             = new wxBoxSizer(wxHORIZONTAL);
00393         sizerCtrol->Add(panelControlSplit , 1, wxALL|wxEXPAND, 2);
00394 
00395         panelControlSplit->SetAutoLayout(true);
00396         panelControlSplit->SetSizer(sizerCtrol);
00397 //      panelControlSplit->SetSize(400,350);
00398         panelControlSplit->Layout();
00399                 
00400         int ww,hh;
00401         wxWindow *pp=this;
00402         while (pp->GetParent()!=NULL) pp=pp->GetParent();
00403         pp->GetSize(&ww,&hh);
00404 
00405 //EEDxx2.4
00406 //              panelClipping3D -> SetMinimumPaneSize( -50 );
00407         panelClipping3D -> SplitHorizontally( panelControlSplit,window3D/*, (int)(hh*0.20)*/ );
00408         panelClipping3D -> SetMinimumPaneSize( 20 );
00409         wxwindow=panelClipping3D;
00410 
00411     wxBoxSizer *sizerH1 = new wxBoxSizer(wxHORIZONTAL);
00412         sizerH1->Add(wxwindow , 1, wxALL|wxEXPAND, 0);
00413         panel->SetAutoLayout(true);
00414         panel->SetSizer(sizerH1);
00415         panel->SetSize(400,400);
00416         panel->Layout();
00417 
00418 //EEDxx2.4
00419 //      panel->FitInside();
00420 //      FitInside();
00421 
00422         return panel;
00423 }
00424 //--------------------------------------------------------------------------
00425 void wxManualRegistration3D::AddPanelControl_B( wxWindow *parent, marImageData *marimagedata)
00426 {
00427 
00428 //      _imageData_B=marimagedata->GetImageData();
00429 
00430     vtkMPRBaseData* vtkmprbasedata = new vtkMPRBaseData();
00431         vtkmprbasedata->SetMarImageData(marimagedata);
00432 
00433         _wxvtkclipping3Dview_B = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D);
00434         vtkClipping3DDataViewer *vtkclipping3Ddataviewer_B = new vtkClipping3DDataViewer(); 
00435         vtkclipping3Ddataviewer_B->SetVtkMPRBaseData(vtkmprbasedata);
00436         vtkclipping3Ddataviewer_B->Configure();
00437         _wxvtkclipping3Dview_B->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer_B);
00438 
00439         _wxvtkmpr3Dview_B = new wxVtkMPR3DView( _wxvtk3Dbaseview_Clipping3D );
00440         vtkMPR3DDataViewer *vtkmpr3Ddataviewer_B = new vtkMPR3DDataViewer(); 
00441         vtkmpr3Ddataviewer_B->SetVtkMPRBaseData(vtkmprbasedata);
00442         vtkmpr3Ddataviewer_B->Configure();
00443         _wxvtkmpr3Dview_B->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer_B);
00444 
00445 //
00446         wxPanel         *controlPanelMPR3D_B            = _wxvtkmpr3Dview_B->CreateControlPanel(_panelControl_B);
00447         wxPanel         *controlPanelClipping3D_B       = _wxvtkclipping3Dview_B->CreateControlPanel(_panelControl_B);
00448 
00449 //      wxBoxSizer              *sizerCtrol_B                           = new wxBoxSizer(wxVERTICAL);
00450         wxFlexGridSizer *sizerCtrol_B               = new wxFlexGridSizer(1);
00451 
00452         sizerCtrol_B->Add(controlPanelMPR3D_B , 1, wxALL|wxEXPAND, 2);
00453         sizerCtrol_B->Add(controlPanelClipping3D_B , 1, wxALL|wxEXPAND, 2);
00454 
00455         _panelControl_B->SetAutoLayout(true);
00456         _panelControl_B->SetSizer(sizerCtrol_B);
00457         _panelControl_B->SetSize(400,350);
00458         _panelControl_B->Layout();
00459 }
00460 
00461 //--------------------------------------------------------------------------
00462 void wxManualRegistration3D::AddSecondVolume(marImageData *marimagedata)
00463 {
00464         AddPanelControl_B(_panelControl_B,marimagedata);
00465         ConfigureVTK_B();
00466         RefreshView();
00467 }
00468 //--------------------------------------------------------------------------
00469 bool wxManualRegistration3D::GetIfSecondVolumeExist()
00470 {
00471         bool result=false;
00472         if (_wxvtkmpr3Dview_B!=NULL)
00473         {
00474                 result=true;
00475         }
00476         return result;
00477 }
00478 //----------------------------------------------------------------------------
00479 void wxManualRegistration3D::OnCutImagaData(wxCommandEvent &event) 
00480 {
00481         if (_btnCutImageData->GetValue()==true){
00482                 _framePanelCutting = new wxFrame(this,-1,_T("Cutting Module"),wxDefaultPosition,wxDefaultSize,wxCAPTION|wxSTAY_ON_TOP| wxRESIZE_BORDER );
00483                 _framePanelCutting->SetSize(550,400);
00484                 _panelCutting   = new wxPanelCuttingImageData(_framePanelCutting);
00485                 _panelCutting->SetWxVtk3DBaseView( _wxvtk3Dbaseview_Clipping3D  );
00486                 _panelCutting->SetVtkMPRBaseData( _vtkmprbasedata_A );
00487                 _panelCutting->Configure( );
00488                 _framePanelCutting->Show();
00489 //              _panelCutting->RefreshView();
00490                 RefreshView();
00491         } else {
00492                 if (_framePanelCutting!=NULL){
00493                         _panelCutting->RemoveActors();
00494                         _framePanelCutting->Close();
00495                         _framePanelCutting      = NULL;
00496                         _panelCutting           = NULL;
00497                 }
00498         }
00499 }
00500 
00501 //--------------------------------------------------------------------------
00502 
00503 
00504 // EOF - wxManualRegistration3D.cxx

Generated on Wed Jul 29 16:35:27 2009 for creaMaracasVisu_lib by  doxygen 1.5.3