4652efba5886a2a2750ea06b4682781044ade7c1
[scilab.git] / scilab / modules / scirenderer / src / org / scilab / forge / scirenderer / DrawingTools.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009-2011 - DIGITEO - Pierre Lando
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.1-en.txt
10  */
11
12 package org.scilab.forge.scirenderer;
13
14 import org.scilab.forge.scirenderer.buffers.ElementsBuffer;
15 import org.scilab.forge.scirenderer.clipping.ClippingManager;
16 import org.scilab.forge.scirenderer.lightning.LightManager;
17 import org.scilab.forge.scirenderer.renderer.Renderer;
18 import org.scilab.forge.scirenderer.shapes.appearance.Appearance;
19 import org.scilab.forge.scirenderer.shapes.appearance.Color;
20 import org.scilab.forge.scirenderer.shapes.geometry.Geometry;
21 import org.scilab.forge.scirenderer.texture.AnchorPosition;
22 import org.scilab.forge.scirenderer.texture.Texture;
23 import org.scilab.forge.scirenderer.tranformations.TransformationManager;
24 import org.scilab.forge.scirenderer.tranformations.Vector3d;
25
26 /**
27  * @author Pierre Lando
28  */
29 public interface DrawingTools {
30
31     /**
32      * Return the canvas where draw is done.
33      * @return the canvas where draw is done.
34      */
35     Canvas getCanvas();
36
37     /**
38      * Return the transformation manager.
39      * @return the transformation manager.
40      */
41     TransformationManager getTransformationManager();
42
43     /**
44      * Return the light manager.
45      * @return the light manager.
46      */
47     LightManager getLightManager();
48
49     /**
50      * Return the clipping manager.
51      * @return the clipping manager.
52      */
53     ClippingManager getClippingManager();
54
55     /**
56      * Clear the canvas with the given color.
57      * @param color the color used to clear the canvas.
58      */
59     void clear(Color color);
60
61     /**
62      * Clear the canvas with the given color.
63      * @param color the color used to clear the canvas.
64      */
65     void clear(java.awt.Color color);
66
67     /**
68      * Clear the depth buffer.
69      */
70     void clearDepthBuffer();
71
72     /**
73      * Ask the given renderer to perform a draw.
74      * @param renderer the given renderer.
75      */
76     void draw(Renderer renderer);
77
78     /**
79      * Draw the given geometry with default appearance.
80      * @param geometry the geometry to draw.
81      * @throws SciRendererException if the draw is not possible.
82      */
83     void draw(Geometry geometry) throws SciRendererException;
84
85     /**
86      * Draw the given geometry.
87      * @param geometry the geometry to draw.
88      * @param appearance the appearance to use.
89      * @throws SciRendererException if the draw is not possible.
90      */
91     void draw(Geometry geometry, Appearance appearance) throws SciRendererException;
92
93     /**
94      * Draw the texture on XY plane in current coordinate.
95      * The texture is drawn on the rectangle [(0,0)-(texture width,texture height)].
96      * @param texture the texture to drawn.
97      * @throws SciRendererException if the texture is not drawable.
98      */
99     void draw(Texture texture) throws SciRendererException;
100
101     /**
102      * Draw the given texture at all given position.
103      * @param texture the texture to draw.
104      * @param anchor the texture anchor position.
105      * @param positions the positions where the texture will be drawn.
106      * @throws SciRendererException if the texture is not drawable.
107      */
108     void draw(Texture texture, AnchorPosition anchor, ElementsBuffer positions) throws SciRendererException;
109
110     /**
111      * Draw the given texture at all given position with the given rotation angle.
112      * @param texture the texture to draw.
113      * @param anchor the texture anchor position.
114      * @param positions the positions where the texture will be drawn.
115      * @param rotationAngle the rotation angle.
116      * @throws SciRendererException if the texture is not drawable.
117      */
118     void draw(Texture texture, AnchorPosition anchor, ElementsBuffer positions, double rotationAngle) throws SciRendererException;
119
120     /**
121      * Draw the given texture at all given position with selected colors.
122      * @param texture the texture to draw.
123      * @param anchor the texture anchor position.
124      * @param positions the positions where the texture will be drawn.
125      * @param colors the colors of the texture.
126      * @throws SciRendererException if the texture is not drawable.
127      */
128     void draw(Texture texture, AnchorPosition anchor, ElementsBuffer positions, ElementsBuffer colors) throws SciRendererException;
129
130     /**
131      * Draw the given texture at all given position with the given rotation angle with selected colors.
132      * @param texture the texture to draw.
133      * @param anchor the texture anchor position.
134      * @param positions the positions where the texture will be drawn.
135      * @param rotationAngle the rotation angle.
136      * @param colors the colors of the texture.
137      * @throws SciRendererException if the texture is not drawable.
138      */
139     void draw(Texture texture, AnchorPosition anchor, ElementsBuffer positions, double rotationAngle, ElementsBuffer colors) throws SciRendererException;
140
141     /**
142      * Draw the given texture at all given position with given offset and stride with the given rotation angle.
143      * @param texture the texture to draw.
144      * @param anchor the texture anchor position.
145      * @param positions the positions where the texture will be drawn.
146      * @param offset the position of the first mark.
147      * @param stride the spacing between two marks.
148      * @param rotationAngle the rotation angle.
149      * @throws SciRendererException if the texture is not drawable.
150      */
151     void draw(Texture texture, AnchorPosition anchor, ElementsBuffer positions, int offset, int stride, double rotationAngle) throws SciRendererException;
152
153     /**
154      * Draw the given texture at all given position with given offset and stride with the given rotation angle with the given color.
155      * @param texture the texture to draw.
156      * @param anchor the texture anchor position.
157      * @param positions the positions where the texture will be drawn.
158      * @param offset the position of the first mark.
159      * @param stride the spacing between two marks.
160      * @param rotationAngle the rotation angle.
161      * @param colors the colors of the texture.
162      * @throws SciRendererException if the texture is not drawable.
163      */
164     void draw(Texture texture, AnchorPosition anchor, ElementsBuffer positions, int offset, int stride, double rotationAngle, ElementsBuffer colors) throws SciRendererException;
165
166     /**
167      * Draw the given texture at given position.
168      * @param texture the texture to draw.
169      * @param anchor the texture anchor position.
170      * @param position the position where the texture will be drawn.
171      * @throws SciRendererException if the texture is not drawable.
172      */
173     void draw(Texture texture, AnchorPosition anchor, Vector3d position) throws SciRendererException;
174
175     /**
176      * Draw the given texture at given position with the given rotation angle.
177      * @param texture the texture to draw.
178      * @param anchor the texture anchor position.
179      * @param position the position where the texture will be drawn.
180      * @param rotationAngle the rotation angle.
181      * @throws SciRendererException if the texture is not drawable.
182      */
183     void draw(Texture texture, AnchorPosition anchor, Vector3d position, double rotationAngle) throws SciRendererException;
184 }