class LineSeparator extends VerticalPositionMark {

    /**
     * The thickness of the line.
     */
    protected float lineWidth = 1;
    /**
     * The width of the line as a percentage of the available page width.
     */
    protected float percentage = 100;
    /**
     * The color of the line.
     */
    protected Color lineColor;
    /**
     * The alignment of the line.
     */
    protected int alignment = Element.ALIGN_CENTER;

    /**
     * Creates a new instance of the LineSeparator class.
     *
     * @param lineWidth  the thickness of the line
     * @param percentage the width of the line as a percentage of the available page width
     * @param lineColor  the color of the line
     * @param align      the alignment
     * @param offset     the offset of the line relative to the current baseline (negative = under the baseline)
     */
    public LineSeparator(float lineWidth, float percentage, Color lineColor, int align, float offset) {
        this.lineWidth = lineWidth;
        this.percentage = percentage;
        this.lineColor = lineColor;
        this.alignment = align;
        this.offset = offset;
    }

    /**
     * Creates a new instance of the LineSeparator class with default values: lineWidth 1 user unit, width 100%,
     * centered with offset 0.
     */
    public LineSeparator() {
    }

    /**
     * @see com.lowagie.text.pdf.draw.DrawInterface#draw(com.lowagie.text.pdf.PdfContentByte, float, float, float,
     * float, float)
     */
    public void draw(PdfContentByte canvas, float llx, float lly, float urx, float ury, float y) {
        canvas.saveState();
        drawLine(canvas, llx, urx, y);
        canvas.restoreState();
    }

    /**
     * Draws a horizontal line.
     *
     * @param canvas the canvas to draw on
     * @param leftX  the left x coordinate
     * @param rightX the right x coordindate
     * @param y      the y coordinate
     */
    public void drawLine(PdfContentByte canvas, float leftX, float rightX, float y) {<FILL_FUNCTION_BODY>}

    /**
     * Getter for the line width.
     *
     * @return the thickness of the line that will be drawn.
     */
    public float getLineWidth() {
        return lineWidth;
    }

    /**
     * Setter for the line width.
     *
     * @param lineWidth the thickness of the line that will be drawn.
     */
    public void setLineWidth(float lineWidth) {
        this.lineWidth = lineWidth;
    }

    /**
     * Setter for the width as a percentage of the available width.
     *
     * @return a width percentage
     */
    public float getPercentage() {
        return percentage;
    }

    /**
     * Setter for the width as a percentage of the available width.
     *
     * @param percentage a width percentage
     */
    public void setPercentage(float percentage) {
        this.percentage = percentage;
    }

    /**
     * Getter for the color of the line that will be drawn.
     *
     * @return a color
     */
    public Color getLineColor() {
        return lineColor;
    }

    /**
     * Setter for the color of the line that will be drawn.
     *
     * @param color a color
     */
    public void setLineColor(Color color) {
        this.lineColor = color;
    }

    /**
     * Getter for the alignment of the line.
     *
     * @return an alignment value
     */
    public int getAlignment() {
        return alignment;
    }

    /**
     * Setter for the alignment of the line.
     *
     * @param align an alignment value
     */
    public void setAlignment(int align) {
        this.alignment = align;
    }
}

        float w;
        if (getPercentage() < 0) {
            w = -getPercentage();
        } else {
            w = (rightX - leftX) * getPercentage() / 100.0f;
        }
        float s;
        switch (getAlignment()) {
            case Element.ALIGN_LEFT:
                s = 0;
                break;
            case Element.ALIGN_RIGHT:
                s = rightX - leftX - w;
                break;
            default:
                s = (rightX - leftX - w) / 2;
                break;
        }
        canvas.setLineWidth(getLineWidth());
        if (getLineColor() != null) {
            canvas.setColorStroke(getLineColor());
        }
        canvas.moveTo(s + leftX, y + offset);
        canvas.lineTo(s + w + leftX, y + offset);
        canvas.stroke();
    
<methods>public void <init>() ,public void <init>(com.lowagie.text.pdf.draw.DrawInterface, float) ,public void draw(com.lowagie.text.pdf.PdfContentByte, float, float, float, float, float) ,public ArrayList<com.lowagie.text.Element> getChunks() ,public com.lowagie.text.pdf.draw.DrawInterface getDrawInterface() ,public float getOffset() ,public boolean isContent() ,public boolean isNestable() ,public boolean process(com.lowagie.text.ElementListener) ,public void setDrawInterface(com.lowagie.text.pdf.draw.DrawInterface) ,public void setOffset(float) ,public int type() <variables>protected com.lowagie.text.pdf.draw.DrawInterface drawInterface,protected float offset