Interface margins and axes bounds properties.
[scilab.git] / scilab / modules / renderer / src / java / org / scilab / modules / renderer / subwinDrawing / CameraJoGL.java
1 /*------------------------------------------------------------------------*/
2 /* file: CameraJoGL.java                                                  */
3 /* Copyright INRIA 2007                                                   */
4 /* Authors : Jean-Baptiste Silvy                                          */
5 /* desc : Class containing the driver dependant routines position the     */
6 /*        camera                                                          */
7 /*------------------------------------------------------------------------*/
8
9
10 package org.scilab.modules.renderer.subwinDrawing;
11
12 import org.scilab.modules.renderer.ObjectJoGL;
13 import javax.media.opengl.GL;
14
15 /**
16  * Class containing the driver dependant routines position the camera.
17  * @author Jean-Baptiste Silvy
18  */
19 public class CameraJoGL extends ObjectJoGL {
20
21         /** Distance of the far clipping plane, should be greater than 1.0 and not to high */
22         private static final double FAR_PLANE_DISTANCE = 100.0;
23         
24         /**
25          * Default constructor
26          */
27         public CameraJoGL() {
28                 super();
29         }
30         
31         /**
32          * Display the object by displaying its display list
33          * @param parentFigureIndex index of the parent figure in which the object will be drawn
34          */
35         public void show(int parentFigureIndex) {
36                 super.initializeDrawing(parentFigureIndex);
37                 super.endDrawing();
38                 
39         }
40         
41         /**
42          * Position the viewing area in order to respect Subwin position.
43          * @param transX X translation of the viewing area
44          * @param transY Y translation of the viewing area
45          * @param scaleX X scale of the viewing area
46          * @param scaleY Y scale of the viewing area
47          */
48         public void moveViewingArea(double transX, double transY, double scaleX, double scaleY) {
49                 GL gl = getGL();
50                 gl.glMatrixMode(GL.GL_PROJECTION);
51             gl.glLoadIdentity();
52             // with this the drawing view current scale for the view is [0,1]x[0,1]
53             // for perspective view, we need to use glFrustum, not gluPerpective
54             gl.glOrtho(0.0, 1.0, 0.0, 1.0, 0.0, FAR_PLANE_DISTANCE);
55             gl.glMatrixMode(GL.GL_MODELVIEW);
56             gl.glLoadIdentity();
57
58                 gl.glTranslated(transX, transY, 0.0);
59                 gl.glScaled(scaleX, scaleY, 1.0);
60                 //gl.glTranslatef(0.0f, 0.0f, -1.0f); 
61                 
62         }
63         
64         /**
65          * Move the axes box so it fit the viewing area
66          * @param scaleX X scale to fit user axes coordinates
67          * @param scaleY Y scale to fit user axes coordinates
68          * @param scaleZ Z scale to fit user axes coordinates
69          * @param transX X translation to put the axes in view
70          * @param transY Y translation to put the axes in view
71          * @param transZ Z translation to put the axes in view
72          */
73         public void moveAxesBox(double scaleX, double scaleY, double scaleZ,
74                                                         double transX, double transY, double transZ) {
75                 GL gl = getGL();
76                 System.out.println("scaleX = " + scaleX + "scaleY = " + scaleY + "scaleZ = " + scaleZ);
77                 gl.glScaled(scaleX, scaleY, scaleZ);
78                 System.out.println("transX = " + transX + "transY = " + transY + "transZ = " + transZ);
79                 gl.glTranslated(transX, transY, transZ);
80         }
81         
82         
83 }