1 package edu.uci.ics.jung.visualization.renderers;
2
3 import java.awt.Shape;
4 import java.awt.geom.AffineTransform;
5 import java.awt.geom.Line2D;
6
7 import edu.uci.ics.jung.visualization.RenderContext;
8
9 public interface EdgeArrowRenderingSupport<V, E> {
10
11 /**
12 * Returns a transform to position the arrowhead on this edge shape at the
13 * point where it intersects the passed vertex shape.
14 */
15 AffineTransform getArrowTransform(RenderContext<V, E> rc,
16 Shape edgeShape, Shape vertexShape);
17
18 /**
19 * Returns a transform to position the arrowhead on this edge shape at the
20 * point where it intersects the passed vertex shape.
21 */
22 AffineTransform getReverseArrowTransform(
23 RenderContext<V, E> rc, Shape edgeShape, Shape vertexShape);
24
25 /**
26 * <p>Returns a transform to position the arrowhead on this edge shape at the
27 * point where it intersects the passed vertex shape.</p>
28 *
29 * <p>The Loop edge is a special case because its staring point is not inside
30 * the vertex. The passedGo flag handles this case.</p>
31 *
32 * @param edgeShape
33 * @param vertexShape
34 * @param passedGo - used only for Loop edges
35 */
36 AffineTransform getReverseArrowTransform(
37 RenderContext<V, E> rc, Shape edgeShape, Shape vertexShape,
38 boolean passedGo);
39
40 /**
41 * This is used for the arrow of a directed and for one of the
42 * arrows for non-directed edges
43 * Get a transform to place the arrow shape on the passed edge at the
44 * point where it intersects the passed shape
45 * @param edgeShape
46 * @param vertexShape
47 * @return
48 */
49 AffineTransform getArrowTransform(RenderContext<V, E> rc,
50 Line2D edgeShape, Shape vertexShape);
51
52 }