]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkInteractorStyleBaseView.cxx
#3020 creaMaracasVisu Bug New Normal - ViewerNV opacity, isovalue slice (size)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / vtkInteractorStyleBaseView.cxx
index 8cfed905075af35b7b3587986b68642d6637117c..7de94728684a266196798e1dec5366e55a94741b 100644 (file)
@@ -1,3 +1,28 @@
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 #include "vtkInteractorStyleBaseView.h"
 
 #include "wxVtk3DBaseView.h"
@@ -17,6 +42,9 @@ vtkInteractorStyleBaseView::vtkInteractorStyleBaseView()
        _refresh_waiting                = false;
        _parent_refresh_waiting = false;
        _blockRefresh                   = false;
+       
+       //EED27Juillet2011
+       SetMouseWheelMotionFactor(0.5);
 }
 //---------------------------------------------------------------------------
 vtkInteractorStyleBaseView::~vtkInteractorStyleBaseView()
@@ -75,10 +103,16 @@ void vtkInteractorStyleBaseView::OnRightDClick()  // virtual
 {
        CallLstInteractorStyleMaracas( 12 );
 }
-//---------------------------------------------------------------------------
-void vtkInteractorStyleBaseView::OnMouseWheel()  // virtual
+
+
+void  vtkInteractorStyleBaseView::OnMouseWheelForward()  // virtual
+{
+       CallLstInteractorStyleMaracas( 15 );
+}
+
+void vtkInteractorStyleBaseView::OnMouseWheelBackward() // virtual
 {
-       CallLstInteractorStyleMaracas( 14 );
+       CallLstInteractorStyleMaracas( 16 );
 }
 //---------------------------------------------------------------------------
 void vtkInteractorStyleBaseView::AddInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas)
@@ -101,7 +135,7 @@ void  vtkInteractorStyleBaseView::RemoveInteractorStyleMaracas(InteractorStyleMa
                        removed = true;
                } else {
                  iter++;
-               }
+               }               
        }               
 }
 //---------------------------------------------------------------------------
@@ -113,7 +147,6 @@ void vtkInteractorStyleBaseView::InsertInteractorStyleMaracas(int pos, Interacto
 //---------------------------------------------------------------------------
 void vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas(int type)
 {
-
        InteractorStyleMaracas *intStyMar;
 
        int i,size=_lstInteractorStyleMaracas.size();
@@ -131,16 +164,13 @@ void vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas(int type)
 
        for (i=0;i<size;i++)
        {
-printf("EED %p vtkInteractorStyleBaseView A i=%d size=%d sizeLst%d\n", this, i, size, _lstInteractorStyleMaracas.size() );
-               if (i < _lstInteractorStyleMaracas.size() )
+               if (i < (int)_lstInteractorStyleMaracas.size() )
                {
                        intStyMar = _lstInteractorStyleMaracas[i];
                } else {
                        intStyMar=NULL;
                }
-printf("EED %p vtkInteractorStyleBaseView B i=%d size=%d sizeLst%d\n", this, i, size, _lstInteractorStyleMaracas.size() );
                if (intStyMar!=NULL && intStyMar->GetActive()==true){
-printf("EED %p vtkInteractorStyleBaseView C i=%d size=%d sizeLst%d\n", this, i, size, _lstInteractorStyleMaracas.size() );
                        if (type ==1)
                        {  // OnRightButtonDown
                                if (intStyMar->OnRightButtonDown()==false)
@@ -218,13 +248,23 @@ printf("EED %p vtkInteractorStyleBaseView C i=%d size=%d sizeLst%d\n", this, i,
                                        i=size;
                                }
                        }
-                       if (type==14)
-                       {  // OnMouseWheel
-                               if (intStyMar->OnMouseWheel()==false)
+                       // 14 ... old OnMouseWheelFordward
+                       if (type==15)
+                       {  // OnMouseWheelForward
+                               if (intStyMar->OnMouseWheelForward()==false)
+                               {
+                                       i=size;
+                               }
+                       }
+                       if (type==16)
+                       {  // OnMouseWheelBackward
+                               if (intStyMar->OnMouseWheelBackward()==false)
                                {
                                        i=size;
                                }
                        }
+                       
+                       
                } // if active
        } // for
 
@@ -239,25 +279,27 @@ void  vtkInteractorStyleBaseView::OnChar()  // virtual
 //---------------------------------------------------------------------------
 void vtkInteractorStyleBaseView::TransformCoordinate(double &X, double &Y, double &Z)
 {
-    vtkImageViewer2 *imageViewer = ((wxVtk2DBaseView*)GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2();
+       if(((wxVtk2DBaseView*)GetWxVtk2DBaseView())->_imageViewer2XYZ){
+               vtkImageViewer2 *imageViewer = ((wxVtk2DBaseView*)GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2();
 
-       imageViewer->GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z);
-       imageViewer->GetRenderer()->DisplayToWorld();
-       double fP[4];
-       imageViewer->GetRenderer()->GetWorldPoint( fP );
+               imageViewer->GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z);
+               imageViewer->GetRenderer()->DisplayToWorld();
+               double fP[4];
+               imageViewer->GetRenderer()->GetWorldPoint( fP );
 
-       if ( fP[3] ){
-               fP[0] /= fP[3];
-               fP[1] /= fP[3];
-               fP[2] /= fP[3];
-       }
+               if ( fP[3] ){
+                       fP[0] /= fP[3];
+                       fP[1] /= fP[3];
+                       fP[2] /= fP[3];
+               }
 
-// EEDx5
-       ((wxVtk2DBaseView*)GetWxVtk2DBaseView())->TransformCoordinate_spacing_ViewToModel(fP[0],fP[1],fP[2]);
+       // EEDx5
+               ((wxVtk2DBaseView*)GetWxVtk2DBaseView())->TransformCoordinate_spacing_ViewToModel(fP[0],fP[1],fP[2]);
 
-       X=fP[0];
-       Y=fP[1];
-       Z=fP[2];
+               X=fP[0];
+               Y=fP[1];
+               Z=fP[2];
+       }
 }
 //---------------------------------------------------------------------------
 void vtkInteractorStyleBaseView::SetwxVtkBaseView(wxVtkBaseView *wxvtkbaseview)
@@ -319,7 +361,6 @@ bool vtkInteractorStyleBaseView::GetParent_refresh_waiting()
 //---------------------------------------------------------------------------
 void vtkInteractorStyleBaseView::EvaluateToRefresh()
 {
-
        if  ( _blockRefresh==false )
        {
                if ( (_refresh_waiting==true) && (_parent_refresh_waiting==false))
@@ -331,9 +372,16 @@ void vtkInteractorStyleBaseView::EvaluateToRefresh()
                {
                        _parent_refresh_waiting = false;
                        wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
+//CPR 13/01/2010
                        this->_wxvtkbaseview->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
-               }
-       }
+                       int i;
+                       int size = _lstParentToReport.size();
+                       for(i = 0; i<size; i++)
+                       {       
+                               _lstParentToReport[i]->ProcessEvent(newevent1);
+                       }//for
+               }//if
+       }//if _blockRefresh
 }
 //---------------------------------------------------------------------------
 void vtkInteractorStyleBaseView::BlockRefresh()
@@ -346,3 +394,18 @@ void vtkInteractorStyleBaseView::UnBlockRefresh()
        _blockRefresh=false;
 }
 
+wxEvtHandler* vtkInteractorStyleBaseView::GetParentToReport(int i)
+{
+       wxEvtHandler* parentToReport = NULL;
+       if(i>=0 && i<_lstParentToReport.size())
+       {       
+               parentToReport = _lstParentToReport[i];
+       }
+       return parentToReport;
+
+}
+
+void vtkInteractorStyleBaseView::AddParentToReport(wxEvtHandler* parentToReport)
+{
+       _lstParentToReport.push_back(parentToReport);
+}