]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracas_ViewerWidget.cxx
index f9822d12b23747942bb6f27925a2fc5724cdbfbc..86642eedc29c069e2b420eb7a9a30617c9b5f01f 100644 (file)
@@ -3,8 +3,8 @@
   Program:   wxMaracas
   Module:    $RCSfile: wxMaracas_ViewerWidget.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/05/07 15:35:46 $
-  Version:   $Revision: 1.11 $
+  Date:      $Date: 2009/12/01 21:22:12 $
+  Version:   $Revision: 1.21 $
 
   Copyright: (c) 2002, 2003
   License:
@@ -30,7 +30,7 @@
        //------------------------------------------------------------------------------------------------------------
 
 
-       wxMaracas_ViewerWidget::wxMaracas_ViewerWidget(wxWindow *parent, vtkImageData* imagedata, int type)
+       wxMaracas_ViewerWidget::wxMaracas_ViewerWidget(wxWindow *parent, vtkImageData* imagedata, int type, vtkMPRBaseData *vtkmprbasedata)
                : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
        {
                wxPanel *panel = this;
 
                mType = type;
 
-               marImageData    *marimagedata   = new marImageData( imagedata );                        
-               mvtkmprbasedata                                 = new vtkMPRBaseData(); 
-               mvtkmprbasedata->SetMarImageData(marimagedata);
+               
+               if (vtkmprbasedata==NULL)
+               {
+                       minternalVtkmprbasedata                 = true;
+                       mvtkmprbasedata                                 = new vtkMPRBaseData(); 
+                       marImageData    *marimagedata   = new marImageData( imagedata );                        
+                       mvtkmprbasedata->SetMarImageData(marimagedata);
+               } else {
+                       minternalVtkmprbasedata                 = false;
+                       mvtkmprbasedata                                 = vtkmprbasedata; 
+               }
+               
 
                mvtk2Dbaseview                          = NULL;
                mvtkmpr2Dview_X                         = NULL;
                        wxWindow        *window3D                                       = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
 
                        wxPanel                 *panelControl                   = new wxPanel(panelClipping3D,-1);      
-                       wxPanel                 *controlPanelMPR3D              = mwxvtkmpr3Dview->CreateControlPanel(panelControl);
+                       wxPanel                 *controlPanelMPR3D              = mwxvtkmpr3Dview->CreateControlPanel(panelControl, false);
                        wxPanel                 *controlPanelClipping3D = mwxvtkclipping3Dview->CreateControlPanel(panelControl);
        //                               mbtnCutImageData               = new wxCheckBox(panelControl,-1,_T("Cut Module"));
        //              Connect(_btnCutImageData->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED  , (wxObjectEventFunction) &wxMPRWidget::OnCutImagaData );
 
                        mwxvtkmpr3Dview                                                 = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D );
 
+
                        vtkmpr3Ddataviewer      = new vtkMPR3DDataViewer();     
 
+                       
+
                        wxWindow        *window3D                                       = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
 
                        wxPanel                 *panelControl                   = new wxPanel(panelClipping3D,-1);      
-                       wxPanel                 *controlPanelMPR3D              = mwxvtkmpr3Dview->CreateControlPanel(panelControl);
+                       wxPanel                 *controlPanelMPR3D              = mwxvtkmpr3Dview->CreateControlPanel(panelControl, false);
 
                        wxFlexGridSizer  *sizerCtrol             = new wxFlexGridSizer(1);
                        sizerCtrol->Add(controlPanelMPR3D               , 1, wxALL|wxEXPAND, 2);
                        
                }
 
+               if (type==7)
+               {
+                       mwxvtk3Dbaseview_Clipping3D                             = new wxVtk3DBaseView( panel );
+                       wxWindow        *window3D                                       = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
+                       wxwindow=window3D;
 
+/*Borrame
+                       wxSplitterWindow        *panelClipping3D        = new wxSplitterWindow( panel , -1);
+                       mwxvtk3Dbaseview_Clipping3D                             = new wxVtk3DBaseView( panelClipping3D );
+                       wxWindow        *window3D                                       = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
+                       panelClipping3D ->SetMinimumPaneSize( 5 );
+                       panelClipping3D ->SplitHorizontally( new wxPanel(panelClipping3D,-1) , window3D , 10  );
+                       wxwindow=panelClipping3D;
+*/
+
+/*Borrame
+                       wxSplitterWindow        *panelClipping3D        = new wxSplitterWindow( panel , -1);
+                       mwxvtk3Dbaseview_Clipping3D                             = new wxVtk3DBaseView( panelClipping3D );
+                       mwxvtkmpr3Dview                                                 = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D );
+                       vtkmpr3Ddataviewer      = new vtkMPR3DDataViewer();     
+                       wxWindow        *window3D                                       = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
+                       wxPanel                 *panelControl                   = new wxPanel(panelClipping3D,-1);      
+                       wxPanel                 *controlPanelMPR3D              = mwxvtkmpr3Dview->CreateControlPanel(panelControl);
+                       wxFlexGridSizer  *sizerCtrol             = new wxFlexGridSizer(1);
+                       sizerCtrol->Add(controlPanelMPR3D               , 1, wxALL|wxEXPAND, 2);
+                       panelControl->SetAutoLayout(true);
+                       panelControl->SetSizer(sizerCtrol);
+                       panelControl->SetSize(400,350);
+                       panelControl->Layout();
+                       panelClipping3D -> SetMinimumPaneSize( 5 );
+                       panelClipping3D -> SplitHorizontally( panelControl , window3D , 10  );
+                       wxwindow=panelClipping3D;
+                       vtkmpr3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);                 
+                       //vtkmpr3Ddataviewer->Configure();
+                       mwxvtkmpr3Dview->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
+*/
+               }
 
+   
        wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
        sizer->Add( wxwindow , 1, wxGROW);      
        panel->SetSizer(sizer);
          
        wxMaracas_ViewerWidget::~wxMaracas_ViewerWidget()
        {
-               if (mvtkmprbasedata)                    { delete mvtkmprbasedata;  }
+               
+               if (minternalVtkmprbasedata==true)
+               {
+                       if (mvtkmprbasedata)                    { delete mvtkmprbasedata;  }
+               }       
+               
                if (mvtk2Dbaseview)                             { delete mvtk2Dbaseview; }
                if (mvtkmpr2Dview_X)                    { delete mvtkmpr2Dview_X; }
                if (mvtkmpr2Dview_Y)                    { delete mvtkmpr2Dview_Y; }
                if (mwidgetMesure)                              { delete mwidgetMesure; }
                if (mvtkplane2Dview)                    { delete mvtkplane2Dview; }
                if (mwxsphereview)                              { delete mwxsphereview; }
-               if (mwxvtkclipping3Dview)               { delete mwxvtkclipping3Dview; }
-               if (mwxvtk3Dbaseview_Clipping3D){ delete mwxvtk3Dbaseview_Clipping3D; }
                if (mwxvtkmpr3Dview)                    { delete mwxvtkmpr3Dview; }
-
+               if (mwxvtkclipping3Dview)               { delete mwxvtkclipping3Dview; }
+               if (mwxvtk3Dbaseview_Clipping3D){ delete mwxvtk3Dbaseview_Clipping3D; mwxvtk3Dbaseview_Clipping3D=NULL;}
        }
        //------------------------------------------------------------------------------------------------------------
        // Methods
                        /*x = mvtkmprbasedata   ->      GetMaxPositionX()/2;
                        y = mvtkmprbasedata     ->      GetMaxPositionY()/2;
                        z = mvtkmprbasedata     ->      GetMaxPositionZ()/2;            */      
-
-                       mvtkmprbasedata->GetImageData()->GetExtent(ext);
-                       mvtkmprbasedata->GetImageData()->GetOrigin(org);
-                       mvtkmprbasedata->GetImageData()->GetSpacing(spc);
-
-                       x = (ext[0]+ext[1])/2;
-                       y = (ext[2]+ext[3])/2;
-                       z = (ext[4]+ext[5])/2;
-
-                       mvtkmprbasedata->SetX( x );
-                       mvtkmprbasedata->SetY( y );
-                       mvtkmprbasedata->SetZ( z );
-
+                       
+                       if(mvtkmprbasedata->GetImageData() != NULL)
+                       {
+                               mvtkmprbasedata->GetImageData()->GetExtent(ext);
+                               mvtkmprbasedata->GetImageData()->GetOrigin(org);
+                               mvtkmprbasedata->GetImageData()->GetSpacing(spc);
+
+                               x = (ext[0]+ext[1])/2;
+                               y = (ext[2]+ext[3])/2;
+                               z = (ext[4]+ext[5])/2;
+
+                               mvtkmprbasedata->SetX( x );
+                               mvtkmprbasedata->SetY( y );
+                               mvtkmprbasedata->SetZ( z );
+                       }
+                       else
+                       {
+                               mvtkmprbasedata->SetX( 0 );
+                               mvtkmprbasedata->SetY( 0 );
+                               mvtkmprbasedata->SetZ( 0 );
+                       }
                }
                
 
                if ( mwidgetMesure                              !=NULL ) { mwidgetMesure                                ->      SetMesureScale( 1 );            }
                if ( mwxsphereview                              !=NULL ) { mwxsphereview                                ->      Configure();                            }
 
-               if (mwxvtk3Dbaseview_Clipping3D !=NULL) { mwxvtk3Dbaseview_Clipping3D   ->      Configure();                            }
+               if (mwxvtk3Dbaseview_Clipping3D !=NULL) { mwxvtk3Dbaseview_Clipping3D   ->      Configure();                            
+               }
                
                if (vtkmpr3Ddataviewer                  !=NULL) {                       
                        vtkmpr3Ddataviewer->Configure();
 
                if (mwxvtkclipping3Dview                !=NULL) { mwxvtkclipping3Dview                  ->      Configure();                            }
                
-
                
 
                
 
        void wxMaracas_ViewerWidget::SetImage( vtkImageData *image      )
        {
-               marImageData* mar = mvtkmprbasedata->GetMarImageData();
-               mar->removeImageData(0);
-               mar->AddImageData(image);
-
-               ConfigureVTK();
-               RefreshView();
-
-
+               if(mvtkmprbasedata !=NULL)
+               {
+                       marImageData* mar = mvtkmprbasedata->GetMarImageData();
+                       mar->removeImageData(0);
+                       mar->AddImageData(image);
+               }
 
+//EED 26/11/2009
+//             ConfigureVTK();
+//             RefreshView();
        }
 
        double wxMaracas_ViewerWidget :: GetX()
        {
-               return mvtkmprbasedata->GetX();
+               double value = -1;
+               if(mvtkmprbasedata !=NULL)
+               {
+                       value = mvtkmprbasedata->GetX();
+               }
+               return value;
        }
 
        double wxMaracas_ViewerWidget :: GetY()
        {
-               return mvtkmprbasedata->GetY();
+               double value = -1;
+               if(mvtkmprbasedata !=NULL)
+               {
+                       value = mvtkmprbasedata->GetY();
+               }
+               return value;
        }
 
        double wxMaracas_ViewerWidget :: GetZ()
        {
-               return mvtkmprbasedata->GetZ();
+               double value = -1;
+               if(mvtkmprbasedata !=NULL)
+               {
+                       value = mvtkmprbasedata->GetZ();
+               }
+               return value;
 //             return mvtk2Dbaseview->GetVtkBaseData()->GetZ();
        }
 
+       void wxMaracas_ViewerWidget::setColorTransferFunction(vtkColorTransferFunction* colortable){            
+               if(mvtkmpr2Dview_X!=NULL){
+                       mvtkmpr2Dview_X->setColorTransferFunction(colortable);
+               }
+               if(mvtkmpr2Dview_Y!=NULL){
+                       mvtkmpr2Dview_Y->setColorTransferFunction(colortable);
+               }
+               if(mvtkmpr2Dview_Z!=NULL){
+                       mvtkmpr2Dview_Z->setColorTransferFunction(colortable);
+               }
+               if(mwxvtkmpr3Dview!=NULL){
+                       mwxvtkmpr3Dview->setColorTransferFunction(colortable);
+               }
+       }
+
+       void wxMaracas_ViewerWidget::setWindowLevel(double level){
+               if(mvtkmpr2Dview_X!=NULL){
+                       mvtkmpr2Dview_X->setWindowLevel(level);
+               }
+               if(mvtkmpr2Dview_Y!=NULL){
+                       mvtkmpr2Dview_Y->setWindowLevel(level);
+               }
+               if(mvtkmpr2Dview_Z!=NULL){
+                       mvtkmpr2Dview_Z->setWindowLevel(level);
+               }
+               /*if(mwxvtkmpr3Dview!=NULL){
+                       mwxvtkmpr3Dview->setWindowLevel(level);
+               }*/
+       }
+
+       void wxMaracas_ViewerWidget::setColorLevel(double level){
+               if(mvtkmpr2Dview_X!=NULL){
+                       mvtkmpr2Dview_X->setColorLevel(level);
+               }
+               if(mvtkmpr2Dview_Y!=NULL){
+                       mvtkmpr2Dview_Y->setColorLevel(level);
+               }
+               if(mvtkmpr2Dview_Z!=NULL){
+                       mvtkmpr2Dview_Z->setColorLevel(level);
+               }
+               /*if(mwxvtkmpr3Dview!=NULL){
+                       mwxvtkmpr3Dview->setColorLevel(level);
+               }*/
+    }
+