]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_ViewerWidget.cxx
DFCH: ManualPaint + imageUndoRedo: Undo/Redo functionality its now working =) =)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracas_ViewerWidget.cxx
index ec78d433541b2b3935eeb5d8c3a74d8c555bbeb3..2cf4527abe77227506dd711ea3a1f96ef8d0f702 100644 (file)
@@ -3,14 +3,14 @@
   Program:   wxMaracas
   Module:    $RCSfile: wxMaracas_ViewerWidget.cxx,v $
   Language:  C++
-  Date:      $Date: 2010/04/15 17:54:04 $
-  Version:   $Revision: 1.25 $
+  Date:      $Date: 2011/10/31 16:23:59 $
+  Version:   $Revision: 1.34 $
 
   Copyright: (c) 2002, 2003
   License:
-  
-     This software is distributed WITHOUT ANY WARRANTY; without even 
-     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
      PURPOSE.  See the above copyright notice for more information.
 
 =========================================================================*/
@@ -23,8 +23,6 @@
 //------------------------------------------------------------------------------------------------------------
 // Other includes
 //------------------------------------------------------------------------------------------------------------
-
-
        //------------------------------------------------------------------------------------------------------------
        // Constructors & Destructors
        //------------------------------------------------------------------------------------------------------------
                : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
        {
                wxPanel *panel = this;
-               wxWindow *wxwindow = NULL, *window3D    = 0;            
+               wxWindow *wxwindow = NULL, *window3D    = 0;
                wxSplitterWindow        *panelClipping3D= 0;
 //             wxPanel *panelControl                   = 0;
-//             wxFlexGridSizer  *sizerCtrol            = 0;            
+//             wxFlexGridSizer  *sizerCtrol            = 0;
                wxPanel *controlPanelMPR3D              = 0;
                wxPanel *controlPanelClippingSurf3D     = 0;
                //RaC 03-2010 Adding a tab
                wxBoxSizer *sizer                       = 0;
 
                mType = type;
-               
+
                if (vtkmprbasedata==NULL)
                {
-                       minternalVtkmprbasedata         = true;
-                       mvtkmprbasedata                 = new vtkMPRBaseData(); 
-                       marImageData    *marimagedata   = new marImageData( imagedata );                        
+                       minternalVtkmprbasedata         = true;
+                       mvtkmprbasedata                 = new vtkMPRBaseData();
+                       marImageData    *marimagedata   = new marImageData( imagedata );
                        mvtkmprbasedata->SetMarImageData(marimagedata);
                } else {
                        minternalVtkmprbasedata         = false;
-                       mvtkmprbasedata                 = vtkmprbasedata; 
+                       mvtkmprbasedata                     = vtkmprbasedata;
                }
 
                mvtk2Dbaseview                  = NULL;
                mwxsphereview                   = NULL;
                mwxvtkclipping3Dview            = NULL;
                mwxvtk3Dbaseview_Clipping3D     = NULL;
-               mwxvtkmpr3Dview                 = NULL;
-               vtkmpr3Ddataviewer              = NULL;
+               mwxvtkmpr3Dview                     = NULL;
+               vtkmpr3Ddataviewer                  = NULL;
 
                if (type==-1)
                {
                        mvtk2Dbaseview  = new wxVtk2DBaseView(panel);
                        mvtk2Dbaseview->SetVtkBaseData(mvtkmprbasedata);
-                       wxwindow        = mvtk2Dbaseview->GetWxVTKRenderWindowInteractor();
+                       wxwindow            = mvtk2Dbaseview->GetWxVTKRenderWindowInteractor();
                }else if (type==0)
                {
                        mvtkmpr2Dview_Z = new wxVtkMPR2DView(panel,2);
                        mvtkmpr2Dview_Z->SetVtkBaseData(mvtkmprbasedata);
-                       wxwindow        = mvtkmpr2Dview_Z->GetWxVTKRenderWindowInteractor();
+                       wxwindow            = mvtkmpr2Dview_Z->GetWxVTKRenderWindowInteractor();
                }else if (type==1)
                {
                        mvtkmpr2Dview_X = new wxVtkMPR2DView(panel,0);
                        mvtkmpr2Dview_X->SetVtkBaseData(mvtkmprbasedata);
-                       wxwindow        = mvtkmpr2Dview_X->GetWxVTKRenderWindowInteractor();
+                       wxwindow            = mvtkmpr2Dview_X->GetWxVTKRenderWindowInteractor();
                }else if (type==2)
                {
                        mvtkmpr2Dview_Y = new wxVtkMPR2DView(panel,1);
                        mvtkmpr2Dview_Y->SetVtkBaseData(mvtkmprbasedata);
-                       wxwindow        = mvtkmpr2Dview_Y->GetWxVTKRenderWindowInteractor();
+                       wxwindow            = mvtkmpr2Dview_Y->GetWxVTKRenderWindowInteractor();
                }else if (type==3)
                {
                        mwidgetMesure   = new wxWidgetMesure2D_Plane_in_MPR(panel);
                        mwxvtk3Dbaseview_Clipping3D             = new wxVtk3DBaseView( panelClipping3D );
 
                        mwxvtkclipping3Dview                    = new wxVtkClipping3DView(mwxvtk3Dbaseview_Clipping3D);
-                       vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer(); 
-                       vtkclipping3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);
+                       vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer();
+                       vtkclipping3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);                    
                        vtkclipping3Ddataviewer->Configure();
                        mwxvtkclipping3Dview->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer);
 
                        mwxvtkmpr3Dview                         = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D );
-                       vtkMPR3DDataViewer *vtkmpr3Ddataviewer  = new vtkMPR3DDataViewer(); 
+                       vtkMPR3DDataViewer *vtkmpr3Ddataviewer  = new vtkMPR3DDataViewer();
                        vtkmpr3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);
                        vtkmpr3Ddataviewer->Configure();
                        mwxvtkmpr3Dview->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
 
                        window3D = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
 
-//--                   
+//--
                        wxNotebook *notebook = new wxNotebook(panelClipping3D, -1);
 
                        // First tab
                        notebook->AddPage(controlPanelMPR3D, _T("Planes") );
 
                        // Second Tab
-                       controlPanelClippingSurf3D      = mwxvtkclipping3Dview->CreateSurfControlPanel(notebook);                       
+                       controlPanelClippingSurf3D      = mwxvtkclipping3Dview->CreateSurfControlPanel(notebook);
                        notebook->AddPage(controlPanelClippingSurf3D, _T("Surface") );
-                       
+
                        //Third tab
                        //RaC 03-2010 Moving the volume functionnality to other tab. The changes were realized only in the wxVtkClipping3DViewCntrlPanel class
                        controlPanelClippingVol3D       = mwxvtkclipping3Dview->CreateVolControlPanel(notebook);
 
                        panelClipping3D->SplitHorizontally( notebook , window3D , 10  );
                        //panelClipping3D->SetMinimumPaneSize( 15 );
-                       panelClipping3D->SetMinimumPaneSize( 35 ); // JPR
-                       
+                       panelClipping3D->SetMinimumPaneSize( 70 ); // JPR
+
        /*              EED 04 / Febrary / 2010
-                       panelControl                    = new wxPanel(panelClipping3D,-1);      
+                       panelControl                    = new wxPanel(panelClipping3D,-1);
                        controlPanelMPR3D               = mwxvtkmpr3Dview->CreateControlPanel(panelControl, false);
                        controlPanelClipping3D  = mwxvtkclipping3Dview->CreateControlPanel(panelControl);
        //                               mbtnCutImageData               = new wxCheckBox(panelControl,-1,_T("Cut Module"));
                        panelClipping3D -> SetMinimumPaneSize( 5 );
         */
                        wxwindow=panelClipping3D;
-                       
+
                } else if (type==6)             {
                        panelClipping3D = new wxSplitterWindow( panel , -1);
                        mwxvtk3Dbaseview_Clipping3D     = new wxVtk3DBaseView( panelClipping3D );
 
                        mwxvtkmpr3Dview         = new wxVtkMPR3DView( mwxvtk3Dbaseview_Clipping3D );
 
-                       vtkmpr3Ddataviewer      = new vtkMPR3DDataViewer();     
-                       
+                       vtkmpr3Ddataviewer      = new vtkMPR3DDataViewer();
+
                        wxWindow *window3D = mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
 
-                       wxPanel *panelControl   = new wxPanel(panelClipping3D,-1);      
-                       wxPanel *controlPanelMPR3D = mwxvtkmpr3Dview->CreateControlPanel(panelControl, false);
+                       wxPanel *panelControl   = new wxPanel(panelClipping3D,-1);
+                       wxPanel *controlPanelMPR3D = mwxvtkmpr3Dview->CreateControlPanel(panelControl, true);
 
                        wxFlexGridSizer  *sizerCtrol     = new wxFlexGridSizer(1);
-                       sizerCtrol->Add(controlPanelMPR3D               , 1, wxALL|wxEXPAND, 2);
+                       sizerCtrol->Add(controlPanelMPR3D, 1, wxALL|wxEXPAND, 2);
 
                        panelControl->SetAutoLayout(true);
                        panelControl->SetSizer(sizerCtrol);
                        panelControl->SetSize(400,350);
                        panelControl->Layout();
-                       //panelClipping3D       -> SetMinimumPaneSize( 5 );
-                       panelClipping3D->SetMinimumPaneSize( 35 );  // JPR
-                       panelClipping3D->SplitHorizontally( panelControl , window3D , 10  );
+                       //panelClipping3D->SetMinimumPaneSize( 5 );
+                       panelClipping3D->SetMinimumPaneSize( 130 );  // FCY
+                       panelClipping3D->SplitHorizontally( panelControl , window3D , 0  );
+                       //panelClipping3D->SetSashSize(10);
+                       panelClipping3D->UpdateSize(); //FCY
                        wxwindow=panelClipping3D;
 
-
-                       vtkmpr3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);                 
+                       vtkmpr3Ddataviewer->SetVtkMPRBaseData(mvtkmprbasedata);
                        //vtkmpr3Ddataviewer->Configure();
 
                        mwxvtkmpr3Dview->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
-                       
+
                }else if (type==7)
                {
-                       mwxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panel );                                             
+                       mwxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panel );
                        wxwindow = (wxWindow*) mwxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
                }
 
        sizer = new wxBoxSizer(wxVERTICAL);
-       sizer->Add( wxwindow, 1, wxGROW);       
+       sizer->Add( wxwindow, 1, wxGROW);
        panel->SetSizer(sizer);
        panel->SetAutoLayout(true);
        sizer->Layout();
        //   mbbtkViewerMaracas= NULL;
        }
        //-------------------------------------------------------------------------
-         
+
        wxMaracas_ViewerWidget::~wxMaracas_ViewerWidget()
        {
                if (minternalVtkmprbasedata==true)
                {
                   if (mvtkmprbasedata)         { delete mvtkmprbasedata;}
-               }       
+               }
                
                if (mvtk2Dbaseview)             { delete mvtk2Dbaseview; }
                if (mvtkmpr2Dview_X)            { delete mvtkmpr2Dview_X;}
                if (mwxvtkmpr3Dview)            { delete mwxvtkmpr3Dview;}
                if (mwxvtkclipping3Dview)       { delete mwxvtkclipping3Dview;}
                if (mwxvtk3Dbaseview_Clipping3D){ delete mwxvtk3Dbaseview_Clipping3D; mwxvtk3Dbaseview_Clipping3D=NULL;}
+               if (vtkmpr3Ddataviewer)                 { delete vtkmpr3Ddataviewer;}
        }
        //------------------------------------------------------------------------------------------------------------
        // Methods
        //------------------------------------------------------------------------------------------------------------
 
        //-------------------------------------------------------------------------
-       
+
        void wxMaracas_ViewerWidget::ConfigureVTK()
        {
                int x=0,y=0,z=0;
+               /*
                int ext[6];
                ext[0]=0;
                ext[1]=0;
                ext[3]=0;
                ext[4]=0;
                ext[5]=0;
-               double org[3],spc[3];
+               */
+               int ext[] = {0, 0, 0, 0, 0, 0}; //JPR
+
+               /*double org[3],spc[3];
                org[0]=0;
                org[1]=0;
                org[2]=0;
                spc[0]=0;
                spc[1]=0;
                spc[2]=0;
-               
+               */
+               double org[]={0.0, 0.0, 0.0}; //JPR
+               double spc[]={0.0, 0.0, 0.0}; //JPR
                if (mvtkmprbasedata!=NULL)
                {
                        mvtkmprbasedata->Configure();
                        /*
-                       x = mvtkmprbasedata     ->      GetMaxPositionX()/2;
-                       y = mvtkmprbasedata     ->      GetMaxPositionY()/2;
-                       z = mvtkmprbasedata     ->      GetMaxPositionZ()/2;            
-                       */      
-                       
+                       x = mvtkmprbasedata->GetMaxPositionX()/2;
+                       y = mvtkmprbasedata->GetMaxPositionY()/2;
+                       z = mvtkmprbasedata->GetMaxPositionZ()/2;
+                       */
+
                        if(mvtkmprbasedata->GetImageData() != NULL)
                        {
                                mvtkmprbasedata->GetImageData()->GetExtent(ext);
                                mvtkmprbasedata->SetZ( 0 );
                        }
                }
-               
-               if ( mvtk2Dbaseview                     !=NULL ) { mvtk2Dbaseview->Configure();                 }
-               if ( mvtkmpr2Dview_X                    !=NULL ) { mvtkmpr2Dview_X->Configure();                }
-               if ( mvtkmpr2Dview_Y                    !=NULL ) { mvtkmpr2Dview_Y->Configure();                }
-               if ( mvtkmpr2Dview_Z                    !=NULL ) { mvtkmpr2Dview_Z->Configure();                }
-               if ( mvtkplane2Dview                    !=NULL ) { mvtkplane2Dview->Configure();                }
-               if ( mwidgetMesure                      !=NULL ) { mwidgetMesure->ConfigureA(mvtkplane2Dview);  }
-               if ( mwidgetMesure                      !=NULL ) { mwidgetMesure->ConfigureA(mvtkplane2Dview);  }
-               if ( mwidgetMesure                      !=NULL ) { mwidgetMesure->SetActiveLink(true);          }
-               if ( mwidgetMesure                      !=NULL ) { mwidgetMesure->SetMesureScale( 1 );          }
-               if ( mwxsphereview                      !=NULL ) { mwxsphereview->Configure();                  }
-
-               if (mwxvtk3Dbaseview_Clipping3D !=NULL) {
-                       mwxvtk3Dbaseview_Clipping3D->Configure();       
-                       
+
+               if ( mvtk2Dbaseview      !=NULL ) { mvtk2Dbaseview->Configure();                }
+               if ( mvtkmpr2Dview_X     !=NULL ) { mvtkmpr2Dview_X->Configure();               }
+               if ( mvtkmpr2Dview_Y     !=NULL ) { mvtkmpr2Dview_Y->Configure();               }
+               if ( mvtkmpr2Dview_Z     !=NULL ) { mvtkmpr2Dview_Z->Configure();               }
+               if ( mvtkplane2Dview     !=NULL ) { mvtkplane2Dview->Configure();               }
+               if ( mwidgetMesure       !=NULL ) { mwidgetMesure->ConfigureA(mvtkplane2Dview); }
+               if ( mwidgetMesure       !=NULL ) { mwidgetMesure->ConfigureA(mvtkplane2Dview); }
+               if ( mwidgetMesure       !=NULL ) { mwidgetMesure->SetActiveLink(true);         }
+               if ( mwidgetMesure       !=NULL ) { mwidgetMesure->SetMesureScale( 1 );         }
+               if ( mwxsphereview       !=NULL ) { mwxsphereview->Configure();                 }
+
+               if (mwxvtk3Dbaseview_Clipping3D !=NULL)
+               {
+                       mwxvtk3Dbaseview_Clipping3D->Configure();
                }
-               
-               if (vtkmpr3Ddataviewer                  !=NULL) {                       
+
+               if (vtkmpr3Ddataviewer                  !=NULL)
+               {
                        vtkmpr3Ddataviewer->Configure();
-                       
+
                }
-               if (mwxvtkmpr3Dview                     !=NULL) { 
-                       
+
+               if (mwxvtkmpr3Dview                     !=NULL)
+               {
                        mwxvtkmpr3Dview->Configure();
                        mwxvtkmpr3Dview->ResetCamera(ext,org,spc);
-                       
-                       
                }
 
-               if (mwxvtkclipping3Dview                !=NULL) { mwxvtkclipping3Dview->Configure();    }
-               
+               if (mwxvtkclipping3Dview                !=NULL)
+               {
+                       mwxvtkclipping3Dview->Configure();
+               }
+
+
                //if(vtkmpr3Ddataviewer!=NULL){vtkmpr3Ddataviewer->Configure();}
 //             RefreshView();
 
        //-------------------------------------------------------------------------
        void wxMaracas_ViewerWidget::RefreshView()
        {
-               
                        if (mvtk2Dbaseview              !=NULL ){ mvtk2Dbaseview->Refresh();            }
                        if (mvtkmpr2Dview_X             !=NULL ){ mvtkmpr2Dview_X->Refresh();           }
                        if (mvtkmpr2Dview_Y             !=NULL ){ mvtkmpr2Dview_Y->Refresh();           }
                        if (mwxvtkmpr3Dview             !=NULL ){ mwxvtkmpr3Dview->RefreshView();       }
                        if (mwxvtkclipping3Dview        !=NULL ){ mwxvtkclipping3Dview->Refresh();      }
                        if (mwxvtk3Dbaseview_Clipping3D !=NULL ){ mwxvtk3Dbaseview_Clipping3D->Refresh();}
-
        }
 
        //-------------------------------------------------------------------------
        wxVtkBaseView *wxMaracas_ViewerWidget::GetwxVtkBaseView()
        {
                wxVtkBaseView *wxvtkbaseview=NULL;
-               if (mvtk2Dbaseview!=NULL){ 
-                       wxvtkbaseview = mvtk2Dbaseview;                 
+               if (mvtk2Dbaseview!=NULL){
+                       wxvtkbaseview = mvtk2Dbaseview;
                }
-               if (mvtkmpr2Dview_X!=NULL){ 
+               if (mvtkmpr2Dview_X!=NULL){
                        wxvtkbaseview = mvtkmpr2Dview_X;
                }
-               if (mvtkmpr2Dview_Y!=NULL){ 
+               if (mvtkmpr2Dview_Y!=NULL){
                        wxvtkbaseview = mvtkmpr2Dview_Y;
                }
-               if (mvtkmpr2Dview_Z!=NULL){ 
-                       wxvtkbaseview = mvtkmpr2Dview_Z;                
+               if (mvtkmpr2Dview_Z!=NULL){
+                       wxvtkbaseview = mvtkmpr2Dview_Z;
                }
                if (mvtkplane2Dview!=NULL){
-                       wxvtkbaseview = mvtkplane2Dview;                
+                       wxvtkbaseview = mvtkplane2Dview;
                }
-               if (mwxsphereview!=NULL){ 
+               if (mwxsphereview!=NULL){
                        wxvtkbaseview = mwxsphereview;
                }
-               if (mwxvtk3Dbaseview_Clipping3D!=NULL){ 
+               if (mwxvtk3Dbaseview_Clipping3D!=NULL){
                        wxvtkbaseview = mwxvtk3Dbaseview_Clipping3D;
                }
                return wxvtkbaseview   ;
 //             return mvtk2Dbaseview->GetVtkBaseData()->GetZ();
        }
 
-       void wxMaracas_ViewerWidget::setColorTransferFunction(vtkColorTransferFunction* colortable){            
+       void wxMaracas_ViewerWidget::setColorTransferFunction(vtkColorTransferFunction* colortable){
                if(mvtkmpr2Dview_X!=NULL){
                        mvtkmpr2Dview_X->setColorTransferFunction(colortable);
                }