Smrf.NodeXL.Visualization.Wpf.EdgeDrawer.TryDrawSelfLoop C# (CSharp) Method

TryDrawSelfLoop() protected method

protected TryDrawSelfLoop ( IVertex oVertex, System.Windows.Media.DrawingContext oDrawingContext, GraphDrawingContext oGraphDrawingContext, Color oColor, Double dWidth, System.Boolean bDrawArrow ) : System.Boolean
oVertex IVertex
oDrawingContext System.Windows.Media.DrawingContext
oGraphDrawingContext GraphDrawingContext
oColor Color
dWidth Double
bDrawArrow System.Boolean
return System.Boolean
    TryDrawSelfLoop
    (
        IVertex oVertex,
        DrawingContext oDrawingContext,
        GraphDrawingContext oGraphDrawingContext,
        Color oColor,
        Double dWidth,
        Boolean bDrawArrow
    )
    {
        Debug.Assert(oVertex != null);
        Debug.Assert(oDrawingContext != null);
        Debug.Assert(oGraphDrawingContext != null);
        Debug.Assert(dWidth >= 0);
        AssertValid();

        // Retrieve the information about how the vertex was drawn.

        VertexDrawingHistory oVertexDrawingHistory;

        if ( !TryGetVertexDrawingHistory(oVertex, out oVertexDrawingHistory) )
        {
            // The edge's vertex is hidden, so the edge should be hidden also.

            return (false);
        }

        // Determine the edge of the graph rectangle that is farthest from the
        // vertex.

        Point oVertexLocation = oVertexDrawingHistory.VertexLocation;

        RectangleEdge eFarthestGraphRectangleEdge =
            WpfGraphicsUtil.GetFarthestRectangleEdge(oVertexLocation,
            oGraphDrawingContext.GraphRectangle);

        // Get the point on the vertex at which to draw the self-loop.

        Point oSelfLoopEndpoint = oVertexDrawingHistory.GetSelfLoopEndpoint(
            eFarthestGraphRectangleEdge);

        DrawSelfLoopAt(oDrawingContext, oGraphDrawingContext, oColor, dWidth,
            oSelfLoopEndpoint, eFarthestGraphRectangleEdge, bDrawArrow);

        return (true);
    }