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
コード例 #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);
        }
コード例 #2
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);
    }
コード例 #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);
    }
コード例 #4
0
    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);
    }
コード例 #5
0
    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);
    }