Class VisualEdgeRenderer<V extends VisualVertex,E extends VisualEdge<V>>

java.lang.Object
edu.uci.ics.jung.visualization.renderers.BasicEdgeRenderer<V,E>
ghidra.graph.viewer.edge.VisualEdgeRenderer<V,E>
Type Parameters:
V - the vertex type
E - the edge type
All Implemented Interfaces:
edu.uci.ics.jung.visualization.renderers.Renderer.Edge<V,E>
Direct Known Subclasses:
ArticulatedEdgeRenderer, VisualGraphEdgeSatelliteRenderer

public abstract class VisualEdgeRenderer<V extends VisualVertex,E extends VisualEdge<V>> extends edu.uci.ics.jung.visualization.renderers.BasicEdgeRenderer<V,E>
Edge render for the 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
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    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 vertex
    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
    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
    getHighlightColor(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
     
    protected boolean
     
    protected boolean
     
    protected boolean
     
    void
     
    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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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

      public void setBaseColor(Color color)
    • getBaseColor

      public Color getBaseColor(edu.uci.ics.jung.graph.Graph<V,E> g, E e)
    • setHighlightColor

      public void setHighlightColor(Color highlightColor)
    • getHighlightColor

      public Color getHighlightColor(edu.uci.ics.jung.graph.Graph<V,E> g, E e)
    • isInHoveredVertexPath

      protected boolean isInHoveredVertexPath(E e)
    • isInFocusedVertexPath

      protected boolean isInFocusedVertexPath(E e)
    • isSelected

      protected boolean isSelected(E e)
    • isEmphasiszed

      protected boolean isEmphasiszed(E e)
    • 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 class edu.uci.ics.jung.visualization.renderers.BasicEdgeRenderer<V extends VisualVertex,E extends VisualEdge<V>>
    • getVertexShapeForArrow

      protected Shape getVertexShapeForArrow(edu.uci.ics.jung.visualization.RenderContext<V,E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V,E> layout, V v)
    • 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 graph
      graph - the graph
      e - the edge to shape
      x1 - the start vertex point x; layout space
      y1 - the start vertex point y; layout space
      x2 - the end vertex point x; layout space
      y2 - the end vertex point y; layout space
      isLoop - true if the start == end, which is a self-loop
      vertexShape - 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 context
      layout - the layout
      vertex - 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 context
      layout - the layout
      vertex - the vertex
      Returns:
      the vertex shape
      See Also:
    • transformFromLayoutToView

      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)