MoveVertexBoundsIfNecessary() public method

public MoveVertexBoundsIfNecessary ( GraphDrawingContext graphDrawingContext, Double graphScale, Rect &vertexBounds ) : void
graphDrawingContext GraphDrawingContext
graphScale Double
vertexBounds System.Windows.Rect
return void
Ejemplo n.º 1
0
    MoveVertexIfNecessary
    (
        IVertex oVertex,
        GraphDrawingContext oGraphDrawingContext,
        CollapsedGroupDrawingManager oCollapsedGroupDrawingManager,
        ref Rect oVertexBounds
    )
    {
        Debug.Assert(oVertex != null);
        Debug.Assert(oGraphDrawingContext != null);
        Debug.Assert(oCollapsedGroupDrawingManager != null);
        AssertValid();

        if (!m_bLimitVerticesToBounds ||
            oGraphDrawingContext.GraphRectangleMinusMarginIsEmpty)
        {
            // The vertex shouldn't be moved.

            return;
        }

        // First, assume that this is a normal vertex and not a vertex that
        // represents a collapsed group.  Move the vertex bounds within the
        // bounds of the graph rectangle's margin.

        Rect oMovedVertexBounds = WpfGraphicsUtil.MoveRectangleWithinBounds(
            oVertexBounds, oGraphDrawingContext.GraphRectangleMinusMargin,
            false);

        // If the vertex actually represents a collapsed group, move it further
        // if necessary to accomodate the additional elements that
        // CollapsedGroupmanager.PostDrawVertex() may draw on top of the
        // vertex.

        oCollapsedGroupDrawingManager.MoveVertexBoundsIfNecessary(
            oGraphDrawingContext, m_dGraphScale, ref oMovedVertexBounds);

        oVertex.Location = System.Drawing.PointF.Add( oVertex.Location,
            new System.Drawing.SizeF(
                (Single)(oMovedVertexBounds.X - oVertexBounds.X),
                (Single)(oMovedVertexBounds.Y - oVertexBounds.Y)
                ) );

        oVertexBounds = oMovedVertexBounds;
    }