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

`class`

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

var `class`: String?

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

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

textColor

var textColor: Color?

The font color for object labels.

attributes

var attributes: Attributes = Attributes()

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?

fontSize

var fontSize: 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?

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.

members

var members: [GraphMember]

shape

var shape: Node.Shape?

fontName

var fontName: String?

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

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.

fillColor

var fillColor: Color?

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

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?

area

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

var area: Double?

url

var url: URL?

nodes

var nodes: [Node] = []

size

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

var size: Size?

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]

edges

var edges: [Edge] = []

href

var href: String?

Methods

append(_:)

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

append(_:)

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

buildEither(second:)

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

buildEither(first:)

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

Cluster(_:)

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

buildIf(_:)

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

buildBlock(_:)

public static func buildBlock(_ members: GraphMember) -> GraphMember

Clone this wiki locally