Applications that process hierarchical or more complex entity-relationship data might need to present that data to end-users in an aesthetical and visually appealing manner. Such applications would store their data as graph of connected nodes possibly having additional information attached to them. However, position and size coordinates of nodes might be unnecessary and/or unavailable. MindFusion.Diagramming provides a way to automatically arrange the nodes of a diagram, applying attractive layouts on the overall structure of the diagram. To utilize that functionality, an application can create a diagram by assigning generic coordinates to its nodes, instantiating a layout object and invoking the layout's Arrange method. Non-blocking ArrangeAsync method is available in the .NET 4.5 build of diagramming.dll assembly. Arrange methods can be prevented from changing positions of individual items by setting the IgnoreLayout property of those items to true.
The classes that implement automatic layout algorithms are located in the MindFusion.Diagramming.Layout namespace. The following sections list the available algorithms categorized by their general implementation strategy: force-directed algorithms, graph topology based algorithms and semantics based algorithms.