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.geogebra3D.euclidian3D.openGL.Renderer.PickingType; import org.geogebra.common.kernel.geos.GProperty; import org.geogebra.common.kernel.geos.GeoElement; /** * * @author ggb3D * * for "solid" drawables, like lines, segments, etc. these are drawable * that are not to become transparent * */ public abstract class Drawable3DCurves extends Drawable3D { /** * common constructor * * @param a_view3d * @param a_geo */ public Drawable3DCurves(EuclidianView3D a_view3d, GeoElement a_geo) { super(a_view3d, a_geo); setPickingType(PickingType.POINT_OR_CURVE); } /** * constructor for previewables * * @param a_view3d * 3D view */ public Drawable3DCurves(EuclidianView3D a_view3d) { super(a_view3d); setPickingType(PickingType.POINT_OR_CURVE); } @Override public void drawOutline(Renderer renderer) { if (isVisible()) { setHighlightingColor(); renderer.getTextures() .setDashFromLineType(getGeoElement().getLineType()); drawGeometry(renderer); } drawTracesOutline(renderer, false); } // /////////////////////////////////////// // DRAWING GEOMETRIES @Override public void drawGeometryHidden(Renderer renderer) { drawGeometry(renderer); } @Override public void drawHidden(Renderer renderer) { super.drawHidden(renderer); drawTracesOutline(renderer, true); } @Override public void drawHiding(Renderer renderer) { // method not used for solid drawables } @Override public void drawTransp(Renderer renderer) { // methods not used for solid drawables } @Override public void drawNotTransparentSurface(Renderer renderer) { // methods not used for solid drawables } @Override public boolean isTransparent() { return false; } @Override public void addToDrawable3DLists(Drawable3DLists lists) { addToDrawable3DLists(lists, DRAW_TYPE_CURVES); } @Override public void removeFromDrawable3DLists(Drawable3DLists lists) { removeFromDrawable3DLists(lists, DRAW_TYPE_CURVES); } @Override protected double getColorShift() { return COLOR_SHIFT_CURVES; } @Override public void setWaitForUpdateVisualStyle(GProperty prop) { super.setWaitForUpdateVisualStyle(prop); // also update for e.g. line width setWaitForUpdate(); } }