...
Code Block |
---|
title | Example |
---|
linenumbers | true |
---|
|
properties:
de.cau.cs.kieler.algorithm="de.cau.cs.kieler.klay.tree"
knode n1 {
size: width=50 height=50
kedge (-> n2)
kedge (-> n3)
}
knode n2 {
size: width=50 height=50
}
knode n3 {
size: width=50 height=50
} |
A More Complex Example
We finish with a more complex example that highlights some of the features of the KIELER graph layout technology and how to use it through the KGT format.
Section |
---|
Column |
---|
Code Block |
---|
title | Example |
---|
linenumbers | true |
---|
| properties:
de.cau.cs.kieler.edgeRouting=ORTHOGONAL
de.cau.cs.kieler.direction=DOWN
de.cau.cs.kieler.separateConnComp=FALSE
// The node label of N1 is placed outside. Edges connect directly to
// the node, without any ports in between
knode N1 {
properties:
de.cau.cs.kieler.nodeLabelPlacement="OUTSIDE H_LEFT V_TOP"
de.cau.cs.kieler.sizeConstraint="NODE_LABELS PORTS"
klabel "N1"
kedge (-> N2)
}
// Compared to N1, this node will be slightly higher because the size
// constraints also take a default minimum size into account
knode N2 {
properties:
de.cau.cs.kieler.nodeLabelPlacement="OUTSIDE H_LEFT V_TOP"
de.cau.cs.kieler.sizeConstraint="MINIMUM_SIZE NODE_LABELS PORTS"
de.cau.cs.kieler.sizeOptions=DEFAULT_MINIMUM_SIZE
klabel "N2"
kedge (-> N3:N3Port)
kedge (-> N4:N4Port)
}
// N3 is a compound node with three nodes nested inside. The layout
// algorithm uses the default node placement algorithm
knode N3 {
properties:
de.cau.cs.kieler.edgeRouting=ORTHOGONAL
de.cau.cs.kieler.direction=DOWN
de.cau.cs.kieler.nodeLabelPlacement="OUTSIDE H_CENTER V_BOTTOM"
klabel "N3"
kport N3Port {
size: width=5 height=5
pos: x=10 y=-5
}
kedge (:N3Port -> N31)
knode N31 {
size: width=80 height=30
properties:
de.cau.cs.kieler.nodeLabelPlacement="INSIDE H_CENTER V_CENTER"
klabel "N31"
kedge (-> N32)
kedge (-> N33)
}
knode N32 {
size: width=80 height=30
properties:
de.cau.cs.kieler.nodeLabelPlacement="INSIDE H_CENTER V_CENTER"
klabel "N32"
}
knode N33 {
size: width=80 height=30
properties:
de.cau.cs.kieler.nodeLabelPlacement="INSIDE H_CENTER V_CENTER"
klabel "N33"
}
}
// Another a compound node with three nodes nested inside. The layout
// algorithm uses the linear segments algorithm for node placement
knode N4 {
properties:
de.cau.cs.kieler.edgeRouting=ORTHOGONAL
de.cau.cs.kieler.direction=DOWN
de.cau.cs.kieler.klay.layered.nodePlace=LINEAR_SEGMENTS
de.cau.cs.kieler.nodeLabelPlacement="OUTSIDE H_CENTER V_BOTTOM"
klabel "N4"
kport N4Port {
size: width=5 height=5
}
kedge (:N4Port -> N41)
knode N41 {
size: width=80 height=30
properties:
de.cau.cs.kieler.nodeLabelPlacement="INSIDE H_CENTER V_CENTER"
klabel "N41"
kedge (-> N42)
kedge (-> N43)
}
knode N42 {
size: width=80 height=30
properties:
de.cau.cs.kieler.nodeLabelPlacement="INSIDE H_CENTER V_CENTER"
klabel "N42"
}
knode N43 {
size: width=80 height=30
properties:
de.cau.cs.kieler.nodeLabelPlacement="INSIDE H_CENTER V_CENTER"
klabel "N43"
}
} |
|
Column |
---|
Image Added |
|