Salome HOME
Synchronize adm files
[modules/gui.git] / src / SVTK / SVTK_InteractorStyle.h
old mode 100644 (file)
new mode 100755 (executable)
index e862ee9..786e97a
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -37,6 +37,7 @@
 #include <vtkSmartPointer.h>
 
 #include <QCursor>
+#include <QtxRubberBand.h>
 
 #include <map>
 
@@ -145,6 +146,8 @@ class QRubberBand;
 #define VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN 7
 #define VTK_INTERACTOR_STYLE_CAMERA_SELECT_ROTATION_POINT 8
 
+enum PolygonState { Disable, Start, InProcess, Finished, Closed, NotValid };
+
 //! Introduce SALOME way of user interaction
 /*!
   This class defines SALOME way of user interaction for VTK viewer, as well, 
@@ -205,6 +208,9 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle
   //! To handle mouse wheel backward event (reimplemented from #vtkInteractorStyle)
   virtual void OnMouseWheelBackward();
 
+  //! To handle mouse button double click event
+  virtual void OnMouseButtonDoubleClick();
+
   //! To handle keyboard event (reimplemented from #vtkInteractorStyle)
   virtual void OnChar();
 
@@ -231,11 +237,17 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle
   
   SVTK_Selector* GetSelector();
 
-  int   CurrentState() const { return State; }
+  int          CurrentState() const { return State; }
+  PolygonState GetPolygonState() const { return myPoligonState; }
+  void         SetPolygonState( const PolygonState& thePolygonState )
+                              { myPoligonState = thePolygonState; }
 
   void SetAdvancedZoomingEnabled( const bool theState ) { myIsAdvancedZoomingEnabled = theState; }
   bool IsAdvancedZoomingEnabled() const { return myIsAdvancedZoomingEnabled; }
 
+  //! releaze myLastHighlitedActor and myLastPreHighlitedActor
+  void FreeActors();
+
   protected:
   SVTK_InteractorStyle();
   ~SVTK_InteractorStyle();
@@ -308,6 +320,8 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle
   
   void drawRect();
   void endDrawRect();
+  void drawPolygon();
+  void endDrawPolygon();
 
  protected:
   QCursor                   myDefCursor;
@@ -354,10 +368,13 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle
   vtkSmartPointer<SVTK_Actor>     myHighlightSelectionPointActor;
   vtkSmartPointer<vtkPointPicker> myPointPicker;
   
-  double            myBBCenter[3];
+  double                          myBBCenter[3];
   bool                            myBBFirstCheck;
 
   QRubberBand*                    myRectBand; //!< selection rectangle rubber band
+  QtxPolyRubberBand*              myPolygonBand; //!< polygonal selection
+  QVector<QPoint>                 myPolygonPoints;
+  PolygonState                    myPoligonState;
 
   bool                            myIsAdvancedZoomingEnabled;
 };