package edu.uci.ics.jung.visualization.renderers; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Line2D; import edu.uci.ics.jung.visualization.RenderContext; public interface EdgeArrowRenderingSupport<V, E> { /** * Returns a transform to position the arrowhead on this edge shape at the * point where it intersects the passed vertex shape. */ AffineTransform getArrowTransform(RenderContext<V, E> rc, Shape edgeShape, Shape vertexShape); /** * Returns a transform to position the arrowhead on this edge shape at the * point where it intersects the passed vertex shape. */ AffineTransform getReverseArrowTransform( RenderContext<V, E> rc, Shape edgeShape, Shape vertexShape); /** * <p>Returns a transform to position the arrowhead on this edge shape at the * point where it intersects the passed vertex shape.</p> * * <p>The Loop edge is a special case because its staring point is not inside * the vertex. The passedGo flag handles this case.</p> * * @param edgeShape * @param vertexShape * @param passedGo - used only for Loop edges */ AffineTransform getReverseArrowTransform( RenderContext<V, E> rc, Shape edgeShape, Shape vertexShape, boolean passedGo); /** * This is used for the arrow of a directed and for one of the * arrows for non-directed edges * Get a transform to place the arrow shape on the passed edge at the * point where it intersects the passed shape * @param edgeShape * @param vertexShape * @return */ AffineTransform getArrowTransform(RenderContext<V, E> rc, Line2D edgeShape, Shape vertexShape); }