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

  • 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
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      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)  
      java.awt.Color getBaseColor​(edu.uci.ics.jung.graph.Graph<V,​E> g, E e)  
      protected java.awt.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 java.awt.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, java.awt.Shape vertexShape)
      Returns the edge shape for the given points
      java.awt.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
      java.awt.Color getHighlightColor​(edu.uci.ics.jung.graph.Graph<V,​E> g, E e)  
      protected java.awt.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 isInFocusedVertexPath​(E e)  
      protected boolean isInHoveredVertexPath​(E e)  
      protected boolean isSelected​(E e)  
      void setBaseColor​(java.awt.Color color)  
      void setDashingPatternOffset​(float dashingPatterOffset)
      Sets the offset value for painting dashed lines.
      void setHighlightColor​(java.awt.Color highlightColor)  
      protected java.awt.Shape transformFromLayoutToView​(edu.uci.ics.jung.visualization.RenderContext<V,​E> rc, edu.uci.ics.jung.algorithms.layout.Layout<V,​E> layout, V vertex, java.awt.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 Detail

      • VisualEdgeRenderer

        public VisualEdgeRenderer()
    • Method Detail

      • 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​(java.awt.Color color)
      • getBaseColor

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

        public void setHighlightColor​(java.awt.Color highlightColor)
      • getHighlightColor

        public java.awt.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 java.awt.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 java.awt.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,
                                                    java.awt.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 java.awt.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:
        VertexShapeProvider.getFullShape()
      • getCompactShape

        protected java.awt.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:
        VertexShapeProvider.getCompactShape()
      • transformFromLayoutToView

        protected java.awt.Shape transformFromLayoutToView​(edu.uci.ics.jung.visualization.RenderContext<V,​E> rc,
                                                           edu.uci.ics.jung.algorithms.layout.Layout<V,​E> layout,
                                                           V vertex,
                                                           java.awt.Shape shape)