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/07/27 07:58:20 $
00007   Version:   $Revision: 1.15 $
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 (mwxvtkmpr3Dview)                    { delete mwxvtkmpr3Dview; }
00217                 if (mwxvtkclipping3Dview)               { delete mwxvtkclipping3Dview; }
00218                 if (mwxvtk3Dbaseview_Clipping3D){ delete mwxvtk3Dbaseview_Clipping3D; }
00219         }
00220         //------------------------------------------------------------------------------------------------------------
00221         // Methods
00222         //------------------------------------------------------------------------------------------------------------
00223 
00224         //-------------------------------------------------------------------------
00225 
00226         void wxMaracas_ViewerWidget::ConfigureVTK()
00227         {
00228                 int x=0,y=0,z=0;
00229                 int ext[6];
00230                 ext[0]=0;
00231                 ext[1]=0;
00232                 ext[2]=0;
00233                 ext[3]=0;
00234                 ext[4]=0;
00235                 ext[5]=0;
00236                 double org[3],spc[3];
00237                 org[0]=0;
00238                 org[1]=0;
00239                 org[2]=0;
00240                 spc[0]=0;
00241                 spc[1]=0;
00242                 spc[2]=0;
00243                 
00244 
00245 
00246                 if (mvtkmprbasedata!=NULL)
00247                 {
00248                         mvtkmprbasedata->Configure();
00249                         /*x = mvtkmprbasedata   ->      GetMaxPositionX()/2;
00250                         y = mvtkmprbasedata     ->      GetMaxPositionY()/2;
00251                         z = mvtkmprbasedata     ->      GetMaxPositionZ()/2;            */      
00252 
00253                         mvtkmprbasedata->GetImageData()->GetExtent(ext);
00254                         mvtkmprbasedata->GetImageData()->GetOrigin(org);
00255                         mvtkmprbasedata->GetImageData()->GetSpacing(spc);
00256 
00257                         x = (ext[0]+ext[1])/2;
00258                         y = (ext[2]+ext[3])/2;
00259                         z = (ext[4]+ext[5])/2;
00260 
00261                         mvtkmprbasedata->SetX( x );
00262                         mvtkmprbasedata->SetY( y );
00263                         mvtkmprbasedata->SetZ( z );
00264 
00265                 }
00266                 
00267 
00268                 if ( mvtk2Dbaseview                             !=NULL ) { mvtk2Dbaseview                               ->      Configure();                            }
00269                 if ( mvtkmpr2Dview_X                    !=NULL ) { mvtkmpr2Dview_X                              ->      Configure();                            }
00270                 if ( mvtkmpr2Dview_Y                    !=NULL ) { mvtkmpr2Dview_Y                              ->      Configure();                            }
00271                 if ( mvtkmpr2Dview_Z                    !=NULL ) { mvtkmpr2Dview_Z                              ->      Configure();                            }
00272                 if ( mvtkplane2Dview                    !=NULL ) { mvtkplane2Dview                              ->      Configure();                            }
00273                 if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      ConfigureA(mvtkplane2Dview);}
00274                 if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      ConfigureA(mvtkplane2Dview);}
00275                 if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      SetActiveLink(true);            }
00276                 if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      SetMesureScale( 1 );            }
00277                 if ( mwxsphereview                              !=NULL ) { mwxsphereview                                ->      Configure();                            }
00278 
00279                 if (mwxvtk3Dbaseview_Clipping3D !=NULL) { mwxvtk3Dbaseview_Clipping3D   ->      Configure();                            }
00280                 
00281                 if (vtkmpr3Ddataviewer                  !=NULL) {                       
00282                         vtkmpr3Ddataviewer->Configure();
00283                         
00284                 }
00285                 if (mwxvtkmpr3Dview                             !=NULL) { 
00286                         
00287                         mwxvtkmpr3Dview                         ->      Configure();
00288                         mwxvtkmpr3Dview                         ->ResetCamera(ext,org,spc);
00289                         
00290                         
00291                 }
00292 
00293                 if (mwxvtkclipping3Dview                !=NULL) { mwxvtkclipping3Dview                  ->      Configure();                            }
00294                 
00295 
00296                 
00297 
00298                 
00299                 //if(vtkmpr3Ddataviewer!=NULL){vtkmpr3Ddataviewer->Configure();}
00300 //              RefreshView();
00301 
00302                 //if (mwxvtkmpr3Dview                           !=NULL) {
00303                 //      mwxvtkmpr3Dview->ResetCamera();
00304                 //}
00305 
00306         }
00307 
00308         //-------------------------------------------------------------------------
00309 
00310   void wxMaracas_ViewerWidget::Refresh(bool eraseBackground ,const wxRect* rect  )  // virtual  eraseBackground=true , rect=NULL
00311   {
00312     wxPanel::Refresh(false);
00313   }
00314 
00315         //-------------------------------------------------------------------------
00316         void wxMaracas_ViewerWidget::RefreshView()
00317         {
00318                 
00319                         if (mvtk2Dbaseview                              !=NULL ){ mvtk2Dbaseview                                -> Refresh();           }
00320                         if (mvtkmpr2Dview_X                             !=NULL ){ mvtkmpr2Dview_X                               -> Refresh();           }
00321                         if (mvtkmpr2Dview_Y                             !=NULL ){ mvtkmpr2Dview_Y                               -> Refresh();           }
00322                         if (mvtkmpr2Dview_Z                             !=NULL ){ mvtkmpr2Dview_Z                               -> Refresh();           }
00323                         if (mvtkplane2Dview                             !=NULL ){ mvtkplane2Dview                               -> Refresh();           }
00324                         if (mwxsphereview                               !=NULL ){ mwxsphereview                                 -> Refresh();           }
00325 
00326                         if (mwxvtkmpr3Dview                             !=NULL ){ mwxvtkmpr3Dview                               -> RefreshView();       }
00327                         if (mwxvtkclipping3Dview                !=NULL ){ mwxvtkclipping3Dview                  -> Refresh();           }
00328                         if (mwxvtk3Dbaseview_Clipping3D !=NULL ){ mwxvtk3Dbaseview_Clipping3D   -> Refresh();           }
00329 
00330         }
00331 
00332         //-------------------------------------------------------------------------
00333 
00334         wxVtkBaseView *wxMaracas_ViewerWidget::GetwxVtkBaseView()
00335         {
00336                 wxVtkBaseView *wxvtkbaseview=NULL;
00337                 if (mvtk2Dbaseview!=NULL)                               { 
00338                         wxvtkbaseview = mvtk2Dbaseview;                 
00339                 }
00340                 if (mvtkmpr2Dview_X!=NULL){ 
00341                         wxvtkbaseview = mvtkmpr2Dview_X;
00342                 }
00343                 if (mvtkmpr2Dview_Y!=NULL){ 
00344                         wxvtkbaseview = mvtkmpr2Dview_Y;
00345                 }
00346                 if (mvtkmpr2Dview_Z!=NULL){ 
00347                         wxvtkbaseview = mvtkmpr2Dview_Z;                
00348                 }
00349                 if (mvtkplane2Dview!=NULL){
00350                         wxvtkbaseview = mvtkplane2Dview;                
00351                 }
00352                 if (mwxsphereview!=NULL){ 
00353                         wxvtkbaseview = mwxsphereview;
00354                 }
00355                 if (mwxvtk3Dbaseview_Clipping3D!=NULL)  { 
00356                         wxvtkbaseview = mwxvtk3Dbaseview_Clipping3D;
00357                 }
00358                 return wxvtkbaseview   ;
00359         }
00360 
00361         void wxMaracas_ViewerWidget::SetImage( vtkImageData *image      )
00362         {
00363                 marImageData* mar = mvtkmprbasedata->GetMarImageData();
00364                 mar->removeImageData(0);
00365                 mar->AddImageData(image);
00366 
00367                 ConfigureVTK();
00368                 RefreshView();
00369 
00370 
00371 
00372         }
00373 
00374         double wxMaracas_ViewerWidget :: GetX()
00375         {
00376                 return mvtkmprbasedata->GetX();
00377         }
00378 
00379         double wxMaracas_ViewerWidget :: GetY()
00380         {
00381                 return mvtkmprbasedata->GetY();
00382         }
00383 
00384         double wxMaracas_ViewerWidget :: GetZ()
00385         {
00386                 return mvtkmprbasedata->GetZ();
00387 //              return mvtk2Dbaseview->GetVtkBaseData()->GetZ();
00388         }
00389 
00390         void wxMaracas_ViewerWidget::setColorTransferFunction(vtkColorTransferFunction* colortable){            
00391                 if(mvtkmpr2Dview_X!=NULL){
00392                         mvtkmpr2Dview_X->setColorTransferFunction(colortable);
00393                 }
00394                 if(mvtkmpr2Dview_Y!=NULL){
00395                         mvtkmpr2Dview_Y->setColorTransferFunction(colortable);
00396                 }
00397                 if(mvtkmpr2Dview_Z!=NULL){
00398                         mvtkmpr2Dview_Z->setColorTransferFunction(colortable);
00399                 }
00400         }

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