Added help files +better wording
[scilab.git] / scilab / modules / renderer / src / java / org / scilab / modules / renderer / JoGLView / util / LightingUtils.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2013 - Pedro SOUZA
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  */
11 package org.scilab.modules.renderer.JoGLView.util;
12
13 import org.scilab.forge.scirenderer.shapes.appearance.Material;
14 import org.scilab.forge.scirenderer.shapes.appearance.Color;
15 import org.scilab.forge.scirenderer.tranformations.Vector3d;
16 import org.scilab.forge.scirenderer.lightning.Light;
17 import org.scilab.forge.scirenderer.lightning.LightManager;
18
19 /**
20  * Utility functions to setup lighting.
21  * @author Pedro SOUZA
22  */
23 public class LightingUtils {
24
25     /**
26      * Convert the given material to a scirenderer material.
27      * @param m the material.
28      */
29     public static Material getMaterial(org.scilab.modules.graphic_objects.lighting.Material m) {
30         Material mtl = new Material();
31
32         Double[] color = m.getAmbientColor();
33         mtl.setAmbientColor(new Color(color[0].floatValue(), color[1].floatValue(), color[2].floatValue()));
34         color = m.getDiffuseColor();
35         mtl.setDiffuseColor(new Color(color[0].floatValue(), color[1].floatValue(), color[2].floatValue()));
36         color = m.getSpecularColor();
37         mtl.setSpecularColor(new Color(color[0].floatValue(), color[1].floatValue(), color[2].floatValue()));
38         mtl.setColorMaterialEnable(m.getColorMaterialMode().booleanValue());
39         mtl.setShinines(m.getShininess().floatValue());
40
41         return mtl;
42     }
43
44     /**
45      * Setup the give light.
46      * @param manager the light manager.
47      * @param light the light.
48      */
49     public static void setLight(LightManager manager, org.scilab.modules.graphic_objects.lighting.Light light) {
50
51         if (manager == null) return;
52         setLightingEnable(manager, light.isEnable());
53
54         Light sciLight = manager.getLight(0);
55         Double[] color = light.getAmbientColor();
56         sciLight.setAmbientColor(new Color(color[0].floatValue(), color[1].floatValue(), color[2].floatValue()));
57         color = light.getDiffuseColor();
58         sciLight.setDiffuseColor(new Color(color[0].floatValue(), color[1].floatValue(), color[2].floatValue()));
59         color = light.getSpecularColor();
60         sciLight.setSpecularColor(new Color(color[0].floatValue(), color[1].floatValue(), color[2].floatValue()));
61
62         switch (light.getTypeAsInteger()) {
63             case 0: //directional
64                 sciLight.setDirection(new Vector3d(light.getDirection()));
65                 break;
66             case 1: //point
67                 sciLight.setPosition(new Vector3d(light.getPosition()));
68                 break;
69             default:
70                 break;
71         }
72     }
73
74     /**
75      * Enables/disables lighting.
76      * @param manager the light manager.
77      * @param status the status.
78      */
79     public static void setLightingEnable(LightManager manager, Boolean status) {
80         if (manager == null) return;
81         manager.setLightningEnable(status.booleanValue());
82         Light light = manager.getLight(0);
83         light.setEnable(status.booleanValue());
84     }
85 }