package org.jzy3d.plot3d.primitives;
import org.jzy3d.maths.BoundingBox3d;
import com.jogamp.opengl.GL;
public class CroppableLineStrip extends LineStrip implements Croppable {
boolean[] filter; // true = show, false = hide
@Override
public void filter(BoundingBox3d bounds) {
filter = new boolean[points.size()];
for (int i = 0; i < filter.length; i++)
filter[i] = bounds.contains(points.get(i).xyz);
}
@Override
public void resetFilter() {
filter = null;
}
@Override
public void drawLineGL2(GL gl) {
gl.getGL2().glBegin(GL.GL_LINE_STRIP);
gl.getGL2().glLineWidth(wfwidth);
if (filter == null)
doDrawAllLines(gl);
else
doDrawLinesFiltered(gl);
gl.getGL2().glEnd();
}
@Override
public void drawPointsGL2(GL gl) {
gl.getGL2().glBegin(GL.GL_POINTS);
if (filter == null)
doDrawAllPoints(gl);
else
doDrawPointsFiltered(gl);
gl.getGL2().glEnd();
}
private void doDrawAllLines(GL gl) {
if (wfcolor == null) {
for (Point p : points) {
gl.getGL2().glColor4f(p.rgb.r, p.rgb.g, p.rgb.b, p.rgb.a);
gl.getGL2().glVertex3f(p.xyz.x, p.xyz.y, p.xyz.z);
}
} else {
for (Point p : points) {
gl.getGL2().glColor4f(wfcolor.r, wfcolor.g, wfcolor.b, wfcolor.a);
gl.getGL2().glVertex3f(p.xyz.x, p.xyz.y, p.xyz.z);
}
}
}
private void doDrawLinesFiltered(GL gl) {
for (int i = 0; i < filter.length; i++) {
if (filter[i]) {
Point p = points.get(i);
if (wfcolor == null)
gl.getGL2().glColor4f(p.rgb.r, p.rgb.g, p.rgb.b, p.rgb.a);
else
gl.getGL2().glColor4f(wfcolor.r, wfcolor.g, wfcolor.b, wfcolor.a);
gl.getGL2().glVertex3f(p.xyz.x, p.xyz.y, p.xyz.z);
}
}
}
private void doDrawAllPoints(GL gl) {
for (Point p : points) {
if (wfcolor == null)
gl.getGL2().glColor4f(p.rgb.r, p.rgb.g, p.rgb.b, p.rgb.a);
else
gl.getGL2().glColor4f(wfcolor.r, wfcolor.g, wfcolor.b, wfcolor.a);
gl.getGL2().glVertex3f(p.xyz.x, p.xyz.y, p.xyz.z);
}
}
private void doDrawPointsFiltered(GL gl) {
for (int i = 0; i < filter.length; i++) {
if (filter[i]) {
Point p = points.get(i);
if (wfcolor == null)
gl.getGL2().glColor4f(p.rgb.r, p.rgb.g, p.rgb.b, p.rgb.a);
else
gl.getGL2().glColor4f(wfcolor.r, wfcolor.g, wfcolor.b, wfcolor.a);
gl.getGL2().glVertex3f(p.xyz.x, p.xyz.y, p.xyz.z);
}
}
}
}
Ads help maintain this website.