Skip to content
This repository was archived by the owner on Oct 17, 2021. It is now read-only.

Subgraph

mattt edited this page Mar 30, 2020 · 10 revisions

Subgraph

@dynamicMemberLookup public struct Subgraph: Hashable

Inheritance

Hashable

Nested Types

GraphMember.Subgraph.Node.Edge.GraphBuilder, Subgraph.Subgraph.Rank.Style.Attributes, Subgraph.Subgraph.Rank.Style, Subgraph.Subgraph.Rank

Initializers

init(id:_:)

public init(id: String? = nil, _ builder: () -> SubgraphMember)

init(id:)

public init(id: String? = nil)

Properties

noJustify

By default, the justification of multi-line labels is done within the largest context that makes sense. Thus, in the label of a polygonal node, a left-justified line will align with the left side of the node (shifted by the prescribed margin). In record nodes, left-justified line will line up with the left side of the enclosing column of fields. If nojustify is "true", multi-line labels will be justified in the context of itself. For example, if the attribute is set, the first label line is long, and the second is shorter and left-justified, the second will align with the left-most character in the first line, regardless of how large the node might be.

var noJustify: Bool?

nodes

var nodes: [Node] = []

area

Indicates the preferred area for a node or empty cluster when laid out by patchwork. 1.0 >0 patchwork only

var area: Double?

ordering

If the value of the attribute is "out", then the outedges of a node, that is, edges with the node as its tail node, must appear left-to-right in the same order in which they are defined in the input. If the value of the attribute is "in", then the inedges of a node must appear left-to-right in the same order in which they are defined in the input. If defined as a graph or subgraph attribute, the value is applied to all nodes in the graph or subgraph. Note that the graph attribute takes precedence over the node attribute.

var ordering: Ordering?

rank

Rank constraints on the nodes in a subgraph. If rank="same", all nodes are placed on the same rank. If rank="min", all nodes are placed on the minimum rank. If rank="source", all nodes are placed on the minimum rank, and the only nodes on the minimum rank belong to some subgraph whose rank attribute is "source" or "min". Analogous criteria hold for rank="max" and rank="sink". (Note: the minimum rank is topmost or leftmost, and the maximum rank is bottommost or rightmost.)

var rank: Rank?

dot only

members

var members: [GraphMember]

shape

var shape: Node.Shape?

textColor

var textColor: Color?

The font color for object labels.

fillColor

var fillColor: Color?

Important: Setting fillColor sets style to .filled; setting nil fillColor sets style to nil

edges

var edges: [Edge] = []

fontName

var fontName: String?

The name of the used font. (System dependend) The font size for object labels.

borderWidth

penwidth Specifies the width of the pen, in points, used to draw lines and curves, including the boundaries of edges and clusters. The value is inherited by subclusters. It has no effect on text.

var borderWidth: Double?

id

var id: String?

sortValue

If packmode indicates an array packing, this attribute specifies an insertion order among the components, with smaller values inserted first.

var sortValue: Int?

GCN int 0 0

backgroundColor

var backgroundColor: Color?

The shape of a node. When attached to the root graph, this color is used as the background for entire canvas. For a cluster, it is used as the initial background for the cluster. If a cluster has a filled style, the cluster's fillcolor will overlay the background color.

url

var url: URL?

borderColor

var borderColor: Color?

Basic drawing color for graphics. penColor Color used to draw the bounding box around a cluster. If pencolor is not defined, color is used. If this is not defined, bgcolor is used. If this is not defined, the default is used. Note that a cluster inherits the root graph's attributes if defined. Thus, if the root graph has defined a pencolor, this will override a color or bgcolor attribute set for the cluster.

dictionaryValue

var dictionaryValue: [String: Any]

size

The node size set by height and width is kept fixed and not expanded to contain the text label.

var size: Size?

href

var href: String?

`class`

Unofficial, but supported by certain output formats, like svg.

var `class`: String?

style

var style: Style?

Defines the graphic style on an object.

isEmpty

Returns whether the subgraph is empty.

var isEmpty: Bool

A subgraph is considered to be empty if it has no edges, has no nodes with attributes, and has no attributes itself.

fontSize

var fontSize: Double?

attributes

var attributes: Attributes = Attributes()

Methods

buildIf(_:)

public static func buildIf(_ member: GraphMember?) -> GraphMember

append(_:)

public mutating func append(_ edge: @autoclosure () -> Edge)

Cluster(_:)

public func Cluster(_ builder: () -> SubgraphMember) -> Subgraph

buildEither(first:)

public static func buildEither(first: GraphMember) -> GraphMember

append(_:)

public mutating func append(_ node: @autoclosure () -> Node)

buildEither(second:)

public static func buildEither(second: GraphMember) -> GraphMember

buildBlock(_:)

public static func buildBlock(_ members: GraphMember) -> GraphMember
Clone this wiki locally