Finding biconnected components is implemented in the mindfusion.graphs.silverlight assembly. It is for our internal use and is not documented, however all types are public so you can still use it. However the assembly a different class hierarchy and you should create Graph,Vertex and Edge objects corresponding to the Diagram, DiagramNodes and DiagramLinks. You can use the following method from our graphlib test app to do that, and after finding the biconnected components, use the graph to diagram hashtables to get the corresponding diagram items.
private Graph GraphFromDiagram(Diagram diagram,
Dictionary<Vertex, DiagramNode> nodesMap, Dictionary<Edge, DiagramLink> linksMap)
{
Graph graph = new Graph();
foreach (DiagramNode dnode in diagram.Nodes)
{
Vertex vertex = new Vertex();
graph.Vertices.Add(vertex);
nodesMap[vertex] = dnode;
dnode.Tag = vertex;
}
foreach (DiagramLink dlink in diagram.Links)
{
Edge edge = graph.AddEdge(dlink.Origin.Tag as Vertex, dlink.Destination.Tag as Vertex);
linksMap[edge] = dlink;
dlink.Tag = edge;
int w;
int.TryParse(dlink.Text, out w);
edge.Weight = w;
}
return graph;
}
Here is more code from our test app that finds the biconnected components and changes the color of their items:
private void btnFindBiconnected_Click(object sender, EventArgs e)
{
Graph[] components = graph.GetBiconnectedComponents(true);
int colorIndex = 0;
foreach (Graph component in components)
{
foreach (Vertex copy in component.Vertices)
{
Vertex v = component.vertexCopyToOrigMap[copy];
graphToDiagMapNodes[v].Brush = new MindFusion.Drawing.SolidBrush(colors[colorIndex]);
}
colorIndex++;
}
}
There isn't much of a release schedule for DiagramLite, we mostly port features from the Windows Forms version and are working on TableNodes support now.
I hope that helps,
Stoyan