Class Network<V, E, Y>.Vertex
A vertex represents a Node in a Network<V, E, Y>, along with its Bounds and Focus and collections of Network<V, E, Y>.Edges that come into and go out of the vertex.
Inheritance
Namespace: Northwoods.Go.Layouts
Assembly: Northwoods.GoDiagram.Avalonia.dll
Syntax
public class Network<V, E, Y>.Vertex
Remarks
The Node property may be null for vertexes that represent "dummy" nodes, when the layout wants to work with a network that is not isomorphic with the collection of Nodes and Links being laid out.
This holds layout-specific data for the node. For each kind of layout that uses a Network there is a subclass of Network<V, E, Y>.Vertex and a subclass of Network<V, E, Y>.Edge:
: and : and : and : and
Modifying a Network<V, E, Y> or a Network<V, E, Y>.Vertex or an Network<V, E, Y>.Edge does not invalidate the Layout or raise any changed events.
Constructors
Vertex(Network<V, E, Y>)
This constructs a vertex that does not know about any Node and sets its network.
Declaration
public Vertex(Network<V, E, Y> network)
Parameters
Type | Name | Description |
---|---|---|
Network<V, E, Y> | network |
Fields
SmartComparer
This static comparer is used to compare the Text values of the Nodes of the argument Network<V, E, Y>.Vertexes. If the text ends in a number, the values are compared as numbers rather than lexicographically.
Declaration
public static readonly Comparison<V> SmartComparer
Field Value
Type | Description |
---|---|
Comparison<V> |
Remarks
Naturally this comparison is significantly slower than StandardComparer.
StandardComparer
This static comparer is used to compare the Text values of the Nodes of the argument Network<V, E, Y>.Vertexes. This just does a simple case-sensitive string comparison.
Declaration
public static readonly Comparison<V> StandardComparer
Field Value
Type | Description |
---|---|
Comparison<V> |
Remarks
Alternatively you may wish to use SmartComparer or write your own comparison function.
Properties
Bounds
Gets or sets the bounds of this vertex, in document coordinates.
Declaration
public Rect Bounds { get; set; }
Property Value
Type | Description |
---|---|
Rect |
Remarks
Setting this property does not directly modify the position of any Node, but it will modify the value of CenterX and CenterY, as well as the subsidiary convenience properties X, Y, Width, and Height.
CenterX
Gets or sets the center X of this vertex, in document coordinates.
Declaration
public double CenterX { get; set; }
Property Value
Type | Description |
---|---|
double |
Remarks
This property depends on both Bounds and Focus. Setting this property does not modify the position of any Node, but it will modify the value of Bounds.
CenterY
Gets or sets the center Y of this vertex, in document coordinates.
Declaration
public double CenterY { get; set; }
Property Value
Type | Description |
---|---|
double |
Remarks
This property depends on both Bounds and Focus. Setting this property does not modify the position of any Node, but it will modify the value of Bounds.
Data
Gets or sets the data object in the model that should be associated with this vertex, if any.
Declaration
public object Data { get; set; }
Property Value
Type | Description |
---|---|
object |
Remarks
The value will be non-null if this vertex is virtualized, not represented by a real Node in the Diagram. Each data object should have a "Bounds" property that is a Rect or any Object with "X", "Y", "Width", and "Height" properties that are real numbers, and non-negative numbers for the width and the height. Setting this data property will also set the Bounds and Focus properties.
DestinationEdges
This read-only property returns an iterator for all of the edges that go out of this vertex.
Declaration
public IReadOnlyCollection<E> DestinationEdges { get; }
Property Value
Type | Description |
---|---|
IReadOnlyCollection<E> |
DestinationVertexes
This read-only property returns an iterator for all of the vertexes that are connected with edges going out of this vertex.
Declaration
public IReadOnlyCollection<V> DestinationVertexes { get; }
Property Value
Type | Description |
---|---|
IReadOnlyCollection<V> |
Remarks
Note that this is inefficient compared to iterating over the edges (DestinationEdges) due to the need to avoid duplicate vertexes if there happen to be multiple edges connecting with the same vertex.
Edges
This read-only property returns an iterator for all of the edges that are connected with this vertex in either direction.
Declaration
public IReadOnlyCollection<E> Edges { get; }
Property Value
Type | Description |
---|---|
IReadOnlyCollection<E> |
Remarks
Note that this is inefficient compared to iterating over the edges: SourceEdges and DestinationEdges.
Focus
Declaration
public Point Focus { get; set; }
Property Value
Type | Description |
---|---|
Point |
Remarks
Setting this property does not directly modify the position of any Node, but it does affect the value of CenterX and CenterY.
The "focus" is normally the center of the Node's LocationElement.
FocusX
Gets or sets the relative X position of the "center" point, the focus.
Declaration
public double FocusX { get; set; }
Property Value
Type | Description |
---|---|
double |
FocusY
Gets or sets the relative Y position of the "center" point, the focus.
Declaration
public double FocusY { get; set; }
Property Value
Type | Description |
---|---|
double |
Height
Gets or sets the height of this vertex.
Declaration
public double Height { get; set; }
Property Value
Type | Description |
---|---|
double |
Remarks
This is always the vertical distance reserved for the node.
this[string]
This index operator allows for access to programmer-defined properties stored in a Dictionary<string, object>.
Declaration
public object this[string prop] { get; set; }
Parameters
Type | Name | Description |
---|---|---|
string | prop | the property name, which must begin with a _ |
Property Value
Type | Description |
---|---|
object |
Network
Gets the Network<V, E, Y> that owns this vertex.
Declaration
public Network<V, E, Y> Network { get; set; }
Property Value
Type | Description |
---|---|
Network<V, E, Y> |
Remarks
The default value is null. It is set automatically for you in CreateVertex().
Node
Gets or sets the Node associated with this vertex, if any.
Declaration
public Node Node { get; set; }
Property Value
Type | Description |
---|---|
Node |
Remarks
The value may be null if this vertex is a "dummy" vertex, not represented by a real Node in the Diagram.
This property setter also sets the Bounds and Focus properties according to the value of the Node's ActualBounds and its LocationElement's center point.
SourceEdges
This read-only property returns an iterator for all of the edges that come into this vertex.
Declaration
public IReadOnlyCollection<E> SourceEdges { get; }
Property Value
Type | Description |
---|---|
IReadOnlyCollection<E> |
SourceVertexes
This read-only property returns an iterator for all of the vertexes that are connected with edges coming into this vertex.
Declaration
public IReadOnlyCollection<V> SourceVertexes { get; }
Property Value
Type | Description |
---|---|
IReadOnlyCollection<V> |
Remarks
Note that this is inefficient compared to iterating over the edges (SourceEdges) due to the need to avoid duplicate vertexes if there happen to be multiple edges connecting with the same vertex.
Vertexes
This read-only property returns an iterator for all of the vertexes that are connected in either direction with this vertex.
Declaration
public IReadOnlyCollection<V> Vertexes { get; }
Property Value
Type | Description |
---|---|
IReadOnlyCollection<V> |
Remarks
Note that this is inefficient compared to iterating over the edges (SourceEdges and DestinationEdges) due to the need to avoid duplicate vertexes if there happen to be multiple edges connecting with the same vertex.
Width
Gets or sets the width of this vertex.
Declaration
public double Width { get; set; }
Property Value
Type | Description |
---|---|
double |
Remarks
This is always the horizontal distance reserved for the node.
X
Gets or sets the left point of this vertex.
Declaration
public double X { get; set; }
Property Value
Type | Description |
---|---|
double |
Y
Gets or sets the top point of this vertex.
Declaration
public double Y { get; set; }
Property Value
Type | Description |
---|---|
double |
Methods
AddDestinationEdge(E)
Adds a Network<V, E, Y>.Edge to the list of successors (the edge will be going out from this vertex).
Declaration
public void AddDestinationEdge(E edge)
Parameters
Type | Name | Description |
---|---|---|
E | edge |
Remarks
Calling this method does not modify the FromVertex of the Edge.
AddSourceEdge(E)
Adds an Network<V, E, Y>.Edge to the list of predecessors (the edge will be coming into this vertex).
Declaration
public void AddSourceEdge(E edge)
Parameters
Type | Name | Description |
---|---|---|
E | edge |
Remarks
Calling this method does not modify the ToVertex of the Edge.
Commit()
Declaration
public virtual void Commit()
Remarks
To make the most common cases look right, the Node's LocationElement is centered. Thus iconic nodes will have the center of the icon be positioned according to the center of this vertex, ignoring any labels. Please read the Introduction page on Extensions for how to override methods and how to call this base method.
DeleteDestinationEdge(E)
Deletes a Network<V, E, Y>.Edge from the list of successors (the edge was going out from this vertex).
Declaration
public void DeleteDestinationEdge(E edge)
Parameters
Type | Name | Description |
---|---|---|
E | edge |
Remarks
Calling this method does not modify the FromVertex of the Edge.
DeleteSourceEdge(E)
Deletes an Network<V, E, Y>.Edge from the list of predecessors (the edge was coming into this vertex).
Declaration
public void DeleteSourceEdge(E edge)
Parameters
Type | Name | Description |
---|---|---|
E | edge |
Remarks
Calling this method does not modify the ToVertex of the Edge.