+// 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, 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
#ifndef VTKVIEWER_TRIHEDRON_H
#define VTKVIEWER_TRIHEDRON_H
#include <vtkObject.h>
#include <vtkFollower.h>
+#include <vtkVersion.h>
class vtkRenderer;
class vtkActorCollection;
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>
public:
- vtkTypeMacro(VTKViewer_UnScaledActor,vtkFollower);
+ vtkTypeMacro(VTKViewer_UnScaledActor,vtkFollower)
/*!Create new instance of VTKViewer_UnScaledActor.*/
static VTKViewer_UnScaledActor *New();
- virtual float* GetBounds();
+ virtual double* GetBounds();
virtual void SetSize(int theSize);
virtual void Render(vtkRenderer *theRenderer);
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);
}
/*!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.*/
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 - float value
+ * \param theSize - double value
*/
- virtual void SetSize(float theSize);
+ virtual void SetSize(double theSize);
/*! Get size of trihedron.
- * \retval mySize - float value
+ * \retval mySize - double value
*/
- virtual float GetSize() { return mySize;}
+ virtual double GetSize() { return mySize;}
enum TVisibility{eOff, eOn, eOnlyLineOn};
*/
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;
VTKViewer_Axis* myAxis[3];
/*! Common size for trihedron, for each axis.*/
- float mySize;
+ double mySize;
};
-//****************************************************************
/*!The base class for concreate Axis.
* Its only duty is to give correct initialization and destruction
* of its pipe-lines
public:
/*!vtk type macros.*/
- vtkTypeMacro(VTKViewer_Axis,vtkObject);
+ vtkTypeMacro(VTKViewer_Axis,vtkObject)
/*! Add to \a theRenderer actors: myLineActor,myLabelActor,myArrowActor
*/
virtual void AddToRender(vtkRenderer* theRenderer);
+ virtual void RemoveFromRender(vtkRenderer* theRenderer);
/*! Sets visibility for actors: myLineActor,myLabelActor,myArrowActor
*/
*/
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(float 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.
/*! \var myRot[3]
* Orientation vector
*/
- float 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
*/
vtkConeSource *myConeSource;
+#ifdef IPAL21440
+ /*! vtkTextMapper pointer (Label)
+ */
+ vtkTextMapper *myTextMapper;
+#else
/*! VTKViewer_VectorText pointer (Label)
*/
- VTKViewer_VectorText* myVectorText;
+ vtkVectorText* myVectorText;
+#endif
};
#endif