]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx
Comments
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkMPR3DView.cxx
index 6bdef1c10575013b16d158e0aee15f168e9ccc89..e67cc22c0b5b7b4898c38685eaf9de4657c8f699 100644 (file)
@@ -387,6 +387,9 @@ vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey,
 //-------------------------------------------------------------------
 void wxVtkMPR3DView::SetFreePlanesOrtho()
 {
+
+       
+
        _planeWidgetX->SetPlaneOrientationToXAxes();
        _planeWidgetY->SetPlaneOrientationToYAxes();
        _planeWidgetZ->SetPlaneOrientationToZAxes();
@@ -400,13 +403,44 @@ void wxVtkMPR3DView::FreePlaneVisible(int plane, bool ok)
 {
        if(_planeWidgetX)
        {
-               if ((plane==1) && (ok==true)) _planeWidgetX->EnabledOn();
-               if ((plane==2) && (ok==true)) _planeWidgetY->EnabledOn();
-               if ((plane==3) && (ok==true)) _planeWidgetZ->EnabledOn();
+               if (ok==true)
+               {
+//EED 21/07/2013
+//                     1. Make backup of actors
+//                     2. Putting out all the actors
+//                     3. Add vtkImagageActor in first place
+//                     4. Putting again the originals actors
+//                     5. Refresh
+
+                       // step 1, step 2
+                       vtkActorCollection *tmpCollection    = vtkActorCollection::New();
+                       vtkActorCollection *collectionActors =  _wxvtk3Dbaseview->GetRenderer()->GetActors();
+                       int i,size=collectionActors->GetNumberOfItems();
+                       for (i=0; i<size; i++)
+                       {
+                               tmpCollection->AddItem ( (vtkActor*)collectionActors->GetItemAsObject(0)  );                    
+                               _wxvtk3Dbaseview->GetRenderer()->RemoveActor( (vtkProp*)tmpCollection->GetItemAsObject(i) );
+                       } // for
+
+                       // step 3
+                       if ((plane==1) && (ok==true)) _planeWidgetX->EnabledOn();
+                       if ((plane==2) && (ok==true)) _planeWidgetY->EnabledOn();
+                       if ((plane==3) && (ok==true)) _planeWidgetZ->EnabledOn();
+
+                       // step 4
+                        for (i=0; i<size; i++)
+                       {
+                               _wxvtk3Dbaseview->GetRenderer()->AddActor( (vtkProp*)tmpCollection->GetItemAsObject(i) );
+                       } // for
+                       tmpCollection->Delete();
+
+                       // step 5 Refresh
+                       _wxvtk3Dbaseview->GetRenderer()->GetRenderWindow()->Render();
+               } // if ok
                if ((plane==1) && (ok==false)) _planeWidgetX->EnabledOff();
                if ((plane==2) && (ok==false)) _planeWidgetY->EnabledOff();
                if ((plane==3) && (ok==false)) _planeWidgetZ->EnabledOff();
-       }
+       } // if  _planeWidgetX
 }
 
 //-------------------------------------------------------------------
@@ -544,7 +578,36 @@ void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){
                if (visible==false){
                        _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition)  );
                } else {
+//EED 21/07/2013
+//                     1. Make backup of actors
+//                     2. Putting out all the actors
+//                     3. Add vtkImagageActor in first place
+//                     4. Putting again the originals actors
+//                     5. Refresh
+
+                       // step 1, step 2
+                       vtkActorCollection *tmpCollection    = vtkActorCollection::New();
+                       vtkActorCollection *collectionActors =  _wxvtk3Dbaseview->GetRenderer()->GetActors();
+                       int i,size=collectionActors->GetNumberOfItems();
+                       for (i=0; i<size; i++)
+                       {
+                               tmpCollection->AddItem ( (vtkActor*)collectionActors->GetItemAsObject(0)  );                    
+                               _wxvtk3Dbaseview->GetRenderer()->RemoveActor( (vtkProp*)tmpCollection->GetItemAsObject(i) );
+                       } // for
+
+                       // step 3
                        _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition)  );
+
+                       // step 4
+                        for (i=0; i<size; i++)
+                       {
+                               _wxvtk3Dbaseview->GetRenderer()->AddActor( (vtkProp*)tmpCollection->GetItemAsObject(i) );
+                       } // for
+                       tmpCollection->Delete();
+
+                       // step 5 Refresh
+                       _wxvtk3Dbaseview->GetRenderer()->GetRenderWindow()->Render();
+
                }
                _vtkmpr3Ddataviewer->SetVisiblePosition(idPosition,visible);
        }