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);
}