Version: 9.15.0
VTKViewer_Trihedron.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2025 CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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, or (at your option) any later version.
10 //
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.
15 //
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
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 #ifndef VTKVIEWER_TRIHEDRON_H
24 #define VTKVIEWER_TRIHEDRON_H
25 
26 #include "VTKViewer.h"
27 
28 #include <vtkObject.h>
29 #include <vtkFollower.h>
30 #include <vtkVersion.h>
31 
32 class vtkRenderer;
33 class vtkActorCollection;
34 class vtkCamera;
35 class vtkProperty;
36 class vtkPolyDataMapper;
37 class vtkLineSource;
38 class vtkConeSource;
39 class vtkVectorText;
40 class vtkTextActor;
41 class vtkTextMapper;
42 
43 class VTKViewer_Axis;
44 
45 #if !defined(VTK_XVERSION)
46 #define VTK_XVERSION (VTK_MAJOR_VERSION<<16)+(VTK_MINOR_VERSION<<8)+(VTK_BUILD_VERSION)
47 #endif
48 
49 // VTKViewer_UnScaledActor is temporarily replaced with simple vtkTextActor
50 // This workaround caused by the bug with disappeared labels of the trihedron
51 // reproduced after migration from qt-4.4.3 to qt-4.5.2
52 #if (VTK_XVERSION < 0x050200)
53 #define IPAL21440
54 #endif
55 
63 {
65 
66 public:
67 
69 
70 
71  static VTKViewer_UnScaledActor *New();
72 
73  virtual double* GetBounds();
74  virtual void SetSize(int theSize);
75  virtual void Render(vtkRenderer *theRenderer);
76 
77 protected:
81 
82  int mySize;
83 };
84 
89 {
91 
92 public:
95 
96 
97  static VTKViewer_LineActor *New();
98 
99 #ifdef IPAL21440
103  void SetLabelActor(vtkTextActor* theLabelActor);
104 #else
108  void SetLabelActor(VTKViewer_UnScaledActor* theLabelActor);
109 #endif
110 
114  void SetArrowActor(vtkFollower* theArrowActor);
115 
116  virtual void Render(vtkRenderer *theRenderer);
117 
118 protected:
119 
122  LabelActor = NULL;
123  ArrowActor = NULL;
124  }
125 
128  SetLabelActor(NULL);
129  SetArrowActor(NULL);
130  }
131 
133 #ifdef IPAL21440
135 #else
137 #endif
138 
141 };
142 
145 {
146 public:
147  enum Axis { X = 0, Y, Z };
148 
149 protected:
152 
155 
157  virtual ~VTKViewer_Trihedron();
158 
159 public:
162 
163 
164  static VTKViewer_Trihedron *New();
165 
169  virtual void SetSize(double theSize);
170 
174  virtual double GetSize() { return mySize;}
175 
176  enum TVisibility{eOff, eOn, eOnlyLineOn};
177 
179  virtual void SetVisibility(TVisibility theVis);
180 
182  virtual void VisibilityOff() { SetVisibility(eOff);}
183 
185  virtual void VisibilityOn() { SetVisibility(eOn);}
186 
188  virtual TVisibility GetVisibility();
189 
193  virtual void AddToRender(vtkRenderer* theRenderer);
194 
198  virtual void RemoveFromRender(vtkRenderer* theRenderer);
199 
203  virtual int GetVisibleActorCount(vtkRenderer* theRenderer);
204 
209  virtual bool OwnActor(const vtkActor* theActor);
210 
217  virtual void SetTextColor(Axis axis, double theRed, double theGreen, double theBlue);
218 
219 protected:
221  vtkActorCollection* myPresent;
222 
227  VTKViewer_Axis* myAxis[3];
228 
230  double mySize;
231 };
232 
238 {
239 protected:
240  VTKViewer_Axis();
242  virtual ~VTKViewer_Axis();
243 
244 public:
247 
248 
250  virtual void AddToRender(vtkRenderer* theRenderer);
251  virtual void RemoveFromRender(vtkRenderer* theRenderer);
252 
255  virtual void SetVisibility(VTKViewer_Trihedron::TVisibility theVis);
256 
260  virtual VTKViewer_Trihedron::TVisibility GetVisibility() { return myVisibility; }
261 
264  virtual void SetCamera(vtkCamera* theCamera);
265 
271  virtual void SetColor(double theRed, double theGreen, double theBlue);
272 
278  virtual void SetTextColor(double theRed, double theGreen, double theBlue);
279 
282  virtual void SetSize(double theSize);
283 
287 #ifdef IPAL21440
288  virtual vtkTextActor* GetLabel() { return myLabelActor; }
289 #else
290  virtual VTKViewer_UnScaledActor* GetLabel() { return myLabelActor; }
291 #endif
292 
296  virtual vtkFollower* GetArrow() { return myArrowActor; }
297 
302  virtual bool OwnActor(const vtkActor* theActor);
303 
304 protected:
308 
315  double myDir[3], myRot[3];
316 
320 
324 
327 #ifdef IPAL21440
329 #else
330  VTKViewer_UnScaledActor *myLabelActor;
331 #endif
332 
337  vtkPolyDataMapper *myMapper[3];
338 
341  vtkLineSource *myLineSource;
342 
345  vtkConeSource *myConeSource;
346 
347 #ifdef IPAL21440
350  vtkTextMapper *myTextMapper;
351 #else
354  vtkVectorText* myVectorText;
355 #endif
356 };
357 
358 #endif
Axis
Definition: SalomePyQt.h:171
#define VTKVIEWER_EXPORT
Definition: VTKViewer.h:33
vtkTextActor
Definition: VTKViewer_Trihedron.cxx:110
LabelActor
Definition: VTKViewer_Trihedron.cxx:110
Definition: VTKViewer_Trihedron.h:238
VTKViewer_LineActor * myLineActor
Definition: VTKViewer_Trihedron.h:319
VTKViewer_Axis(const VTKViewer_Axis &)
vtkConeSource * myConeSource
Definition: VTKViewer_Trihedron.h:345
VTKViewer_Trihedron::TVisibility myVisibility
Definition: VTKViewer_Trihedron.h:307
virtual vtkFollower * GetArrow()
Definition: VTKViewer_Trihedron.h:296
vtkTextActor * myLabelActor
Definition: VTKViewer_Trihedron.h:328
virtual vtkTextActor * GetLabel()
Definition: VTKViewer_Trihedron.h:288
vtkFollower * myArrowActor
Definition: VTKViewer_Trihedron.h:323
virtual VTKViewer_Trihedron::TVisibility GetVisibility()
Definition: VTKViewer_Trihedron.h:260
vtkTextMapper * myTextMapper
Definition: VTKViewer_Trihedron.h:350
vtkTypeMacro(VTKViewer_Axis, vtkObject) virtual void AddToRender(vtkRenderer *theRenderer)
vtkLineSource * myLineSource
Definition: VTKViewer_Trihedron.h:341
Definition: VTKViewer_Trihedron.h:89
~VTKViewer_LineActor()
Definition: VTKViewer_Trihedron.h:127
virtual void Render(vtkRenderer *theRenderer)
vtkTextActor * LabelActor
Definition: VTKViewer_Trihedron.h:134
VTKViewer_LineActor(const VTKViewer_LineActor &)
vtkTypeMacro(VTKViewer_LineActor, vtkFollower) static VTKViewer_LineActor *New()
void SetArrowActor(vtkFollower *theArrowActor)
vtkFollower * ArrowActor
Definition: VTKViewer_Trihedron.h:140
void SetLabelActor(vtkTextActor *theLabelActor)
VTKViewer_LineActor()
Definition: VTKViewer_Trihedron.h:121
Definition: VTKViewer_Trihedron.h:145
double mySize
Definition: VTKViewer_Trihedron.h:230
Axis
Definition: VTKViewer_Trihedron.h:147
TVisibility
Definition: VTKViewer_Trihedron.h:176
@ eOff
Definition: VTKViewer_Trihedron.h:176
vtkActorCollection * myPresent
Definition: VTKViewer_Trihedron.h:221
virtual void VisibilityOn()
Definition: VTKViewer_Trihedron.h:185
virtual double GetSize()
Definition: VTKViewer_Trihedron.h:174
vtkTypeMacro(VTKViewer_Trihedron, vtkObject) static VTKViewer_Trihedron *New()
virtual void VisibilityOff()
Definition: VTKViewer_Trihedron.h:182
VTKViewer_Trihedron(const VTKViewer_Trihedron &)
Definition: VTKViewer_Trihedron.h:63
VTKViewer_UnScaledActor(const VTKViewer_UnScaledActor &)
vtkTypeMacro(VTKViewer_UnScaledActor, vtkFollower) static VTKViewer_UnScaledActor *New()
~VTKViewer_UnScaledActor()
Definition: VTKViewer_Trihedron.h:80
int mySize
Definition: VTKViewer_Trihedron.h:82