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 27, 2020 · 10 revisions

Subgraph

@dynamicMemberLookup public struct Subgraph: Hashable

Inheritance

Hashable

Nested Types

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

Enumeration Cases

bold

case bold

compound

case compound(: [Style])

dashed

case dashed

dotted

case dotted

filled

case filled(: Color)

max

case max

min

case min

rounded

case rounded

same

case same

sink

case sink

solid

case solid

source

case source

striped

case striped(: [Color])

Initializers

init(id:)

public init(id: String? = nil)

init(id:_:)

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

Properties

area

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

var area: Double?

attributes

var attributes: Attributes = Attributes()

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.

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.

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?

dictionaryValue

var dictionaryValue: [String: Any]

edges

var edges: [Edge] = []

fillColor

var fillColor: Color?

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

fontName

var fontName: String?

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

fontSize

var fontSize: Double?

href

var href: String?

id

var id: String?

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.

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] = []

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

shape

var shape: Node.Shape?

size

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

var size: Size?

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

style

var style: Style?

Defines the graphic style on an object.

textColor

var textColor: Color?

The font color for object labels.

url

var url: URL?

Methods

Cluster(_:)

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

append(_:)

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

append(_:)

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

buildBlock(_:)

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

buildEither(first:)

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

buildEither(second:)

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

buildIf(_:)

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

Clone this wiki locally