X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FOBJECT%2FGEOM_Actor.h;h=20b08b4c928b9f4ec8b3d361296554d590f3554c;hb=74ccd03bbb0d315890c1ae77c09cedaff2927825;hp=c40dd100165ad5f6ed87457e4ec9fa8815c01e8e;hpb=0f1369c27fd6a84ba1149c3c5f3ed181acc055f1;p=modules%2Fgeom.git diff --git a/src/OBJECT/GEOM_Actor.h b/src/OBJECT/GEOM_Actor.h index c40dd1001..20b08b4c9 100644 --- a/src/OBJECT/GEOM_Actor.h +++ b/src/OBJECT/GEOM_Actor.h @@ -1,125 +1,227 @@ -// 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 +// +// 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. // -// 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 // + +// 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; +class GEOM_VertexSource; +typedef GEOM_SmartPtr PVertexSource; -#ifdef _WIN_32 -#define VTKOCC_EXPORT __declspec (dllexport) -#else -#define VTKOCC_EXPORT -#endif -class VTKOCC_EXPORT GEOM_Actor : public SALOME_Actor { +class GEOM_EdgeSource; +typedef GEOM_SmartPtr PEdgeSource; +class GEOM_WireframeFace; +typedef GEOM_SmartPtr PWFaceSource; - public: - vtkTypeMacro(GEOM_Actor,SALOME_Actor); +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 - void setDisplayMode(int); // Highlight - void highlight(Standard_Boolean highlight); - bool hasHighlight(); + virtual void highlight(bool theHighlight); + virtual bool hasHighlight() { return true; } void ShallowCopy(vtkProp *prop); - // Properties - void SetHighlightProperty(vtkProperty* Prop); - void SetWireframeProperty(vtkProperty* Prop); - void SetShadingProperty(vtkProperty* Prop); - // Opacity - void SetOpacity(float opa); - float GetOpacity(); + void SetOpacity(vtkFloatingPointType opa); + vtkFloatingPointType GetOpacity(); // Color - void SetColor(float r,float g,float b); - void GetColor(float& r,float& g,float& b); + void SetColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b); + void GetColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b); + + 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); - protected: + //! 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; + PDeviceActor myVertexActor; + PVertexSource myVertexSource; - TopoDS_Shape myShape; - double deflection; + PDeviceActor myIsolatedEdgeActor; + PEdgeSource myIsolatedEdgeSource; + + PDeviceActor myOneFaceEdgeActor; + PEdgeSource myOneFaceEdgeSource; + + PDeviceActor mySharedEdgeActor; + PEdgeSource mySharedEdgeSource; - vtkMapper* ShadingMapper; - vtkMapper* WireframeMapper; + PDeviceActor myWireframeFaceActor; + PWFaceSource myWireframeFaceSource; - vtkProperty* ShadingProperty; - vtkProperty* WireframeProperty; - vtkProperty* HighlightProperty; + 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 + +