Salome HOME
Splash screen was implemented. Changes in packages SUIT and Session are integrated.
[modules/gui.git] / src / VTKViewer / VTKViewer_Trihedron.h
1 #ifndef VTKVIEWER_TRIHEDRON_H
2 #define VTKVIEWER_TRIHEDRON_H
3
4 #include "VTKViewer.h"
5
6 #include <vtkObject.h>
7 #include <vtkFollower.h>
8
9 class vtkRenderer;
10 class vtkActorCollection;
11 class vtkCamera;
12 class vtkProperty;
13 class vtkPolyDataMapper;
14 class vtkLineSource;
15 class vtkConeSource;
16
17 class VTKViewer_Axis;
18 class VTKViewer_VectorText;
19
20 //****************************************************************
21 class VTKViewer_UnScaledActor: public vtkFollower
22 {
23   VTKViewer_UnScaledActor(const VTKViewer_UnScaledActor&);
24   
25 public:
26   vtkTypeMacro(VTKViewer_UnScaledActor,vtkFollower);
27   static VTKViewer_UnScaledActor *New();
28   
29   virtual void SetSize(int theSize);
30   virtual void Render(vtkRenderer *theRenderer);
31   
32 protected:
33   VTKViewer_UnScaledActor();
34   ~VTKViewer_UnScaledActor(){}
35   int mySize;
36 };
37
38 //****************************************************************
39 class VTKViewer_LineActor: public vtkFollower
40 {
41   VTKViewer_LineActor(const VTKViewer_LineActor&);
42   
43 public:
44   vtkTypeMacro(VTKViewer_LineActor,vtkFollower);
45   static VTKViewer_LineActor *New();
46   
47   void SetLabelActor(VTKViewer_UnScaledActor* theLabelActor);
48   void SetArrowActor(VTKViewer_UnScaledActor* theLabelActor);
49   virtual void Render(vtkRenderer *theRenderer);
50   
51 protected:
52   VTKViewer_LineActor(){
53     LabelActor = NULL;
54     ArrowActor = NULL;
55   }
56   ~VTKViewer_LineActor(){
57     SetLabelActor(NULL);
58     SetArrowActor(NULL);
59   }
60   
61   VTKViewer_UnScaledActor* LabelActor;
62   VTKViewer_UnScaledActor* ArrowActor;
63 };
64
65 //****************************************************************
66 class VTKVIEWER_EXPORT VTKViewer_Trihedron : public vtkObject
67 {
68 protected:
69   VTKViewer_Trihedron();
70   VTKViewer_Trihedron(const VTKViewer_Trihedron&);
71   virtual ~VTKViewer_Trihedron();
72
73 public:
74   vtkTypeMacro(VTKViewer_Trihedron,vtkObject);
75   static VTKViewer_Trihedron *New();
76   
77   virtual void        SetSize(float theSize);
78   virtual float       GetSize() { return mySize;}
79   
80   enum TVisibility{eOff, eOn, eOnlyLineOn};
81   virtual void        SetVisibility(TVisibility theVis);
82   virtual void        VisibilityOff() { SetVisibility(eOff);}
83   virtual void        VisibilityOn() { SetVisibility(eOn);}
84   virtual TVisibility GetVisibility();
85   
86   virtual void        AddToRender(vtkRenderer* theRenderer);
87   virtual void        RemoveFromRender(vtkRenderer* theRenderer);
88   
89   virtual int         GetVisibleActorCount(vtkRenderer* theRenderer);
90   
91 protected:
92   vtkActorCollection* myPresent;
93   VTKViewer_Axis*     myAxis[3];
94   float               mySize;
95 };
96
97 //****************************************************************
98 // The base class for concreate Axis
99 // Its only duty is to give correct initialization and destruction
100 //   of its pipe-lines
101 class VTKViewer_Axis : public vtkObject
102 {
103 protected:
104   VTKViewer_Axis();
105   VTKViewer_Axis(const VTKViewer_Axis&);
106   virtual ~VTKViewer_Axis();
107 public:
108   vtkTypeMacro(VTKViewer_Axis,vtkObject);
109   
110   virtual void AddToRender(vtkRenderer* theRenderer);
111   
112   virtual void SetVisibility(VTKViewer_Trihedron::TVisibility theVis);
113   virtual VTKViewer_Trihedron::TVisibility GetVisibility() { return myVisibility; }
114   
115   virtual void SetCamera(vtkCamera* theCamera);
116   virtual void SetProperty(vtkProperty* theProperty);  
117   virtual void SetSize(float theSize);
118   
119   virtual VTKViewer_UnScaledActor* GetLabel() { return myLabelActor; }
120   virtual VTKViewer_UnScaledActor* GetArrow() { return myArrowActor; }
121   
122 protected:
123   VTKViewer_Trihedron::TVisibility myVisibility;
124   float myDir[3], myRot[3];
125   
126   VTKViewer_LineActor *myLineActor;
127   //vtkActor *myLineActor;
128   VTKViewer_UnScaledActor *myArrowActor;
129   VTKViewer_UnScaledActor *myLabelActor;
130   
131   vtkPolyDataMapper *myMapper[3];
132   vtkLineSource *myLineSource;
133   vtkConeSource *myConeSource;
134   VTKViewer_VectorText* myVectorText;
135 };
136
137 #endif