Show last authors
1 {{warning}}
2 This is preliminary and incomplete documentation. You've been warned.
3 {{/warning}}
4
5 KLay Layered supports a whole bunch of layout options. Every single one of them is documented here.
6
7 **Contents**
8
9
10
11 {{toc/}}
12
13 = Overview =
14
15 For a general introduction on layout options, see [[the KIML documentation>>doc:KIML Layout Options]]. KLay Layered supports layout options defined by KIML and defines additional custom layout options.
16
17 == Supported KIML Layout Options ==
18
19 KLay Layered supports the following standard layout options defined by KIML. Note that the default value may be altered (highlighted yellow). These layout options are documented on [[KIML's Layout Options page>>doc:KIML Layout Options]].
20
21 |=(((
22 Option
23 )))|=(((
24 ID
25 )))|=(((
26 Type
27 )))|=(((
28 Applies to
29 )))|=(((
30 Default
31 )))
32 |(((
33 Alignment
34 )))|(((
35 de.cau.cs.kieler.alignment
36 )))|(((
37 Enum
38 )))|(((
39 Nodes
40 )))|(((
41 AUTOMATIC
42 )))
43 |(((
44 Aspect Ratio
45 )))|(((
46 de.cau.cs.kieler.aspectRatio
47 )))|(((
48 Float
49 )))|(((
50 Parents
51 )))|(% class="highlight-yellow" data-highlight-colour="yellow" %)(% class="highlight-yellow" data-highlight-colour="yellow" %)
52 (((
53 1.6
54 )))
55 |(((
56 Border Spacing
57 )))|(((
58 de.cau.cs.kieler.borderSpacing
59 )))|(((
60 Float
61 )))|(((
62 Parents
63 )))|(% class="highlight-yellow" data-highlight-colour="yellow" %)(% class="highlight-yellow" data-highlight-colour="yellow" %)
64 (((
65 20
66 )))
67 |(% colspan="1" %)(% colspan="1" %)
68 (((
69 Comment Box
70 )))|(% colspan="1" %)(% colspan="1" %)
71 (((
72 de.cau.cs.kieler.commentBox
73 )))|(% colspan="1" %)(% colspan="1" %)
74 (((
75 Boolean
76 )))|(% colspan="1" %)(% colspan="1" %)
77 (((
78 Nodes
79 )))|(% colspan="1" %)(% colspan="1" %)
80 (((
81 false
82 )))
83 |(((
84 Debug Mode
85 )))|(((
86 de.cau.cs.kieler.debugMode
87 )))|(((
88 Boolean
89 )))|(((
90 Parents
91 )))|(((
92 false
93 )))
94 |(% colspan="1" %)(% colspan="1" %)
95 (((
96 Diagram Type
97 )))|(% colspan="1" %)(% colspan="1" %)
98 (((
99 de.cau.cs.kieler.diagramType
100 )))|(% colspan="1" %)(% colspan="1" %)
101 (((
102 String
103 )))|(% colspan="1" %)(% colspan="1" %)
104 (((
105
106 )))|(% colspan="1" %)(% colspan="1" %)
107 (((
108
109 )))
110 |(((
111 Direction
112 )))|(((
113 de.cau.cs.kieler.direction
114 )))|(((
115 Enum
116 )))|(((
117 Parents
118 )))|(% class="highlight-yellow" data-highlight-colour="yellow" %)(% class="highlight-yellow" data-highlight-colour="yellow" %)
119 (((
120 RIGHT
121 )))
122 |(% colspan="1" %)(% colspan="1" %)
123 (((
124 Edge Label Placement
125 )))|(% colspan="1" %)(% colspan="1" %)
126 (((
127 de.cau.cs.kieler.edgeLabelPlacement
128 )))|(% colspan="1" %)(% colspan="1" %)
129 (((
130 Enum
131 )))|(% colspan="1" %)(% colspan="1" %)
132 (((
133 Labels
134 )))|(% colspan="1" %)(% colspan="1" %)
135 (((
136 UNDEFINED
137 )))
138 |(((
139 Edge Routing
140 )))|(((
141 de.cau.cs.kieler.edgeRouting
142 )))|(((
143 Enum
144 )))|(((
145 Parents
146 )))|(% class="highlight-yellow" data-highlight-colour="yellow" %)(% class="highlight-yellow" data-highlight-colour="yellow" %)
147 (((
148 POLYLINE
149 )))
150 |(% colspan="1" %)(% colspan="1" %)
151 (((
152 Hypernode
153 )))|(% colspan="1" %)(% colspan="1" %)
154 (((
155 de.cau.cs.kieler.hypernode
156 )))|(% colspan="1" %)(% colspan="1" %)
157 (((
158 Boolean
159 )))|(% colspan="1" %)(% colspan="1" %)
160 (((
161 Nodes
162 )))|(% colspan="1" %)(% colspan="1" %)
163 (((
164 false
165 )))
166 |(% colspan="1" %)(% colspan="1" %)
167 (((
168 Label Side
169 )))|(% colspan="1" %)(% colspan="1" %)
170 (((
171 de.cau.cs.kieler.labelSide
172 )))|(% colspan="1" %)(% colspan="1" %)
173 (((
174 Enum
175 )))|(% colspan="1" %)(% colspan="1" %)
176 (((
177 Parents
178 )))|(% colspan="1" %)(% colspan="1" %)
179 (((
180 SMART
181 )))
182 |(((
183 Label Spacing
184 )))|(((
185 de.cau.cs.kieler.labelSpacing
186 )))|(((
187 Float
188 )))|(((
189 Edges
190 Nodes
191 )))|(((
192 -1.0
193 )))
194 |(((
195 Layout Hierarchy
196 )))|(((
197 de.cau.cs.kieler.layoutHierarchy
198 )))|(((
199 Boolean
200 )))|(((
201 Parents
202 )))|(((
203 false
204 )))
205 |(% colspan="1" %)(% colspan="1" %)
206 (((
207 Minimal Height
208 )))|(% colspan="1" %)(% colspan="1" %)
209 (((
210 de.cau.cs.kieler.minHeight
211 )))|(% colspan="1" %)(% colspan="1" %)
212 (((
213 Float
214 )))|(% colspan="1" %)(% colspan="1" %)
215 (((
216 Nodes
217 Parents
218 )))|(% colspan="1" %)(% colspan="1" %)
219 (((
220 0.0
221 )))
222 |(% colspan="1" %)(% colspan="1" %)
223 (((
224 Minimal Width
225 )))|(% colspan="1" %)(% colspan="1" %)
226 (((
227 de.cau.cs.kieler.minWidth
228 )))|(% colspan="1" %)(% colspan="1" %)
229 (((
230 Float
231 )))|(% colspan="1" %)(% colspan="1" %)
232 (((
233 Nodes
234 Parents
235 )))|(% colspan="1" %)(% colspan="1" %)
236 (((
237 0.0
238 )))
239 |(% colspan="1" %)(% colspan="1" %)
240 (((
241 No Layout
242 )))|(% colspan="1" %)(% colspan="1" %)
243 (((
244 de.cau.cs.kieler.noLayout
245 )))|(% colspan="1" %)(% colspan="1" %)
246 (((
247 Boolean
248 )))|(% colspan="1" %)(% colspan="1" %)
249 (((
250
251 )))|(% colspan="1" %)(% colspan="1" %)
252 (((
253 false
254 )))
255 |(% colspan="1" %)(% colspan="1" %)
256 (((
257 Node Label Placement
258 )))|(% colspan="1" %)(% colspan="1" %)
259 (((
260 de.cau.cs.kieler.nodeLabelPlacement
261 )))|(% colspan="1" %)(% colspan="1" %)
262 (((
263 EnumSet
264 )))|(% colspan="1" %)(% colspan="1" %)
265 (((
266 Nodes
267 )))|(% colspan="1" %)(% colspan="1" %)
268 (((
269
270 )))
271 |(((
272 Port Constraints
273 )))|(((
274 de.cau.cs.kieler.portConstraints
275 )))|(((
276 Enum
277 )))|(((
278 Nodes
279 )))|(((
280 UNDEFINED
281 )))
282 |(% colspan="1" %)(% colspan="1" %)
283 (((
284 Port Label Placement
285 )))|(% colspan="1" %)(% colspan="1" %)
286 (((
287 de.cau.cs.kieler.portLabelPlacement
288 )))|(% colspan="1" %)(% colspan="1" %)
289 (((
290 Enum
291 )))|(% colspan="1" %)(% colspan="1" %)
292 (((
293 Nodes
294 )))|(% colspan="1" %)(% colspan="1" %)
295 (((
296 OUTSIDE
297 )))
298 |(% colspan="1" %)(% colspan="1" %)
299 (((
300 Port Offset
301 )))|(% colspan="1" %)(% colspan="1" %)
302 (((
303 de.cau.cs.kieler.offset
304 )))|(% colspan="1" %)(% colspan="1" %)
305 (((
306 Float
307 )))|(% colspan="1" %)(% colspan="1" %)
308 (((
309 Ports
310 )))|(% colspan="1" %)(% colspan="1" %)
311 (((
312
313 )))
314 |(% colspan="1" %)(% colspan="1" %)
315 (((
316 Port Side
317 )))|(% colspan="1" %)(% colspan="1" %)
318 (((
319 de.cau.cs.kieler.portSide
320 )))|(% colspan="1" %)(% colspan="1" %)
321 (((
322 Enum
323 )))|(% colspan="1" %)(% colspan="1" %)
324 (((
325 Ports
326 )))|(% colspan="1" %)(% colspan="1" %)
327 (((
328 UNDEFINED
329 )))
330 |(((
331 Priority
332 )))|(((
333 de.cau.cs.kieler.priority
334 )))|(((
335 Int
336 )))|(((
337 Edges
338 Nodes
339 )))|(((
340
341 )))
342 |(% colspan="1" %)(% colspan="1" %)
343 (((
344 Randomization Seed
345 )))|(% colspan="1" %)(% colspan="1" %)
346 (((
347 de.cau.cs.kieler.randomSeed
348 )))|(% colspan="1" %)(% colspan="1" %)
349 (((
350 Int
351 )))|(% colspan="1" %)(% colspan="1" %)
352 (((
353 Parents
354 )))|(% class="highlight-yellow" colspan="1" data-highlight-colour="yellow" %)(% class="highlight-yellow" colspan="1" data-highlight-colour="yellow" %)
355 (((
356 1
357 )))
358 |(% colspan="1" %)(% colspan="1" %)
359 (((
360 Separate Connected Components
361 )))|(% colspan="1" %)(% colspan="1" %)
362 (((
363 de.cau.cs.kieler.separateConnComp
364 )))|(% colspan="1" %)(% colspan="1" %)
365 (((
366 Boolean
367 )))|(% colspan="1" %)(% colspan="1" %)
368 (((
369 Parents
370 )))|(% class="highlight-yellow" colspan="1" data-highlight-colour="yellow" %)(% class="highlight-yellow" colspan="1" data-highlight-colour="yellow" %)
371 (((
372 true
373 )))
374 |(% colspan="1" %)(% colspan="1" %)
375 (((
376 Size Constraint
377 )))|(% colspan="1" %)(% colspan="1" %)
378 (((
379 de.cau.cs.kieler.sizeConstraint
380 )))|(% colspan="1" %)(% colspan="1" %)
381 (((
382 EnumSet
383 )))|(% colspan="1" %)(% colspan="1" %)
384 (((
385 Nodes
386 )))|(% colspan="1" %)(% colspan="1" %)
387 (((
388
389 )))
390 |(% colspan="1" %)(% colspan="1" %)
391 (((
392 Size Options
393 )))|(% colspan="1" %)(% colspan="1" %)
394 (((
395 de.cau.cs.kieler.sizeOptions
396 )))|(% colspan="1" %)(% colspan="1" %)
397 (((
398 EnumSet
399 )))|(% colspan="1" %)(% colspan="1" %)
400 (((
401 Nodes
402 )))|(% colspan="1" %)(% colspan="1" %)
403 (((
404 DEFAULT_MINIMUM_SIZE
405 )))
406 |(% colspan="1" %)(% colspan="1" %)
407 (((
408 Spacing
409 )))|(% colspan="1" %)(% colspan="1" %)
410 (((
411 de.cau.cs.kieler.spacing
412 )))|(% colspan="1" %)(% colspan="1" %)
413 (((
414 Float
415 )))|(% colspan="1" %)(% colspan="1" %)
416 (((
417 Parents
418 )))|(% class="highlight-yellow" colspan="1" data-highlight-colour="yellow" %)(% class="highlight-yellow" colspan="1" data-highlight-colour="yellow" %)
419 (((
420 20
421 )))
422
423 == Custom Layout Options ==
424
425 |=(((
426 Option
427 )))|=(((
428 ID
429 )))|=(((
430 Type
431 )))|=(((
432 Applies to
433 )))|=(((
434 Default
435 )))|=(% colspan="1" %)(% colspan="1" %)
436 (((
437 Dependency
438 )))
439 |(((
440 [[Crossing Minimization>>doc:||anchor="crossingMinimization"]]
441 )))|(((
442 de.cau.cs.kieler.klay.layered.crossMin
443 )))|(((
444 Enum
445 )))|(((
446 Parents
447 )))|(((
448 LAYER_SWEEP
449 )))|(% colspan="1" %)(% colspan="1" %)
450 (((
451
452 )))
453 |(((
454 [[Cycle Breaking>>doc:||anchor="cycleBre"]]
455 )))|(((
456 de.cau.cs.kieler.klay.layered.cycleBreaking
457 )))|(((
458 Enum
459 )))|(((
460 Parents
461 )))|(((
462 GREEDY
463 )))|(% colspan="1" %)(% colspan="1" %)
464 (((
465
466 )))
467 |(((
468 [[Edge Spacing Factor>>doc:||anchor="edgeSpacingFactor"]]
469 )))|(((
470 de.cau.cs.kieler.klay.layered.edgeSpacingFactor
471 )))|(((
472 Float
473 )))|(((
474 Parents
475 )))|(((
476 0.5
477 )))|(% colspan="1" %)(% colspan="1" %)
478 (((
479
480 )))
481 |(% colspan="1" %)(% colspan="1" %)
482 (((
483 [[Feedback Edges>>doc:||anchor="feedbackEdges"]]
484 )))|(% colspan="1" %)(% colspan="1" %)
485 (((
486 de.cau.cs.kieler.klay.layered.feedBackEdges
487 )))|(% colspan="1" %)(% colspan="1" %)
488 (((
489 Boolean
490 )))|(% colspan="1" %)(% colspan="1" %)
491 (((
492 Parents
493 )))|(% colspan="1" %)(% colspan="1" %)
494 (((
495 false
496 )))|(% colspan="1" %)(% colspan="1" %)
497 (((
498
499 )))
500 |(% colspan="1" %)(% colspan="1" %)
501 (((
502 [[Fixed Alignment>>doc:||anchor="fixedAlignment"]]
503 )))|(% colspan="1" %)(% colspan="1" %)
504 (((
505 de.cau.cs.kieler.klay.layered.fixedAlignment
506 )))|(% colspan="1" %)(% colspan="1" %)
507 (((
508 Enum
509 )))|(% colspan="1" %)(% colspan="1" %)
510 (((
511 Parents
512 )))|(% colspan="1" %)(% colspan="1" %)
513 (((
514 NONE
515 )))|(% colspan="1" %)(% colspan="1" %)
516 (((
517 nodePlace=BRANDES_KOEPF
518 )))
519 |(% colspan="1" %)(% colspan="1" %)
520 (((
521 [[Interactive Reference Point>>doc:||anchor="interactiveReferencePoint"]]
522 )))|(% colspan="1" %)(% colspan="1" %)
523 (((
524 de.cau.cs.kieler.klay.layered.interactiveReferencePoint
525 )))|(% colspan="1" %)(% colspan="1" %)
526 (((
527 Enum
528 )))|(% colspan="1" %)(% colspan="1" %)
529 (((
530 Parents
531 )))|(% colspan="1" %)(% colspan="1" %)
532 (((
533 CENTER
534 )))|(% colspan="1" %)(% colspan="1" %)
535 (((
536
537 )))
538 |(% colspan="1" %)(% colspan="1" %)
539 (((
540 [[Layer Constraint>>doc:||anchor="layerConstraint"]]
541 )))|(% colspan="1" %)(% colspan="1" %)
542 (((
543 de.cau.cs.kieler.klay.layered.layerConstraint
544 )))|(% colspan="1" %)(% colspan="1" %)
545 (((
546 Enum
547 )))|(% colspan="1" %)(% colspan="1" %)
548 (((
549 Nodes
550 )))|(% colspan="1" %)(% colspan="1" %)
551 (((
552 NONE
553 )))|(% colspan="1" %)(% colspan="1" %)
554 (((
555
556 )))
557 |(% colspan="1" %)(% colspan="1" %)
558 (((
559 [[Maximal Iterations>>doc:||anchor="maximalIterations"]]
560 )))|(% colspan="1" %)(% colspan="1" %)
561 (((
562 de.cau.cs.kieler.klay.layered.nodeLayering
563 )))|(% colspan="1" %)(% colspan="1" %)
564 (((
565 Int
566 )))|(% colspan="1" %)(% colspan="1" %)
567 (((
568 Parents
569 )))|(% colspan="1" %)(% colspan="1" %)
570 (((
571 10.000.000
572 )))|(% colspan="1" %)(% colspan="1" %)
573 (((
574 nodeLayering=NETWORK_SIMPLEX
575 )))
576 |(% colspan="1" %)(% colspan="1" %)
577 (((
578 [[Merge Edges>>doc:||anchor="mergeEdges"]]
579 )))|(% colspan="1" %)(% colspan="1" %)
580 (((
581 de.cau.cs.kieler.klay.layered.mergePorts
582 )))|(% colspan="1" %)(% colspan="1" %)
583 (((
584 Boolean
585 )))|(% colspan="1" %)(% colspan="1" %)
586 (((
587 Parents
588 )))|(% colspan="1" %)(% colspan="1" %)
589 (((
590 false
591 )))|(% colspan="1" %)(% colspan="1" %)
592 (((
593
594 )))
595 |(% colspan="1" %)(% colspan="1" %)
596 (((
597 [[Merge Hierarchy-Crossing Edges>>doc:||anchor="mergeHierarchyEdges"]]
598 )))|(% colspan="1" %)(% colspan="1" %)
599 (((
600 de.cau.cs.kieler.klay.layered.mergeHierarchyPorts
601 )))|(% colspan="1" %)(% colspan="1" %)
602 (((
603 Boolean
604 )))|(% colspan="1" %)(% colspan="1" %)
605 (((
606 Parents
607 )))|(% colspan="1" %)(% colspan="1" %)
608 (((
609 true
610 )))|(% colspan="1" %)(% colspan="1" %)
611 (((
612
613 )))
614 |(((
615 [[Node Layering>>doc:||anchor="nodeLayering"]]
616 )))|(((
617 de.cau.cs.kieler.klay.layered.nodeLayering
618 )))|(((
619 Enum
620 )))|(((
621 Parents
622 )))|(((
623 NETWORK_SIMPLEX
624 )))|(% colspan="1" %)(% colspan="1" %)
625 (((
626
627 )))
628 |(% colspan="1" %)(% colspan="1" %)
629 (((
630 [[Node Placement>>doc:||anchor="nodePlacement"]]
631 )))|(% colspan="1" %)(% colspan="1" %)
632 (((
633 de.cau.cs.kieler.klay.layered.nodePlace
634 )))|(% colspan="1" %)(% colspan="1" %)
635 (((
636 Enum
637 )))|(% colspan="1" %)(% colspan="1" %)
638 (((
639 Parents
640 )))|(% colspan="1" %)(% colspan="1" %)
641 (((
642 BRANDES_KOEPF
643 )))|(% colspan="1" %)(% colspan="1" %)
644 (((
645
646 )))
647 |(% colspan="1" %)(% colspan="1" %)
648 (((
649 [[Port Anchor Offset>>doc:||anchor="portAnchor"]]
650 )))|(% colspan="1" %)(% colspan="1" %)
651 (((
652 de.cau.cs.kieler.klay.layered.portAnchor
653 )))|(% colspan="1" %)(% colspan="1" %)
654 (((
655 Object
656 )))|(% colspan="1" %)(% colspan="1" %)
657 (((
658 Ports
659 )))|(% colspan="1" %)(% colspan="1" %)
660 (((
661
662 )))|(% colspan="1" %)(% colspan="1" %)
663 (((
664
665 )))
666 |(((
667 [[Thoroughness>>doc:||anchor="thoroughness"]]
668 )))|(((
669 de.cau.cs.kieler.klay.layered.thoroughness
670 )))|(((
671 Int
672 )))|(((
673 Parents
674 )))|(((
675 7
676 )))|(% colspan="1" %)(% colspan="1" %)
677 (((
678
679 )))
680
681 = The Most Important Options =
682
683 **TODO:** Write a bit of documentation about the most important layout options and how to use them, possibly with a simple example or something.
684
685 = Detailed Documentation =
686
687 This section explains every layout option in more detail. See [[the KIML documentation>>doc:KIML Layout Options]] for more information on KIML layout options. Those options are only mentioned here if KLay Layered adds some custom behavior.
688
689 == Crossing Minimization ==
690
691
692
693 {{id name="crossingMinimization"/}}
694
695 Crossing minimization determines the ordering of nodes in each layer, which influences the number of edge crossings. This option switches between one of several algorithms that can be used to minimize crossings. Possible values are:
696
697 * LAYER_SWEEP
698 The layer sweep algorithm iterates multiple times over the layers, trying to find node orderings that minimize the number of crossings. The algorithm uses randomization to increase the odds of finding a good result. To improve its results, consider increasing the //Thoroughness// option, which influences the number of iterations done. The //Randomization// seed also influences results.
699 * INTERACTIVE
700 Orders the nodes of each layer by comparing their positions before the layout algorithm was started. The idea is that the relative order of nodes as it was before layout was applied is not changed. This of course requires valid positions for all nodes to have been set on the input graph before calling the layout algorithm. The interactive layer sweep algorithm uses the //Interactive Reference Point// option to determine which reference point of nodes are used to compare positions.
701
702 == Cycle Breaking ==
703
704
705
706 {{id name="cycleBreaking"/}}
707
708 KLay Layered tries to position nodes in a way that all edges point rightwards. This is not possible if the input graph has cycles. Such cycles have to be broken by reversing as few edges as possible. The reversed edges end up pointing leftwards in the resulting diagram. There are different cycle breaking algorithms available:
709
710 * GREEDY
711 This algorithm reverses edges greedily. The algorithm tries to avoid edges that have the //Priority// property set.
712 * INTERACTIVE
713 The interactive algorithm tries to reverse edges that already pointed leftwards in the input graph. This requires node and port coordinates to have been set to sensible values.
714
715 == Edge Spacing Factor ==
716
717
718
719 {{id name="edgeSpacingFactor"/}}
720
721 The edge spacing factor determines the amount of space between edges, relative to the regular //Spacing// value. The idea is that we don't need as much space between edges as we do between nodes.
722
723 [[image:attach:edgeSpacingFactor.png]]
724
725 == Feedback Edges ==
726
727
728
729 {{id name="feedbackEdges"/}}
730
731 {{warning}}
732 Document!
733 {{/warning}}
734
735 == Fixed Alignment ==
736
737
738
739 {{id name="fixedAlignment"/}}
740
741 {{warning}}
742 Document!
743 {{/warning}}
744
745
746
747 == Interactive Reference Point ==
748
749
750
751 {{id name="interactiveReferencePoint"/}}
752
753 Interactive layering, crossing minimization, and cycle breaking algorithms use node positions to sort nodes into layers or to determine the order of nodes in each layer. However, it is unclear if for example the top left corners of nodes should be compared, or the bottom left corners — different settings might lead to different results. The interactive reference point determines which part of nodes is used to compare their positions. It provides the following settings:
754
755 * TOP_LEFT
756 The top left corner of a node is taken as the reference point.
757 * CENTER
758 The center of a node is taken as the reference point.
759
760 == Layer Constraint ==
761
762
763
764 {{id name="layerConstraint"/}}
765
766 {{warning}}
767 Document!
768 {{/warning}}
769
770
771
772 == Maximal Iterations ==
773
774
775
776 {{id name="maximalIterations"/}}
777
778 Delimits the amount of depth-first-search iterations performed by the network simplex layering strategy. Large, highly connected graphs might require a long time to be processed. This property serves as a timeout after which an exception is raised.
779
780 == Merge Edges ==
781
782
783
784 {{id name="mergeEdges"/}}
785
786 In the KGraph model, edges can either connect to nodes through ports or directly. In the latter case, KLay Layered will introduce a virtual port for each edge, which results in all edges connecting to the node at different points in the final drawing. If this option is switched on, KLay Layered will only generate up to one input and one output port for each node. The option is set on a parent node and applies to all of its children, but not to the parent node itself.
787
788 [[image:attach:merging.png]]
789
790 == Merge Hierarchy-Crossing Edges ==
791
792
793
794 {{id name="mergeHierarchyEdges"/}}
795
796 {{warning}}
797 Document!
798 {{/warning}}
799
800 == Node Layering ==
801
802
803
804 {{id name="nodeLayering"/}}
805
806 {{warning}}
807 Document!
808 {{/warning}}
809
810 == Node Placement ==
811
812
813
814 {{id name="nodePlacement"/}}
815
816 {{warning}}
817 Document!
818 {{/warning}}
819
820 == Port Anchor Offset ==
821
822
823
824 {{id name="portAnchor"/}}
825
826 {{warning}}
827 Document!
828 {{/warning}}
829
830
831
832 == Thoroughness ==
833
834
835
836 {{id name="thoroughness"/}}
837
838 There are heuristics in use all over KLay Layered whose results often improve with the number of iterations computed. The thoroughness is a measure for telling KLay Layered to compute more iterations to improve the quality of results, at the expense of performance.