wxMaracas_ViewerWidget.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   wxMaracas
00004   Module:    $RCSfile: wxMaracas_ViewerWidget.cxx,v $
00005   Language:  C++
00006   Date:      $Date: 2009/06/05 06:07:39 $
00007   Version:   $Revision: 1.13 $
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 // Definition includes
00020 //------------------------------------------------------------------------------------------------------------
00021 #include "wxMaracas_ViewerWidget.h"
00022 
00023 //------------------------------------------------------------------------------------------------------------
00024 // Other includes
00025 //------------------------------------------------------------------------------------------------------------
00026 
00027 
00028         //------------------------------------------------------------------------------------------------------------
00029         // Constructors & Destructors
00030         //------------------------------------------------------------------------------------------------------------
00031 
00032 
00033         wxMaracas_ViewerWidget::wxMaracas_ViewerWidget(wxWindow *parent, vtkImageData* imagedata, int type, vtkMPRBaseData *vtkmprbasedata)
00034                 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
00035         {
00036                 wxPanel *panel = this;
00037                 wxWindow *wxwindow = NULL;
00038 
00039                 mType = type;
00040 
00041                 
00042                 if (vtkmprbasedata==NULL)
00043                 {
00044                         minternalVtkmprbasedata                 = true;
00045                         mvtkmprbasedata                                 = new vtkMPRBaseData(); 
00046                         marImageData    *marimagedata   = new marImageData( imagedata );                        
00047                         mvtkmprbasedata->SetMarImageData(marimagedata);
00048                 } else {
00049                         minternalVtkmprbasedata                 = false;
00050                         mvtkmprbasedata                                 = vtkmprbasedata; 
00051                 }
00052                 
00053 
00054                 mvtk2Dbaseview                          = NULL;
00055                 mvtkmpr2Dview_X                         = NULL;
00056                 mvtkmpr2Dview_Y                         = NULL;
00057                 mvtkmpr2Dview_Z                         = NULL;
00058                 mvtkplane2Dview                         = NULL;
00059                 mwidgetMesure                           = NULL;
00060                 mwxsphereview                           = NULL;
00061                 mwxvtkclipping3Dview            = NULL;
00062                 mwxvtk3Dbaseview_Clipping3D     = NULL;
00063                 mwxvtkmpr3Dview                         = NULL;
00064                 vtkmpr3Ddataviewer                      = NULL;
00065 
00066 
00067                 if (type==-1)
00068                 {
00069                         mvtk2Dbaseview  = new wxVtk2DBaseView(panel);
00070                         mvtk2Dbaseview->SetVtkBaseData(mvtkmprbasedata);
00071                         wxwindow                = mvtk2Dbaseview->GetWxVTKRenderWindowInteractor();
00072                 }
00073 
00074 
00075                 if (type==0)
00076                 {
00077                         mvtkmpr2Dview_Z = new wxVtkMPR2DView(panel,2);
00078                         mvtkmpr2Dview_Z->SetVtkBaseData(mvtkmprbasedata);
00079                         wxwindow                = mvtkmpr2Dview_Z->GetWxVTKRenderWindowInteractor();
00080                 }
00081                 if (type==1)
00082                 {
00083                         mvtkmpr2Dview_X = new wxVtkMPR2DView(panel,0);
00084                         mvtkmpr2Dview_X->SetVtkBaseData(mvtkmprbasedata);
00085                         wxwindow                =       mvtkmpr2Dview_X->GetWxVTKRenderWindowInteractor();
00086                 }
00087 
00088                 if (type==2)
00089                 {
00090                         mvtkmpr2Dview_Y = new wxVtkMPR2DView(panel,1);
00091                         mvtkmpr2Dview_Y->SetVtkBaseData(mvtkmprbasedata);
00092                         wxwindow                = mvtkmpr2Dview_Y->GetWxVTKRenderWindowInteractor();
00093                 }
00094 
00095 
00096                 if (type==3)
00097                 {
00098                         mwidgetMesure           = new wxWidgetMesure2D_Plane_in_MPR(panel);
00099                         mvtkplane2Dview         = new vtkPlane2DView( mwidgetMesure->GetWindow2());
00100                         mwidgetMesure   -> SetVtkPlane2DView( mvtkplane2Dview );
00101                         mvtkplane2Dview -> SetImgSize( 200 );
00102                         mvtkplane2Dview -> SetVtkBaseData(mvtkmprbasedata);
00103                         wxwindow                        = mwidgetMesure;
00104                 }
00105                 if (type==4)
00106                 {
00107                         mwxsphereview           = new wxSphereView( panel , mvtkmprbasedata, mvtkmprbasedata->GetImageData() );
00108                         wxwindow=mwxsphereview->GetWxVTKRenderWindowInteractor();
00109                 }
00110 
00111 
00112                 if (type==5)
00113                 {
00114                         wxSplitterWindow        *panelClipping3D        = new wxSplitterWindow( panel , -1);
00115                         mwxvtk3Dbaseview_Clipping3D                             = new wxVtk3DBaseView( panelClipping3D );
00116 
00117                         mwxvtkclipping3Dview                                            = new wxVtkClipping3DView(mwxvtk3Dbaseview_Clipping3D);
00118                         vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer(); 
00119                         vtkclipping3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);
00120                         vtkclipping3Ddataviewer->Configure();
00121                         mwxvtkclipping3Dview->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer);
00122 
00123                         mwxvtkmpr3Dview                                                 = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D );
00124                         vtkMPR3DDataViewer *vtkmpr3Ddataviewer  = new vtkMPR3DDataViewer(); 
00125                         vtkmpr3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);
00126                         vtkmpr3Ddataviewer->Configure();
00127                         mwxvtkmpr3Dview->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
00128 
00129                         wxWindow        *window3D                                       = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
00130 
00131                         wxPanel                 *panelControl                   = new wxPanel(panelClipping3D,-1);      
00132                         wxPanel                 *controlPanelMPR3D              = mwxvtkmpr3Dview->CreateControlPanel(panelControl);
00133                         wxPanel                 *controlPanelClipping3D = mwxvtkclipping3Dview->CreateControlPanel(panelControl);
00134         //                               mbtnCutImageData               = new wxCheckBox(panelControl,-1,_T("Cut Module"));
00135         //              Connect(_btnCutImageData->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED  , (wxObjectEventFunction) &wxMPRWidget::OnCutImagaData );
00136 
00137                         wxFlexGridSizer  *sizerCtrol             = new wxFlexGridSizer(1);
00138                         sizerCtrol->Add(controlPanelMPR3D               , 1, wxALL|wxEXPAND, 2);
00139                         sizerCtrol->Add(controlPanelClipping3D  , 1, wxALL|wxEXPAND, 2);
00140         //              sizerCtrol->Add( mbtnCutImageData               , 1, wxALL, 2);
00141 
00142                         panelControl->SetAutoLayout(true);
00143                         panelControl->SetSizer(sizerCtrol);
00144                         panelControl->SetSize(400,350);
00145                         panelControl->Layout();
00146                         panelClipping3D -> SetMinimumPaneSize( 5 );
00147                         panelClipping3D -> SplitHorizontally( panelControl , window3D , 10  );
00148                         wxwindow=panelClipping3D;
00149                 }
00150 
00151                 if (type==6)
00152                 {
00153                         wxSplitterWindow        *panelClipping3D        = new wxSplitterWindow( panel , -1);
00154                         mwxvtk3Dbaseview_Clipping3D                             = new wxVtk3DBaseView( panelClipping3D );
00155 
00156                         mwxvtkmpr3Dview                                                 = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D );
00157 
00158 
00159                         vtkmpr3Ddataviewer      = new vtkMPR3DDataViewer();     
00160 
00161                         
00162 
00163                         wxWindow        *window3D                                       = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
00164 
00165                         wxPanel                 *panelControl                   = new wxPanel(panelClipping3D,-1);      
00166                         wxPanel                 *controlPanelMPR3D              = mwxvtkmpr3Dview->CreateControlPanel(panelControl);
00167 
00168                         wxFlexGridSizer  *sizerCtrol             = new wxFlexGridSizer(1);
00169                         sizerCtrol->Add(controlPanelMPR3D               , 1, wxALL|wxEXPAND, 2);
00170 
00171                         panelControl->SetAutoLayout(true);
00172                         panelControl->SetSizer(sizerCtrol);
00173                         panelControl->SetSize(400,350);
00174                         panelControl->Layout();
00175                         panelClipping3D -> SetMinimumPaneSize( 5 );
00176                         panelClipping3D -> SplitHorizontally( panelControl , window3D , 10  );
00177                         wxwindow=panelClipping3D;
00178 
00179 
00180                         vtkmpr3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);                 
00181                         //vtkmpr3Ddataviewer->Configure();
00182 
00183                         mwxvtkmpr3Dview->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
00184                         
00185                 }
00186 
00187 
00188 
00189         wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
00190         sizer->Add( wxwindow , 1, wxGROW);      
00191         panel->SetSizer(sizer);
00192         panel->SetAutoLayout(true);
00193         sizer->Layout();
00194         panel->Layout();
00195         panel->Refresh();
00196 
00197         //   mbbtkViewerMaracas= NULL;
00198         }
00199         //-------------------------------------------------------------------------
00200           
00201         wxMaracas_ViewerWidget::~wxMaracas_ViewerWidget()
00202         {
00203                 
00204                 if (minternalVtkmprbasedata==true)
00205                 {
00206                         if (mvtkmprbasedata)                    { delete mvtkmprbasedata;  }
00207                 }       
00208                 
00209                 if (mvtk2Dbaseview)                             { delete mvtk2Dbaseview; }
00210                 if (mvtkmpr2Dview_X)                    { delete mvtkmpr2Dview_X; }
00211                 if (mvtkmpr2Dview_Y)                    { delete mvtkmpr2Dview_Y; }
00212                 if (mvtkmpr2Dview_Z)                    { delete mvtkmpr2Dview_Z; }
00213                 if (mwidgetMesure)                              { delete mwidgetMesure; }
00214                 if (mvtkplane2Dview)                    { delete mvtkplane2Dview; }
00215                 if (mwxsphereview)                              { delete mwxsphereview; }
00216                 if (mwxvtkclipping3Dview)               { delete mwxvtkclipping3Dview; }
00217                 if (mwxvtk3Dbaseview_Clipping3D){ delete mwxvtk3Dbaseview_Clipping3D; }
00218                 if (mwxvtkmpr3Dview)                    { delete mwxvtkmpr3Dview; }
00219 
00220         }
00221         //------------------------------------------------------------------------------------------------------------
00222         // Methods
00223         //------------------------------------------------------------------------------------------------------------
00224 
00225         //-------------------------------------------------------------------------
00226 
00227         void wxMaracas_ViewerWidget::ConfigureVTK()
00228         {
00229                 int x=0,y=0,z=0;
00230                 int ext[6];
00231                 ext[0]=0;
00232                 ext[1]=0;
00233                 ext[2]=0;
00234                 ext[3]=0;
00235                 ext[4]=0;
00236                 ext[5]=0;
00237                 double org[3],spc[3];
00238                 org[0]=0;
00239                 org[1]=0;
00240                 org[2]=0;
00241                 spc[0]=0;
00242                 spc[1]=0;
00243                 spc[2]=0;
00244                 
00245 
00246 
00247                 if (mvtkmprbasedata!=NULL)
00248                 {
00249                         mvtkmprbasedata->Configure();
00250                         /*x = mvtkmprbasedata   ->      GetMaxPositionX()/2;
00251                         y = mvtkmprbasedata     ->      GetMaxPositionY()/2;
00252                         z = mvtkmprbasedata     ->      GetMaxPositionZ()/2;            */      
00253 
00254                         mvtkmprbasedata->GetImageData()->GetExtent(ext);
00255                         mvtkmprbasedata->GetImageData()->GetOrigin(org);
00256                         mvtkmprbasedata->GetImageData()->GetSpacing(spc);
00257 
00258                         x = (ext[0]+ext[1])/2;
00259                         y = (ext[2]+ext[3])/2;
00260                         z = (ext[4]+ext[5])/2;
00261 
00262                         mvtkmprbasedata->SetX( x );
00263                         mvtkmprbasedata->SetY( y );
00264                         mvtkmprbasedata->SetZ( z );
00265 
00266                 }
00267                 
00268 
00269                 if ( mvtk2Dbaseview                             !=NULL ) { mvtk2Dbaseview                               ->      Configure();                            }
00270                 if ( mvtkmpr2Dview_X                    !=NULL ) { mvtkmpr2Dview_X                              ->      Configure();                            }
00271                 if ( mvtkmpr2Dview_Y                    !=NULL ) { mvtkmpr2Dview_Y                              ->      Configure();                            }
00272                 if ( mvtkmpr2Dview_Z                    !=NULL ) { mvtkmpr2Dview_Z                              ->      Configure();                            }
00273                 if ( mvtkplane2Dview                    !=NULL ) { mvtkplane2Dview                              ->      Configure();                            }
00274                 if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      ConfigureA(mvtkplane2Dview);}
00275                 if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      ConfigureA(mvtkplane2Dview);}
00276                 if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      SetActiveLink(true);            }
00277                 if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      SetMesureScale( 1 );            }
00278                 if ( mwxsphereview                              !=NULL ) { mwxsphereview                                ->      Configure();                            }
00279 
00280                 if (mwxvtk3Dbaseview_Clipping3D !=NULL) { mwxvtk3Dbaseview_Clipping3D   ->      Configure();                            }
00281                 
00282                 if (vtkmpr3Ddataviewer                  !=NULL) {                       
00283                         vtkmpr3Ddataviewer->Configure();
00284                         
00285                 }
00286                 if (mwxvtkmpr3Dview                             !=NULL) { 
00287                         
00288                         mwxvtkmpr3Dview                         ->      Configure();
00289                         mwxvtkmpr3Dview                         ->ResetCamera(ext,org,spc);
00290                         
00291                         
00292                 }
00293 
00294                 if (mwxvtkclipping3Dview                !=NULL) { mwxvtkclipping3Dview                  ->      Configure();                            }
00295                 
00296 
00297                 
00298 
00299                 
00300                 //if(vtkmpr3Ddataviewer!=NULL){vtkmpr3Ddataviewer->Configure();}
00301 //              RefreshView();
00302 
00303                 //if (mwxvtkmpr3Dview                           !=NULL) {
00304                 //      mwxvtkmpr3Dview->ResetCamera();
00305                 //}
00306 
00307         }
00308 
00309         //-------------------------------------------------------------------------
00310 
00311   void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect  )  // virtual  eraseBackground=true , rect=NULL
00312   {
00313     wxPanel::Refresh(false);
00314   }
00315 
00316         //-------------------------------------------------------------------------
00317         void wxMaracas_ViewerWidget::RefreshView()
00318         {
00319                 
00320                         if (mvtk2Dbaseview                              !=NULL ){ mvtk2Dbaseview                                -> Refresh();           }
00321                         if (mvtkmpr2Dview_X                             !=NULL ){ mvtkmpr2Dview_X                               -> Refresh();           }
00322                         if (mvtkmpr2Dview_Y                             !=NULL ){ mvtkmpr2Dview_Y                               -> Refresh();           }
00323                         if (mvtkmpr2Dview_Z                             !=NULL ){ mvtkmpr2Dview_Z                               -> Refresh();           }
00324                         if (mvtkplane2Dview                             !=NULL ){ mvtkplane2Dview                               -> Refresh();           }
00325                         if (mwxsphereview                               !=NULL ){ mwxsphereview                                 -> Refresh();           }
00326 
00327                         if (mwxvtkmpr3Dview                             !=NULL ){ mwxvtkmpr3Dview                               -> RefreshView();       }
00328                         if (mwxvtkclipping3Dview                !=NULL ){ mwxvtkclipping3Dview                  -> Refresh();           }
00329                         if (mwxvtk3Dbaseview_Clipping3D !=NULL ){ mwxvtk3Dbaseview_Clipping3D   -> Refresh();           }
00330 
00331         }
00332 
00333         //-------------------------------------------------------------------------
00334 
00335         wxVtkBaseView *wxMaracas_ViewerWidget::GetwxVtkBaseView()
00336         {
00337                 wxVtkBaseView *wxvtkbaseview=NULL;
00338                 if (mvtk2Dbaseview!=NULL)                               { 
00339                         wxvtkbaseview = mvtk2Dbaseview;                 
00340                 }
00341                 if (mvtkmpr2Dview_X!=NULL){ 
00342                         wxvtkbaseview = mvtkmpr2Dview_X;
00343                 }
00344                 if (mvtkmpr2Dview_Y!=NULL){ 
00345                         wxvtkbaseview = mvtkmpr2Dview_Y;
00346                 }
00347                 if (mvtkmpr2Dview_Z!=NULL){ 
00348                         wxvtkbaseview = mvtkmpr2Dview_Z;                
00349                 }
00350                 if (mvtkplane2Dview!=NULL){
00351                         wxvtkbaseview = mvtkplane2Dview;                
00352                 }
00353                 if (mwxsphereview!=NULL){ 
00354                         wxvtkbaseview = mwxsphereview;
00355                 }
00356                 if (mwxvtk3Dbaseview_Clipping3D!=NULL)  { 
00357                         wxvtkbaseview = mwxvtk3Dbaseview_Clipping3D;
00358                 }
00359                 return wxvtkbaseview   ;
00360         }
00361 
00362         void wxMaracas_ViewerWidget::SetImage( vtkImageData *image      )
00363         {
00364                 marImageData* mar = mvtkmprbasedata->GetMarImageData();
00365                 mar->removeImageData(0);
00366                 mar->AddImageData(image);
00367 
00368                 ConfigureVTK();
00369                 RefreshView();
00370 
00371 
00372 
00373         }
00374 
00375         double wxMaracas_ViewerWidget :: GetX()
00376         {
00377                 return mvtkmprbasedata->GetX();
00378         }
00379 
00380         double wxMaracas_ViewerWidget :: GetY()
00381         {
00382                 return mvtkmprbasedata->GetY();
00383         }
00384 
00385         double wxMaracas_ViewerWidget :: GetZ()
00386         {
00387                 return mvtkmprbasedata->GetZ();
00388 //              return mvtk2Dbaseview->GetVtkBaseData()->GetZ();
00389         }
00390 

Generated on Fri Jun 12 00:08:34 2009 for creaMaracasVisu by  doxygen 1.5.7.1