X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FOBJECT%2FGEOM_Actor.h;h=20b08b4c928b9f4ec8b3d361296554d590f3554c;hb=74ccd03bbb0d315890c1ae77c09cedaff2927825;hp=f2236aea1f763e1af9ceac7e8f9d0de0f815da73;hpb=9499b99fe2dcb53e1ea364f97986f8f432b04600;p=modules%2Fgeom.git diff --git a/src/OBJECT/GEOM_Actor.h b/src/OBJECT/GEOM_Actor.h index f2236aea1..20b08b4c9 100644 --- a/src/OBJECT/GEOM_Actor.h +++ b/src/OBJECT/GEOM_Actor.h @@ -1,78 +1,112 @@ -// GEOM OBJECT : interactive object for Geometry entities visualization +// Copyright (C) 2007-2010 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 // -// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// GEOM OBJECT : interactive object for Geometry entities visualization // File : GEOM_Actor.h // Author : Christophe ATTANASIO // Module : GEOM // $Header$ - +// #ifndef GEOM_ACTOR_H #define GEOM_ACTOR_H -#include "SALOME_Actor.h" +#include "GEOM_OBJECT_defs.hxx" +#include "GEOM_SmartPtr.h" + +#include -//OpenCASCADE #include -#include +#include class vtkCamera; -class TopoDS_Shape; -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif +class GEOM_VertexSource; +typedef GEOM_SmartPtr PVertexSource; -class SALOME_WNT_EXPORT GEOM_Actor : public SALOME_Actor { - public: - vtkTypeMacro(GEOM_Actor,SALOME_Actor); +class GEOM_EdgeSource; +typedef GEOM_SmartPtr PEdgeSource; + +class GEOM_WireframeFace; +typedef GEOM_SmartPtr PWFaceSource; + +class GEOM_ShadingFace; +typedef GEOM_SmartPtr PSFaceSource; + +class vtkRenderer; + +class vtkAppendPolyData; +typedef GEOM_SmartPtr PAppendFilter; +class GEOM_OBJECT_EXPORT GEOM_Actor: public SALOME_Actor +{ +public: + vtkTypeMacro(GEOM_Actor,SALOME_Actor); static GEOM_Actor* New(); + void SetShape(const TopoDS_Shape& theShape, + float theDeflection, + bool theIsVector = false); + + void SetDeflection(float theDeflection); + float GetDeflection() const{ return myDeflection;} + + 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); + // 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(); - void setInputShape(const TopoDS_Shape& ashape,double adef1,int imode); - + void setInputShape(const TopoDS_Shape& ashape, double adef1, + int imode, bool isVector = false); double getDeflection(); - void setDeflection(double adefl); + double isVector(); // SubShape void SubShapeOn(); void SubShapeOff(); - - // Display Mode - virtual void setDisplayMode(int); // Highlight virtual void highlight(bool theHighlight); @@ -80,11 +114,6 @@ class SALOME_WNT_EXPORT GEOM_Actor : public SALOME_Actor { void ShallowCopy(vtkProp *prop); - // Properties - void SetHighlightProperty(vtkProperty* Prop); - void SetWireframeProperty(vtkProperty* Prop); - void SetShadingProperty(vtkProperty* Prop); - // Opacity void SetOpacity(vtkFloatingPointType opa); vtkFloatingPointType GetOpacity(); @@ -93,36 +122,106 @@ class SALOME_WNT_EXPORT GEOM_Actor : public SALOME_Actor { void SetColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b); void GetColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b); - virtual bool IsInfinite() {return myIsInfinite;} - protected: + virtual bool IsInfinitive(); + + // 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); + + //! Vector mode management + virtual + void + SetVectorMode(const bool theMode); + + virtual + bool + GetVectorMode(); + +protected: + void SetModified(); + + void GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result); GEOM_Actor(); ~GEOM_Actor(); - GEOM_Actor(const GEOM_Actor&) {}; - void operator=(const GEOM_Actor&) {}; - void CreateWireframeMapper(); - void CreateShadingMapper(); - void CreateMapper(int theMode); - void GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result); +private: + TopoDS_Shape myShape; + int myNbIsos[2]; + bool isOnlyVertex; + float myDeflection; + bool myIsForced; - private: + // EDisplayMode myDisplayMode; + bool myIsSelected; + bool myVectorMode; - bool subshape; - bool myIsInfinite; + PDeviceActor myVertexActor; + PVertexSource myVertexSource; - TopoDS_Shape myShape; - double deflection; + PDeviceActor myIsolatedEdgeActor; + PEdgeSource myIsolatedEdgeSource; - vtkMapper* ShadingMapper; - vtkMapper* WireframeMapper; + PDeviceActor myOneFaceEdgeActor; + PEdgeSource myOneFaceEdgeSource; - vtkProperty* ShadingProperty; - vtkProperty* WireframeProperty; - vtkProperty* HighlightProperty; -}; + PDeviceActor mySharedEdgeActor; + PEdgeSource mySharedEdgeSource; + + PDeviceActor myWireframeFaceActor; + PWFaceSource myWireframeFaceSource; + PDeviceActor myShadingFaceActor; + PSFaceSource myShadingFaceSource; + + PDeviceActor myHighlightActor; + vtkSmartPointer myHighlightProp; + vtkSmartPointer myPreHighlightProp; + vtkSmartPointer myShadingFaceProp; + + PAppendFilter myAppendFilter; + PPolyDataMapper myPolyDataMapper; + + virtual void SetMapper(vtkMapper*); + + GEOM_Actor(const GEOM_Actor&); + void operator=(const GEOM_Actor&); +}; #endif //GEOM_ACTOR_H +