Salome HOME
Join modifications from branch OCC_development_for_3_2_0a2
[modules/visu.git] / src / OBJECT / VISU_Actor.h
index b6925202f678b06dfc78208be3624564d70333f7..09d4d4bbc41f22280a2bb6f759736e5f950e9de6 100644 (file)
@@ -21,8 +21,8 @@
 //
 //
 //
-//  File   : VISU_Actor.h
-//  Author : Laurent CORNABE with the help of Nicolas REJNERI
+//  File   : 
+//  Author : 
 //  Module : VISU
 //  $Header$
 
 #define VISU_ACTOR_H
 
 #include "SALOME_Actor.h"
-#include "SALOME_GeometryFilter.h"
+#include "VISU_ActorFactory.h"
+#include "VISU_BoostSignals.h"
 
-#include <stdexcept>
 #include <string>
+#include <vtkSmartPointer.h>
 
 class vtkProp;
 class vtkProperty;
-class vtkShrinkPolyData;
-
+class vtkDataSetMapper;
+class vtkTextMapper;
+class vtkTextActor;
+class vtkInteractorStyle;
+class VTKViewer_ShrinkFilter;
 class VISU_PipeLine;
 
-namespace VISU { 
-  class Prs3d_i;
-}
-
 #ifdef _WIN_32
 #define VTKOCC_EXPORT __declspec (dllexport)
 #else
 #define VTKOCC_EXPORT VTK_EXPORT
 #endif
 
-class VTKOCC_EXPORT VISU_Actor : public SALOME_Actor {
+namespace VISU 
+{
+  class Prs3d_i;
+}
+
+//----------------------------------------------------------------------------
+class VTKOCC_EXPORT VISU_Actor : 
+  public SALOME_Actor,
+  public boost::signalslib::trackable
+{
  public:
   vtkTypeMacro(VISU_Actor,SALOME_Actor);
-  void ShallowCopy(vtkProp *prop);
-  static VISU_Actor* New();
-  ~VISU_Actor();
-
-  virtual void setIO(const Handle(SALOME_InteractiveObject)& theIO);
-
-  VISU::Prs3d_i* GetPrs3d(){ return myPrs3d;}
-  virtual void SetPrs3d(VISU::Prs3d_i* thePrs3d);
-
-  virtual VISU_PipeLine* GetPipeLine() { return myPipeLine;}
-  virtual void SetPipeLine(VISU_PipeLine* thePipeLine) ;
-
-  VISU_Actor* GetParent(){ return myParent;}
-  virtual void SetParent(VISU_Actor* theParent);
-
-  virtual void highlight(Standard_Boolean highlight);
-  Standard_Boolean isHighlighted() { return true; };
-
-  virtual void SetOpacity(float theValue);
-  virtual float GetOpacity();
-
-  virtual void SetShrinkable(bool theIsShrinkable);
-  virtual bool GetShrinkable() { return myIsShrinkable;}
-
-  virtual void SetRepresentation(int theMode);
-
-  virtual bool IsShrunk() { return myIsShrunk;}
-  virtual void SetShrink(float theFactor = 0.8); 
-  virtual void UnShrink(); 
-
-  virtual void SetVisibility(int theMode);
-  virtual int GetVisibility();
-
-  virtual void SetProperty(vtkProperty* theProperty);
-  virtual vtkProperty* GetProperty();
-
-  virtual void SetLineWidth(float theLineWidth);
-  virtual float GetLineWidth();
-  
-  int GetObjId(int theVtkID);
-  TVectorId GetVtkId(int theObjID);
-
-  bool IsHighlighting;
-  std::string myFieldName;
 
+  static 
+  VISU_Actor* 
+  New();
+
+  void
+  ShallowCopy(vtkProp *prop);
+
+  virtual
+  void
+  ShallowCopyPL(VISU_PipeLine* thePipeLine);
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  setIO(const Handle(SALOME_InteractiveObject)& theIO);
+
+  //----------------------------------------------------------------------------
+  VISU::Prs3d_i* 
+  GetPrs3d();
+
+  virtual
+  void
+  SetPrs3d(VISU::Prs3d_i* thePrs3d);
+
+  //----------------------------------------------------------------------------
+  VISU::TActorFactory* 
+  GetFactory();
+
+  virtual
+  void
+  SetFactory(VISU::TActorFactory* theActorFactory);
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  UpdateFromFactory();
+
+  virtual
+  void
+  RemoveFromRender();
+
+  //----------------------------------------------------------------------------
+  virtual
+  VISU_PipeLine* 
+  GetPipeLine();
+
+  virtual 
+  void
+  SetPipeLine(VISU_PipeLine* thePipeLine);
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  SetRepresentation(int theMode);
+
+  //----------------------------------------------------------------------------
+  virtual
+  bool
+  IsShrunkable();
+
+  virtual
+  bool
+  IsShrunk();
+
+  virtual
+  void
+  SetShrink();
+
+  virtual
+  void
+  UnShrink(); 
+
+  virtual
+  void
+  SetShrinkable(bool theIsShrinkable);
+
+  virtual
+  void
+  SetShrinkFactor(float theFactor = 0.8); 
+
+  virtual
+  float
+  GetShrinkFactor();
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  SetOpacity(float theValue);
+
+  virtual
+  float
+  GetOpacity();
+
+  virtual
+  void
+  SetLineWidth(float theLineWidth);
+
+  virtual
+  float
+  GetLineWidth();
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  AddToRender( vtkRenderer* ); 
+
+  virtual
+  void
+  RemoveFromRender( vtkRenderer* );
+
+  //----------------------------------------------------------------------------
+  virtual
+  bool
+  PreHighlight(vtkInteractorStyle* theInteractorStyle, 
+              SVTK_SelectionEvent* theSelectionEvent,
+              bool theIsHighlight);
+
+  virtual
+  void 
+  SetVTKMapping(bool theIsVTKMapping); 
+
+  virtual
+  bool 
+  IsVTKMapping() const;
+
+  virtual
+  vtkDataSet* 
+  GetInput(); 
+
+  //----------------------------------------------------------------------------
+  virtual
+  vtkIdType
+  GetNodeObjId(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetNodeVTKID(vtkIdType theID);
+
+  virtual
+  float* 
+  GetNodeCoord(vtkIdType theObjID);
+
+  virtual
+  vtkIdType
+  GetElemObjId(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetElemVTKID(vtkIdType theID);
+
+  virtual
+  vtkCell* 
+  GetElemCell(vtkIdType theObjID);
+
+  //----------------------------------------------------------------------------
  protected:
   VISU_Actor();
+
+  virtual
+  ~VISU_Actor();
  
-  VISU_Actor* myParent;
+  virtual 
+  void
+  SetMapperInput(vtkDataSet* theDataSet);
+
+  virtual
+  VISU_PipeLine* 
+  GetCurrentPL();
+
+  //----------------------------------------------------------------------------
+  bool myIsVTKMapping;
   VISU::Prs3d_i* myPrs3d;
-  VISU_PipeLine* myPipeLine;
-  vtkProperty* HighlightProperty;
+  vtkSmartPointer<VISU_PipeLine> myPipeLine;
+  vtkSmartPointer<vtkDataSetMapper> myMapper;
+
+  VISU::TActorFactory* myActorFactory;
+  boost::signal1<void,VISU_Actor*> myDestroySignal;
 
-  vtkShrinkPolyData* myShrinkFilter;
+  vtkSmartPointer<VTKViewer_ShrinkFilter> myShrinkFilter;
   bool myIsShrinkable;
   bool myIsShrunk;
+
+  vtkSmartPointer<vtkTextMapper> myAnnotationMapper;
+  vtkSmartPointer<vtkTextActor>  myAnnotationActor;
 };
 
 #endif //VISU_ACTOR_H