2009-02-13 17:16:39 +05:00
|
|
|
// Copyright (C) 2007-2008 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.
|
2003-07-09 20:44:57 +06:00
|
|
|
//
|
2009-02-13 17:16:39 +05:00
|
|
|
// 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.
|
2003-07-09 20:44:57 +06:00
|
|
|
//
|
2009-02-13 17:16:39 +05:00
|
|
|
// 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
|
2003-07-09 20:44:57 +06:00
|
|
|
//
|
2009-02-13 17:16:39 +05:00
|
|
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
2003-07-09 20:44:57 +06:00
|
|
|
//
|
2009-02-13 17:16:39 +05:00
|
|
|
// GEOM OBJECT : interactive object for Geometry entities visualization
|
2003-07-09 20:44:57 +06:00
|
|
|
// File : GEOM_Actor.h
|
|
|
|
// Author : Christophe ATTANASIO
|
|
|
|
// Module : GEOM
|
2003-05-12 21:09:12 +06:00
|
|
|
// $Header$
|
2009-02-13 17:16:39 +05:00
|
|
|
//
|
2003-05-12 21:09:12 +06:00
|
|
|
#ifndef GEOM_ACTOR_H
|
|
|
|
#define GEOM_ACTOR_H
|
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
#include "GEOM_OBJECT_defs.hxx"
|
2009-02-13 17:16:39 +05:00
|
|
|
#include "GEOM_SmartPtr.h"
|
2008-03-07 12:45:34 +05:00
|
|
|
|
2009-02-13 17:16:39 +05:00
|
|
|
#include <SALOME_Actor.h>
|
2003-05-12 21:09:12 +06:00
|
|
|
|
|
|
|
#include <TopoDS_Shape.hxx>
|
2008-03-07 12:45:34 +05:00
|
|
|
#include <vtkSmartPointer.h>
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2009-02-13 17:16:39 +05:00
|
|
|
class vtkCamera;
|
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
class GEOM_VertexSource;
|
|
|
|
typedef GEOM_SmartPtr<GEOM_VertexSource> PVertexSource;
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
class GEOM_EdgeSource;
|
|
|
|
typedef GEOM_SmartPtr<GEOM_EdgeSource> PEdgeSource;
|
|
|
|
|
|
|
|
class GEOM_WireframeFace;
|
|
|
|
typedef GEOM_SmartPtr<GEOM_WireframeFace> PWFaceSource;
|
|
|
|
|
|
|
|
class GEOM_ShadingFace;
|
|
|
|
typedef GEOM_SmartPtr<GEOM_ShadingFace> PSFaceSource;
|
|
|
|
|
|
|
|
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
|
|
|
class vtkRenderer;
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
class vtkAppendPolyData;
|
|
|
|
typedef GEOM_SmartPtr<vtkAppendPolyData> PAppendFilter;
|
|
|
|
|
|
|
|
class GEOM_OBJECT_EXPORT GEOM_Actor: public SALOME_Actor
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
vtkTypeMacro(GEOM_Actor,SALOME_Actor);
|
2003-05-12 21:09:12 +06:00
|
|
|
static GEOM_Actor* New();
|
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
void SetShape(const TopoDS_Shape& theShape,
|
|
|
|
float theDeflection,
|
|
|
|
bool theIsRelative,
|
|
|
|
bool theIsVector = false);
|
|
|
|
|
|
|
|
void SetDeflection(float theDeflection, bool theIsRelative);
|
|
|
|
float GetDeflection() const{ return myDeflection;}
|
|
|
|
bool GetIsRelative() const{ return myIsRelative;}
|
|
|
|
|
|
|
|
void AddToRender(vtkRenderer* theRenderer);
|
|
|
|
void RemoveFromRender(vtkRenderer* theRenderer);
|
|
|
|
|
|
|
|
enum EDisplayMode{ eWireframe, eShading};
|
|
|
|
|
|
|
|
/* void SetDisplayMode(EDisplayMode theMode); */
|
|
|
|
/* EDisplayMode GetDisplayMode() const { return myDisplayMode;} */
|
|
|
|
|
|
|
|
void SetSelected(bool theIsSelected);
|
|
|
|
bool IsSelected() const { return myIsSelected;}
|
|
|
|
|
|
|
|
// OLD METHODS
|
|
|
|
// Properties
|
|
|
|
void SetHighlightProperty(vtkProperty* Prop);
|
|
|
|
void SetWireframeProperty(vtkProperty* Prop);
|
|
|
|
void SetShadingProperty(vtkProperty* Prop);
|
|
|
|
|
|
|
|
void setDeflection(double adef);
|
|
|
|
virtual void setDisplayMode(int thenewmode);
|
|
|
|
|
2003-05-12 21:09:12 +06:00
|
|
|
// Description:
|
|
|
|
// This causes the actor to be rendered. It, in turn, will render the actor's
|
|
|
|
// property and then mapper.
|
|
|
|
virtual void Render(vtkRenderer *, vtkMapper *);
|
|
|
|
// Description:
|
|
|
|
// Release any graphics resources that are being consumed by this actor.
|
|
|
|
// The parameter window could be used to determine which graphic
|
|
|
|
// resources to release.
|
|
|
|
void ReleaseGraphicsResources(vtkWindow *);
|
|
|
|
const TopoDS_Shape& getTopo();
|
2008-03-07 12:45:34 +05:00
|
|
|
void setInputShape(const TopoDS_Shape& ashape, double adef1,
|
|
|
|
int imode, bool isVector = false);
|
2003-05-12 21:09:12 +06:00
|
|
|
double getDeflection();
|
2008-03-07 12:45:34 +05:00
|
|
|
double isVector();
|
2003-05-12 21:09:12 +06:00
|
|
|
|
|
|
|
// SubShape
|
|
|
|
void SubShapeOn();
|
|
|
|
void SubShapeOff();
|
|
|
|
|
|
|
|
// Highlight
|
2004-12-01 15:39:14 +05:00
|
|
|
virtual void highlight(bool theHighlight);
|
|
|
|
virtual bool hasHighlight() { return true; }
|
2003-05-12 21:09:12 +06:00
|
|
|
|
|
|
|
void ShallowCopy(vtkProp *prop);
|
|
|
|
|
|
|
|
// Opacity
|
2006-05-06 14:44:32 +06:00
|
|
|
void SetOpacity(vtkFloatingPointType opa);
|
|
|
|
vtkFloatingPointType GetOpacity();
|
2003-05-12 21:09:12 +06:00
|
|
|
|
|
|
|
// Color
|
2006-05-06 14:44:32 +06:00
|
|
|
void SetColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
|
|
|
|
void GetColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
|
2004-01-28 19:08:37 +05:00
|
|
|
|
2009-02-13 17:16:39 +05:00
|
|
|
virtual bool IsInfinitive();
|
2008-03-07 12:45:34 +05:00
|
|
|
|
|
|
|
// overloaded functions
|
|
|
|
//! To map current selection to VTK representation
|
|
|
|
virtual
|
|
|
|
void
|
|
|
|
Highlight(bool theHighlight);
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
//! To process prehighlight (called from #SVTK_InteractorStyle)
|
|
|
|
virtual
|
|
|
|
bool
|
|
|
|
PreHighlight(vtkInteractorStyle* theInteractorStyle,
|
|
|
|
SVTK_SelectionEvent* theSelectionEvent,
|
|
|
|
bool theIsHighlight);
|
|
|
|
|
|
|
|
//! To process highlight (called from #SVTK_InteractorStyle)
|
|
|
|
virtual
|
|
|
|
bool
|
|
|
|
Highlight(vtkInteractorStyle* theInteractorStyle,
|
|
|
|
SVTK_SelectionEvent* theSelectionEvent,
|
|
|
|
bool theIsHighlight);
|
|
|
|
|
|
|
|
//! Visibility management
|
|
|
|
virtual
|
|
|
|
void
|
|
|
|
SetVisibility( int );
|
|
|
|
|
|
|
|
//! IsoLines management
|
|
|
|
// theNb[0] - number of U lines
|
|
|
|
// theNb[1] - number of V lines
|
|
|
|
virtual
|
|
|
|
void
|
|
|
|
SetNbIsos(const int theNb[2]);
|
|
|
|
|
|
|
|
virtual
|
|
|
|
void
|
|
|
|
GetNbIsos(int &theNbU,int &theNbV);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void SetShape(const TopoDS_Shape& theShape,
|
|
|
|
const TopTools_IndexedDataMapOfShapeListOfShape& theEdgeMap,
|
|
|
|
bool theIsVector = false);
|
|
|
|
|
|
|
|
void SetModified();
|
|
|
|
|
|
|
|
void GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result);
|
2003-05-12 21:09:12 +06:00
|
|
|
|
|
|
|
GEOM_Actor();
|
|
|
|
~GEOM_Actor();
|
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
private:
|
|
|
|
TopoDS_Shape myShape;
|
|
|
|
int myNbIsos[2];
|
2009-02-17 18:44:20 +05:00
|
|
|
bool isOnlyVertex;
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
float myDeflection;
|
|
|
|
bool myIsRelative;
|
|
|
|
bool myIsForced;
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
// EDisplayMode myDisplayMode;
|
|
|
|
bool myIsSelected;
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
PDeviceActor myVertexActor;
|
|
|
|
PVertexSource myVertexSource;
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
PDeviceActor myIsolatedEdgeActor;
|
|
|
|
PEdgeSource myIsolatedEdgeSource;
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
PDeviceActor myOneFaceEdgeActor;
|
|
|
|
PEdgeSource myOneFaceEdgeSource;
|
2003-05-12 21:09:12 +06:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
PDeviceActor mySharedEdgeActor;
|
|
|
|
PEdgeSource mySharedEdgeSource;
|
2004-12-01 15:39:14 +05:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
PDeviceActor myWireframeFaceActor;
|
|
|
|
PWFaceSource myWireframeFaceSource;
|
2004-12-01 15:39:14 +05:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
PDeviceActor myShadingFaceActor;
|
|
|
|
PSFaceSource myShadingFaceSource;
|
|
|
|
|
|
|
|
PDeviceActor myHighlightActor;
|
|
|
|
vtkSmartPointer<vtkProperty> myHighlightProp;
|
|
|
|
vtkSmartPointer<vtkProperty> myPreHighlightProp;
|
|
|
|
vtkSmartPointer<vtkProperty> myShadingFaceProp;
|
2004-12-01 15:39:14 +05:00
|
|
|
|
2008-03-07 12:45:34 +05:00
|
|
|
PAppendFilter myAppendFilter;
|
|
|
|
PPolyDataMapper myPolyDataMapper;
|
|
|
|
|
|
|
|
virtual void SetMapper(vtkMapper*);
|
|
|
|
|
|
|
|
GEOM_Actor(const GEOM_Actor&);
|
|
|
|
void operator=(const GEOM_Actor&);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif //GEOM_ACTOR_H
|