]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
To sinchronize VTKViewer_Actor and SALOME_Actor
authorapo <apo@opencascade.com>
Fri, 3 Feb 2006 11:53:59 +0000 (11:53 +0000)
committerapo <apo@opencascade.com>
Fri, 3 Feb 2006 11:53:59 +0000 (11:53 +0000)
src/SVTK/SALOME_Actor.cxx
src/SVTK/SALOME_Actor.h
src/VTKViewer/Makefile.in
src/VTKViewer/VTKViewer.cxx [new file with mode: 0644]
src/VTKViewer/VTKViewer_Actor.cxx
src/VTKViewer/VTKViewer_Actor.h

index e8afb660459c56a57c3bb2e224c57bd42f0e80f0..9b1b7937d02b90b562884b45d15d114651c3b99c 100644 (file)
@@ -132,28 +132,11 @@ SALOME_Actor
   myRenderer(NULL),
   myInteractor(NULL),
   mySelectionMode(ActorSelection),
-  myIsHighlighted(false),
-  myIsPreselected(false),
-  myRepresentation(VTK_SURFACE),
-  myDisplayMode(1),
-  myProperty(vtkProperty::New()),
-  PreviewProperty(NULL),
-  myIsInfinite(false),
-  myIsResolveCoincidentTopology(true),
-  myStoreMapping(false),
-  myGeomFilter(VTKViewer_GeometryFilter::New()),
-  myTransformFilter(VTKViewer_TransformFilter::New()),
   myPreHighlightActor(SVTK_Actor::New()),
   myHighlightActor(SVTK_Actor::New()),
   myOutline(vtkOutlineSource::New()),
   myOutlineActor(VTKViewer_Actor::New())
 {
-  vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
-                                                                myPolygonOffsetUnits);
-
-  for(int i = 0; i < 6; i++)
-    myPassFilter.push_back(VTKViewer_PassThroughFilter::New());
-
   myPreHighlightActor->Delete();
   myPreHighlightActor->Initialize();
   myPreHighlightActor->PickableOff();
@@ -185,24 +168,7 @@ SALOME_Actor
 //----------------------------------------------------------------------------
 SALOME_Actor
 ::~SALOME_Actor()
-{
-  SetPreviewProperty(NULL);
-
-  myGeomFilter->UnRegisterAllOutputs(); 
-  myGeomFilter->Delete();
-
-  myTransformFilter->UnRegisterAllOutputs();
-  myTransformFilter->Delete();
-
-  for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++){
-    if(myPassFilter[i]){
-      myPassFilter[i]->UnRegisterAllOutputs(); 
-      myPassFilter[i]->Delete();
-    }
-  }
-
-  myProperty->Delete();
-}
+{}
 
 
 //----------------------------------------------------------------------------
@@ -227,20 +193,13 @@ SALOME_Actor
   myIO = theIO; 
 }
 
-const char* 
-SALOME_Actor
-::getName() 
-{ 
-  return myName.c_str(); 
-}
-
 void
 SALOME_Actor
 ::setName(const char* theName)
 {
   if(hasIO())  
     myIO->setName(theName);
-  myName = theName;
+  Superclass::setName(theName);
 }
 
 
@@ -249,9 +208,9 @@ void
 SALOME_Actor
 ::AddToRender(vtkRenderer* theRenderer)
 {
-  myRenderer = theRenderer;
+  Superclass::AddToRender(theRenderer);
 
-  theRenderer->AddActor(this);
+  myRenderer = theRenderer;
 
   theRenderer->AddActor( myPreHighlightActor.GetPointer() );
   theRenderer->AddActor( myHighlightActor.GetPointer() );
@@ -262,7 +221,7 @@ void
 SALOME_Actor
 ::RemoveFromRender(vtkRenderer* theRenderer)
 {
-  theRenderer->RemoveActor(this);
+  Superclass::RemoveFromRender(theRenderer);
 
   theRenderer->RemoveActor( myPreHighlightActor.GetPointer() );
   theRenderer->RemoveActor( myHighlightActor.GetPointer() );
@@ -276,11 +235,6 @@ SALOME_Actor
   return myRenderer;
 }
 
-void
-SALOME_Actor
-::GetChildActors(vtkActorCollection*) 
-{}
-
 
 //----------------------------------------------------------------------------
 void
@@ -331,368 +285,6 @@ SALOME_Actor
 }
 
 
-void
-SALOME_Actor
-::SetMapper(vtkMapper* theMapper)
-{
-  InitPipeLine(theMapper);
-}
-
-void
-SALOME_Actor
-::InitPipeLine(vtkMapper* theMapper)
-{
-  if(theMapper){
-    int anId = 0;
-    myPassFilter[ anId ]->SetInput( theMapper->GetInput() );
-    myPassFilter[ anId + 1]->SetInput( myPassFilter[ anId ]->GetOutput() );
-    
-    anId++; // 1
-    myGeomFilter->SetStoreMapping( myStoreMapping );
-    myGeomFilter->SetInput( myPassFilter[ anId ]->GetOutput() );
-
-    anId++; // 2
-    myPassFilter[ anId ]->SetInput( myGeomFilter->GetOutput() ); 
-    myPassFilter[ anId + 1 ]->SetInput( myPassFilter[ anId ]->GetOutput() );
-
-    anId++; // 3
-    myTransformFilter->SetInput( myPassFilter[ anId ]->GetPolyDataOutput() );
-
-    anId++; // 4
-    myPassFilter[ anId ]->SetInput( myTransformFilter->GetOutput() );
-    myPassFilter[ anId + 1 ]->SetInput( myPassFilter[ anId ]->GetOutput() );
-
-    anId++; // 5
-    if(vtkDataSetMapper* aMapper = dynamic_cast<vtkDataSetMapper*>(theMapper)){
-      aMapper->SetInput(myPassFilter[anId]->GetOutput());
-    }else if(vtkPolyDataMapper* aMapper = dynamic_cast<vtkPolyDataMapper*>(theMapper)){
-      aMapper->SetInput(myPassFilter[anId]->GetPolyDataOutput());
-    }
-  }
-  Superclass::SetMapper(theMapper);
-}
-
-
-//----------------------------------------------------------------------------
-void
-SALOME_Actor
-::Render(vtkRenderer *ren, vtkMapper* m)
-{
-  if(myIsResolveCoincidentTopology){
-    int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology();
-    float aFactor, aUnit; 
-    vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit);
-    
-    vtkMapper::SetResolveCoincidentTopologyToPolygonOffset();
-    vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
-                                                                  myPolygonOffsetUnits);
-    Superclass::Render(ren,m);
-    
-    vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit);
-    vtkMapper::SetResolveCoincidentTopology(aResolveCoincidentTopology);
-  }else{
-    Superclass::Render(ren,m);
-  }
-}
-
-
-void
-SALOME_Actor
-::SetResolveCoincidentTopology(bool theIsResolve) 
-{
-  myIsResolveCoincidentTopology = theIsResolve;
-}
-
-void
-SALOME_Actor
-::SetPolygonOffsetParameters(float factor, float units)
-{
-  myPolygonOffsetFactor = factor;
-  myPolygonOffsetUnits = units;
-}
-
-void
-SALOME_Actor
-::GetPolygonOffsetParameters(float& factor, float& units)
-{
-  factor = myPolygonOffsetFactor;
-  units = myPolygonOffsetUnits;
-}
-
-
-//----------------------------------------------------------------------------
-float
-SALOME_Actor
-::GetShrinkFactor() 
-{ 
-  return 1.0;
-}
-
-bool
-SALOME_Actor
-::IsShrunkable() 
-{ 
-  return false;
-}
-
-bool
-SALOME_Actor
-::IsShrunk() 
-{ 
-  return false;
-}
-
-void
-SALOME_Actor
-::SetShrink() 
-{} 
-
-void
-SALOME_Actor
-::UnShrink() 
-{}
-
-
-//----------------------------------------------------------------------------
-vtkDataSet* 
-SALOME_Actor
-::GetInput()
-{
-  return myPassFilter.front()->GetOutput();
-}
-
-
-unsigned long int
-SALOME_Actor
-::GetMTime()
-{
-  unsigned long mTime = this->Superclass::GetMTime();
-  unsigned long time = myTransformFilter->GetMTime();
-  mTime = ( time > mTime ? time : mTime );
-  if(vtkDataSet *aDataSet = myPassFilter[0]->GetInput()){
-    time = aDataSet->GetMTime();
-    mTime = ( time > mTime ? time : mTime );
-  }
-  return mTime;
-}
-
-
-//----------------------------------------------------------------------------
-void
-SALOME_Actor
-::SetRepresentation(int theMode) 
-{ 
-  switch(myRepresentation){
-  case VTK_POINTS : 
-  case VTK_SURFACE : 
-    myProperty->DeepCopy(GetProperty());
-  }    
-  switch(theMode){
-  case VTK_POINTS : 
-  case VTK_SURFACE : 
-    GetProperty()->DeepCopy(myProperty);
-    break;
-  default:
-    GetProperty()->SetAmbient(1.0);
-    GetProperty()->SetDiffuse(0.0);
-    GetProperty()->SetSpecular(0.0);
-  }
-  switch(theMode){
-  case 3 : 
-    myGeomFilter->SetInside(true);
-    myGeomFilter->SetWireframeMode(true);
-    GetProperty()->SetRepresentation(1);
-    break;
-  case VTK_POINTS : 
-    GetProperty()->SetPointSize(SALOME_POINT_SIZE);  
-    GetProperty()->SetRepresentation(theMode);
-    myGeomFilter->SetWireframeMode(false);
-    myGeomFilter->SetInside(false);
-    break;
-  case VTK_WIREFRAME : 
-    GetProperty()->SetRepresentation(theMode);
-    myGeomFilter->SetWireframeMode(true);
-    myGeomFilter->SetInside(false);
-    break;
-  case VTK_SURFACE : 
-    GetProperty()->SetRepresentation(theMode);
-    myGeomFilter->SetWireframeMode(false);
-    myGeomFilter->SetInside(false);
-    break;
-  }
-  myRepresentation = theMode;
-}
-
-int
-SALOME_Actor
-::GetRepresentation()
-{ 
-  return myRepresentation;
-}
-
-
-//----------------------------------------------------------------------------
-int 
-SALOME_Actor
-::GetNodeObjId(int theVtkID)
-{ 
-  return theVtkID;
-}
-
-float* 
-SALOME_Actor
-::GetNodeCoord(int theObjID)
-{
-  return GetInput()->GetPoint(theObjID);
-}
-
-vtkCell* 
-SALOME_Actor
-::GetElemCell(int theObjID)
-{
-  return GetInput()->GetCell(theObjID);
-}
-
-int
-SALOME_Actor
-::GetElemObjId(int theVtkID) 
-{ 
-  return theVtkID;
-}
-
-
-//=================================================================================
-// function : GetObjDimension
-// purpose  : Return object dimension.
-//            Virtual method shoulb be redifined by derived classes
-//=================================================================================
-int
-SALOME_Actor
-::GetObjDimension( const int theObjId )
-{
-  if ( vtkCell* aCell = GetElemCell(theObjId) )
-    return aCell->GetCellDimension();
-  return 0;
-}
-
-
-void
-SALOME_Actor
-::SetInfinitive(bool theIsInfinite)
-{ 
-  myIsInfinite = theIsInfinite;
-}
-
-
-bool
-SALOME_Actor
-::IsInfinitive()
-{ 
-  return myIsInfinite; 
-}
-
-
-float* 
-SALOME_Actor
-::GetBounds()
-{
-  return Superclass::GetBounds();
-}
-
-
-void
-SALOME_Actor
-::GetBounds(float theBounds[6])
-{
-  Superclass::GetBounds(theBounds);
-}
-
-
-//----------------------------------------------------------------------------
-bool
-SALOME_Actor
-::IsSetCamera() const 
-{ 
-  return false; 
-}
-
-bool
-SALOME_Actor
-::IsResizable() const 
-{ 
-  return false; 
-}
-
-void
-SALOME_Actor
-::SetSize( const float ) 
-{}
-
-
-void 
-SALOME_Actor
-::SetCamera( vtkCamera* ) 
-{}
-
-//----------------------------------------------------------------------------
-void
-SALOME_Actor
-::SetOpacity(float theOpacity)
-{ 
-  myOpacity = theOpacity;
-  GetProperty()->SetOpacity(theOpacity);
-}
-
-float
-SALOME_Actor
-::GetOpacity()
-{
-  return myOpacity;
-}
-
-
-void
-SALOME_Actor
-::SetColor(float r,float g,float b)
-{
-  GetProperty()->SetColor(r,g,b);
-}
-
-void
-SALOME_Actor
-::SetColor(const float theRGB[3])
-{ 
-  SetColor(theRGB[0],theRGB[1],theRGB[2]);
-}
-
-void
-SALOME_Actor
-::GetColor(float& r,float& g,float& b)
-{
-  float aColor[3];
-  GetProperty()->GetColor(aColor);
-  r = aColor[0];
-  g = aColor[1];
-  b = aColor[2];
-}
-
-
-//----------------------------------------------------------------------------
-int
-SALOME_Actor
-::getDisplayMode()
-{ 
-  return myDisplayMode; 
-}
-
-void
-SALOME_Actor::setDisplayMode(int theMode)
-{ 
-  SetRepresentation(theMode+1); 
-  myDisplayMode = GetRepresentation() - 1;
-}
-
-
 //----------------------------------------------------------------
 void
 SALOME_Actor
@@ -713,29 +305,6 @@ SALOME_Actor
 }
 
 
-//----------------------------------------------------------------------------
-bool
-SALOME_Actor
-::hasHighlight() 
-{ 
-  return false; 
-} 
-
-bool
-SALOME_Actor
-::isHighlighted() 
-{ 
-  return myIsHighlighted; 
-}
-
-void
-SALOME_Actor
-::SetPreSelected(bool thePreselect) 
-{ 
-  myIsPreselected = thePreselect;
-}
-
-
 //----------------------------------------------------------------
 void
 SALOME_Actor
@@ -788,7 +357,8 @@ SALOME_Actor
   GetInput()->GetBounds(aBounds);
   myOutline->SetBounds(aBounds);
   myOutlineActor->SetVisibility( GetVisibility() && theIsHighlight );
-  myIsHighlighted = theIsHighlight; 
+
+  Superclass::highlight(theIsHighlight);
 }
 
 
index de4b00b25b2f6b993c1201e97ccab5258bca8ece..d377ff633a148f0a96680711ef0f00c8d08f5f0e 100644 (file)
 
 #include "VTKViewer_Actor.h"
 
-#include <string>
-#include <vector>
-
 #include <vtkSmartPointer.h>
 
-class vtkCell;
-class vtkPicker;
 class vtkPointPicker;
 class vtkCellPicker;
-class vtkDataSet;
-class vtkPolyData;
-class vtkCamera;
-class vtkProperty;
 class vtkOutlineSource;
-class vtkRenderer;
 class vtkInteractorStyle;
 class vtkRenderWindowInteractor;
 
-class VTKViewer_Transform;
-class VTKViewer_GeometryFilter;
-class VTKViewer_TransformFilter;
-class VTKViewer_PassThroughFilter;
-
 class SVTK_Actor;
 class SVTK_RectPicker;
 class SVTK_InteractorStyle;
@@ -72,8 +57,6 @@ class SVTK_InteractorStyle;
 extern int SALOME_POINT_SIZE;
 extern int SALOME_LINE_WIDTH;
 
-class SALOME_Actor;
-
 //! The class is a basic one for all SALOME VTK presentation.
 /*!
   It provide highlight and prehighlight capabilites,
@@ -103,80 +86,12 @@ class SVTK_EXPORT SALOME_Actor : public VTKViewer_Actor
   void
   setIO(const Handle(SALOME_InteractiveObject)& theIO);
 
-  //! Get its name
-  virtual 
-  const char* 
-  getName();
-
   //! Name the #SALOME_Actor
   virtual
   void
   setName(const char* theName);
 
   //----------------------------------------------------------------------------
-  //! Change opacity
-  virtual
-  void
-  SetOpacity(float theOpacity);
-
-  //! Get current opacity
-  virtual
-  float 
-  GetOpacity();
-
-  //! Change color
-  virtual
-  void
-  SetColor(float r,float g,float b);
-
-  //! Get current color
-  virtual
-  void
-  GetColor(float& r,float& g,float& b);
-
-  //! Change color
-  virtual
-  void
-  SetColor(const float theRGB[3]);
-
-  //----------------------------------------------------------------------------
-  // For selection mapping purpose
-  //! Maps VTK index of a node to corresponding object index
-  virtual
-  int 
-  GetNodeObjId(int theVtkID);
-
-  //! Get coordinates of a node for given object index
-  virtual
-  float*
-  GetNodeCoord(int theObjID);
-
-  //! Maps VTK index of a cell to corresponding object index
-  virtual 
-  int
-  GetElemObjId(int theVtkID);
-
-  //! Get corresponding #vtkCell for given object index
-  virtual
-  vtkCell* 
-  GetElemCell(int theObjID);
-
-  //----------------------------------------------------------------------------
-  //! Get dimension of corresponding mesh element
-  virtual
-  int
-  GetObjDimension( const int theObjId );
-
-  //! To insert some additional filters and then sets the given #vtkMapper
-  virtual
-  void
-  SetMapper(vtkMapper* theMapper); 
-
-  //! Allows to get initial #vtkDataSet
-  virtual
-  vtkDataSet* 
-  GetInput(); 
-
   //! Apply view transformation
   virtual
   void
@@ -192,115 +107,6 @@ class SVTK_EXPORT SALOME_Actor : public VTKViewer_Actor
   void
   SetPosition(float _arg[3]);
 
-  //! To calculatate last modified time
-  virtual
-  unsigned long int
-  GetMTime();
-
-  //----------------------------------------------------------------------------
-  //! Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on)
-  virtual
-  void
-  SetRepresentation(int theMode);
-
-  //! Get current representation mode
-  virtual
-  int
-  GetRepresentation();
-
-  //! Get current display mode (obsolete)
-  virtual
-  int
-  getDisplayMode();
-
-  //! Set display mode (obsolete)
-  virtual
-  void
-  setDisplayMode(int theMode);
-
-  //----------------------------------------------------------------------------
-  //! Set infinive flag
-  /*!
-    Infinitive means actor without size (point for example),
-    which is not taken into account in calculation of boundaries of the scene
-  */
-  void
-  SetInfinitive(bool theIsInfinite);
-
-  //! Get infinive flag
-  virtual
-  bool
-  IsInfinitive();
-    
-  //! To calcualte current bounding box
-  virtual
-  float* 
-  GetBounds();
-
-  //! To calcualte current bounding box
-  void
-  GetBounds(float bounds[6]);
-
-  //----------------------------------------------------------------------------
-  virtual
-  bool
-  IsSetCamera() const;
-
-  virtual
-  bool
-  IsResizable() const;
-
-  virtual
-  void
-  SetSize( const float );
-
-  virtual
-  void 
-  SetCamera( vtkCamera* );
-
-  //----------------------------------------------------------------------------
-  //! Set ResolveCoincidentTopology flag
-  void
-  SetResolveCoincidentTopology(bool theIsResolve);
-
-  //! Set ResolveCoincidentTopology parameters
-  void
-  SetPolygonOffsetParameters(float factor, float units);
-
-  //! Get current ResolveCoincidentTopology parameters
-  void
-  GetPolygonOffsetParameters(float& factor, float& units);
-
-  virtual
-  void
-  Render(vtkRenderer *, vtkMapper *);
-
-  //----------------------------------------------------------------------------
-  //! Get current shrink factor
-  virtual
-  float
-  GetShrinkFactor();
-
-  //! Is the actor is shrunkable
-  virtual
-  bool
-  IsShrunkable();
-
-  //! Is the actor is shrunk
-  virtual
-  bool
-  IsShrunk();
-
-  //! Insert shrink filter into pipeline
-  virtual
-  void
-  SetShrink();
-
-  //! Remove shrink filter from pipeline
-  virtual
-  void
-  UnShrink();
-
   //----------------------------------------------------------------------------
   //! Visibility management
   virtual
@@ -322,11 +128,6 @@ class SVTK_EXPORT SALOME_Actor : public VTKViewer_Actor
   vtkRenderer*
   GetRenderer();
 
-  //! Used to obtain all dependent actors
-  virtual
-  void
-  GetChildActors(vtkActorCollection*);
-
   //----------------------------------------------------------------------------
   //! To set interactor in order to use #vtkInteractorObserver devices
   virtual
@@ -338,22 +139,6 @@ class SVTK_EXPORT SALOME_Actor : public VTKViewer_Actor
   void
   Update();
 
-  //----------------------------------------------------------------------------
-  //! Ask, if the descendant of the SALOME_Actor will implement its own highlight or not
-  virtual
-  bool
-  hasHighlight(); 
-
-  //! Ask, if the SALOME_Actor is already highlighted
-  virtual
-  bool
-  isHighlighted();
-
-  //! Set preselection mode
-  virtual
-  void
-  SetPreSelected(bool thePreselect = false);
-
   //----------------------------------------------------------------------------
   //! Set selector in order to the actor at any time can restore current selection
   virtual
@@ -411,42 +196,17 @@ class SVTK_EXPORT SALOME_Actor : public VTKViewer_Actor
   void
   SetHighlightProperty(vtkProperty* theProperty);
 
-  vtkSetObjectMacro(PreviewProperty,vtkProperty);
-
  protected:
   //----------------------------------------------------------------------------
   vtkRenderWindowInteractor* myInteractor;
   vtkRenderer* myRenderer;
 
-  bool myIsResolveCoincidentTopology;
-  float myPolygonOffsetFactor;
-  float myPolygonOffsetUnits;
-
   Handle(SALOME_InteractiveObject) myIO;
-  std::string myName;
-
-  float myOpacity;
-  int myDisplayMode;
-  bool myIsInfinite;
-
-  bool myStoreMapping;
-  VTKViewer_GeometryFilter *myGeomFilter;
-  VTKViewer_TransformFilter *myTransformFilter;
-  std::vector<VTKViewer_PassThroughFilter*> myPassFilter;
-
-  int myRepresentation;
-  vtkProperty *myProperty;
-
-  void
-  InitPipeLine(vtkMapper* theMapper); 
 
   SALOME_Actor();
   ~SALOME_Actor();
 
  protected:
-  vtkProperty *PreviewProperty;
-  bool myIsPreselected;
-  bool myIsHighlighted;
   Selection_Mode mySelectionMode;
   vtkSmartPointer<SVTK_Selector> mySelector;
 
index f36e7362052accdec68b871154d859570ed5663c..dd5f7ea29614c9612bf3a0980a41c9287119719d 100755 (executable)
@@ -67,7 +67,6 @@ LIB_SRC= VTKViewer_Actor.cxx \
         VTKViewer_ViewModel.cxx \
         VTKViewer_ConvexTool.cxx \
         VTKViewer_ViewWindow.cxx               
-  
 
 LIB_MOC = \
          VTKViewer_RenderWindow.h \
@@ -76,10 +75,12 @@ LIB_MOC = \
          VTKViewer_ViewModel.h \
          VTKViewer_ViewWindow.h 
 
-CPPFLAGS+=$(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES)
+BIN = VTKViewer
 
-LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) -lsuit
+CPPFLAGS+=$(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES)
 
-@CONCLUDE@
+LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL)
 
+LDFLAGSFORBIN=$(LDFLAGS) -lqtx -lsuit
 
+@CONCLUDE@
\ No newline at end of file
diff --git a/src/VTKViewer/VTKViewer.cxx b/src/VTKViewer/VTKViewer.cxx
new file mode 100644 (file)
index 0000000..9755466
--- /dev/null
@@ -0,0 +1,57 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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 
+//
+//
+//
+//  File   :
+//  Author :
+//  Module :
+//  $Header$
+
+#include "VTKViewer_Actor.h"
+#include "VTKViewer_CellRectPicker.h"
+#include "VTKViewer_ExtractUnstructuredGrid.h"
+#include "VTKViewer_ConvexTool.h"
+#include "VTKViewer_Filter.h"
+#include "VTKViewer_GeometryFilter.h"
+#include "VTKViewer_AppendFilter.h"
+#include "VTKViewer_Algorithm.h"
+#include "VTKViewer_InteractorStyle.h"
+#include "VTKViewer_PassThroughFilter.h"
+#include "VTKViewer_RectPicker.h"
+#include "VTKViewer_RenderWindow.h"
+#include "VTKViewer_RenderWindowInteractor.h"
+#include "VTKViewer_ShrinkFilter.h"
+#include "VTKViewer_TransformFilter.h"
+#include "VTKViewer_Transform.h"
+#include "VTKViewer_Trihedron.h"
+#include "VTKViewer_Utilities.h"
+#include "VTKViewer_VectorText.h"
+#include "VTKViewer_ViewManager.h"
+#include "VTKViewer_ViewModel.h"
+#include "VTKViewer_ViewWindow.h"
+#include "VTKViewer_Functor.h"
+
+int
+main(int argc, char** argv)
+{
+  return 0;
+}
index 7b9e003536a9c0475bba05af18586a14fcf0eb7e..da05fc98df4fa0c0a82b9c96066d6c83c94210c8 100755 (executable)
-// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+//  SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers
+//
+//  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 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. 
 // 
-// 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 
 //
-// 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/
 //
+//  File   : SALOME_Actor.cxx
+//  Author : Nicolas REJNERI
+//  Module : SALOME
+//  $Header$
+
+/*!
+  \class SALOME_Actor SALOME_Actor.h
+  \brief Abstract class of SALOME Objects in VTK.
+*/
+
+
 #include "VTKViewer_Actor.h"
+
 #include "VTKViewer_Transform.h"
-#include "VTKViewer_GeometryFilter.h"
 #include "VTKViewer_TransformFilter.h"
 #include "VTKViewer_PassThroughFilter.h"
+#include "VTKViewer_GeometryFilter.h"
 
 // VTK Includes
+#include <vtkCell.h>
+#include <vtkPolyData.h>
 #include <vtkObjectFactory.h>
 #include <vtkDataSetMapper.h>
 #include <vtkPolyDataMapper.h>
+#include <vtkProperty.h>
 #include <vtkRenderer.h>
-#include <vtkMapper.h>
-#include <vtkPolyData.h>
-#include <vtkCell.h>
 
+using namespace std;
 
-/*
-static void CopyPoints(vtkUnstructuredGrid* theGrid, vtkDataSet *theSourceDataSet){
-  vtkPoints *aPoints = vtkPoints::New();
-  vtkIdType iEnd = theSourceDataSet->GetNumberOfPoints();
-  aPoints->SetNumberOfPoints(iEnd);
-  for(vtkIdType i = 0; i < iEnd; i++){
-    aPoints->SetPoint(i,theSourceDataSet->GetPoint(i));
-  }
-  theGrid->SetPoints(aPoints);
-  aPoints->Delete();
-}
-*/
+#if defined __GNUC__
+  #if __GNUC__ == 2
+    #define __GNUC_2__
+  #endif
+#endif
 
+int VTKViewer_POINT_SIZE = 5;
+int VTKViewer_LINE_WIDTH = 3;
 
 
+//----------------------------------------------------------------------------
 vtkStandardNewMacro(VTKViewer_Actor);
 
 
-/*!Constructor.Initialize default parameters.*/
-VTKViewer_Actor::VTKViewer_Actor(){
-  myIsHighlighted = myIsPreselected = false;
-
-  myRepresentation = 1;
-  myDisplayMode = myRepresentation - 1;
-
-  myProperty = vtkProperty::New();
-  PreviewProperty = NULL;
-
-  myIsInfinite = false;
-  myIsResolveCoincidentTopology = true;
-
+//----------------------------------------------------------------------------
+VTKViewer_Actor
+::VTKViewer_Actor():
+  myIsHighlighted(false),
+  myIsPreselected(false),
+  myRepresentation(VTK_SURFACE),
+  myDisplayMode(1),
+  myProperty(vtkProperty::New()),
+  PreviewProperty(NULL),
+  myIsInfinite(false),
+  myIsResolveCoincidentTopology(true),
+  myStoreMapping(false),
+  myGeomFilter(VTKViewer_GeometryFilter::New()),
+  myTransformFilter(VTKViewer_TransformFilter::New())
+{
   vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
                                                                 myPolygonOffsetUnits);
-  myStoreMapping = false;
-  myGeomFilter = VTKViewer_GeometryFilter::New();
-
-  myTransformFilter = VTKViewer_TransformFilter::New();
 
   for(int i = 0; i < 6; i++)
     myPassFilter.push_back(VTKViewer_PassThroughFilter::New());
-
-  Visibility = Pickable = true;
 }
 
 
-/*!Destructor.*/
-VTKViewer_Actor::~VTKViewer_Actor(){
+//----------------------------------------------------------------------------
+VTKViewer_Actor
+::~VTKViewer_Actor()
+{
   SetPreviewProperty(NULL);
 
-  myGeomFilter->UnRegisterAllOutputs(); 
   myGeomFilter->Delete();
 
-  myTransformFilter->UnRegisterAllOutputs();
   myTransformFilter->Delete();
 
-  for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++){
-    if(myPassFilter[i]){
-      myPassFilter[i]->UnRegisterAllOutputs(); 
+  for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++)
+    if(myPassFilter[i])
       myPassFilter[i]->Delete();
-    }
-  }
+  
   myProperty->Delete();
 }
 
-/*!Add VTKViewer_Actor to renderer.
- *\param theRenderer - vtkRenderer
- */
-void VTKViewer_Actor::AddToRender(vtkRenderer* theRenderer){
+
+//----------------------------------------------------------------------------
+const char* 
+VTKViewer_Actor
+::getName() 
+{ 
+  return myName.c_str(); 
+}
+
+void
+VTKViewer_Actor
+::setName(const char* theName)
+{
+  myName = theName;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VTKViewer_Actor
+::AddToRender(vtkRenderer* theRenderer)
+{
   theRenderer->AddActor(this);
 }
 
-/*!Remove VTKViewer_Actor from renderer.
- *\param theRenderer - vtkRenderer
- */
-void VTKViewer_Actor::RemoveFromRender(vtkRenderer* theRenderer){
+void 
+VTKViewer_Actor
+::RemoveFromRender(vtkRenderer* theRenderer)
+{
   theRenderer->RemoveActor(this);
 }
 
-/*!Add transformation to transform filter.
- *\param theTransform - transformation.
- */
-void VTKViewer_Actor::SetTransform(VTKViewer_Transform* theTransform){
+void
+VTKViewer_Actor
+::GetChildActors(vtkActorCollection*) 
+{}
+
+
+//----------------------------------------------------------------------------
+void
+VTKViewer_Actor
+::SetTransform(VTKViewer_Transform* theTransform)
+{
   myTransformFilter->SetTransform(theTransform);
 }
 
-/*!Set mapper to pipeline.\n
- *Call method for pipeline initialization.
- *\param theMapper - mapper
- */
-void VTKViewer_Actor::SetMapper(vtkMapper* theMapper){
+
+void
+VTKViewer_Actor
+::SetMapper(vtkMapper* theMapper)
+{
   InitPipeLine(theMapper);
 }
 
-/*!Initialize sequence of filters for mapper, if \a theMapper is not null.
- *\param theMapper - mapper
- */
-void VTKViewer_Actor::InitPipeLine(vtkMapper* theMapper){
+void
+VTKViewer_Actor
+::InitPipeLine(vtkMapper* theMapper)
+{
   if(theMapper){
     int anId = 0;
     myPassFilter[ anId ]->SetInput( theMapper->GetInput() );
@@ -156,11 +189,15 @@ void VTKViewer_Actor::InitPipeLine(vtkMapper* theMapper){
       aMapper->SetInput(myPassFilter[anId]->GetPolyDataOutput());
     }
   }
-  vtkLODActor::SetMapper(theMapper);
+  Superclass::SetMapper(theMapper);
 }
 
-/*!*/
-void VTKViewer_Actor::Render(vtkRenderer *ren, vtkMapper* m){
+
+//----------------------------------------------------------------------------
+void
+VTKViewer_Actor
+::Render(vtkRenderer *ren, vtkMapper* m)
+{
   if(myIsResolveCoincidentTopology){
     int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology();
     float aFactor, aUnit; 
@@ -169,52 +206,86 @@ void VTKViewer_Actor::Render(vtkRenderer *ren, vtkMapper* m){
     vtkMapper::SetResolveCoincidentTopologyToPolygonOffset();
     vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
                                                                   myPolygonOffsetUnits);
-    vtkLODActor::Render(ren,m);
+    Superclass::Render(ren,m);
     
     vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit);
     vtkMapper::SetResolveCoincidentTopology(aResolveCoincidentTopology);
   }else{
-    vtkLODActor::Render(ren,m);
+    Superclass::Render(ren,m);
   }
 }
 
-/*!Set flag myIsResolveCoincidentTopology to \a theIsResolve.
- *\param theIsResolve - bool flag.
- */
-void VTKViewer_Actor::SetResolveCoincidentTopology(bool theIsResolve) {
+
+void
+VTKViewer_Actor
+::SetResolveCoincidentTopology(bool theIsResolve) 
+{
   myIsResolveCoincidentTopology = theIsResolve;
 }
 
-/*!Sets polygon offset factor and polygon offset units.
- *\param factor - float factor
- *\param units  - float units
- */
-void VTKViewer_Actor::SetPolygonOffsetParameters(float factor, float units){
+void
+VTKViewer_Actor
+::SetPolygonOffsetParameters(float factor, float units)
+{
   myPolygonOffsetFactor = factor;
   myPolygonOffsetUnits = units;
 }
 
-/*!Gets polygon offset factor and polygon offset units.
- *\param factor - output float
- *\param units  - output float
- */
-void VTKViewer_Actor::GetPolygonOffsetParameters(float& factor, float& units){
+void
+VTKViewer_Actor
+::GetPolygonOffsetParameters(float& factor, float& units)
+{
   factor = myPolygonOffsetFactor;
   units = myPolygonOffsetUnits;
 }
 
 
-/*!Get input data set.
- *\retval vtkDataSet pointer.
- */
-vtkDataSet* VTKViewer_Actor::GetInput(){
+//----------------------------------------------------------------------------
+float
+VTKViewer_Actor
+::GetShrinkFactor() 
+{ 
+  return 1.0;
+}
+
+bool
+VTKViewer_Actor
+::IsShrunkable() 
+{ 
+  return false;
+}
+
+bool
+VTKViewer_Actor
+::IsShrunk() 
+{ 
+  return false;
+}
+
+void
+VTKViewer_Actor
+::SetShrink() 
+{} 
+
+void
+VTKViewer_Actor
+::UnShrink() 
+{}
+
+
+//----------------------------------------------------------------------------
+vtkDataSet* 
+VTKViewer_Actor
+::GetInput()
+{
   return myPassFilter.front()->GetOutput();
 }
 
-/*!Get modification time.
- *\retval time - unsigned long.
- */
-unsigned long int VTKViewer_Actor::GetMTime(){
+
+unsigned long int
+VTKViewer_Actor
+::GetMTime()
+{
   unsigned long mTime = this->Superclass::GetMTime();
   unsigned long time = myTransformFilter->GetMTime();
   mTime = ( time > mTime ? time : mTime );
@@ -225,10 +296,12 @@ unsigned long int VTKViewer_Actor::GetMTime(){
   return mTime;
 }
 
-/*!Set representation mode.
- *\param theMode - int.
- */
-void VTKViewer_Actor::SetRepresentation(int theMode) { 
+
+//----------------------------------------------------------------------------
+void
+VTKViewer_Actor
+::SetRepresentation(int theMode) 
+{ 
   switch(myRepresentation){
   case VTK_POINTS : 
   case VTK_SURFACE : 
@@ -240,7 +313,6 @@ void VTKViewer_Actor::SetRepresentation(int theMode) {
     GetProperty()->DeepCopy(myProperty);
     break;
   default:
-    break;
     GetProperty()->SetAmbient(1.0);
     GetProperty()->SetDiffuse(0.0);
     GetProperty()->SetSpecular(0.0);
@@ -248,93 +320,175 @@ void VTKViewer_Actor::SetRepresentation(int theMode) {
   switch(theMode){
   case 3 : 
     myGeomFilter->SetInside(true);
-    GetProperty()->SetRepresentation(1);
+    myGeomFilter->SetWireframeMode(true);
+    GetProperty()->SetRepresentation(VTK_WIREFRAME);
     break;
   case VTK_POINTS : 
     GetProperty()->SetPointSize(VTKViewer_POINT_SIZE);  
-  default :
     GetProperty()->SetRepresentation(theMode);
+    myGeomFilter->SetWireframeMode(false);
+    myGeomFilter->SetInside(false);
+    break;
+  case VTK_WIREFRAME : 
+    GetProperty()->SetRepresentation(theMode);
+    myGeomFilter->SetWireframeMode(true);
     myGeomFilter->SetInside(false);
+    break;
+  case VTK_SURFACE : 
+    GetProperty()->SetRepresentation(theMode);
+    myGeomFilter->SetWireframeMode(false);
+    myGeomFilter->SetInside(false);
+    break;
   }
   myRepresentation = theMode;
 }
 
-/*!Get representation.
- *\retval representation mode.
- */
-int VTKViewer_Actor::GetRepresentation()
+int
+VTKViewer_Actor
+::GetRepresentation()
+{ 
   return myRepresentation;
 }
 
-/*!Get VTK cell by object ID.
- *\param theObjID - object ID.
- *\retval vtkCell pointer.
- */
-vtkCell* VTKViewer_Actor::GetElemCell(int theObjID){
-  return GetInput()->GetCell(theObjID);
+
+//----------------------------------------------------------------------------
+int 
+VTKViewer_Actor
+::GetNodeObjId(int theVtkID)
+{ 
+  return theVtkID;
 }
 
-/*!Get node coordinates by node ID.
- *\param theObjID - node ID.
- *\retval float array of coordinates.
- * \li array[0] - X coordinate.
- * \li array[1] - Y coordinate.
- * \li array[2] - Z coordinate.
- */
-float* VTKViewer_Actor::GetNodeCoord(int theObjID){
+float* 
+VTKViewer_Actor
+::GetNodeCoord(int theObjID)
+{
   return GetInput()->GetPoint(theObjID);
 }
 
+vtkCell* 
+VTKViewer_Actor
+::GetElemCell(int theObjID)
+{
+  return GetInput()->GetCell(theObjID);
+}
+
+int
+VTKViewer_Actor
+::GetElemObjId(int theVtkID) 
+{ 
+  return theVtkID;
+}
+
 
 //=================================================================================
 // function : GetObjDimension
-/*! purpose  : Return object dimension.\n
- *            Virtual method shoulb be redifined by derived classes
- *\param theObjId - object ID.
- */
+// purpose  : Return object dimension.
+//            Virtual method shoulb be redifined by derived classes
 //=================================================================================
-int VTKViewer_Actor::GetObjDimension( const int theObjId )
+int
+VTKViewer_Actor
+::GetObjDimension( const int theObjId )
 {
   if ( vtkCell* aCell = GetElemCell(theObjId) )
     return aCell->GetCellDimension();
   return 0;
 }
 
-/*!Get infinite flag*/
-bool VTKViewer_Actor::IsInfinitive(){ 
+
+void
+VTKViewer_Actor
+::SetInfinitive(bool theIsInfinite)
+{ 
+  myIsInfinite = theIsInfinite;
+}
+
+
+bool
+VTKViewer_Actor
+::IsInfinitive()
+{ 
   return myIsInfinite; 
 }
 
-/*!Set property - opacity.
- *\param theOpacity - new apacity
- */
-void VTKViewer_Actor::SetOpacity(float theOpacity){ 
+
+float* 
+VTKViewer_Actor
+::GetBounds()
+{
+  return Superclass::GetBounds();
+}
+
+
+void
+VTKViewer_Actor
+::GetBounds(float theBounds[6])
+{
+  Superclass::GetBounds(theBounds);
+}
+
+
+//----------------------------------------------------------------------------
+bool
+VTKViewer_Actor
+::IsSetCamera() const 
+{ 
+  return false; 
+}
+
+bool
+VTKViewer_Actor
+::IsResizable() const 
+{ 
+  return false; 
+}
+
+void
+VTKViewer_Actor
+::SetSize( const float ) 
+{}
+
+
+void 
+VTKViewer_Actor
+::SetCamera( vtkCamera* ) 
+{}
+
+//----------------------------------------------------------------------------
+void
+VTKViewer_Actor
+::SetOpacity(float theOpacity)
+{ 
   myOpacity = theOpacity;
   GetProperty()->SetOpacity(theOpacity);
 }
 
-/*!Get property - opacity.
- *\retval float value.
- */
-float VTKViewer_Actor::GetOpacity(){
+float
+VTKViewer_Actor
+::GetOpacity()
+{
   return myOpacity;
 }
 
-/*!Set property - color
- *\param r - float Red value
- *\param g - float Green value
- *\param b - float Blue value
- */
-void VTKViewer_Actor::SetColor(float r,float g,float b){
+
+void
+VTKViewer_Actor
+::SetColor(float r,float g,float b)
+{
   GetProperty()->SetColor(r,g,b);
 }
 
-/*!Get property - color
- *\param r - output float Red value
- *\param g - output float Green value
- *\param b - output float Blue value
- */
-void VTKViewer_Actor::GetColor(float& r,float& g,float& b){
+void
+VTKViewer_Actor
+::SetColor(const float theRGB[3])
+{ 
+  SetColor(theRGB[0],theRGB[1],theRGB[2]);
+}
+
+void
+VTKViewer_Actor
+::GetColor(float& r,float& g,float& b)
+{
   float aColor[3];
   GetProperty()->GetColor(aColor);
   r = aColor[0];
@@ -342,18 +496,53 @@ void VTKViewer_Actor::GetColor(float& r,float& g,float& b){
   b = aColor[2];
 }
 
-/*!Get display mode.
- *\retval int value
- */
-int VTKViewer_Actor::getDisplayMode(){ 
+
+//----------------------------------------------------------------------------
+int
+VTKViewer_Actor
+::getDisplayMode()
+{ 
   return myDisplayMode; 
 }
 
-/*!Set display mode
- *\param theMode - integer value.
- */
-void VTKViewer_Actor::setDisplayMode(int theMode)
-  SetRepresentation(theMode+1); 
+void
+VTKViewer_Actor
+::setDisplayMode(int theMode)
+{ 
+  SetRepresentation(theMode + 1); 
   myDisplayMode = GetRepresentation() - 1;
 }
 
+
+//----------------------------------------------------------------------------
+bool
+VTKViewer_Actor
+::hasHighlight() 
+{ 
+  return false; 
+} 
+
+bool
+VTKViewer_Actor
+::isHighlighted() 
+{ 
+  return myIsHighlighted; 
+}
+
+void
+VTKViewer_Actor
+::SetPreSelected(bool thePreselect) 
+{ 
+  myIsPreselected = thePreselect;
+}
+
+
+//----------------------------------------------------------------
+void
+VTKViewer_Actor
+::highlight(bool theIsHighlight)
+{
+  myIsHighlighted = theIsHighlight; 
+}
+
+vtkCxxSetObjectMacro(VTKViewer_Actor,PreviewProperty,vtkProperty);
index 2a437120009cd4fae38f3a8784108a049613c1c6..55711a8c018def10181c0c416ac865daa96ca9e2 100755 (executable)
-// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+//  SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers
+//
+//  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. 
 // 
-// 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.
+//  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 
 // 
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
 //
-// 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/
 //
+//  File   : SALOME_Actor.h
+//  Author : Nicolas REJNERI
+//  Module : SALOME
+//  $Header$
+
 #ifndef VTKVIEVER_ACTOR_H
 #define VTKVIEVER_ACTOR_H
 
 #include "VTKViewer.h"
 
-#include <vtkLODActor.h>
-#include <vtkProperty.h>
-#include <vtkShrinkFilter.h>
-#include <vtkDataSetMapper.h>
-#include <vtkUnstructuredGrid.h>
-
+#include <string>
 #include <vector>
 
+#include <vtkLODActor.h>
+
 class vtkCell;
+class vtkPointPicker;
+class vtkCellPicker;
 class vtkDataSet;
-class vtkPolyData;
+class vtkCamera;
+class vtkProperty;
+class vtkRenderer;
 
 class VTKViewer_Transform;
 class VTKViewer_GeometryFilter;
 class VTKViewer_TransformFilter;
 class VTKViewer_PassThroughFilter;
 
-#define VTKViewer_POINT_SIZE 3
+extern int VTKViewer_POINT_SIZE;
+extern int VTKViewer_LINE_WIDTH;
+
 /*! \class vtkLODActor
  * \brief For more information see <a href="http://www.vtk.org/">VTK documentation</a>
  */
-class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor
+class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor 
 {
-public:
-  /*!Create new instance of actor.*/
+ public:
   static VTKViewer_Actor* New();
-
-  vtkTypeMacro( VTKViewer_Actor, vtkLODActor );
-
-  /*!Get name of the actor*/
-  virtual const char* getName() { return myName.c_str(); }
-  /*!Set name of the actor*/
-  virtual void setName(const char* theName){ myName = theName;}
-
-  //! To generate highlight automaticaly
-  virtual bool hasHighlight() { return false; }
-  //! Sets highlight.
-  virtual void highlight(bool theHighlight) { myIsHighlighted = theHighlight; }
-  //! Check highlight.
-  virtual bool isHighlighted() { return myIsHighlighted; }
   
-  virtual void SetOpacity(float theOpacity);
-  virtual float GetOpacity();
-
-  virtual void SetColor(float r,float g,float b);
-  virtual void GetColor(float& r,float& g,float& b);
-  void SetColor(const float theRGB[3]){ SetColor(theRGB[0],theRGB[1],theRGB[2]); }
-
-  vtkSetObjectMacro(PreviewProperty,vtkProperty);
-
-  virtual void SetPreSelected(bool thePreselect = false) { myIsPreselected = thePreselect;}
-
-  //! Used to obtain all dependent actors
-  virtual void GetChildActors(vtkActorCollection*) {};
-  
-  virtual void AddToRender(vtkRenderer* theRenderer); 
-  virtual void RemoveFromRender(vtkRenderer* theRenderer);
-
-
-  /** @name For selection mapping purpose */
-  //@{
-  virtual int GetNodeObjId(int theVtkID) { return theVtkID;}
-  virtual float* GetNodeCoord(int theObjID);
-
-  virtual int GetElemObjId(int theVtkID) { return theVtkID;}
-  virtual vtkCell* GetElemCell(int theObjID);
-  //@}
-
-  virtual int GetObjDimension( const int theObjId );
-
-  virtual void SetMapper(vtkMapper* theMapper); 
-  virtual vtkDataSet* GetInput(); 
-
-  virtual void SetTransform(VTKViewer_Transform* theTransform); 
-  virtual unsigned long int GetMTime();
-
-  virtual void SetRepresentation(int theMode);
-  virtual int GetRepresentation();
-
-  virtual int getDisplayMode();
-  virtual void setDisplayMode(int theMode);
-
-  /*! Infinitive means actor without size (point for example), \n
-   * which is not taken into account in calculation of boundaries of the scene
-   */
-  void SetInfinitive(bool theIsInfinite) { myIsInfinite = theIsInfinite; }
-  virtual bool IsInfinitive();
+  vtkTypeMacro(VTKViewer_Actor,vtkLODActor);
+
+  //----------------------------------------------------------------------------
+  //! Get its name
+  virtual 
+  const char* 
+  getName();
+
+  //! Name the #VTKViewer_Actor
+  virtual
+  void
+  setName(const char* theName);
+
+  //----------------------------------------------------------------------------
+  //! Change opacity
+  virtual
+  void
+  SetOpacity(float theOpacity);
+
+  //! Get current opacity
+  virtual
+  float 
+  GetOpacity();
+
+  //! Change color
+  virtual
+  void
+  SetColor(float r,float g,float b);
+
+  //! Get current color
+  virtual
+  void
+  GetColor(float& r,float& g,float& b);
+
+  //! Change color
+  virtual
+  void
+  SetColor(const float theRGB[3]);
+
+  //----------------------------------------------------------------------------
+  // For selection mapping purpose
+  //! Maps VTK index of a node to corresponding object index
+  virtual
+  int 
+  GetNodeObjId(int theVtkID);
+
+  //! Get coordinates of a node for given object index
+  virtual
+  float*
+  GetNodeCoord(int theObjID);
+
+  //! Maps VTK index of a cell to corresponding object index
+  virtual 
+  int
+  GetElemObjId(int theVtkID);
+
+  //! Get corresponding #vtkCell for given object index
+  virtual
+  vtkCell* 
+  GetElemCell(int theObjID);
+
+  //----------------------------------------------------------------------------
+  //! Get dimension of corresponding mesh element
+  virtual
+  int
+  GetObjDimension( const int theObjId );
+
+  //! To insert some additional filters and then sets the given #vtkMapper
+  virtual
+  void
+  SetMapper(vtkMapper* theMapper); 
+
+  //! Allows to get initial #vtkDataSet
+  virtual
+  vtkDataSet* 
+  GetInput(); 
+
+  //! Apply view transformation
+  virtual
+  void
+  SetTransform(VTKViewer_Transform* theTransform); 
+
+  //! To calculatate last modified time
+  virtual
+  unsigned long int
+  GetMTime();
+
+  //----------------------------------------------------------------------------
+  //! Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on)
+  virtual
+  void
+  SetRepresentation(int theMode);
+
+  //! Get current representation mode
+  virtual
+  int
+  GetRepresentation();
+
+  //! Get current display mode (obsolete)
+  virtual
+  int
+  getDisplayMode();
+
+  //! Set display mode (obsolete)
+  virtual
+  void
+  setDisplayMode(int theMode);
+
+  //----------------------------------------------------------------------------
+  //! Set infinive flag
+  /*!
+    Infinitive means actor without size (point for example),
+    which is not taken into account in calculation of boundaries of the scene
+  */
+  void
+  SetInfinitive(bool theIsInfinite);
+
+  //! Get infinive flag
+  virtual
+  bool
+  IsInfinitive();
     
-  void SetResolveCoincidentTopology(bool theIsResolve);
-  void SetPolygonOffsetParameters(float factor, float units);
-  void GetPolygonOffsetParameters(float& factor, float& units);
-
-  virtual void Render(vtkRenderer *, vtkMapper *);
+  //! To calcualte current bounding box
+  virtual
+  float* 
+  GetBounds();
+
+  //! To calcualte current bounding box
+  void
+  GetBounds(float bounds[6]);
+
+  //----------------------------------------------------------------------------
+  virtual
+  bool
+  IsSetCamera() const;
+
+  virtual
+  bool
+  IsResizable() const;
+
+  virtual
+  void
+  SetSize( const float );
+
+  virtual
+  void 
+  SetCamera( vtkCamera* );
+
+  //----------------------------------------------------------------------------
+  //! Set ResolveCoincidentTopology flag
+  void
+  SetResolveCoincidentTopology(bool theIsResolve);
+
+  //! Set ResolveCoincidentTopology parameters
+  void
+  SetPolygonOffsetParameters(float factor, float units);
+
+  //! Get current ResolveCoincidentTopology parameters
+  void
+  GetPolygonOffsetParameters(float& factor, float& units);
+
+  virtual
+  void
+  Render(vtkRenderer *, vtkMapper *);
+
+  //----------------------------------------------------------------------------
+  //! Get current shrink factor
+  virtual
+  float
+  GetShrinkFactor();
+
+  //! Is the actor is shrunkable
+  virtual
+  bool
+  IsShrunkable();
+
+  //! Is the actor is shrunk
+  virtual
+  bool
+  IsShrunk();
+
+  //! Insert shrink filter into pipeline
+  virtual
+  void
+  SetShrink();
+
+  //! Remove shrink filter from pipeline
+  virtual
+  void
+  UnShrink();
+
+  //----------------------------------------------------------------------------
+  //! To publish the actor an all its internal devices
+  virtual
+  void
+  AddToRender(vtkRenderer* theRendere); 
+
+  //! To remove the actor an all its internal devices
+  virtual
+  void
+  RemoveFromRender(vtkRenderer* theRendere);
 
-protected:
-  /*!resolve coincedent topology flag*/
+  //! Used to obtain all dependent actors
+  virtual
+  void
+  GetChildActors(vtkActorCollection*);
+
+  //----------------------------------------------------------------------------
+  //! Ask, if the descendant of the VTKViewer_Actor will implement its own highlight or not
+  virtual
+  bool
+  hasHighlight(); 
+
+  //! Ask, if the VTKViewer_Actor is already highlighted
+  virtual
+  bool
+  isHighlighted();
+
+  //! Set preselection mode
+  virtual
+  void
+  SetPreSelected(bool thePreselect = false);
+
+  //----------------------------------------------------------------------------
+  //! Just to update visibility of the highlight devices
+  virtual
+  void
+  highlight(bool theHighlight);  
+
+  void
+  SetPreviewProperty(vtkProperty* theProperty);
+
+ protected:
+  //----------------------------------------------------------------------------
   bool myIsResolveCoincidentTopology;
-  /*!polygon offset factor*/
   float myPolygonOffsetFactor;
-  /*!polygon offset units*/
   float myPolygonOffsetUnits;
 
-  /*!Actor name.*/
   std::string myName;
 
-  /*!preview property*/
-  vtkProperty *PreviewProperty;
-  /*!preselected flag*/
-  bool myIsPreselected;
-
-  /*!opacity*/
   float myOpacity;
-  /*!highlighted flag*/
-  bool myIsHighlighted;
-  /*!display mode*/
   int myDisplayMode;
-  /*!infinite flag*/
   bool myIsInfinite;
 
-  /*!store mapping flag*/
   bool myStoreMapping;
-  /*!geometry filter*/
   VTKViewer_GeometryFilter *myGeomFilter;
-  /*!transform filter*/
   VTKViewer_TransformFilter *myTransformFilter;
-  /*!vector of passive filters(siz filters used)*/
   std::vector<VTKViewer_PassThroughFilter*> myPassFilter;
 
-  /*!presentation mode*/
   int myRepresentation;
-  /*!property*/
   vtkProperty *myProperty;
 
-  //! Main method, which calculate output.
-  void InitPipeLine(vtkMapper* theMapper); 
+  void
+  InitPipeLine(vtkMapper* theMapper); 
 
   VTKViewer_Actor();
   ~VTKViewer_Actor();
+
+ protected:
+  vtkProperty *PreviewProperty;
+  bool myIsPreselected;
+  bool myIsHighlighted;
 };
 
-#endif
+#endif // VTKVIEVER_ACTOR_H