package org.geogebra.common.geogebra3D.euclidian3D.draw; import org.geogebra.common.geogebra3D.euclidian3D.EuclidianView3D; import org.geogebra.common.geogebra3D.euclidian3D.openGL.Renderer; import org.geogebra.common.kernel.Matrix.Coords; /** * list of drawables stored by the view (will also draw the view axes, plane, * etc.) * * @author mathieu * */ public class Drawable3DListsForView extends Drawable3DLists { private EuclidianView3D view3D; /** * constructor * * @param view3D * 3D view */ public Drawable3DListsForView(EuclidianView3D view3D) { super(); this.view3D = view3D; } @Override protected void remove(Drawable3D drawable) { super.remove(drawable); // TODO fix it if (drawable != null) { if (drawable.getGeoElement() != null && drawable.getGeoElement().isPickable()) { drawable.removeFromGL(); } } } @Override public void drawHiddenTextured(Renderer renderer) { super.drawHiddenTextured(renderer); view3D.drawHidden(renderer); } @Override public void drawTransp(Renderer renderer) { super.drawTransp(renderer); view3D.drawTransp(renderer); } @Override public void draw(Renderer renderer) { super.draw(renderer); view3D.draw(renderer); } @Override public void drawLabel(Renderer renderer) { super.drawLabel(renderer); view3D.drawLabel(renderer); } @Override public void drawSurfacesForHiding(Renderer renderer) { super.drawSurfacesForHiding(renderer); view3D.drawHiding(renderer); } /** * enlarge min and max values to enclose all objects * * @param min * (x,y,z) min * @param max * (x,y,z) max */ public void enlargeBounds(Coords min, Coords max) { for (Drawable3DList l : lists) { for (Drawable3D d : l) { if (d.isVisible()) { d.enlargeBounds(min, max); } } } } }