Stores information about how groups and the edges between them should be drawn when the graph is laid out using groups.
An instance of this class is added to the graph when is set to .
Inheritance: Object
Ejemplo n.º 1
0
        TryGetGroupLayoutDrawingInfo
        (
            IGraph graph,
            out GroupLayoutDrawingInfo groupLayoutDrawingInfo
        )
        {
            Debug.Assert(graph != null);

            groupLayoutDrawingInfo = null;
            Object oGroupLayoutDrawingInfoAsObject;

            if (graph.TryGetValue(ReservedMetadataKeys.GroupLayoutDrawingInfo,
                                  typeof(GroupLayoutDrawingInfo),
                                  out oGroupLayoutDrawingInfoAsObject))
            {
                groupLayoutDrawingInfo =
                    (GroupLayoutDrawingInfo)oGroupLayoutDrawingInfoAsObject;

                return(true);
            }

            return(false);
        }
    TryGetGroupLayoutDrawingInfo
    (
        IGraph graph,
        out GroupLayoutDrawingInfo groupLayoutDrawingInfo
    )
    {
        Debug.Assert(graph != null);

        groupLayoutDrawingInfo = null;
        Object oGroupLayoutDrawingInfoAsObject;

        if ( graph.TryGetValue(ReservedMetadataKeys.GroupLayoutDrawingInfo,
            typeof(GroupLayoutDrawingInfo),
            out oGroupLayoutDrawingInfoAsObject) )
        {
            groupLayoutDrawingInfo =
                (GroupLayoutDrawingInfo)oGroupLayoutDrawingInfoAsObject;

            return (true);
        }

        return (false);
    }
Ejemplo n.º 3
0
    DrawCombinedIntergroupEdge
    (
        DrawingContext oDrawingContext,
        GraphDrawingContext oGraphDrawingContext,
        IntergroupEdgeInfo oCombinedIntergroupEdge,
        GroupLayoutDrawingInfo oGroupLayoutDrawingInfo
    )
    {
        Debug.Assert(oDrawingContext != null);
        Debug.Assert(oGraphDrawingContext != null);
        Debug.Assert(oCombinedIntergroupEdge != null);
        Debug.Assert(oGroupLayoutDrawingInfo != null);
        AssertValid();

        Rect oGroupRectangle1, oGroupRectangle2;

        if (
            !TryGetGroupRectangle(

                oGroupLayoutDrawingInfo.GroupsToDraw[
                    oCombinedIntergroupEdge.Group1Index],

                out oGroupRectangle1)
            ||
            !TryGetGroupRectangle(

                oGroupLayoutDrawingInfo.GroupsToDraw[
                    oCombinedIntergroupEdge.Group2Index],

                out oGroupRectangle2)
            )
        {
            return;
        }

        Point oGroupRectangle1Center =
            WpfGraphicsUtil.GetRectCenter(oGroupRectangle1);

        Point oGroupRectangle2Center =
            WpfGraphicsUtil.GetRectCenter(oGroupRectangle2);

        Point oBezierControlPoint = GetBezierControlPoint(oGraphDrawingContext,
            oGroupRectangle1Center, oGroupRectangle2Center,
            CombinedIntergroupEdgeBezierDisplacementFactor
            );

        PathGeometry oBezierCurve =
            WpfPathGeometryUtil.GetQuadraticBezierCurve(oGroupRectangle1Center,
                oGroupRectangle2Center, oBezierControlPoint);

        Color oColor = GetContrastingColor(
            oGraphDrawingContext, CombinedIntergroupEdgeAlpha, true);

        Pen oPen = CreateFrozenPen(CreateFrozenSolidColorBrush(oColor),

            GetCombinedIntergroupEdgePenWidth(oCombinedIntergroupEdge) *
                this.GraphScale,

            DashStyles.Solid, PenLineCap.Round);

        oDrawingContext.DrawGeometry(null, oPen, oBezierCurve);
    }
    TestConstructor()
    {
        // Has CombinedIntergroupEdges.

        GroupInfo [] aoGroupInfo = new GroupInfo [] {
            new GroupInfo(),
            new GroupInfo(),
            new GroupInfo()
            };

        const Double PenWidth = 1.234;

        IntergroupEdgeInfo[] aoCombinedIntergroupEdges =
            new IntergroupEdgeInfo[5];

        GroupLayoutDrawingInfo oGroupLayoutDrawingInfo =
            new GroupLayoutDrawingInfo(aoGroupInfo, PenWidth,
                aoCombinedIntergroupEdges);

        Assert.AreEqual(aoGroupInfo, oGroupLayoutDrawingInfo.GroupsToDraw);
        Assert.AreEqual(PenWidth, oGroupLayoutDrawingInfo.PenWidth);

        Assert.AreEqual(aoCombinedIntergroupEdges,
            oGroupLayoutDrawingInfo.CombinedIntergroupEdges);
    }
    TestConstructor2()
    {
        // Null CombinedIntergroupEdges.

        GroupInfo [] aoGroupInfo = new GroupInfo [] {
            new GroupInfo(),
            new GroupInfo(),
            new GroupInfo()
            };

        const Double PenWidth = 1.234;

        GroupLayoutDrawingInfo oGroupLayoutDrawingInfo =
            new GroupLayoutDrawingInfo(aoGroupInfo, PenWidth, null);

        Assert.AreEqual(aoGroupInfo, oGroupLayoutDrawingInfo.GroupsToDraw);
        Assert.AreEqual(PenWidth, oGroupLayoutDrawingInfo.PenWidth);
        Assert.IsNull(oGroupLayoutDrawingInfo.CombinedIntergroupEdges);
    }