Root graph or cluster attribute set by a layout whose GD_clust list is not the
subgraph tree: the subgraph indices of the list, in order and with repeats,
separated by spaces. dot’s pack branch (copyClusterInfo) builds the root’s
list in component order and appends a cluster once per component that kept it;
emit_clusters draws the list as it is.
Node attribute set by a layout on a node it replaced by a cluster node
(fdp’s processClusterEdges/undoClusterEdges, IS_CLUST_NODE):
renderers neither draw it nor give it layout attributes.
Edge attribute set by a layout on an edge it routed although its type is IGNORED
(dot’s orthoEdges under concentrate, which keeps the first edge of each node pair
whatever its type): renderers draw its spline (emit_edge_graphics has no type check),
but attach_attrs_and_arrows gives it no pos, lp, xlp, head_lp or tail_lp
(lib/common/output.c). The layout keeps the edge’s input label positions under
IGNORED_EDGE_INPUT_KEYS, since it may overwrite them to draw the labels.
Node attribute set by a layout whose node has ND_lw != ND_rw (dot keeps the self-loop
space in ND_rw when dot_splines_ skips resetRW, or with splines=curved undoes
it): "lw,rw" in points. Renderers split
width with it instead of halving it (Mcircle_hack uses ND_rw alone).
Subgraph attribute set by a layout that registers a cluster without making its label
(GD_label stays NULL, e.g. patchwork’s mkClusters): renderers neither draw nor size it.
Subgraph attribute set by a layout on a cluster it registered in GD_clust but never
positioned (fdp stopping on a layout error): renderers draw it with its empty box.
Node or edge attribute of a Graph::render_view object: its cgraph sequence number
(AGSEQ), which the renderers print in object ids. Without it the sequence follows the
object’s index.
Edge attributes holding the layout’s final tail/head port names
(ED_tail_port(e).name, ED_head_port(e).name), which \E substitutes; empty when
the layout dropped the name (dot’s sameport).
Edge attribute set by a layout whose head or tail label it could not place
(ED_head_label(e)->set false: h, tail: t): head_lp/tail_lp are still
printed, but renderers do not draw the label.
Subgraph attribute set by a layout on a cluster it did not register in
GD_clust (e.g. clusters nested below neato’s top-level ones): it keeps its
input bb, which C prints, but renderers do not draw it.