Wiki source code of KIML Layout Options

Version 6.1 by cds on 2013/06/03 10:42

Hide last authors
cds 1.1 1 {{warning}}
2 This is preliminary documentation. You've been warned.
3 {{/warning}}
4
cds 4.1 5 KIML defines a whole set of standard layout options that many layout algorithms support. Whether an algorithm supports a layout option depends on the option and on the algorithm. When an option is supported by an algorithm, it may change the option's default value. Algorithms may also provide more specialized documentation for a given layout option.
cds 1.1 6
7 **Contents**
8
cds 6.1 9
cds 1.1 10
11 = Overview =
12
13 Beside a human-readable name, layout options are defined by the following properties:
14
15 * An ID to identify them.
16 * A type. One of Boolean, String, Int, Float, Enum, EnumSet (a {{code language="none"}}Set{{/code}} over a given enumeration), or Object. The types Enum and EnumSet have to be further defined by an enumeration class. The Object type can be constricted to a certain class.
cds 3.1 17 * The kinds of graph objects the option applies to. At least one of Parents (nodes that have children, including the diagram root node), Nodes, Edges, Ports, and Labels.
cds 1.1 18 * An optional default value. If an option is not set on an object and if the option does not have a default value, {{code language="none"}}null{{/code}} is returned when it is accessed.
19
20 KIML defines the following set of layout options:
21
22 |=(((
23 Option
24 )))|=(((
25 ID
26 )))|=(((
27 Type
28 )))|=(((
29 Applies to
30 )))|=(((
31 Default
32 )))
33 |(((
34 Alignment
35 )))|(((
36 de.cau.cs.kieler.alignment
37 )))|(((
38 Enum
39 )))|(((
40 Nodes
41 )))|(((
42 AUTOMATIC
43 )))
44 |(((
45 Aspect Ratio
46 )))|(((
47 de.cau.cs.kieler.aspectRatio
48 )))|(((
49 Float
50 )))|(((
51 Parents
52 )))|(((
53 0.0
54 )))
55 |(((
56 Bend Points
57 )))|(((
58 de.cau.cs.kieler.bendPoints
59 )))|(((
60 Object
61 )))|(((
62 Edges
63 )))|(((
64
65 )))
66 |(((
67 Border Spacing
68 )))|(((
69 de.cau.cs.kieler.borderSpacing
70 )))|(((
71 Float
72 )))|(((
73 Parents
74 )))|(((
75 -1.0
76 )))
77 |(% colspan="1" %)(% colspan="1" %)
78 (((
79 Comment Box
80 )))|(% colspan="1" %)(% colspan="1" %)
81 (((
82 de.cau.cs.kieler.commentBox
83 )))|(% colspan="1" %)(% colspan="1" %)
84 (((
85 Boolean
86 )))|(% colspan="1" %)(% colspan="1" %)
87 (((
cds 3.1 88 Nodes
cds 1.1 89 )))|(% colspan="1" %)(% colspan="1" %)
90 (((
91 false
92 )))
93 |(((
94 Debug Mode
95 )))|(((
96 de.cau.cs.kieler.debugMode
97 )))|(((
98 Boolean
99 )))|(((
100 Parents
101 )))|(((
102 false
103 )))
104 |(% colspan="1" %)(% colspan="1" %)
105 (((
106 Diagram Type
107 )))|(% colspan="1" %)(% colspan="1" %)
108 (((
109 de.cau.cs.kieler.diagramType
110 )))|(% colspan="1" %)(% colspan="1" %)
111 (((
112 String
113 )))|(% colspan="1" %)(% colspan="1" %)
114 (((
115
116 )))|(% colspan="1" %)(% colspan="1" %)
117 (((
118
119 )))
120 |(((
121 Direction
122 )))|(((
123 de.cau.cs.kieler.direction
124 )))|(((
125 Enum
126 )))|(((
127 Parents
128 )))|(((
129 UNDEFINED
130 )))
131 |(% colspan="1" %)(% colspan="1" %)
132 (((
133 Edge Label Placement
134 )))|(% colspan="1" %)(% colspan="1" %)
135 (((
136 de.cau.cs.kieler.edgeLabelPlacement
137 )))|(% colspan="1" %)(% colspan="1" %)
138 (((
139 Enum
140 )))|(% colspan="1" %)(% colspan="1" %)
141 (((
cds 3.1 142 Labels
cds 1.1 143 )))|(% colspan="1" %)(% colspan="1" %)
144 (((
145 UNDEFINED
146 )))
147 |(((
148 Edge Routing
149 )))|(((
150 de.cau.cs.kieler.edgeRouting
151 )))|(((
152 Enum
153 )))|(((
154 Parents
155 )))|(((
156 UNDEFINED
157 )))
158 |(% colspan="1" %)(% colspan="1" %)
159 (((
160 Edge Type
161 )))|(% colspan="1" %)(% colspan="1" %)
162 (((
163 de.cau.cs.kieler.edgeType
164 )))|(% colspan="1" %)(% colspan="1" %)
165 (((
166 Enum
167 )))|(% colspan="1" %)(% colspan="1" %)
168 (((
cds 3.1 169 Edges
cds 1.1 170 )))|(% colspan="1" %)(% colspan="1" %)
171 (((
172 NONE
173 )))
174 |(((
175 Expand Nodes
176 )))|(((
177 de.cau.cs.kieler.expandNodes
178 )))|(((
179 Boolean
180 )))|(((
181 Parents
182 )))|(((
183 false
184 )))
185 |(% colspan="1" %)(% colspan="1" %)
186 (((
187 Font Name
188 )))|(% colspan="1" %)(% colspan="1" %)
189 (((
190 de.cau.cs.kieler.fontName
191 )))|(% colspan="1" %)(% colspan="1" %)
192 (((
193 String
194 )))|(% colspan="1" %)(% colspan="1" %)
195 (((
cds 3.1 196 Labels
cds 1.1 197 )))|(% colspan="1" %)(% colspan="1" %)
198 (((
199
200 )))
201 |(% colspan="1" %)(% colspan="1" %)
202 (((
203 Font Size
204 )))|(% colspan="1" %)(% colspan="1" %)
205 (((
206 de.cau.cs.kieler.fontSize
207 )))|(% colspan="1" %)(% colspan="1" %)
208 (((
209 Int
210 )))|(% colspan="1" %)(% colspan="1" %)
211 (((
cds 3.1 212 Labels
cds 1.1 213 )))|(% colspan="1" %)(% colspan="1" %)
214 (((
215
216 )))
217 |(% colspan="1" %)(% colspan="1" %)
218 (((
219 Hypernode
220 )))|(% colspan="1" %)(% colspan="1" %)
221 (((
222 de.cau.cs.kieler.hypernode
223 )))|(% colspan="1" %)(% colspan="1" %)
224 (((
225 Boolean
226 )))|(% colspan="1" %)(% colspan="1" %)
227 (((
cds 3.1 228 Nodes
cds 1.1 229 )))|(% colspan="1" %)(% colspan="1" %)
230 (((
231 false
232 )))
233 |(((
234 Interactive
235 )))|(((
236 de.cau.cs.kieler.interactive
237 )))|(((
238 Boolean
239 )))|(((
240 Parents
241 )))|(((
242 false
243 )))
244 |(((
245 Label Spacing
246 )))|(((
247 de.cau.cs.kieler.labelSpacing
248 )))|(((
249 Float
250 )))|(((
251 Edges
252 Nodes
253 )))|(((
254 -1.0
255 )))
256 |(((
257 Layout Hierarchy
258 )))|(((
259 de.cau.cs.kieler.layoutHierarchy
260 )))|(((
261 Boolean
262 )))|(((
263 Parents
264 )))|(((
265 false
266 )))
267 |(((
268 Layout Algorithm
269 )))|(((
270 de.cau.cs.kieler.algorithm
271 )))|(((
272 String
273 )))|(((
274 Parents
275 )))|(((
276
277 )))
278 |(% colspan="1" %)(% colspan="1" %)
279 (((
280 Minimal Height
281 )))|(% colspan="1" %)(% colspan="1" %)
282 (((
283 de.cau.cs.kieler.minHeight
284 )))|(% colspan="1" %)(% colspan="1" %)
285 (((
286 Float
287 )))|(% colspan="1" %)(% colspan="1" %)
288 (((
cds 3.1 289 Nodes
290 Parents
cds 1.1 291 )))|(% colspan="1" %)(% colspan="1" %)
292 (((
293 0.0
294 )))
295 |(% colspan="1" %)(% colspan="1" %)
296 (((
297 Minimal Width
298 )))|(% colspan="1" %)(% colspan="1" %)
299 (((
300 de.cau.cs.kieler.minWidth
301 )))|(% colspan="1" %)(% colspan="1" %)
302 (((
303 Float
304 )))|(% colspan="1" %)(% colspan="1" %)
305 (((
cds 3.1 306 Nodes
307 Parents
cds 1.1 308 )))|(% colspan="1" %)(% colspan="1" %)
309 (((
310 0.0
311 )))
312 |(% colspan="1" %)(% colspan="1" %)
313 (((
314 No Layout
315 )))|(% colspan="1" %)(% colspan="1" %)
316 (((
317 de.cau.cs.kieler.noLayout
318 )))|(% colspan="1" %)(% colspan="1" %)
319 (((
320 Boolean
321 )))|(% colspan="1" %)(% colspan="1" %)
322 (((
323
324 )))|(% colspan="1" %)(% colspan="1" %)
325 (((
326 false
327 )))
328 |(% colspan="1" %)(% colspan="1" %)
329 (((
330 Node Label Placement
331 )))|(% colspan="1" %)(% colspan="1" %)
332 (((
333 de.cau.cs.kieler.nodeLabelPlacement
334 )))|(% colspan="1" %)(% colspan="1" %)
335 (((
336 EnumSet
337 )))|(% colspan="1" %)(% colspan="1" %)
338 (((
339 Nodes
340 )))|(% colspan="1" %)(% colspan="1" %)
341 (((
342
343 )))
344 |(((
345 Port Constraints
346 )))|(((
347 de.cau.cs.kieler.portConstraints
348 )))|(((
349 Enum
350 )))|(((
351 Nodes
352 )))|(((
353 UNDEFINED
354 )))
355 |(% colspan="1" %)(% colspan="1" %)
356 (((
357 Port Label Placement
358 )))|(% colspan="1" %)(% colspan="1" %)
359 (((
360 de.cau.cs.kieler.portLabelPlacement
361 )))|(% colspan="1" %)(% colspan="1" %)
362 (((
363 Enum
364 )))|(% colspan="1" %)(% colspan="1" %)
365 (((
366 Nodes
367 )))|(% colspan="1" %)(% colspan="1" %)
368 (((
369 OUTSIDE
370 )))
371 |(% colspan="1" %)(% colspan="1" %)
372 (((
cds 5.1 373 [[Port Offset>>doc:||anchor="portOffset"]]
cds 1.1 374 )))|(% colspan="1" %)(% colspan="1" %)
375 (((
376 de.cau.cs.kieler.offset
377 )))|(% colspan="1" %)(% colspan="1" %)
378 (((
379 Float
380 )))|(% colspan="1" %)(% colspan="1" %)
381 (((
cds 3.1 382 Ports
cds 1.1 383 )))|(% colspan="1" %)(% colspan="1" %)
384 (((
385
386 )))
387 |(% colspan="1" %)(% colspan="1" %)
388 (((
389 Port Side
390 )))|(% colspan="1" %)(% colspan="1" %)
391 (((
392 de.cau.cs.kieler.portSide
393 )))|(% colspan="1" %)(% colspan="1" %)
394 (((
395 Enum
396 )))|(% colspan="1" %)(% colspan="1" %)
397 (((
cds 3.1 398 Ports
cds 1.1 399 )))|(% colspan="1" %)(% colspan="1" %)
400 (((
401 UNDEFINED
402 )))
403 |(((
404 Position
405 )))|(((
406 de.cau.cs.kieler.position
407 )))|(((
408 Object
409 )))|(((
410 Labels
411 Nodes
412 Ports
413 )))|(((
414
415 )))
416 |(((
417 Priority
418 )))|(((
419 de.cau.cs.kieler.priority
420 )))|(((
421 Int
422 )))|(((
423 Edges
424 Nodes
425 )))|(((
426
427 )))
428 |(% colspan="1" %)(% colspan="1" %)
429 (((
430 Randomization Seed
431 )))|(% colspan="1" %)(% colspan="1" %)
432 (((
433 de.cau.cs.kieler.randomSeed
434 )))|(% colspan="1" %)(% colspan="1" %)
435 (((
436 Int
437 )))|(% colspan="1" %)(% colspan="1" %)
438 (((
439 Parents
440 )))|(% colspan="1" %)(% colspan="1" %)
441 (((
442
443 )))
444 |(% colspan="1" %)(% colspan="1" %)
445 (((
446 Separate Connected Components
447 )))|(% colspan="1" %)(% colspan="1" %)
448 (((
449 de.cau.cs.kieler.separateConnComp
450 )))|(% colspan="1" %)(% colspan="1" %)
451 (((
452 Boolean
453 )))|(% colspan="1" %)(% colspan="1" %)
454 (((
455 Parents
456 )))|(% colspan="1" %)(% colspan="1" %)
457 (((
458
459 )))
460 |(% colspan="1" %)(% colspan="1" %)
461 (((
462 Size Constraint
463 )))|(% colspan="1" %)(% colspan="1" %)
464 (((
465 de.cau.cs.kieler.sizeConstraint
466 )))|(% colspan="1" %)(% colspan="1" %)
467 (((
468 EnumSet
469 )))|(% colspan="1" %)(% colspan="1" %)
470 (((
471 Nodes
472 )))|(% colspan="1" %)(% colspan="1" %)
473 (((
474
475 )))
476 |(% colspan="1" %)(% colspan="1" %)
477 (((
478 Size Options
479 )))|(% colspan="1" %)(% colspan="1" %)
480 (((
481 de.cau.cs.kieler.sizeOptions
482 )))|(% colspan="1" %)(% colspan="1" %)
483 (((
484 EnumSet
485 )))|(% colspan="1" %)(% colspan="1" %)
486 (((
487 Nodes
488 )))|(% colspan="1" %)(% colspan="1" %)
489 (((
490 DEFAULT_MINIMUM_SIZE
491 )))
492 |(% colspan="1" %)(% colspan="1" %)
493 (((
494 Spacing
495 )))|(% colspan="1" %)(% colspan="1" %)
496 (((
497 de.cau.cs.kieler.spacing
498 )))|(% colspan="1" %)(% colspan="1" %)
499 (((
500 Float
501 )))|(% colspan="1" %)(% colspan="1" %)
502 (((
503 Parents
504 )))|(% colspan="1" %)(% colspan="1" %)
505 (((
506 -1.0
507 )))
508
509 = The Most Important Options =
510
511 **TODO:** Write a bit of documentation about the most important layout options and how to use them, possibly with a simple example or something.
512
513 = Detailed Documentation =
514
515 This section explains every layout option in more detail.
516
cds 5.1 517 == Port Offset ==
cds 1.1 518
cds 5.1 519 {{id name="portOffset"/}}
520
cds 1.1 521 The port offset is used to specify how much space a layout algorithm should leave between a port and the border of its node. This is usually zero, but doesn't have to be. If the offset is not defined for a given port, a layout algorithm can try to infer the offset from the port's coordinates and its node's size in the input graph. This of course requires both properties to be set to sensible values.
cds 3.1 522
523 Set this property if one of the following cases applies:
524
525 * The port constraints on a node are set to FREE, FIXED_SIDES or FIXED_ORDER.
526 * The port constraints on a node are set to FIXED_RATIO or FIXED_POS, and the size of the node is not fixed. (Note that this is especially true for ports of compound nodes.)