cdfb761a3a2b3094b87116908d691dc60510146d
[scilab.git] / scilab / modules / renderer / src / cpp / subwinDrawing / CameraBridge.h
1 /*------------------------------------------------------------------------*/
2 /* file: CameraBridge.h                                                   */
3 /* Copyright INRIA 2007                                                   */
4 /* Authors : Jean-Baptiste Silvy                                          */
5 /* desc : Bridge between camera class and impelementation                 */
6 /*------------------------------------------------------------------------*/
7
8 #ifndef _CAMERA_BRIDGE_H_
9 #define _CAMERA_BRIDGE_H_
10
11 #include "DrawableObject.h"
12
13 namespace sciGraphics
14 {
15
16 class CameraBridge
17 {
18 public:
19
20   /**
21    * Default constructor
22    * @param subwin Subwindow containign the camera
23    */
24   CameraBridge( void ) {}
25
26   virtual ~CameraBridge( void ) {}
27
28   /**
29    * Set the viewing position o
30    */
31   void setViewingArea( double translation[2], double scale[2] ) ;
32
33   /**
34   * Set the rotation angles of the camera.
35    */
36   void setRotationAngles( double alpha, double theta ) ;
37
38   /**
39    * Specify the axes box to render.
40    */
41   void setSubWinBox( double box[6] ) ;
42
43   /**
44    * Specify the farthest distance from the camera in order to specify zNear and zFar
45    */
46   void setFarthestDistance( double maxDist ) ;
47
48   /**
49    *  Set the bouding box of axes (the one drawn on the screen)
50    */
51   void setAxesBox( double bbox[6] ) ;
52
53   /**
54    * Position the view and view area accordingly to previous calls.
55    */
56   virtual void renderPosition( void ) = 0 ;
57
58 protected:
59
60   /**
61   * Translation between the origin of rendering canvas and the current viewing area.
62   * Should be positive since the view is inside the canvas.
63   */
64   double m_aViewingTranslation[2];
65
66   /**
67   * Scaling between the rendering canvas and current viewing area.
68   * Should be lower than 1 since the viewing area is smaller than the canvas.
69   */
70   double m_aViewingScale[2];
71
72   /** Rotation angle around axe Z */
73   double m_dTheta;
74   /** Rotation around axe Y */
75   double m_dAlpha;
76
77   /** specify the axis box */
78   double m_aAxesBox[6];
79
80   /** maximum found distance between a graphic object and the viewpoint */
81   double m_dFarthestDist;
82
83 };
84
85 }
86
87 #endif /* _CAMERA_BRIDGE_H_ */