public void drawLink() {
GL2 gl = GLContext.getCurrentGL().getGL2();
if (drawLinkAsLine) {
gl.glLineWidth(1);
gl.glBegin(GL2.GL_LINES);
gl.glVertex2f(quad[0].x, quad[0].y);
gl.glVertex2f(quad[1].x, quad[1].y);
gl.glEnd();
} else {
linkWidthCalculator.setLaneWidth(OTFClientControl.getInstance().getOTFVisConfig().getEffectiveLaneWidth());
linkWidthCalculator.setLinkWidthForVis(OTFClientControl.getInstance().getOTFVisConfig().getLinkWidth());
float width = (float) linkWidthCalculator.calculateLinkWidth(this.nrLanes);
final Point2D.Float ortho = calcOrtho(this.quad[0].x, this.quad[0].y, this.quad[1].x, this.quad[1].y, width);
this.quad[2] = new Point2D.Float(this.quad[0].x + ortho.x, this.quad[0].y + ortho.y);
this.quad[3] = new Point2D.Float(this.quad[1].x + ortho.x, this.quad[1].y + ortho.y);
TextureCoords co = new TextureCoords(0,0,1,1);
gl.glBegin(GL2.GL_QUADS);
gl.glTexCoord2f(co.right(),co.bottom()); gl.glVertex3f(quad[0].x, quad[0].y, 0);
gl.glTexCoord2f(co.right(),co.top()); gl.glVertex3f(quad[1].x, quad[1].y, 0);
gl.glTexCoord2f(co.left(), co.top()); gl.glVertex3f(quad[3].x, quad[3].y, 0);
gl.glTexCoord2f(co.left(),co.bottom()); gl.glVertex3f(quad[2].x, quad[2].y, 0);
gl.glEnd();
}
}