Interface margins and axes bounds properties.
[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 scale to fit with the subwin data bounds
35    */
36   void setAxesScale( double scale[3] ) ;
37
38   /**
39    * Set the translation to put the axes into view
40    */
41   void setAxesTranslation( double translation[3] ) ;
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    * Position the view and view area accordingly to previous calls.
50    */
51   virtual void renderPosition( void ) = 0 ;
52
53 protected:
54
55   /**
56   * Translation between the origin of rendering canvas and the current viewing area.
57   * Should be positive since the view is inside the canvas.
58   */
59   double m_aViewingTranslation[2];
60
61   /**
62    * Scaling between the rendering canvas and current viewing area.
63    * Should be lower than 1 since the viewing area is smaller than the canvas.
64    */
65   double m_aViewingScale[2];
66
67   /** maximum found distance between a graphic object and the viewpoint */
68   double m_dFarthestDist;
69
70   /** Scale modification to fit axes coordinates */
71   double m_aAxesScale[3];
72
73   /** Translation to put the axes in view */
74   double m_aAxesTranslation[3];
75
76 };
77
78 }
79
80 #endif /* _CAMERA_BRIDGE_H_ */