Wiki source code of Layout Options

Version 1.1 by cds on 2013/05/31 20:06

Show last authors
1 {{warning}}
2 This is preliminary documentation. You've been warned.
3 {{/warning}}
4
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. Algorithms may provide more specialized documentation for a given layout option.
6
7 **Contents**
8
9
10
11 {{toc/}}
12
13 = Overview =
14
15 Beside a human-readable name, layout options are defined by the following properties:
16
17 * An ID to identify them.
18 * 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.
19 * An optional definition of what 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. If this definition is omitted, a layout option will not be shown to the user in the UI, but can still be set programmatically.
20 * 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.
21
22 KIML defines the following set of layout options:
23
24 |=(((
25 Option
26 )))|=(((
27 ID
28 )))|=(((
29 Type
30 )))|=(((
31 Applies to
32 )))|=(((
33 Default
34 )))
35 |(((
36 Alignment
37 )))|(((
38 de.cau.cs.kieler.alignment
39 )))|(((
40 Enum
41 )))|(((
42 Nodes
43 )))|(((
44 AUTOMATIC
45 )))
46 |(((
47 Aspect Ratio
48 )))|(((
49 de.cau.cs.kieler.aspectRatio
50 )))|(((
51 Float
52 )))|(((
53 Parents
54 )))|(((
55 0.0
56 )))
57 |(((
58 Bend Points
59 )))|(((
60 de.cau.cs.kieler.bendPoints
61 )))|(((
62 Object
63 )))|(((
64 Edges
65 )))|(((
66
67 )))
68 |(((
69 Border Spacing
70 )))|(((
71 de.cau.cs.kieler.borderSpacing
72 )))|(((
73 Float
74 )))|(((
75 Parents
76 )))|(((
77 -1.0
78 )))
79 |(% colspan="1" %)(% colspan="1" %)
80 (((
81 Comment Box
82 )))|(% colspan="1" %)(% colspan="1" %)
83 (((
84 de.cau.cs.kieler.commentBox
85 )))|(% colspan="1" %)(% colspan="1" %)
86 (((
87 Boolean
88 )))|(% colspan="1" %)(% colspan="1" %)
89 (((
90
91 )))|(% colspan="1" %)(% colspan="1" %)
92 (((
93 false
94 )))
95 |(((
96 Debug Mode
97 )))|(((
98 de.cau.cs.kieler.debugMode
99 )))|(((
100 Boolean
101 )))|(((
102 Parents
103 )))|(((
104 false
105 )))
106 |(% colspan="1" %)(% colspan="1" %)
107 (((
108 Diagram Type
109 )))|(% colspan="1" %)(% colspan="1" %)
110 (((
111 de.cau.cs.kieler.diagramType
112 )))|(% colspan="1" %)(% colspan="1" %)
113 (((
114 String
115 )))|(% colspan="1" %)(% colspan="1" %)
116 (((
117
118 )))|(% colspan="1" %)(% colspan="1" %)
119 (((
120
121 )))
122 |(((
123 Direction
124 )))|(((
125 de.cau.cs.kieler.direction
126 )))|(((
127 Enum
128 )))|(((
129 Parents
130 )))|(((
131 UNDEFINED
132 )))
133 |(% colspan="1" %)(% colspan="1" %)
134 (((
135 Edge Label Placement
136 )))|(% colspan="1" %)(% colspan="1" %)
137 (((
138 de.cau.cs.kieler.edgeLabelPlacement
139 )))|(% colspan="1" %)(% colspan="1" %)
140 (((
141 Enum
142 )))|(% colspan="1" %)(% colspan="1" %)
143 (((
144
145 )))|(% colspan="1" %)(% colspan="1" %)
146 (((
147 UNDEFINED
148 )))
149 |(((
150 Edge Routing
151 )))|(((
152 de.cau.cs.kieler.edgeRouting
153 )))|(((
154 Enum
155 )))|(((
156 Parents
157 )))|(((
158 UNDEFINED
159 )))
160 |(% colspan="1" %)(% colspan="1" %)
161 (((
162 Edge Type
163 )))|(% colspan="1" %)(% colspan="1" %)
164 (((
165 de.cau.cs.kieler.edgeType
166 )))|(% colspan="1" %)(% colspan="1" %)
167 (((
168 Enum
169 )))|(% colspan="1" %)(% colspan="1" %)
170 (((
171
172 )))|(% colspan="1" %)(% colspan="1" %)
173 (((
174 NONE
175 )))
176 |(((
177 Expand Nodes
178 )))|(((
179 de.cau.cs.kieler.expandNodes
180 )))|(((
181 Boolean
182 )))|(((
183 Parents
184 )))|(((
185 false
186 )))
187 |(% colspan="1" %)(% colspan="1" %)
188 (((
189 Font Name
190 )))|(% colspan="1" %)(% colspan="1" %)
191 (((
192 de.cau.cs.kieler.fontName
193 )))|(% colspan="1" %)(% colspan="1" %)
194 (((
195 String
196 )))|(% colspan="1" %)(% colspan="1" %)
197 (((
198
199 )))|(% colspan="1" %)(% colspan="1" %)
200 (((
201
202 )))
203 |(% colspan="1" %)(% colspan="1" %)
204 (((
205 Font Size
206 )))|(% colspan="1" %)(% colspan="1" %)
207 (((
208 de.cau.cs.kieler.fontSize
209 )))|(% colspan="1" %)(% colspan="1" %)
210 (((
211 Int
212 )))|(% colspan="1" %)(% colspan="1" %)
213 (((
214
215 )))|(% colspan="1" %)(% colspan="1" %)
216 (((
217
218 )))
219 |(% colspan="1" %)(% colspan="1" %)
220 (((
221 Hypernode
222 )))|(% colspan="1" %)(% colspan="1" %)
223 (((
224 de.cau.cs.kieler.hypernode
225 )))|(% colspan="1" %)(% colspan="1" %)
226 (((
227 Boolean
228 )))|(% colspan="1" %)(% colspan="1" %)
229 (((
230
231 )))|(% colspan="1" %)(% colspan="1" %)
232 (((
233 false
234 )))
235 |(((
236 Interactive
237 )))|(((
238 de.cau.cs.kieler.interactive
239 )))|(((
240 Boolean
241 )))|(((
242 Parents
243 )))|(((
244 false
245 )))
246 |(((
247 Label Spacing
248 )))|(((
249 de.cau.cs.kieler.labelSpacing
250 )))|(((
251 Float
252 )))|(((
253 Edges
254 Nodes
255 )))|(((
256 -1.0
257 )))
258 |(((
259 Layout Hierarchy
260 )))|(((
261 de.cau.cs.kieler.layoutHierarchy
262 )))|(((
263 Boolean
264 )))|(((
265 Parents
266 )))|(((
267 false
268 )))
269 |(((
270 Layout Algorithm
271 )))|(((
272 de.cau.cs.kieler.algorithm
273 )))|(((
274 String
275 )))|(((
276 Parents
277 )))|(((
278
279 )))
280 |(% colspan="1" %)(% colspan="1" %)
281 (((
282 Minimal Height
283 )))|(% colspan="1" %)(% colspan="1" %)
284 (((
285 de.cau.cs.kieler.minHeight
286 )))|(% colspan="1" %)(% colspan="1" %)
287 (((
288 Float
289 )))|(% colspan="1" %)(% colspan="1" %)
290 (((
291
292 )))|(% colspan="1" %)(% colspan="1" %)
293 (((
294 0.0
295 )))
296 |(% colspan="1" %)(% colspan="1" %)
297 (((
298 Minimal Width
299 )))|(% colspan="1" %)(% colspan="1" %)
300 (((
301 de.cau.cs.kieler.minWidth
302 )))|(% colspan="1" %)(% colspan="1" %)
303 (((
304 Float
305 )))|(% colspan="1" %)(% colspan="1" %)
306 (((
307
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 (((
373 Port Offset
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 (((
382
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 (((
398
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
517 == Port Offset ==
518
519 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.