-// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+// Copyright (C) 2007-2013 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.
//
-// This library is distributed in the hope that it will be useful
+// 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.
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
#ifndef SVTK_VIEW_H
#define SVTK_VIEW_H
#endif
#include "SVTK.h"
-#include "SALOME_InteractiveObject.hxx"
-#include <qobject.h>
+#include <SALOME_InteractiveObject.hxx>
+#include <SALOME_ListIO.hxx>
+
+#include <QObject>
class vtkActorCollection;
class vtkRenderer;
+class vtkProperty;
-class SVTK_MainWindow;
+class SVTK_ViewWindow;
class SVTK_Renderer;
class SALOME_Actor;
-//! Main purpose of the class is to provide a way to customize #SVTK_MainWindow.
+class QMouseEvent;
+class QWheelEvent;
+class QKeyEvent;
+class QContextMenuEvent;
+class QColor;
+
+
+//! Main purpose of the class is to provide a way to customize #SVTK_ViewWindow.
/*!
- This class is initialized by #SVTK_MainWindow and just pass Qt signals from
- corresponding #SVTK_RenderWindowInteractor of the #SVTK_MainWindow.
- Its main purpose is to provide a simple and flexible way to customize the #SVTK_MainWindow.
- So, in your own viewer it is possible to derive new #SVTK_MainWindow and
+ This class is initialized by #SVTK_ViewWindow and just pass Qt signals from
+ corresponding #SVTK_RenderWindowInteractor of the #SVTK_ViewWindow.
+ Its main purpose is to provide a simple and flexible way to customize the #SVTK_ViewWindow.
+ So, in your own viewer it is possible to derive new #SVTK_ViewWindow and
use existing functionality without any modifications.
*/
class SVTK_EXPORT SVTK_SignalHandler : public QObject
Q_OBJECT;
public:
- SVTK_SignalHandler(SVTK_MainWindow* theMainWindow);
+ SVTK_SignalHandler(SVTK_ViewWindow* theMainWindow);
virtual
~SVTK_SignalHandler();
- //! Get reference to its #SVTK_MainWindow
- SVTK_MainWindow*
+ //! Get reference to its #SVTK_ViewWindow
+ SVTK_ViewWindow*
GetMainWindow();
//----------------------------------------------------------------------------
- //! Redirect the request to #SVTK_MainWindow::Repaint (just for flexibility)
+ //! Redirect the request to #SVTK_ViewWindow::Repaint (just for flexibility)
void
Repaint(bool theUpdateTrihedron = true);
//----------------------------------------------------------------------------
- //! Redirect the request to #SVTK_MainWindow::GetRenderer (just for flexibility)
+ //! Redirect the request to #SVTK_ViewWindow::GetRenderer (just for flexibility)
SVTK_Renderer*
GetRenderer();
- //! Redirect the request to #SVTK_MainWindow::getRenderer (just for flexibility)
+ //! Redirect the request to #SVTK_ViewWindow::getRenderer (just for flexibility)
vtkRenderer*
getRenderer();
void selectionChanged();
protected:
- SVTK_MainWindow* myMainWindow;
+ SVTK_ViewWindow* myMainWindow;
};
Q_OBJECT;
public:
- SVTK_View(SVTK_MainWindow* theMainWindow);
+ SVTK_View(SVTK_ViewWindow* theMainWindow);
virtual
~SVTK_View();
//! To highlight a VTK presentation with the same #SALOME_InteractiveObject
void
highlight(const Handle(SALOME_InteractiveObject)& IObject,
- bool highlight,
- bool immediatly = true);
+ bool highlight,
+ bool immediatly = true);
//! To unhighlight all VTK presentations
void
void
rename(const Handle(SALOME_InteractiveObject)& IObject,
- const QString& newName);
+ const QString& newName);
//----------------------------------------------------------------------------
// Displaymode management
//! Switch representation wireframe/shading
void
SetDisplayMode(const Handle(SALOME_InteractiveObject)& IObject,
- int theMode);
+ int theMode);
//! Change all actors to wireframe
void
void
ChangeRepresentationToSurface();
+ //! Change all actors to surface with edges
+ void
+ ChangeRepresentationToSurfaceWithEdges();
+
//! Change to wireframe a list of vtkactor
void
ChangeRepresentationToWireframe(vtkActorCollection* theListofActors);
void
ChangeRepresentationToSurface(vtkActorCollection* theListofActors);
+ //! Change to surface with edges a list of vtkactor
+ void
+ ChangeRepresentationToSurfaceWithEdges(vtkActorCollection* theListofActors);
+
//! Change transparency
void
SetTransparency(const Handle(SALOME_InteractiveObject)& theIObject,
- float trans);
+ float trans);
//! Get current transparency
float
//! Change color
void
SetColor(const Handle(SALOME_InteractiveObject)& theIObject,
- const QColor& theColor);
+ const QColor& theColor);
//! Get current color
QColor
GetColor(const Handle(SALOME_InteractiveObject)& theIObject);
+ //! Change material
+ void
+ SetMaterial(const Handle(SALOME_InteractiveObject)& theIObject,
+ vtkProperty* thePropF, vtkProperty* thePropB);
+
+ //! Get current front material
+ vtkProperty*
+ GetFrontMaterial(const Handle(SALOME_InteractiveObject)& theIObject);
+
+ //! Get current back material
+ vtkProperty*
+ GetBackMaterial(const Handle(SALOME_InteractiveObject)& theIObject);
+
//----------------------------------------------------------------------------
// Erase Display functions
//! To erase all existing VTK presentations
//! To erase VTK presentation with defined #SALOME_InteractiveObject
void
Erase(const Handle(SALOME_InteractiveObject)& IObject,
- bool immediatly = true);
+ bool immediatly = true);
void
Remove(const Handle(SALOME_InteractiveObject)& IObject,
- bool immediatly = true);
+ bool immediatly = true);
//! To display VTK presentation with defined #SALOME_InteractiveObject
void
Display(const Handle(SALOME_InteractiveObject)& IObject,
- bool immediatly = true);
+ bool immediatly = true);
//! To display VTK presentation with defined #SALOME_InteractiveObject and erase all anothers
void
//! To display the VTK presentation
void
Display(SALOME_Actor* SActor,
- bool immediatly = true);
+ bool immediatly = true);
//! To erase the VTK presentation
void
Erase(SALOME_Actor* SActor,
- bool immediatly = true);
+ bool immediatly = true);
//! To remove the VTK presentation
void
Remove(SALOME_Actor* SActor,
- bool updateViewer = true);
+ bool updateViewer = true);
+
+ //! Collect objects visible in viewer
+ void
+ GetVisible( SALOME_ListIO& theList );
//----------------------------------------------------------------------------
//! Redirect the request to #SVTK_Renderer::SetPreselectionProp
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);
//! Redirect the request to #SVTK_Renderer::SetPreselectionProp
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);
//! Redirect the request to #SVTK_Renderer::SetPreselectionProp
void
SetSelectionTolerance(const double& theTolNodes = 0.025,
- const double& theTolCell = 0.001);
+ const double& theTolCell = 0.001,
+ const double& theTolObjects = 0.025);
protected:
int myDisplayMode;