-// SALOME VTKViewer : build VTK viewer into Salome desktop
+// Copyright (C) 2007-2016 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
+//
+// 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, or (at your option) any later version.
//
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
+// SALOME VTKViewer : build VTK viewer into Salome desktop
// File :
// Author :
-// Module : SALOME
-// $Header$
#ifndef SVTK_Renderer_h
#define SVTK_Renderer_h
#include "SVTK.h"
+#include "VTKViewer.h"
+#include "SALOME_ListIO.hxx"
#include <vtkObject.h>
#include <vtkSmartPointer.h>
class vtkCellPicker;
class vtkProperty;
-class SVTK_RectPicker;
+class SVTK_AreaPicker;
class VTKViewer_Trihedron;
class VTKViewer_Transform;
class VTKViewer_Actor;
class SVTK_Selector;
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
-//! The class is a container for #vtkRenderer instance.
-/*!
+/*!
+ \class SVTK_Renderer
+ The class is a container for #vtkRenderer instance.
Main goal of the class is to apply common behaviour to all #SALOME_Actor, like
selection and preselection colors.
Also, the class is responsible for management of internal actors like trihedron an so on.
*/
-//============================================================================
class SVTK_EXPORT SVTK_Renderer : public vtkObject
{
public:
virtual
void
Initialize(vtkRenderWindowInteractor* theInteractor,
- SVTK_Selector* theSelector);
+ SVTK_Selector* theSelector);
//----------------------------------------------------------------------------
- //! This method publishes pointed actor into the renderer
+ //! Publishes pointed actor into the renderer
virtual
void
- AddActor(VTKViewer_Actor* theActor);
+ AddActor(VTKViewer_Actor* theActor, bool theIsAdjustActors = true);
- //! This method removes pointed actor from the renderer
+ //! Removes pointed actor from the renderer
virtual
void
- RemoveActor(VTKViewer_Actor* theActor);
+ RemoveActor(VTKViewer_Actor* theActor, bool theIsAdjustActors = true);
//! Get special container that keeps scaling of the scene
VTKViewer_Transform*
GetTransform();
- //! This method allow to apply a scale on the whole scene
+ //! Allows to apply a scale on the whole scene
virtual
void
SetScale( double theScale[3] );
- //! This method allow to get a scale that is applied on the whole scene
+ //! Allows to get a scale that is applied on the whole scene
void
GetScale( double theScale[3] );
//! Applies color and size (PointSize and LineWidth) of primitives in selection mode
void
SetSelectionProp(const double& theRed = 1,
- const double& theGreen = 1,
- const double& theBlue = 0,
- const int& theWidth = 5);
+ const double& theGreen = 1,
+ const double& theBlue = 0,
+ const int& theWidth = 5);
//! Applies color and size (PointSize and LineWidth) of primitives in preselection mode
void
SetPreselectionProp(const double& theRed = 0,
- const double& theGreen = 1,
- const double& theBlue = 1,
- const int& theWidth = 5);
+ const double& theGreen = 1,
+ const double& theBlue = 1,
+ const int& theWidth = 5);
- //! Setup requested tollerance for the picking
+ //! Setup requested tolerance for the picking
void
SetSelectionTolerance(const double& theTolNodes = 0.025,
- const double& theTolCell = 0.001);
+ const double& theTolCell = 0.001,
+ const double& theTolObjects = 0.025);
//----------------------------------------------------------------------------
//! Adjust all intenal actors (trihedron and graduated rules) to the scene
//! Set size of the trihedron in percents from bounding box of the scene
void
- SetTrihedronSize(int theSize, const bool theRelative = true);
+ SetTrihedronSize(double theSize, const bool theRelative = true);
//! Get size of the trihedron in percents from bounding box of the scene
- int
+ double
GetTrihedronSize() const;
//! Shows if the size of the trihedron is relative
void
OnViewTrihedron();
+ //! Set Toggle trihedron visibility
+
+ void
+ SetTrihedronVisibility( const bool );
+
//! Adjust size of the trihedron to the bounding box of the scene
void
OnAdjustTrihedron();
//----------------------------------------------------------------------------
//! Fit all presentation in the scene into the window
void OnFitAll();
-
+
+ //----------------------------------------------------------------------------
+ //! Fit all selected presentation in the scene
+ void onFitSelection();
+
+ //! Fit given presentations in the scene
+ void OnFitIObjects(const SALOME_ListIO& objects);
+
//! Set camera into predefined state
void OnResetView();
//! To reset direction of the camera to left view
void OnLeftView();
- protected:
+ //! To rotate view 90 degrees clockwise
+ void onClockWiseView();
+
+ //! To rotate view 90 degrees counterclockwise
+ void onAntiClockWiseView();
+
+protected:
SVTK_Renderer();
~SVTK_Renderer();
//----------------------------------------------------------------------------
// Priority at which events are processed
- float myPriority;
+ double myPriority;
// Used to process events
vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
vtkSmartPointer<vtkPointPicker> myPointPicker;
vtkSmartPointer<vtkCellPicker> myCellPicker;
- vtkSmartPointer<SVTK_RectPicker> myPointRectPicker;
- vtkSmartPointer<SVTK_RectPicker> myCellRectPicker;
+ vtkSmartPointer<SVTK_AreaPicker> myPointAreaPicker;
+ vtkSmartPointer<SVTK_AreaPicker> myCellAreaPicker;
vtkSmartPointer<vtkProperty> myPreHighlightProperty;
vtkSmartPointer<vtkProperty> myHighlightProperty;
//----------------------------------------------------------------------------
vtkSmartPointer<SVTK_CubeAxesActor2D> myCubeAxes;
vtkSmartPointer<VTKViewer_Trihedron> myTrihedron;
- int myTrihedronSize;
+ double myTrihedronSize;
bool myIsTrihedronRelative;
- float myBndBox[6];
+ double myBndBox[6];
};
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
#endif