3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
24 // File : VTKViewer_Trihedron.h
25 // Author : Alexey PETROV
29 #ifndef VTKViewer_Trihedron_H
30 #define VTKViewer_Trihedron_H
32 #include <vtkObject.h>
33 #include <vtkFollower.h>
35 class vtkActorCollection;
38 class vtkPolyDataMapper;
41 class VTKViewer_VectorText;
45 //==============================================================================
47 class VTKViewer_UnScaledActor: public vtkFollower{
48 VTKViewer_UnScaledActor(const VTKViewer_UnScaledActor&);
51 vtkTypeMacro(VTKViewer_UnScaledActor,vtkFollower);
52 static VTKViewer_UnScaledActor *New();
54 virtual void SetSize(int theSize);
55 virtual void Render(vtkRenderer *theRenderer);
58 VTKViewer_UnScaledActor();
59 ~VTKViewer_UnScaledActor(){}
63 //==============================================================================
65 class VTKViewer_LineActor: public vtkFollower{
66 VTKViewer_LineActor(const VTKViewer_LineActor&);
69 vtkTypeMacro(VTKViewer_LineActor,vtkFollower);
70 static VTKViewer_LineActor *New();
72 void SetLabelActor(VTKViewer_UnScaledActor* theLabelActor);
73 void SetArrowActor(VTKViewer_UnScaledActor* theLabelActor);
74 virtual void Render(vtkRenderer *theRenderer);
77 VTKViewer_LineActor(){
81 ~VTKViewer_LineActor(){
86 VTKViewer_UnScaledActor* LabelActor;
87 VTKViewer_UnScaledActor* ArrowActor;
90 //================================================
92 class VTKViewer_Trihedron : public vtkObject{
94 VTKViewer_Trihedron();
95 VTKViewer_Trihedron(const VTKViewer_Trihedron&);
96 virtual ~VTKViewer_Trihedron();
98 vtkTypeMacro(VTKViewer_Trihedron,vtkObject);
99 static VTKViewer_Trihedron *New();
101 virtual void SetSize(float theSize);
102 virtual float GetSize() { return mySize;}
104 enum TVisibility{eOff, eOn, eOnlyLineOn};
105 virtual void SetVisibility(TVisibility theVis);
106 virtual void VisibilityOff() { SetVisibility(eOff);}
107 virtual void VisibilityOn() { SetVisibility(eOn);}
108 virtual TVisibility GetVisibility();
110 virtual void AddToRender(vtkRenderer* theRenderer);
111 virtual void RemoveFromRender(vtkRenderer* theRenderer);
113 virtual int GetVisibleActorCount(vtkRenderer* theRenderer);
116 vtkActorCollection* myPresent;
117 VTKViewer_Axis* myAxis[3];
121 //==============================================================================
122 // The base class for concreate Axis
123 // Its only duty is to give correct initialization and destruction
125 class VTKViewer_Axis : public vtkObject{
128 VTKViewer_Axis(const VTKViewer_Axis&);
129 virtual ~VTKViewer_Axis();
131 vtkTypeMacro(VTKViewer_Axis,vtkObject);
133 virtual void AddToRender(vtkRenderer* theRenderer);
135 virtual void SetVisibility(VTKViewer_Trihedron::TVisibility theVis);
136 virtual VTKViewer_Trihedron::TVisibility GetVisibility() { return myVisibility; }
138 virtual void SetCamera(vtkCamera* theCamera);
139 virtual void SetProperty(vtkProperty* theProperty);
140 virtual void SetSize(float theSize);
142 virtual VTKViewer_UnScaledActor* GetLabel(){ return myLabelActor; }
143 virtual VTKViewer_UnScaledActor* GetArrow(){ return myArrowActor; }
146 VTKViewer_Trihedron::TVisibility myVisibility;
147 float myDir[3], myRot[3];
149 VTKViewer_LineActor *myLineActor;
150 //vtkActor *myLineActor;
151 VTKViewer_UnScaledActor *myArrowActor;
152 VTKViewer_UnScaledActor *myLabelActor;
154 vtkPolyDataMapper *myMapper[3];
155 vtkLineSource *myLineSource;
156 vtkConeSource *myConeSource;
157 VTKViewer_VectorText* myVectorText;