/*
 * Created on Oct 19, 2004
 *
 * Copyright (c) 2004, the JUNG Project and the Regents of the University 
 * of California
 * All rights reserved.
 *
 * This software is open-source under the BSD license; see either
 * "license.txt" or
 * http://jung.sourceforge.net/license.txt for a description.
 */
package edu.uci.ics.jung.visualization;

import java.awt.geom.GeneralPath;

/**
 * A utility class for creating arrowhead shapes.
 * 
 * @author Joshua O'Madadhain
 */
public class ArrowFactory
{
    /**
     * Returns an arrowhead in the shape of a simple isosceles triangle
     * with the specified base and height measurements.  It is placed
     * with the vertical axis along the negative x-axis, with its base
     * centered on (0,0).
     */
    public static GeneralPath getWedgeArrow(float base, float height)
    {
        GeneralPath arrow = new GeneralPath();
        arrow.moveTo(0,0);
        arrow.lineTo( - height, base/2.0f);
        arrow.lineTo( - height, -base/2.0f);
        arrow.lineTo( 0, 0 );
        return arrow;
    }

    /**
     * Returns an arrowhead in the shape of an isosceles triangle
     * with an isoceles-triangle notch taken out of the base,
     * with the specified base and height measurements.  It is placed
     * with the vertical axis along the negative x-axis, with its base
     * centered on (0,0).
     */
    public static GeneralPath getNotchedArrow(float base, float height, float notch_height)
    {
        GeneralPath arrow = new GeneralPath();
        arrow.moveTo(0,0);
        arrow.lineTo(-height, base/2.0f);
        arrow.lineTo(-(height - notch_height), 0);
        arrow.lineTo(-height, -base/2.0f);
        arrow.lineTo(0,0);
        return arrow;
    }
}
