package jadex.application.space.envsupport.observer.graphics.opengl;
import java.awt.Color;
import javax.media.opengl.GL;
import jadex.application.space.envsupport.math.IVector2;
import jadex.application.space.envsupport.observer.graphics.layer.GridLayer;
import jadex.application.space.envsupport.observer.graphics.layer.Layer;
import jadex.application.space.envsupport.observer.gui.SObjectInspector;
import jadex.application.space.envsupport.observer.perspective.IPerspective;
public class GridLayerGLRenderer implements ILayerGLRenderer
{
/**
* Draws the layer.
* @param persp the Perspective
* @param layer the layer being drawn
* @param areaSize the area size
* @param vp the viewport
*/
public void draw(IPerspective persp, Layer layer, IVector2 areaSize, ViewportJOGL vp)
{
Color c = layer.getColor() instanceof Color? (Color)layer.getColor(): (Color)SObjectInspector.getProperty(persp, (String)layer.getColor(), "$perspective",
vp.getPerspective().getObserverCenter().getSpace().getFetcher());
GL gl = vp.getContext();
gl.glColor4fv(c.getComponents(null), 0);
IVector2 pixSize = vp.getPixelSize();
gl.glBegin(GL.GL_QUADS);
IVector2 step = areaSize.copy().subtract(pixSize).divide(areaSize.copy().divide(((GridLayer) layer).getGridSize()));
for (float x = 0.0f; x < areaSize.getXAsFloat(); x = x + step.getXAsFloat())
{
gl.glVertex2f(x, 0.0f);
gl.glVertex2f(x, areaSize.getYAsFloat());
gl.glVertex2f(x + pixSize.getXAsFloat(), areaSize.getYAsFloat());
gl.glVertex2f(x + pixSize.getXAsFloat(), 0.0f);
}
for (float y = 0.0f; y < areaSize.getYAsFloat(); y = y + step.getYAsFloat())
{
gl.glVertex2f(0.0f, y);
gl.glVertex2f(areaSize.getXAsFloat(), y);
gl.glVertex2f(areaSize.getXAsFloat(), y + pixSize.getXAsFloat());
gl.glVertex2f(0.0f, y + pixSize.getXAsFloat());
}
gl.glEnd();
}
}