]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkClipping3DView.cxx
DFCH: ManualPaint + imageUndoRedo: Undo/Redo functionality its now working =) =)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkClipping3DView.cxx
index 7333e9334ec9bc140b99774d851bcc7cf5e81945..3d1d5a9a7ef7eae2435410048de036bd2b8c5828 100644 (file)
@@ -1,9 +1,11 @@
 #include "wxVtkClipping3DView.h"
 
 #include "wxVtkClipping3DViewCntrlPanel.h"
+#include "wxVtkClipping3DViewVolCntrlPanel.h"
 
 wxVtkClipping3DView::wxVtkClipping3DView(wxVtk3DBaseView* wxvtk3Dbaseview)
 {
+
        _wxvtk3Dbaseview                                =       wxvtk3Dbaseview;
        _vtkclipping3Ddataviewer                =       NULL;
        _wxvtkclipping3DviewCntrlPanel  =       NULL;
@@ -29,14 +31,13 @@ void wxVtkClipping3DView::SetVisibleBoxSurface(bool visible)
        }
 }
 //-------------------------------------------------------------------
-void wxVtkClipping3DView::SetVisibleBoxVolume(bool visible)
+void wxVtkClipping3DView::VisibleVolumeBoxActor(bool visible)
 {
-       if (_boxWidgetVolume!=NULL){
-               if (visible==true){
-                       _boxWidgetVolume->On();
-               } else {
-                       _boxWidgetVolume->Off();
-               }
+       if (visible!=_vtkclipping3Ddataviewer->GetVisibleVolumeBox() ){
+        VisibleVolumeActor(!visible);
+        _vtkclipping3Ddataviewer->BoxActorChanged(visible);
+        _vtkclipping3Ddataviewer->SetVisibleVolumeBox(visible);
+        _vtkclipping3Ddataviewer->SetVisibleVolume(!visible);
        }
 }
 //-------------------------------------------------------------------
@@ -49,23 +50,33 @@ void wxVtkClipping3DView::Refresh()
        }
 }
 //-------------------------------------------------------------------
-wxPanel* wxVtkClipping3DView::CreateControlPanel(wxWindow *parent)
+wxPanel* wxVtkClipping3DView::CreateSurfControlPanel(wxWindow *parent)
 {
        _wxvtkclipping3DviewCntrlPanel = new wxVtkClipping3DViewCntrlPanel(parent,this);
        return _wxvtkclipping3DviewCntrlPanel;
 }
+
+//RaC 03-2010 Divide in two panels
+//-------------------------------------------------------------------
+wxPanel* wxVtkClipping3DView::CreateVolControlPanel(wxWindow *parent)
+{
+       _wxvtkclipping3DviewVolCntrlPanel = new wxVtkClipping3DViewVolCntrlPanel(parent,this);
+       return _wxvtkclipping3DviewVolCntrlPanel;
+}
+
+
 //-------------------------------------------------------------------
 vtkClipping3DDataViewer* wxVtkClipping3DView::GetVtkClipping3DDataViewer()
 {
-       return _vtkclipping3Ddataviewer; 
+       return _vtkclipping3Ddataviewer;
 }
 //-------------------------------------------------------------------
 void wxVtkClipping3DView::VisibleActor(int idTissue, bool visTissue){
        if (visTissue!=_vtkclipping3Ddataviewer->GetVisibleTissue(idTissue)){
                if (visTissue==false){
-                       _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkclipping3Ddataviewer->GetTissueActor(idTissue)  );    
+                       _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkclipping3Ddataviewer->GetTissueActor(idTissue)  );
                } else {
-                       _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetTissueActor(idTissue)  );       
+                       _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetTissueActor(idTissue)  );
 //                     _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(idTissue) );
 //                     _actor->VisibilityOn();
                }
@@ -91,16 +102,22 @@ void wxVtkClipping3DView::SetRepSurfaceWireFrame(int idTissue , bool representat
 void wxVtkClipping3DView::VisibleVolumeActor( bool visVolume){
        if (visVolume!=_vtkclipping3Ddataviewer->GetVisibleVolume() ){
                if (visVolume==false){
-//EED 31/03/2008                       
-//                     _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkclipping3Ddataviewer->GetVolumeActor()  );    
-                       _wxvtk3Dbaseview->GetRenderer()->RemoveVolume( _vtkclipping3Ddataviewer->GetVolumeActor()  );   
+//EED 31/03/2008
+//                     _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkclipping3Ddataviewer->GetVolumeActor()  );
+                       _wxvtk3Dbaseview->GetRenderer()->RemoveVolume( _vtkclipping3Ddataviewer->GetVolumeActor()  );
                } else {
-//EED 31/03/2008                       
-//                     _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetVolumeActor() );        
-                       _wxvtk3Dbaseview->GetRenderer()->AddVolume( _vtkclipping3Ddataviewer->GetVolumeActor() );       
+//EED 31/03/2008
+//                     _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetVolumeActor() );
+                       _wxvtk3Dbaseview->GetRenderer()->AddVolume( _vtkclipping3Ddataviewer->GetVolumeActor() );
                }
                _vtkclipping3Ddataviewer->SetVisibleVolume(visVolume);
        }
+       else if(visVolume==false  && _vtkclipping3Ddataviewer->GetVisibleVolumeBox() == true)
+       {
+           _vtkclipping3Ddataviewer->BoxActorChanged(false);
+        _vtkclipping3Ddataviewer->SetVisibleVolumeBox(false);
+       }
+
 }
 //-------------------------------------------------------------------
 wxVtk3DBaseView* wxVtkClipping3DView::GetWxvtk3Dbaseview()throw(char*)
@@ -114,8 +131,8 @@ wxVtk3DBaseView* wxVtkClipping3DView::GetWxvtk3Dbaseview()throw(char*)
 void wxVtkClipping3DView::Configure(){
        _wxvtk3Dbaseview->Configure();
 
-       // Actors are added to the renderer. 
-       _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetOutlineActor() );                       
+       // Actors are added to the renderer.
+       _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetOutlineActor() );
 
        _boxWidgetS1 = vtkBoxWidget::New();
        _boxWidgetS1->SetInteractor( _wxvtk3Dbaseview->GetWxVTKRenderWindowInteractor() );
@@ -125,7 +142,7 @@ void wxVtkClipping3DView::Configure(){
 
        vtkStripper *stripper=_vtkclipping3Ddataviewer->GetTissueStripper(0);
        vtkPolyData *polydata= stripper->GetOutput();
+
 
        _boxWidgetS1->SetInput( polydata );
        _boxWidgetS1->PlaceWidget();
@@ -133,14 +150,14 @@ void wxVtkClipping3DView::Configure(){
        int i;
        for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++)
        {
-               _boxWidgetS1->AddObserver( vtkCommand::InteractionEvent          , _vtkclipping3Ddataviewer->GetObserverS(i) );
+               _boxWidgetS1->AddObserver( vtkCommand::InteractionEvent, _vtkclipping3Ddataviewer->GetObserverS(i) );
        }
 
 
 
 
-//     _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetTissueActor(0) );                       
-//     _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetTissueActor(3));                        
+//     _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetTissueActor(0) );
+//     _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkclipping3Ddataviewer->GetTissueActor(3));
 
        VisibleActor(0, false );
        VisibleActor(1, false );
@@ -148,17 +165,17 @@ void wxVtkClipping3DView::Configure(){
        VisibleActor(3, false );
 
        _boxWidgetS1->HandlesOn ();
-       
-//EED 29Mars2009       
+
+//EED 29Mars2009
 //     _boxWidgetS1->On();
-       
+
        _boxWidgetS1->Off();
 
        _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(0) );
        _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(1) );
        _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(2) );
        _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(3) );
-       
+
 // EED 9 fev 2007
 // box Volume
        _boxWidgetVolume = vtkBoxWidget::New();
@@ -171,10 +188,10 @@ void wxVtkClipping3DView::Configure(){
        _boxWidgetVolume->AddObserver( vtkCommand::InteractionEvent              , _vtkclipping3Ddataviewer->GetObserverV() );
 
        _boxWidgetVolume->HandlesOn ();
-       
-//EED 29Mars2009       
+
+//EED 29Mars2009
 //     _boxWidgetVolume->On();
-       
+
        _boxWidgetVolume->Off();
 
 
@@ -182,7 +199,7 @@ void wxVtkClipping3DView::Configure(){
 //     _boxWidgetVolume->GetPlanes( vtkplanes );
 
 
-  // An initial camera view is created.  The Dolly() method moves 
+  // An initial camera view is created.  The Dolly() method moves
   // the camera towards the FocalPoint, thereby enlarging the image.
   _wxvtk3Dbaseview->GetRenderer()->SetActiveCamera(_wxvtk3Dbaseview->GetCamera());
   _wxvtk3Dbaseview->GetRenderer()->ResetCamera ();
@@ -195,14 +212,53 @@ void wxVtkClipping3DView::Configure(){
 
   // Note that when camera movement occurs (as it does in the Dolly()
   // method), the clipping planes often need adjusting. Clipping planes
-  // consist of two planes: near and far along the view direction. The 
+  // consist of two planes: near and far along the view direction. The
   // near plane clips out objects in front of the plane; the far plane
   // clips out objects behind the plane. This way only what is drawn
   // between the planes is actually rendered.
   _wxvtk3Dbaseview->GetRenderer()->ResetCameraClippingRange();
+
+       cout<<"EED::JPRG::wxVtkClipping3DView::SetVtkClipping3DDataViewer::GetRenderer()::"<<this->GetWxvtk3Dbaseview()->GetRenderer()<<endl;
+       //cout<<"JPRG::wxVtkClipping3DView::SetVtkClipping3DDataViewer::GetWxVTKRenderWindowInteractor()::"<<this->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()<<endl;
+
+       _vtkclipping3Ddataviewer->SetRenderer(this->GetWxvtk3Dbaseview()->GetRenderer());
+       _vtkclipping3Ddataviewer->SetInteractor(this->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor());
+
 }
 //-------------------------------------------------------------------
 void wxVtkClipping3DView::SetVtkClipping3DDataViewer(vtkClipping3DDataViewer *vtkclipping3Ddataviewer)
 {
        _vtkclipping3Ddataviewer = vtkclipping3Ddataviewer;
 }
+
+void wxVtkClipping3DView::SetRayCasting(bool active)
+{
+    _vtkclipping3Ddataviewer->SetRayCasting(active);
+    _vtkclipping3Ddataviewer->updateVolume();
+}
+
+void wxVtkClipping3DView::SetMIPActive(bool active)
+{
+    _vtkclipping3Ddataviewer->SetMIPActive(active);
+    _vtkclipping3Ddataviewer->updateVolume();
+}
+
+void wxVtkClipping3DView::SetInterpolation(bool active)
+{
+    _vtkclipping3Ddataviewer->SetInterpolation(active);
+    _vtkclipping3Ddataviewer->updateVolume();
+}
+
+void wxVtkClipping3DView::SetShade(bool active)
+{
+    _vtkclipping3Ddataviewer->SetShade(active);
+    _vtkclipping3Ddataviewer->updateVolume();
+}
+
+void wxVtkClipping3DView::UpdateVolumeBox(vector<double> gf, vector<double> vf, vtkColorTransferFunction* ctfun)
+{
+    _vtkclipping3Ddataviewer->UpdateVolumeBox(gf, vf, ctfun);
+}
+
+
+