X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSVTK%2FSVTK_InteractorStyle.h;h=dd514356d46d202f22001766710013a3427769b1;hb=e6caa123c65e3c4a3017364ec5bb4225fd898465;hp=e862ee9b2be6f3e487dab33a0f33ed153fd22fcf;hpb=7913d238ead6773bc2bfcbfe692738346626e4b7;p=modules%2Fgui.git diff --git a/src/SVTK/SVTK_InteractorStyle.h b/src/SVTK/SVTK_InteractorStyle.h index e862ee9b2..dd514356d 100644 --- a/src/SVTK/SVTK_InteractorStyle.h +++ b/src/SVTK/SVTK_InteractorStyle.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 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 #include +#include #include @@ -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 myHighlightSelectionPointActor; vtkSmartPointer myPointPicker; - double myBBCenter[3]; + double myBBCenter[3]; bool myBBFirstCheck; QRubberBand* myRectBand; //!< selection rectangle rubber band + QtxPolyRubberBand* myPolygonBand; //!< polygonal selection + QVector myPolygonPoints; + PolygonState myPoligonState; bool myIsAdvancedZoomingEnabled; };