4638b67fb5e4ac99dba7c546b6ce71e30136d737
[scilab.git] / scilab / modules / renderer / src / cpp / subwinDrawing / Camera.h
1 /*------------------------------------------------------------------------*/
2 /* file: Camera.h                                                         */
3 /* Copyright INRIA 2007                                                   */
4 /* Authors : Jean-Baptiste Silvy                                          */
5 /* desc : File used to position viewpoint and rendering zone in the       */
6 /*        canvas.                                                         */
7 /*------------------------------------------------------------------------*/
8
9
10 #ifndef _CAMERA_H_
11 #define _CAMERA_H_
12
13 #include "CameraBridge.h"
14
15 namespace sciGraphics
16 {
17   
18 class Camera
19 {
20 public:
21   
22   Camera( void ) ;
23
24   virtual ~Camera( void ) ;
25   
26   /**
27    * Set the viewing zone for a subwin.
28    * @param axesBounds axesBounds (WRECT) of the subwin. This a a vector [x_left,y_up,w,h].
29    * @param margins inside the axes bounds, set a surface to use.
30    *                This is a vector [margin_left, margin_right, margin_top, margin_bottom].
31    */
32   void setViewingArea( double axesBounds[4], double margins[4] ) ;
33
34   /**
35    * Set the rotation angles of the camera.
36    */
37   void setRotationAngles( double alpha, double theta ) ;
38
39   /**
40    * Specify the axes box to render.
41    */
42   void setSubWinBox( double box[6] ) ;
43
44   /**
45    * Specify the farthest distance from the camera in order to specify zNear and zFar
46    */
47   void setFarthestDistance( double maxDist ) ;
48
49   /**
50    * Position the view and view area accordingly to previous calls.
51    */
52   void renderPosition( void ) ;
53
54   /**
55    * Set the camera bridge
56    */
57   void setBridge( CameraBridge * bridge ) { m_pImp = bridge; }
58
59 protected:
60
61   /** bridge for driver dependent algorithms */
62   CameraBridge * m_pImp;
63
64 };
65
66 }
67
68 #endif /* _CAMERA_H_ */
69