Class RadialLayout
Given a root Node, this arranges connected nodes in concentric rings, layered by the minimum link distance from the root.
Inheritance
Namespace: Northwoods.Go.Layouts.Extensions
Assembly: RadialWinForms.dll
Syntax
public class RadialLayout : NetworkLayout<RadialNetwork, RadialVertex, RadialEdge, RadialLayout>
Constructors
RadialLayout()
Create a Radial layout.
Declaration
public RadialLayout()
Properties
LayerThickness
Gets or sets the thickness of each ring representing a layer.
Declaration
public int LayerThickness { get; set; }
Property Value
Type | Description |
---|---|
int |
Remarks
The default value is 100.
MaxLayers
Gets or sets the maximum number of layers to be shown, in addition to the root node at layer zero.
Declaration
public int MaxLayers { get; set; }
Property Value
Type | Description |
---|---|
int |
Remarks
The default value is int.MaxValue.
Root
Gets or sets the Node that acts as the root or central node of the radial layout.
Declaration
public Node Root { get; set; }
Property Value
Type | Description |
---|---|
Node |
Methods
CommitLayers()
Override this method in order to create background circles indicating the layers of the radial layout.
Declaration
public virtual void CommitLayers()
Remarks
By default this method does nothing.
CommitLayout()
Commit changes to the diagram by setting Node positions and by routing the Links. This is called by UpdateParts() within a transaction.
Declaration
protected override void CommitLayout()
Overrides
Remarks
You should not call this method -- it is a "protected virtual" method. This may be overridden by subclasses of NetworkLayout. By default this method is implemented as follows:
protected virtual void CommitLayout() {
if (Network == null) return;
foreach (var vert in Network.Vertexes) {
vert.Commit();
}
if (IsRouting) {
foreach (var edge in Network.Edges) {
edge.Commit();
}
}
}
Please read the Introduction page on Extensions for how to override methods and how to call this base method.
ComputeBreadth(RadialVertex)
Compute the proportion of arc that the given vertex should take relative to its siblings.
Declaration
public virtual double ComputeBreadth(RadialVertex v)
Parameters
Type | Name | Description |
---|---|---|
RadialVertex | v |
Returns
Type | Description |
---|---|
double |
Remarks
The default behavior is to give each child arc according to the sum of the maximum breadths of each of its children. This assumes that all nodes have the same breadth -- i.e. that they will occupy the same sweep of arc. It does not take the Node.ActualBounds into account, nor the angle at which the node will be location relative to the origin, nor the distance the node will be from the root node.
In order to give each child of a vertex the same fraction of arc, override this method:
public override double ComputeBreadth(RadialVertex v) { return 1; }
In order to give each child of a vertex a fraction of arc proportional to how many children the child has:
public override double ComputeBreadth(RadialVertex v) { return Math.Max(1, v.Children.Count); }
DoLayout(IEnumerable<Part>)
Find distances between root and vertexes, and then lay out radially.
Declaration
public override void DoLayout(IEnumerable<Part> coll = null)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<Part> | coll |
Overrides
RotateNode(Node, double, double, double)
Override this method in order to modify each node as it is laid out.
Declaration
public virtual void RotateNode(Node node, double angle, double sweep, double radius)
Parameters
Type | Name | Description |
---|---|---|
Node | node | |
double | angle | |
double | sweep | |
double | radius |
Remarks
By default this method does nothing.