// Path: projects/main/src/main/java/libshapedraw/shape/XrayShape.java
// public interface XrayShape {
//     public ReadonlyColor getMainColorReadonly();
// 
//     public ReadonlyColor getSecondaryColorReadonly();
// 
//     /** @return true if getSecondaryColorReadonly() is non-null. */
//     public boolean isVisibleThroughTerrain();
// 
//     /**
//      * A recommended alpha scaling factor to apply when making a secondary
//      * color based on the main color. In other words, how much to reduce the
//      * transparency of the secondary color.
//      * <p>
//      * This isn't obligatory. The secondary color does not necessarily have to
//      * be based on the main color.
//      */
//     public static double SECONDARY_ALPHA = 0.25;
// }


import libshapedraw.shape.XrayShape;
import org.lwjgl.opengl.GL11;
    }

    /**
     * Set the line style's main width.
     * @return the same line style object, modified in-place.
     */
    public LineStyle setMainWidth(float mainWidth) {
        if (mainWidth < 0) {
            throw new IllegalArgumentException("line width must be positive");
        }
        this.mainWidth = mainWidth;
        return this;
    }

    /**
     * Set the line style's secondary color, which can be null.
     * @return the same line style object, modified in-place.
     */
    public LineStyle setSecondaryColor(Color secondaryColor) {
        // null allowed
        this.secondaryColor = secondaryColor;
        return this;
    }

    /**
     * Set the line style's secondary color to a semi-transparent version of
     * the main line color.
     * @return the same line style object, modified in-place.
     */
    public LineStyle setSecondaryColorFromMain() {
// Path: projects/main/src/main/java/libshapedraw/shape/XrayShape.java
// public interface XrayShape {
//     public ReadonlyColor getMainColorReadonly();
// 
//     public ReadonlyColor getSecondaryColorReadonly();
// 
//     /** @return true if getSecondaryColorReadonly() is non-null. */
//     public boolean isVisibleThroughTerrain();
// 
//     /**
//      * A recommended alpha scaling factor to apply when making a secondary
//      * color based on the main color. In other words, how much to reduce the
//      * transparency of the secondary color.
//      * <p>
//      * This isn't obligatory. The secondary color does not necessarily have to
//      * be based on the main color.
//      */
//     public static double SECONDARY_ALPHA = 0.25;
// }


// Path: projects/main/src/main/java/libshapedraw/primitive/LineStyle.java
import libshapedraw.shape.XrayShape;
import org.lwjgl.opengl.GL11;

    }

    /**
     * Set the line style's main width.
     * @return the same line style object, modified in-place.
     */
    public LineStyle setMainWidth(float mainWidth) {
        if (mainWidth < 0) {
            throw new IllegalArgumentException("line width must be positive");
        }
        this.mainWidth = mainWidth;
        return this;
    }

    /**
     * Set the line style's secondary color, which can be null.
     * @return the same line style object, modified in-place.
     */
    public LineStyle setSecondaryColor(Color secondaryColor) {
        // null allowed
        this.secondaryColor = secondaryColor;
        return this;
    }

    /**
     * Set the line style's secondary color to a semi-transparent version of
     * the main line color.
     * @return the same line style object, modified in-place.
     */
    public LineStyle setSecondaryColorFromMain() {
        secondaryColor = mainColor.copy().scaleAlpha(XrayShape.SECONDARY_ALPHA);