Class VisualEdgeRenderer<V extends VisualVertex,E extends VisualEdge<V>>
- Type Parameters:
V
- the vertex typeE
- the edge type
- All Implemented Interfaces:
edu.uci.ics.jung.visualization.renderers.Renderer.Edge<V,
E>
- Direct Known Subclasses:
ArticulatedEdgeRenderer
,VisualGraphEdgeSatelliteRenderer
VisualGraph
system
Implementation Notes
Jung Vertex/Edge Rendering
Jung creates shapes for vertices (see VertexShapeFactory
) that are centered. They
do this by getting the width/height of the shape and then creating an x/y value that is
half of the width and height, respectively. This has the effect of the vertex appearing
centered over its connected edge. We mimic that with our
VisualGraphVertexShapeTransformer
so that our edge rendering code is similar to
Jung's.
If we ever decide instead to not center our shapes, then this renderer would have to be updated to itself center the edge shape created herein, like this:
Rectangle b1 = s1.getBounds(); Rectangle b2 = s2.getBounds(); // translate the edge to be centered in the vertex int w1 = b1.width >> 1; int h1 = b1.height >> 1; int w2 = b2.width >> 1; int h2 = b2.height >> 1; float tx1 = x1 + w1; float ty1 = y1 + h1; float tx2 = x2 + w2; float ty2 = y2 + h2; Shape edgeShape = getEdgeShape(rc, graph, e, tx1, ty1, tx2, ty2, isLoop, xs1);
Also, there are other spots in the system where we account for this center that would
have to be changed, such as the AbstractVisualGraphLayout
, which needs the centering
offsets to handle vertex clipping.
-
Nested Class Summary
Nested classes/interfaces inherited from interface edu.uci.ics.jung.visualization.renderers.Renderer.Edge
edu.uci.ics.jung.visualization.renderers.Renderer.Edge.NOOP
-
Field Summary
Fields inherited from class edu.uci.ics.jung.visualization.renderers.BasicEdgeRenderer
edgeArrowRenderingSupport
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
drawSimpleEdge
(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V, E> layout, E e) getBaseColor
(edu.uci.ics.jung.graph.Graph<V, E> g, E e) protected Shape
getCompactShape
(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V, E> layout, V vertex) Uses the render context to create a compact shape for the given vertexabstract Shape
getEdgeShape
(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.graph.Graph<V, E> graph, E e, float x1, float y1, float x2, float y2, boolean isLoop, Shape vertexShape) Returns the edge shape for the given pointsgetFullShape
(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V, E> layout, V vertex) Uses the render context to create a compact shape for the given vertexgetHighlightColor
(edu.uci.ics.jung.graph.Graph<V, E> g, E e) protected Shape
getVertexShapeForArrow
(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V, E> layout, V v) protected boolean
isEmphasiszed
(E e) protected boolean
protected boolean
protected boolean
isSelected
(E e) void
setBaseColor
(Color color) void
setDashingPatternOffset
(float dashingPatterOffset) Sets the offset value for painting dashed lines.void
setHighlightColor
(Color highlightColor) protected Shape
transformFromLayoutToView
(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V, E> layout, V vertex, Shape shape) Methods inherited from class edu.uci.ics.jung.visualization.renderers.BasicEdgeRenderer
getEdgeArrowRenderingSupport, paintEdge, prepareFinalEdgeShape, setEdgeArrowRenderingSupport
-
Constructor Details
-
VisualEdgeRenderer
public VisualEdgeRenderer()
-
-
Method Details
-
setDashingPatternOffset
public void setDashingPatternOffset(float dashingPatterOffset) Sets the offset value for painting dashed lines. This allows clients to animate the lines being drawn for edges in the edge direction.- Parameters:
dashingPatterOffset
- the offset value
-
setBaseColor
-
getBaseColor
-
setHighlightColor
-
getHighlightColor
-
isInHoveredVertexPath
-
isInFocusedVertexPath
-
isSelected
-
isEmphasiszed
-
drawSimpleEdge
public void drawSimpleEdge(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V, E> layout, E e) - Overrides:
drawSimpleEdge
in classedu.uci.ics.jung.visualization.renderers.BasicEdgeRenderer<V extends VisualVertex,
E extends VisualEdge<V>>
-
getVertexShapeForArrow
-
getEdgeShape
public abstract Shape getEdgeShape(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.graph.Graph<V, E> graph, E e, float x1, float y1, float x2, float y2, boolean isLoop, Shape vertexShape) Returns the edge shape for the given points- Parameters:
rc
- the render context for the graphgraph
- the graphe
- the edge to shapex1
- the start vertex point x; layout spacey1
- the start vertex point y; layout spacex2
- the end vertex point x; layout spacey2
- the end vertex point y; layout spaceisLoop
- true if the start == end, which is a self-loopvertexShape
- the vertex shape (used in the case of a loop to draw a circle from the shape to itself)- Returns:
- the edge shape
-
getFullShape
public Shape getFullShape(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V, E> layout, V vertex) Uses the render context to create a compact shape for the given vertex- Parameters:
rc
- the render contextlayout
- the layoutvertex
- the vertex- Returns:
- the vertex shape
- See Also:
-
getCompactShape
protected Shape getCompactShape(edu.uci.ics.jung.visualization.RenderContext<V, E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V, E> layout, V vertex) Uses the render context to create a compact shape for the given vertex- Parameters:
rc
- the render contextlayout
- the layoutvertex
- the vertex- Returns:
- the vertex shape
- See Also:
-
transformFromLayoutToView
-