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

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

Initializers

init(id:)

public init(id: String? = nil)

init(id:_:)

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

Properties

textColor

var textColor: Color?

The font color for object labels.

attributes

var attributes: Attributes = Attributes()

id

var id: String?

edges

var edges: [Edge] = []

size

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

var size: Size?

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.

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?

url

var url: URL?

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

fontSize

var fontSize: Double?

href

var href: String?

fillColor

var fillColor: Color?

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

`class`

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

var `class`: String?

shape

var shape: Node.Shape?

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.

area

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

var area: Double?

members

var members: [GraphMember]

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

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?

style

var style: Style?

Defines the graphic style on an object.

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?

fontName

var fontName: String?

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

nodes

var nodes: [Node] = []

dictionaryValue

var dictionaryValue: [String: Any]

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.

Methods

buildEither(second:)

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

buildIf(_:)

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

Cluster(_:)

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

append(_:)

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

buildEither(first:)

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

append(_:)

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

buildBlock(_:)

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

Clone this wiki locally