Salome HOME
Updated copyright comment
[modules/gui.git] / src / VTKViewer / VTKViewer_Trihedron.h
old mode 100755 (executable)
new mode 100644 (file)
index b92cf02..ca5ce23
@@ -1,21 +1,25 @@
-// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
-// 
+// Copyright (C) 2007-2024  CEA, EDF, 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.
-// 
-// 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 
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// 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 
+// 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/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #ifndef VTKVIEWER_TRIHEDRON_H
 #define VTKVIEWER_TRIHEDRON_H
 
@@ -23,6 +27,7 @@
 
 #include <vtkObject.h>
 #include <vtkFollower.h>
+#include <vtkVersion.h>
 
 class vtkRenderer;
 class vtkActorCollection;
@@ -31,9 +36,22 @@ class vtkProperty;
 class vtkPolyDataMapper;
 class vtkLineSource;
 class vtkConeSource;
+class vtkVectorText;
+class vtkTextActor;
+class vtkTextMapper;
 
 class VTKViewer_Axis;
-class VTKViewer_VectorText;
+
+#if !defined(VTK_XVERSION)
+#define VTK_XVERSION (VTK_MAJOR_VERSION<<16)+(VTK_MINOR_VERSION<<8)+(VTK_BUILD_VERSION)
+#endif
+
+// VTKViewer_UnScaledActor is temporarily replaced with simple vtkTextActor
+// This workaround caused by the bug with disappeared labels of the trihedron
+// reproduced after migration from qt-4.4.3 to qt-4.5.2
+#if (VTK_XVERSION < 0x050200)
+#define IPAL21440
+#endif
 
 /*! \class vtkFollower
  * See <a href="http://www.vtk.org/">vtk documentation</a>
@@ -47,12 +65,12 @@ class VTKVIEWER_EXPORT VTKViewer_UnScaledActor: public vtkFollower
   
 public:
   
-  vtkTypeMacro(VTKViewer_UnScaledActor,vtkFollower);
+  vtkTypeMacro(VTKViewer_UnScaledActor,vtkFollower)
   
   /*!Create new instance of VTKViewer_UnScaledActor.*/
   static VTKViewer_UnScaledActor *New();
   
-  virtual vtkFloatingPointType* GetBounds();
+  virtual double* GetBounds();
   virtual void SetSize(int theSize);
   virtual void Render(vtkRenderer *theRenderer);
 
@@ -73,20 +91,27 @@ class VTKVIEWER_EXPORT VTKViewer_LineActor: public vtkFollower
   
 public:
   /*!vtk type macros.*/
-  vtkTypeMacro(VTKViewer_LineActor,vtkFollower);
+  vtkTypeMacro(VTKViewer_LineActor,vtkFollower)
   
   /*!Create new instance of VTKViewer_LineActor.*/
   static VTKViewer_LineActor *New();
   
-  /*! Sets Lable actor.
+#ifdef IPAL21440
+  /*! Sets Label actor.
+   * \param theLabelActor - vtkTextActor
+   */
+  void SetLabelActor(vtkTextActor* theLabelActor);
+#else
+  /*! Sets Label actor.
    * \param theLabelActor - VTKViewer_UnScaledActor
    */
   void SetLabelActor(VTKViewer_UnScaledActor* theLabelActor);
+#endif
   
   /*! Sets Arrow actor.
    * \param theLabelActor - VTKViewer_UnScaledActor
    */
-  void SetArrowActor(VTKViewer_UnScaledActor* theLabelActor);
+  void SetArrowActor(vtkFollower* theArrowActor);
 
   virtual void Render(vtkRenderer *theRenderer);
   
@@ -105,14 +130,18 @@ protected:
   }
 
   /*!Label actor pointer*/
+#ifdef IPAL21440
+  vtkTextActor* LabelActor;
+#else
   VTKViewer_UnScaledActor* LabelActor;
+#endif
 
   /*!Arrow actor pointer*/
-  VTKViewer_UnScaledActor* ArrowActor;
+  vtkFollower* ArrowActor;
 };
 
 /*!This class provide support trihedron object in vtk viewer.*/
-class VTKVIEWER_EXPORT VTKVIEWER_EXPORT VTKViewer_Trihedron : public vtkObject
+class VTKVIEWER_EXPORT VTKViewer_Trihedron : public vtkObject
 {
 protected:
   /*!Initialize fields by default values.*/
@@ -126,20 +155,20 @@ protected:
 
 public:
   /*!vtk type macros.*/
-  vtkTypeMacro(VTKViewer_Trihedron,vtkObject);
+  vtkTypeMacro(VTKViewer_Trihedron,vtkObject)
   
   /*!Create new instance of VTKViewer_Trihedron.*/
   static VTKViewer_Trihedron *New();
   
   /*!Sets size of trihedron.
-   * \param theSize - vtkFloatingPointType value
+   * \param theSize - double value
    */
-  virtual void        SetSize(vtkFloatingPointType theSize);
+  virtual void        SetSize(double theSize);
 
   /*! Get size of trihedron.
-   * \retval mySize - vtkFloatingPointType value
+   * \retval mySize - double value
    */
-  virtual vtkFloatingPointType  GetSize() { return mySize;}
+  virtual double  GetSize() { return mySize;}
   
   enum TVisibility{eOff, eOn, eOnlyLineOn};
   
@@ -170,6 +199,12 @@ public:
    */
   virtual int         GetVisibleActorCount(vtkRenderer* theRenderer);
   
+  /*! Check if actor belongs to the trihedron object
+   * \param theActor - vtkActor pointer
+   * \retval Return true if the actor belongs to the trihedron object
+   */
+  virtual bool        OwnActor(const vtkActor* theActor);
+
 protected:
   /*! Actor collection*/
   vtkActorCollection* myPresent;
@@ -181,7 +216,7 @@ protected:
   VTKViewer_Axis*     myAxis[3];
   
   /*! Common size for trihedron, for each axis.*/
-  vtkFloatingPointType mySize;
+  double mySize;
 };
 
 /*!The base class for concreate Axis.
@@ -197,7 +232,7 @@ protected:
   
 public:
   /*!vtk type macros.*/
-  vtkTypeMacro(VTKViewer_Axis,vtkObject);
+  vtkTypeMacro(VTKViewer_Axis,vtkObject)
   
   /*! Add to \a theRenderer actors: myLineActor,myLabelActor,myArrowActor
    */
@@ -217,23 +252,36 @@ public:
    */
   virtual void SetCamera(vtkCamera* theCamera);
 
-  /*! Sets \a theProperty for actors: myLineActor,myLabelActor,myArrowActor
+  /*! Sets color for actors: myLineActor,myLabelActor,myArrowActor
+   * \param theRed - red component of the color
+   * \param theGreen - green component of the color
+   * \param theBlue - blue component of the color
    */
-  virtual void SetProperty(vtkProperty* theProperty);
+  virtual void SetColor(double theRed, double theGreen, double theBlue);
   
   /*! Set size of VTKViewer_Axis
    */
-  virtual void SetSize(vtkFloatingPointType theSize);
+  virtual void SetSize(double theSize);
   
   /*! Get label actor.
    * \retval Return myLabelActor.
    */
+#ifdef IPAL21440
+  virtual vtkTextActor* GetLabel() { return myLabelActor; }
+#else
   virtual VTKViewer_UnScaledActor* GetLabel() { return myLabelActor; }
+#endif
   
   /*! Get arrow actor.
    * \retval Return myArrowActor
    */
-  virtual VTKViewer_UnScaledActor* GetArrow() { return myArrowActor; }
+  virtual vtkFollower* GetArrow() { return myArrowActor; }
+
+  /*! Check if actor belongs to the axis object
+   * \param theActor - vtkActor pointer
+   * \retval Return true if the actor belongs to the axis object
+   */
+  virtual bool OwnActor(const vtkActor* theActor);
   
 protected:
   /*! Visibility flag.
@@ -246,19 +294,23 @@ protected:
   /*! \var myRot[3]
    * Orientation vector
    */
-  vtkFloatingPointType myDir[3], myRot[3];
+  double myDir[3], myRot[3];
   
   /*! VTKViewer_LineActor actor pointer
    */
   VTKViewer_LineActor *myLineActor;
 
-  /*! VTKViewer_UnScaledActor actor pointer
+  /*! vtkFollower actor pointer
    */
-  VTKViewer_UnScaledActor *myArrowActor;
+  vtkFollower *myArrowActor;
 
   /*! VTKViewer_UnScaledActor actor pointer
    */
+#ifdef IPAL21440
+  vtkTextActor *myLabelActor;
+#else
   VTKViewer_UnScaledActor *myLabelActor;
+#endif
   
   /*! \li myMapper[0] - for the Line pipe-line representation
    *  \li myMapper[1] - for the Arrow pipe-line representation
@@ -274,9 +326,15 @@ protected:
    */
   vtkConeSource *myConeSource;
 
+#ifdef IPAL21440
+  /*! vtkTextMapper pointer (Label)
+   */
+  vtkTextMapper *myTextMapper;
+#else
   /*! VTKViewer_VectorText pointer (Label)
    */
-  VTKViewer_VectorText* myVectorText;
+  vtkVectorText* myVectorText;
+#endif
 };
 
 #endif