package jadex.application.space.envsupport.observer.graphics.opengl; import jadex.application.space.envsupport.observer.graphics.drawable.DrawableCombiner; import jadex.application.space.envsupport.observer.graphics.drawable.Primitive; import java.awt.Color; import javax.media.opengl.GL; public class EllipseGLRenderer extends AbstractGLRenderer { /** * Draws the primitive. * @param dc the DrawableCombiner drawing the object * @param primitive the primitive being drawn * @param obj the object being drawn * @param vp the viewport */ public void draw(DrawableCombiner dc, Primitive primitive, Object obj, ViewportJOGL vp) { GL gl = vp.getContext(); int dList = 0; try { dList = ((Integer) primitive.getRenderInfo(0)).intValue(); } catch (Exception e) { String listName = getClass().getName(); Integer list = vp.getDisplayList(listName); if(list == null) { dList = gl.glGenLists(1); gl.glNewList(dList, GL.GL_COMPILE); gl.glBegin(GL.GL_TRIANGLE_FAN); gl.glVertex2d(0.0, 0.0); gl.glVertex2d(0.5, 0.0); for(int i = 1; i < 36; ++i) { double x = Math.PI * 2 / 36 * i; gl.glVertex2d(Math.cos(x) / 2.0, Math.sin(x) / 2.0); } gl.glVertex2d(0.5, 0.0); gl.glEnd(); gl.glEndList(); list = new Integer(dList); vp.setDisplayList(listName, list); } dList = list.intValue(); primitive.setRenderInfo(0, list); } Color c = (Color)dc.getBoundValue(obj, primitive.getColor(), vp); gl.glColor4fv(c.getComponents(null), 0); if (setupMatrix(dc, primitive, obj, gl, vp)) gl.glCallList(dList); } }