package org.jzy3d.plot3d.primitives.graphs.impl;
import org.apache.log4j.Logger;
import org.jzy3d.colors.Color;
import org.jzy3d.maths.BoundingBox3d;
import org.jzy3d.maths.Coord2d;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.primitives.graphs.AbstractDrawableGraph2d;
import org.jzy3d.plot3d.primitives.textured.DrawableTexture;
import org.jzy3d.plot3d.rendering.compat.GLES2CompatUtils;
import org.jzy3d.plot3d.rendering.view.Camera;
import org.jzy3d.plot3d.text.align.Halign;
import org.jzy3d.plot3d.text.align.Valign;
import org.jzy3d.plot3d.transform.Transform;
import com.jogamp.opengl.GL;
import com.jogamp.opengl.glu.GLU;
public class DefaultDrawableGraph2d extends AbstractDrawableGraph2d {
public DefaultDrawableGraph2d() {
super();
bbox = new BoundingBox3d();
labelScreenOffset = new Coord2d(0, 0);
labelSceneOffset = new Coord3d(0, 0, 0);
}
/*******************************************************/
@Override
protected void drawVertices(GL gl, GLU glu, Camera cam) {
if (gl.isGL2()) {
gl.getGL2().glPointSize(formatter.getVertexWidth());
gl.getGL2().glBegin(GL.GL_POINTS);
for (V v : graph.getVertices()) {
if (highlights.get(v))
drawVertexNode(gl, glu, cam, v, layout.get(v),
formatter.getHighlightedVertexColor());
else
drawVertexNode(gl, glu, cam, v, layout.get(v),
formatter.getVertexColor());
}
gl.getGL2().glEnd();
} else {
GLES2CompatUtils.glPointSize(formatter.getVertexWidth());
GLES2CompatUtils.glBegin(GL.GL_POINTS);
for (V v : graph.getVertices()) {
if (highlights.get(v))
drawVertexNode(gl, glu, cam, v, layout.get(v),
formatter.getHighlightedVertexColor());
else
drawVertexNode(gl, glu, cam, v, layout.get(v),
formatter.getVertexColor());
}
GLES2CompatUtils.glEnd();
}
}
@Override
protected void drawVertexLabels(GL gl, GLU glu, Camera cam) {
for (V v : graph.getVertices()) {
if (highlights.get(v))
drawVertexLabel(gl, glu, cam, v, layout.get(v),
formatter.getHighlightedVertexColor());
else
drawVertexLabel(gl, glu, cam, v, layout.get(v),
formatter.getVertexLabelColor());
}
}
@Override
protected void drawEdges(GL gl, GLU glu, Camera cam) {
for (E e : graph.getEdges()) {
V v1 = graph.getEdgeStartVertex(e);
V v2 = graph.getEdgeStopVertex(e);
drawEdge(gl, glu, cam, e, layout.get(v1), layout.get(v2),
formatter.getEdgeColor());
}
}
/*******************************************************/
protected void drawVertexNode(GL gl, GLU glu, Camera cam, V v,
Coord2d coord, Color color) {
if (gl.isGL2()) {
gl.getGL2().glColor4f(color.r, color.g, color.b, color.a);
gl.getGL2().glVertex3f(coord.x, coord.y, Z);
} else {
GLES2CompatUtils.glColor4f(color.r, color.g, color.b, color.a);
GLES2CompatUtils.glVertex3f(coord.x, coord.y, Z);
}
}
protected void drawVertexLabel(GL gl, GLU glu, Camera cam, V v,
Coord2d coord, Color color) {
Coord3d textPosition = new Coord3d(coord, Z);
txt.drawText(gl, glu, cam, v.toString(), textPosition, Halign.CENTER,
Valign.BOTTOM, color, labelScreenOffset, labelSceneOffset,0);
}
protected void drawEdge(GL gl, GLU glu, Camera cam, E e, Coord2d c1,
Coord2d c2, Color color) {
if (gl.isGL2()) {
gl.getGL2().glBegin(GL.GL_LINE_STRIP);
gl.getGL2().glColor4f(color.r, color.g, color.b, color.a);
gl.getGL2().glVertex3f(c1.x, c1.y, Z);
gl.getGL2().glVertex3f(c2.x, c2.y, Z);
gl.getGL2().glEnd();
} else {
GLES2CompatUtils.glBegin(GL.GL_LINE_STRIP);
GLES2CompatUtils.glColor4f(color.r, color.g, color.b, color.a);
GLES2CompatUtils.glVertex3f(c1.x, c1.y, Z);
GLES2CompatUtils.glVertex3f(c2.x, c2.y, Z);
GLES2CompatUtils.glEnd();
}
}
@Override
public void applyGeometryTransform(Transform transform) {
Logger.getLogger(DrawableTexture.class).warn("not implemented");
}
@Override
public void updateBounds() {
Logger.getLogger(DrawableTexture.class).warn("not implemented");
}
}
Ads help maintain this website.