Changes for page KIML Layout Options
on 2014/03/07 16:46
Summary
-
Page properties (3 modified, 0 added, 0 removed)
-
Attachments (0 modified, 4 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Parent
-
... ... @@ -1,0 +1,1 @@ 1 +KIELER.Home.Discontinued Projects.Infrastructure for Meta Layout (KIML).WebHome - Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.m sp1 +XWiki.cmot - Content
-
... ... @@ -1,26 +1,28 @@ 1 -{{warning}} 2 -This is preliminary and incomplete documentation. You've been warned. 3 -{{/warning}} 1 + 4 4 5 -KIML defines a whole set of standard layout options that many layout algorithms support. Whe theranalgorithmsupports a layout option dependsonthe optionandon thealgorithm.Whenan optionis supported byan algorithm,itmaychange the option's default value. Algorithms may also provide more specialized documentation fora givenlayout option.3 +KIML defines a whole set of standard layout options that many layout algorithms support. When an option is supported by an algorithm, that algorithm may override the option's default value. Algorithms may also provide more specialized documentation for layout options. 6 6 7 7 **Contents** 8 8 9 9 10 10 11 -{{toc/}} 9 +{{toc maxLevel="2"/}} 12 12 13 13 = Overview = 14 14 15 -Beside a human-readablename, layout options are defined by the following properties:13 +Beside a user-friendly name, layout options are defined by the following properties: 16 16 17 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 -* 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,andLabels.20 -* An optional default value. If anoptionisnotset onanobjectandifthe optiondoesnothaveadefaultvalue, {{code language="none"}}null{{/code}}isreturnedwhenitisaccessed.16 +* A type. One of Boolean, String, Int, Float, Enum, EnumSet (a s{{code language="none"}}et{{/code}} over a given enumeration), or Object (a non-primitive Java object). The types Enum and EnumSet have to be further defined by an enumeration class. The Object type can be constricted to a certain Java class. 17 +* The kinds of graph objects the option applies to. At least one of Nodes, Edges, Ports, Labels, or Parents (nodes that have children, including the diagram root node). Parents-applicable options affect whole graphs or subgraphs, while options with other application targets affect only single graph elements. 18 +* An optional default value. A default value may also be provided by the layout algorithm using the option, or by the modeling application you are using. In these cases the value given here is overridden. 21 21 22 - KIMLdefinesthefollowing setoflayout options:20 +Layout options can be assigned to two main categories: user options and programmatic options. 23 23 22 +== User Options == 23 + 24 +User options are those that you can see in the "//Layout View//" available in Eclipse if the KIML user interface is installed. That view is restricted to layout options that are supported by the currently active layout algorithm. Furthermore, some options are visible only when the //Show Advanced Properties// button is active in the view. 25 + 24 24 |=((( 25 25 Option 26 26 )))|=((( ... ... @@ -33,7 +33,7 @@ 33 33 Default 34 34 ))) 35 35 |((( 36 -Alignment 38 +[[Alignment>>doc:||anchor="alignment"]] 37 37 )))|((( 38 38 de.cau.cs.kieler.alignment 39 39 )))|((( ... ... @@ -44,7 +44,7 @@ 44 44 AUTOMATIC 45 45 ))) 46 46 |((( 47 -Aspect Ratio 49 +[[Aspect Ratio>>doc:||anchor="aspectRatio"]] 48 48 )))|((( 49 49 de.cau.cs.kieler.aspectRatio 50 50 )))|((( ... ... @@ -76,27 +76,44 @@ 76 76 )))|((( 77 77 78 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 -((( 81 +|((( 82 +Debug Mode 83 +)))|((( 84 +de.cau.cs.kieler.debugMode 85 +)))|((( 87 87 Boolean 88 -)))|(% colspan="1" %)(% colspan="1" %) 89 -((( 90 -Nodes 91 -)))|(% colspan="1" %)(% colspan="1" %) 92 -((( 87 +)))|((( 88 +Parents 89 +)))|((( 93 93 false 94 94 ))) 95 95 |((( 96 -De bug Mode93 +Direction 97 97 )))|((( 98 -de.cau.cs.kieler.de bugMode95 +de.cau.cs.kieler.direction 99 99 )))|((( 97 +Enum 98 +)))|((( 99 +Parents 100 +)))|((( 101 + 102 +))) 103 +|((( 104 +[[Edge Routing>>doc:||anchor="edgeRouting"]] 105 +)))|((( 106 +de.cau.cs.kieler.edgeRouting 107 +)))|((( 108 +Enum 109 +)))|((( 110 +Parents 111 +)))|((( 112 + 113 +))) 114 +|((( 115 +Expand Nodes 116 +)))|((( 117 +de.cau.cs.kieler.expandNodes 118 +)))|((( 100 100 Boolean 101 101 )))|((( 102 102 Parents ... ... @@ -103,152 +103,215 @@ 103 103 )))|((( 104 104 false 105 105 ))) 125 +|((( 126 +Interactive 127 +)))|((( 128 +de.cau.cs.kieler.interactive 129 +)))|((( 130 +Boolean 131 +)))|((( 132 +Parents 133 +)))|((( 134 +false 135 +))) 136 +|((( 137 +Label Spacing 138 +)))|((( 139 +de.cau.cs.kieler.labelSpacing 140 +)))|((( 141 +Float 142 +)))|((( 143 +Edges 144 +Nodes 145 +)))|((( 146 + 147 +))) 148 +|((( 149 +[[Layout Hierarchy>>doc:||anchor="layoutHierarchy"]] 150 +)))|((( 151 +de.cau.cs.kieler.layoutHierarchy 152 +)))|((( 153 +Boolean 154 +)))|((( 155 +Parents 156 +)))|((( 157 +false 158 +))) 159 +|((( 160 +[[Layout Algorithm>>doc:||anchor="layoutAlgorithm"]] 161 +)))|((( 162 +de.cau.cs.kieler.algorithm 163 +)))|((( 164 +String 165 +)))|((( 166 +Parents 167 +)))|((( 168 + 169 +))) 106 106 |(% colspan="1" %)(% colspan="1" %) 107 107 ((( 108 - [[Diagram Type>>doc:||anchor="diagramType"]]172 +Node Label Placement 109 109 )))|(% colspan="1" %)(% colspan="1" %) 110 110 ((( 111 -de.cau.cs.kieler.d iagramType175 +de.cau.cs.kieler.nodeLabelPlacement 112 112 )))|(% colspan="1" %)(% colspan="1" %) 113 113 ((( 114 -St ring178 +EnumSet 115 115 )))|(% colspan="1" %)(% colspan="1" %) 116 116 ((( 117 - 181 +Nodes 182 +Labels 118 118 )))|(% colspan="1" %)(% colspan="1" %) 119 119 ((( 120 120 121 121 ))) 122 122 |((( 123 - Direction188 +Port Constraints 124 124 )))|((( 125 -de.cau.cs.kieler. direction190 +de.cau.cs.kieler.portConstraints 126 126 )))|((( 127 127 Enum 128 128 )))|((( 129 - Parents194 +Nodes 130 130 )))|((( 131 131 132 132 ))) 133 133 |(% colspan="1" %)(% colspan="1" %) 134 134 ((( 135 - EdgeLabel Placement200 +Port Label Placement 136 136 )))|(% colspan="1" %)(% colspan="1" %) 137 137 ((( 138 -de.cau.cs.kieler. edgeLabelPlacement203 +de.cau.cs.kieler.portLabelPlacement 139 139 )))|(% colspan="1" %)(% colspan="1" %) 140 140 ((( 141 141 Enum 142 142 )))|(% colspan="1" %)(% colspan="1" %) 143 143 ((( 144 - Labels209 +Nodes 145 145 )))|(% colspan="1" %)(% colspan="1" %) 146 146 ((( 212 +OUTSIDE 213 +))) 214 +|(% colspan="1" %)(% colspan="1" %) 215 +((( 216 +[[Port Spacing>>doc:||anchor="portSpacing"]] 217 +)))|(% colspan="1" %)(% colspan="1" %) 218 +((( 219 +de.cau.cs.kieler.portSpacing 220 +)))|(% colspan="1" %)(% colspan="1" %) 221 +((( 222 +Float 223 +)))|(% colspan="1" %)(% colspan="1" %) 224 +((( 225 +Nodes 226 +)))|(% colspan="1" %)(% colspan="1" %) 227 +((( 147 147 148 148 ))) 149 -|((( 150 -[[Edge Routing>>doc:||anchor="edgeRouting"]] 151 -)))|((( 152 -de.cau.cs.kieler.edgeRouting 153 -)))|((( 230 +|(% colspan="1" %)(% colspan="1" %) 231 +((( 232 +[[Port Alignment>>doc:||anchor="portAlignment"]] 233 +)))|(% colspan="1" %)(% colspan="1" %) 234 +((( 235 +de.cau.cs.kieler.portAlignment 236 +)))|(% colspan="1" %)(% colspan="1" %) 237 +((( 154 154 Enum 155 -)))|((( 239 +)))|(% colspan="1" %)(% colspan="1" %) 240 +((( 241 +Nodes 156 156 Parents 157 -)))|((( 158 - 243 +)))|(% colspan="1" %)(% colspan="1" %) 244 +((( 245 +JUSTIFIED 159 159 ))) 160 160 |(% colspan="1" %)(% colspan="1" %) 161 161 ((( 162 - EdgeType249 +Port Alignment for Northern Ports 163 163 )))|(% colspan="1" %)(% colspan="1" %) 164 164 ((( 165 -de.cau.cs.kieler. edgeType252 +de.cau.cs.kieler.portAlignment.north 166 166 )))|(% colspan="1" %)(% colspan="1" %) 167 167 ((( 168 168 Enum 169 169 )))|(% colspan="1" %)(% colspan="1" %) 170 170 ((( 171 -Edges 258 +Nodes 259 +Parents 172 172 )))|(% colspan="1" %)(% colspan="1" %) 173 173 ((( 174 -N ONE262 +UNDEFINED 175 175 ))) 176 -|((( 177 -Expand Nodes 178 -)))|((( 179 -de.cau.cs.kieler.expandNodes 180 -)))|((( 181 -Boolean 182 -)))|((( 183 -Parents 184 -)))|((( 185 -false 186 -))) 187 187 |(% colspan="1" %)(% colspan="1" %) 188 188 ((( 189 - FontName266 +Port Alignment for Souther Ports 190 190 )))|(% colspan="1" %)(% colspan="1" %) 191 191 ((( 192 -de.cau.cs.kieler. fontName269 +de.cau.cs.kieler.portAlignment.south 193 193 )))|(% colspan="1" %)(% colspan="1" %) 194 194 ((( 195 - String272 +Enum 196 196 )))|(% colspan="1" %)(% colspan="1" %) 197 197 ((( 198 -Labels 275 +Nodes 276 +Parents 199 199 )))|(% colspan="1" %)(% colspan="1" %) 200 200 ((( 201 - 279 +UNDEFINED 202 202 ))) 203 203 |(% colspan="1" %)(% colspan="1" %) 204 204 ((( 205 - FontSize283 +Port Alignment for Eastern Ports 206 206 )))|(% colspan="1" %)(% colspan="1" %) 207 207 ((( 208 -de.cau.cs.kieler. fontSize286 +de.cau.cs.kieler.portAlignment.east 209 209 )))|(% colspan="1" %)(% colspan="1" %) 210 210 ((( 211 - Int289 +Enum 212 212 )))|(% colspan="1" %)(% colspan="1" %) 213 213 ((( 214 -Labels 292 +Nodes 293 +Parents 215 215 )))|(% colspan="1" %)(% colspan="1" %) 216 216 ((( 217 - 296 +UNDEFINED 218 218 ))) 219 219 |(% colspan="1" %)(% colspan="1" %) 220 220 ((( 221 - Hypernode300 +Port Alignment for Western Ports 222 222 )))|(% colspan="1" %)(% colspan="1" %) 223 223 ((( 224 -de.cau.cs.kieler. hypernode303 +de.cau.cs.kieler.portAlignment.west 225 225 )))|(% colspan="1" %)(% colspan="1" %) 226 226 ((( 227 - Boolean306 +Enum 228 228 )))|(% colspan="1" %)(% colspan="1" %) 229 229 ((( 230 230 Nodes 310 +Parents 231 231 )))|(% colspan="1" %)(% colspan="1" %) 232 232 ((( 233 - false313 +UNDEFINED 234 234 ))) 235 235 |((( 236 - Interactive316 +Position 237 237 )))|((( 238 -de.cau.cs.kieler.i nteractive318 +de.cau.cs.kieler.position 239 239 )))|((( 240 - Boolean320 +Object 241 241 )))|((( 242 -Parents 322 +Labels 323 +Nodes 324 +Ports 243 243 )))|((( 244 - false326 + 245 245 ))) 246 246 |((( 247 - Label Spacing329 +Priority 248 248 )))|((( 249 -de.cau.cs.kieler. labelSpacing331 +de.cau.cs.kieler.priority 250 250 )))|((( 251 - Float333 +Int 252 252 )))|((( 253 253 Edges 254 254 Nodes ... ... @@ -255,133 +255,216 @@ 255 255 )))|((( 256 256 257 257 ))) 258 -|((( 259 -Layout Hierarchy 260 -)))|((( 261 -de.cau.cs.kieler.layoutHierarchy 262 -)))|((( 263 -Boolean 264 -)))|((( 340 +|(% colspan="1" %)(% colspan="1" %) 341 +((( 342 +Randomization Seed 343 +)))|(% colspan="1" %)(% colspan="1" %) 344 +((( 345 +de.cau.cs.kieler.randomSeed 346 +)))|(% colspan="1" %)(% colspan="1" %) 347 +((( 348 +Int 349 +)))|(% colspan="1" %)(% colspan="1" %) 350 +((( 265 265 Parents 266 -)))|((( 267 -false 352 +)))|(% colspan="1" %)(% colspan="1" %) 353 +((( 354 + 268 268 ))) 269 -|((( 270 -[[Layout Algorithm>>doc:||anchor="layoutAlgorithm"]] 271 -)))|((( 272 -de.cau.cs.kieler.algorithm 273 -)))|((( 274 -String 275 -)))|((( 356 +|(% colspan="1" %)(% colspan="1" %) 357 +((( 358 +Separate Connected Components 359 +)))|(% colspan="1" %)(% colspan="1" %) 360 +((( 361 +de.cau.cs.kieler.separateConnComp 362 +)))|(% colspan="1" %)(% colspan="1" %) 363 +((( 364 +Boolean 365 +)))|(% colspan="1" %)(% colspan="1" %) 366 +((( 276 276 Parents 277 -)))|((( 368 +)))|(% colspan="1" %)(% colspan="1" %) 369 +((( 278 278 279 279 ))) 280 280 |(% colspan="1" %)(% colspan="1" %) 281 281 ((( 282 - Minimal Height374 +Size Constraint 283 283 )))|(% colspan="1" %)(% colspan="1" %) 284 284 ((( 285 -de.cau.cs.kieler. minHeight377 +de.cau.cs.kieler.sizeConstraint 286 286 )))|(% colspan="1" %)(% colspan="1" %) 287 287 ((( 288 - Float380 +EnumSet 289 289 )))|(% colspan="1" %)(% colspan="1" %) 290 290 ((( 291 291 Nodes 292 -Parents 293 293 )))|(% colspan="1" %)(% colspan="1" %) 294 294 ((( 295 - 0.0386 + 296 296 ))) 297 297 |(% colspan="1" %)(% colspan="1" %) 298 298 ((( 299 - MinimalWidth390 +Size Options 300 300 )))|(% colspan="1" %)(% colspan="1" %) 301 301 ((( 302 -de.cau.cs.kieler. minWidth393 +de.cau.cs.kieler.sizeOptions 303 303 )))|(% colspan="1" %)(% colspan="1" %) 304 304 ((( 305 - Float396 +EnumSet 306 306 )))|(% colspan="1" %)(% colspan="1" %) 307 307 ((( 308 308 Nodes 400 +)))|(% colspan="1" %)(% colspan="1" %) 401 +((( 402 +DEFAULT_MINIMUM_SIZE 403 +))) 404 +|(% colspan="1" %)(% colspan="1" %) 405 +((( 406 +Spacing 407 +)))|(% colspan="1" %)(% colspan="1" %) 408 +((( 409 +de.cau.cs.kieler.spacing 410 +)))|(% colspan="1" %)(% colspan="1" %) 411 +((( 412 +Float 413 +)))|(% colspan="1" %)(% colspan="1" %) 414 +((( 309 309 Parents 310 310 )))|(% colspan="1" %)(% colspan="1" %) 311 311 ((( 312 - 0.0418 + 313 313 ))) 420 + 421 +== Programmatic Options == 422 + 423 +Programmatic options are such that are meant to be configured exclusively through the KIML API. They should not be visible in the user interface. 424 + 425 +|=((( 426 +Option 427 +)))|=((( 428 +ID 429 +)))|=((( 430 +Type 431 +)))|=((( 432 +Applies to 433 +)))|=((( 434 +Default 435 +))) 314 314 |(% colspan="1" %)(% colspan="1" %) 315 315 ((( 316 - NoLayout438 +[[Additional Port Space>>doc:||anchor="addPortSpace"]] 317 317 )))|(% colspan="1" %)(% colspan="1" %) 318 318 ((( 319 -de.cau.cs.kieler. noLayout441 +de.cau.cs.kieler.additionalPortSpace 320 320 )))|(% colspan="1" %)(% colspan="1" %) 321 321 ((( 444 +Margins 445 +)))|(% colspan="1" %)(% colspan="1" %) 446 +((( 447 +Nodes 448 +)))|(% colspan="1" %)(% colspan="1" %) 449 +((( 450 +0, 0, 0, 0 451 +))) 452 +|(% colspan="1" %)(% colspan="1" %) 453 +((( 454 +Animate 455 +)))|(% colspan="1" %)(% colspan="1" %) 456 +((( 457 +de.cau.cs.kieler.animate 458 +)))|(% colspan="1" %)(% colspan="1" %) 459 +((( 322 322 Boolean 323 323 )))|(% colspan="1" %)(% colspan="1" %) 324 324 ((( 325 - 463 +Parents 326 326 )))|(% colspan="1" %)(% colspan="1" %) 327 327 ((( 328 - false466 +true 329 329 ))) 330 330 |(% colspan="1" %)(% colspan="1" %) 331 331 ((( 332 - NodeLabelPlacement470 +Animation Time Factor 333 333 )))|(% colspan="1" %)(% colspan="1" %) 334 334 ((( 335 -de.cau.cs.kieler.n odeLabelPlacement473 +de.cau.cs.kieler.animTimeFactor 336 336 )))|(% colspan="1" %)(% colspan="1" %) 337 337 ((( 338 - EnumSet476 +Int 339 339 )))|(% colspan="1" %)(% colspan="1" %) 340 340 ((( 479 +Parents 480 +)))|(% colspan="1" %)(% colspan="1" %) 481 +((( 482 +100 483 +))) 484 +|(% colspan="1" %)(% colspan="1" %) 485 +((( 486 +[[Comment Box>>doc:||anchor="commentBox"]] 487 +)))|(% colspan="1" %)(% colspan="1" %) 488 +((( 489 +de.cau.cs.kieler.commentBox 490 +)))|(% colspan="1" %)(% colspan="1" %) 491 +((( 492 +Boolean 493 +)))|(% colspan="1" %)(% colspan="1" %) 494 +((( 341 341 Nodes 342 342 )))|(% colspan="1" %)(% colspan="1" %) 343 343 ((( 498 +false 499 +))) 500 +|((( 501 +[[Diagram Type>>doc:||anchor="diagramType"]] 502 +)))|((( 503 +de.cau.cs.kieler.diagramType 504 +)))|((( 505 +String 506 +)))|((( 507 +Parents 508 +)))|((( 344 344 345 345 ))) 346 346 |((( 347 - PortConstraints512 +Edge Label Placement 348 348 )))|((( 349 -de.cau.cs.kieler. portConstraints514 +de.cau.cs.kieler.edgeLabelPlacement 350 350 )))|((( 351 351 Enum 352 352 )))|((( 353 - Nodes518 +Labels 354 354 )))|((( 355 355 356 356 ))) 357 357 |(% colspan="1" %)(% colspan="1" %) 358 358 ((( 359 - Port LabelPlacement524 +Edge Type 360 360 )))|(% colspan="1" %)(% colspan="1" %) 361 361 ((( 362 -de.cau.cs.kieler. portLabelPlacement527 +de.cau.cs.kieler.edgeType 363 363 )))|(% colspan="1" %)(% colspan="1" %) 364 364 ((( 365 365 Enum 366 366 )))|(% colspan="1" %)(% colspan="1" %) 367 367 ((( 368 - Nodes533 +Edges 369 369 )))|(% colspan="1" %)(% colspan="1" %) 370 370 ((( 371 -O UTSIDE536 +NONE 372 372 ))) 373 373 |(% colspan="1" %)(% colspan="1" %) 374 374 ((( 375 - [[PortOffset>>doc:||anchor="portOffset"]]540 +Font Name 376 376 )))|(% colspan="1" %)(% colspan="1" %) 377 377 ((( 378 -de.cau.cs.kieler. offset543 +de.cau.cs.kieler.fontName 379 379 )))|(% colspan="1" %)(% colspan="1" %) 380 380 ((( 381 - Float546 +String 382 382 )))|(% colspan="1" %)(% colspan="1" %) 383 383 ((( 384 - Ports549 +Labels 385 385 )))|(% colspan="1" %)(% colspan="1" %) 386 386 ((( 387 387 ... ... @@ -388,16 +388,16 @@ 388 388 ))) 389 389 |(% colspan="1" %)(% colspan="1" %) 390 390 ((( 391 - Port Side556 +Font Size 392 392 )))|(% colspan="1" %)(% colspan="1" %) 393 393 ((( 394 -de.cau.cs.kieler. portSide559 +de.cau.cs.kieler.fontSize 395 395 )))|(% colspan="1" %)(% colspan="1" %) 396 396 ((( 397 - Enum562 +Int 398 398 )))|(% colspan="1" %)(% colspan="1" %) 399 399 ((( 400 - Ports565 +Labels 401 401 )))|(% colspan="1" %)(% colspan="1" %) 402 402 ((( 403 403 ... ... @@ -404,57 +404,162 @@ 404 404 ))) 405 405 |(% colspan="1" %)(% colspan="1" %) 406 406 ((( 407 - Port Spacing572 +[[Hypernode>>doc:||anchor="hypernode"]] 408 408 )))|(% colspan="1" %)(% colspan="1" %) 409 409 ((( 410 -de.cau.cs.kieler.p ortSpacing575 +de.cau.cs.kieler.hypernode 411 411 )))|(% colspan="1" %)(% colspan="1" %) 412 412 ((( 578 +Boolean 579 +)))|(% colspan="1" %)(% colspan="1" %) 580 +((( 581 +Nodes 582 +)))|(% colspan="1" %)(% colspan="1" %) 583 +((( 584 +false 585 +))) 586 +|(% colspan="1" %)(% colspan="1" %) 587 +((( 588 +Layout Ancestors 589 +)))|(% colspan="1" %)(% colspan="1" %) 590 +((( 591 +de.cau.cs.kieler.layoutAncestors 592 +)))|(% colspan="1" %)(% colspan="1" %) 593 +((( 594 +Boolean 595 +)))|(% colspan="1" %)(% colspan="1" %) 596 +((( 597 +Parents 598 +)))|(% colspan="1" %)(% colspan="1" %) 599 +((( 600 +false 601 +))) 602 +|(% colspan="1" %)(% colspan="1" %) 603 +((( 604 +Maximal Animation Time 605 +)))|(% colspan="1" %)(% colspan="1" %) 606 +((( 607 +de.cau.cs.kieler.maxAnimTim 608 +)))|(% colspan="1" %)(% colspan="1" %) 609 +((( 610 +Int 611 +)))|(% colspan="1" %)(% colspan="1" %) 612 +((( 613 +Parents 614 +)))|(% colspan="1" %)(% colspan="1" %) 615 +((( 616 +4000 617 +))) 618 +|(% colspan="1" %)(% colspan="1" %) 619 +((( 620 +Minimal Animation Time 621 +)))|(% colspan="1" %)(% colspan="1" %) 622 +((( 623 +de.cau.cs.kieler.minAnimTim 624 +)))|(% colspan="1" %)(% colspan="1" %) 625 +((( 626 +Int 627 +)))|(% colspan="1" %)(% colspan="1" %) 628 +((( 629 +Parents 630 +)))|(% colspan="1" %)(% colspan="1" %) 631 +((( 632 +400 633 +))) 634 +|(% colspan="1" %)(% colspan="1" %) 635 +((( 636 +Minimal Height 637 +)))|(% colspan="1" %)(% colspan="1" %) 638 +((( 639 +de.cau.cs.kieler.minHeight 640 +)))|(% colspan="1" %)(% colspan="1" %) 641 +((( 413 413 Float 414 414 )))|(% colspan="1" %)(% colspan="1" %) 415 415 ((( 416 416 Nodes 646 +Parents 417 417 )))|(% colspan="1" %)(% colspan="1" %) 418 418 ((( 649 +0.0 650 +))) 651 +|(% colspan="1" %)(% colspan="1" %) 652 +((( 653 +Minimal Width 654 +)))|(% colspan="1" %)(% colspan="1" %) 655 +((( 656 +de.cau.cs.kieler.minWidth 657 +)))|(% colspan="1" %)(% colspan="1" %) 658 +((( 659 +Float 660 +)))|(% colspan="1" %)(% colspan="1" %) 661 +((( 662 +Nodes 663 +Parents 664 +)))|(% colspan="1" %)(% colspan="1" %) 665 +((( 666 +0.0 667 +))) 668 +|(% colspan="1" %)(% colspan="1" %) 669 +((( 670 +[[No Layout>>doc:||anchor="noLayout"]] 671 +)))|(% colspan="1" %)(% colspan="1" %) 672 +((( 673 +de.cau.cs.kieler.noLayout 674 +)))|(% colspan="1" %)(% colspan="1" %) 675 +((( 676 +Boolean 677 +)))|(% colspan="1" %)(% colspan="1" %) 678 +((( 419 419 680 +)))|(% colspan="1" %)(% colspan="1" %) 681 +((( 682 +false 420 420 ))) 421 -|((( 422 -Position 423 -)))|((( 424 -de.cau.cs.kieler.position 425 -)))|((( 684 +|(% colspan="1" %)(% colspan="1" %) 685 +((( 686 +[[Port Anchor Offset>>doc:||anchor="portAnchor"]] 687 +)))|(% colspan="1" %)(% colspan="1" %) 688 +((( 689 +de.cau.cs.kieler.klay.layered.portAnchor 690 +)))|(% colspan="1" %)(% colspan="1" %) 691 +((( 426 426 Object 427 -)))|((( 428 -Labels 429 -Nodes 693 +)))|(% colspan="1" %)(% colspan="1" %) 694 +((( 430 430 Ports 431 -)))|((( 696 +)))|(% colspan="1" %)(% colspan="1" %) 697 +((( 432 432 433 433 ))) 434 -|((( 435 -Priority 436 -)))|((( 437 -de.cau.cs.kieler.priority 438 -)))|((( 700 +|(% colspan="1" %)(% colspan="1" %) 701 +((( 702 +Port Index 703 +)))|(% colspan="1" %)(% colspan="1" %) 704 +((( 705 +de.cau.cs.kieler.portIndex 706 +)))|(% colspan="1" %)(% colspan="1" %) 707 +((( 439 439 Int 440 -)))|((( 441 -Edges 442 -Nodes 443 -)))|((( 709 +)))|(% colspan="1" %)(% colspan="1" %) 710 +((( 711 +Ports 712 +)))|(% colspan="1" %)(% colspan="1" %) 713 +((( 444 444 445 445 ))) 446 446 |(% colspan="1" %)(% colspan="1" %) 447 447 ((( 448 - RandomizationSeed718 +[[Port Offset>>doc:||anchor="portOffset"]] 449 449 )))|(% colspan="1" %)(% colspan="1" %) 450 450 ((( 451 -de.cau.cs.kieler. randomSeed721 +de.cau.cs.kieler.offset 452 452 )))|(% colspan="1" %)(% colspan="1" %) 453 453 ((( 454 - Int724 +Float 455 455 )))|(% colspan="1" %)(% colspan="1" %) 456 456 ((( 457 -P arents727 +Ports 458 458 )))|(% colspan="1" %)(% colspan="1" %) 459 459 ((( 460 460 ... ... @@ -461,16 +461,16 @@ 461 461 ))) 462 462 |(% colspan="1" %)(% colspan="1" %) 463 463 ((( 464 - SeparateConnectedComponents734 +Port Side 465 465 )))|(% colspan="1" %)(% colspan="1" %) 466 466 ((( 467 -de.cau.cs.kieler. separateConnComp737 +de.cau.cs.kieler.portSide 468 468 )))|(% colspan="1" %)(% colspan="1" %) 469 469 ((( 470 - Boolean740 +Enum 471 471 )))|(% colspan="1" %)(% colspan="1" %) 472 472 ((( 473 -P arents743 +Ports 474 474 )))|(% colspan="1" %)(% colspan="1" %) 475 475 ((( 476 476 ... ... @@ -477,74 +477,122 @@ 477 477 ))) 478 478 |(% colspan="1" %)(% colspan="1" %) 479 479 ((( 480 - Size Constraint750 +Progress Bar 481 481 )))|(% colspan="1" %)(% colspan="1" %) 482 482 ((( 483 -de.cau.cs.kieler. sizeConstraint753 +de.cau.cs.kieler.progressBar 484 484 )))|(% colspan="1" %)(% colspan="1" %) 485 485 ((( 486 - EnumSet756 +Boolean 487 487 )))|(% colspan="1" %)(% colspan="1" %) 488 488 ((( 489 - Nodes759 +Parents 490 490 )))|(% colspan="1" %)(% colspan="1" %) 491 491 ((( 492 - 762 +false 493 493 ))) 494 494 |(% colspan="1" %)(% colspan="1" %) 495 495 ((( 496 -S izeOptions766 +Scale Factor 497 497 )))|(% colspan="1" %)(% colspan="1" %) 498 498 ((( 499 -de.cau.cs.kieler.s izeOptions769 +de.cau.cs.kieler.scaleFactor 500 500 )))|(% colspan="1" %)(% colspan="1" %) 501 501 ((( 502 - EnumSet772 +Float 503 503 )))|(% colspan="1" %)(% colspan="1" %) 504 504 ((( 505 505 Nodes 506 506 )))|(% colspan="1" %)(% colspan="1" %) 507 507 ((( 508 - DEFAULT_MINIMUM_SIZE778 +1.0 509 509 ))) 510 510 |(% colspan="1" %)(% colspan="1" %) 511 511 ((( 512 - Spacing782 +Thickness 513 513 )))|(% colspan="1" %)(% colspan="1" %) 514 514 ((( 515 -de.cau.cs.kieler. spacing785 +de.cau.cs.kieler.thickness 516 516 )))|(% colspan="1" %)(% colspan="1" %) 517 517 ((( 518 518 Float 519 519 )))|(% colspan="1" %)(% colspan="1" %) 520 520 ((( 791 +Edges 792 +)))|(% colspan="1" %)(% colspan="1" %) 793 +((( 794 +1.0 795 +))) 796 +|(% colspan="1" %)(% colspan="1" %) 797 +((( 798 +Zoom to Fit 799 +)))|(% colspan="1" %)(% colspan="1" %) 800 +((( 801 +de.cau.cs.kieler.zoomToFit 802 +)))|(% colspan="1" %)(% colspan="1" %) 803 +((( 804 +Boolean 805 +)))|(% colspan="1" %)(% colspan="1" %) 806 +((( 521 521 Parents 522 522 )))|(% colspan="1" %)(% colspan="1" %) 523 523 ((( 524 - 810 +false 525 525 ))) 526 526 527 -= The MostImportantOptions =813 +=== Layout Output Properties === 528 528 529 - Whilemost layout options are used toaffecthowtheactivelayout algorithmcomputesconcretecoordinatesforthegraphelements,thereare somelayoutoptionsthat havea specialrolein KIML.815 +A few properties are used as additional information in the output of a layout algorithm. This information should be considered when the layout is applied to the original diagram 530 530 531 -== Layout Algorithm == 817 +|=((( 818 +Property 819 +)))|=((( 820 +ID 821 +)))|=((( 822 +Type 823 +)))|=((( 824 +Applies to 825 +))) 826 +|((( 827 +[[Edge Routing>>doc:||anchor="edgeRouting"]] 828 +)))|((( 829 +de.cau.cs.kieler.edgeRouting 830 +)))|((( 831 +Enum 832 +)))|((( 833 +Edges 834 +))) 835 +|((( 836 +Junction Points 837 +)))|((( 838 +de.cau.cs.kieler.junctionPoints 839 +)))|((( 840 +Object 841 +)))|((( 842 +Edges 843 +))) 532 532 533 - {{idname="layoutAlgorithm"/}}845 + 534 534 535 - Theoption with identifier {{code language="none"}}de.cau.cs.kieler.algorithm{{/code}}specifies which layout algorithmto usefor the content ofacomposite node. The value can be either the identifierof a layout algorithm or the identifierof a layout type. In the latter case the algorithm with highest priority of that type is applied.847 += Detailed Documentation = 536 536 537 -Th efollowinglayouttypesarepredefined:849 +This section explains every layout option in more detail. 538 538 539 -* **Layered** - The layer-based method emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points. 540 -* **Orthogonal** - Orthogonal methods follow the "topology-shape-metrics" approach, which first applies a planarization technique, resulting in a planar representation of the graph, then compute an orthogonal shape, and finally determine concrete coordinates for nodes and edge bend points by applying a compaction method. 541 -* **Force** - Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. 542 -* **Circular** - Circular layout algorithms emphasize biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent properties of the graph. 543 -* **Tree** - Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type. 851 +== The Most Important Options == 544 544 545 - ===AvailableAlgorithmsandLibraries===853 +While most layout options are used to affect how the active layout algorithm computes concrete coordinates for the graph elements, there are some layout options that have a special role in KIML. 546 546 547 -* **The [[KLay Project>>doc:Layout Algorithms (KLay)]]** - Java implementations of standard layout approaches, augmented with special processing of graph features such as ports and edge labels. 855 +=== === 856 + 857 +{{id name="layoutAlgorithm"/}}Layout AlgorithmThe option with identifier {{code language="none"}}de.cau.cs.kieler.algorithm{{/code}} specifies which layout algorithm to use for a graph or subgraph. The value can be either the identifier of a layout algorithm or the identifier of a layout type. In the latter case the algorithm with highest priority of that type is applied. It is possible to set different values for this option on subgraphs of a hierarchical graph, where a subgraph is identified by a parent node. A layout algorithm is responsible to process only the direct content of a given parent node. An exception from this rule is made when the [[Layout Hierarchy>>doc:||anchor="layoutHierarchy"]] option is active. 858 + 859 +The following layout has been created by setting a force-based layout algorithm on the inner hierarchy level and a layer-based layout algorithm on the top level. 860 + 861 +[[image:attach:layout_algorithm.png]] 862 + 863 +==== Available Algorithms and Libraries ==== 864 + 865 +* **The [[KLay Project>>doc:KIELER.Home.Discontinued Projects.Layout Algorithms (KLay).WebHome]]** - Java implementations of standard layout approaches, augmented with special processing of graph features such as ports and labels. 548 548 * **Randomizer** - Distributes the nodes randomly; not very useful, but it can show how important a good layout is for understanding a graph. 549 549 * ((( 550 550 **Box Layout** - Ignores edges, places all nodes in rows. Can be used to layout collections of unconnected boxes, such as Statechart regions. ... ... @@ -553,56 +553,130 @@ 553 553 * **OGDF** ((% style="color: rgb(0,0,0);" %)[[www.ogdf.net>>url:http://www.ogdf.net/||shape="rect"]](%%)) - A self-contained C++ class library for the automatic layout of diagrams. The version that is shipped with KIELER is compiled as an executable that reads files in OGML format and outputs the computed concrete layout. 554 554 * **Graphviz** ([[www.graphviz.org>>url:http://www.graphviz.org/||shape="rect"]]) - An open source graph visualization tool with several graph layout programs, web and interactive graphical interfaces, auxiliary tools, libraries, and language bindings. Graphviz needs to be installed separately in order to be used within KIELER, since it is called in a separate process using the DOT language for communication. 555 555 556 -== DiagramType ==874 +==== Predefined Layout Types ==== 557 557 558 -{{id name="diagramType"/}} 876 +* **Layered** - The layer-based method emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points. 877 +* **Orthogonal** - Orthogonal methods follow the "topology-shape-metrics" approach, which first applies a planarization technique, resulting in a planar representation of the graph, then compute an orthogonal shape, and finally determine concrete coordinates for nodes and edge bend points by applying a compaction method. 878 +* **Force** - Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. 879 +* **Circular** - Circular layout algorithms emphasize biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent properties of the graph. 880 +* **Tree** - Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type. 559 559 560 - Diagram types are used to classify graphical diagrams for setting default layout option values for a set of similar diagrams. The diagram type of an element is specified with the layout option {{code language="none"}}de.cau.cs.kieler.diagramType{{/code}}.Layoutalgorithms can declare which diagram types they support well, and give a priority value for each supported type. KIML decides at runtime which layout algorithm has the highest priority for a given diagram, so that the most suitable algorithm is always used. Usual values for such priorities are between 1 and 10, where the highest value should only be assigned if the algorithm is especially designed for diagrams of the respective type, or if it has proven to be very adequate for them. Lower values should be given if the algorithm is able to draw the diagrams correctly, but with lower quality of the resulting layout.882 +=== === 561 561 884 +{{id name="diagramType"/}}Diagram TypeDiagram types are used to classify graphical diagrams for setting default layout option values for a set of similar diagrams. The diagram type of an element is specified with the layout option {{code language="none"}}de.cau.cs.kieler.diagramType{{/code}}. Layout algorithms can declare which diagram types they support well, and give a priority value for each supported type. KIML decides at runtime which layout algorithm has the highest priority for a given diagram, so that the most suitable algorithm is always used. Usual values for such priorities are between 1 and 10, where the highest value should only be assigned if the algorithm is especially designed for diagrams of the respective type, or if it has proven to be very adequate for them. Lower values should be given if the algorithm is able to draw the diagrams correctly, but with lower quality of the resulting layout. 885 + 562 562 The following diagram types are predefined: 563 563 564 564 * **General** - This type is automatically assigned to all diagrams for which no specific type is declared. A layout algorithm that has the highest priority on the //General// diagram type is taken as the default algorithm when no further information on a diagram is available to KIML. 565 -* **State Machine** - All kinds of state machines, automata, and activity diagrams. Examples: [[doc:SCCharts SyncCharts]], UML Activity diagrams. 566 -* **Data Flow Diagram** - Actor-oriented diagrams, where connections are mostly done between //ports// of nodes. These diagrams can only be handled properly by very special layout algorithms, such as those developed in the [[KLay project>>doc:Layout Algorithms (KLay)]]. 889 +* **State Machine** - All kinds of state machines, automata, and activity diagrams. Examples: [[doc:KIELER.Home.SCCharts.Previous Versions (Deprecated Documentation).SyncCharts.WebHome]], UML Activity diagrams. 890 +* **Data Flow Diagram** - Actor-oriented diagrams, where connections are mostly done between //ports// of nodes. These diagrams can only be handled properly by very special layout algorithms, such as those developed in the [[KLay project>>doc:KIELER.Home.Discontinued Projects.Layout Algorithms (KLay).WebHome]]. 567 567 * **Class Diagram** - Class diagrams such as Ecore diagrams for the [[EMF>>url:http://www.eclipse.org/modeling/emf/||shape="rect"]] or UML Class diagrams. 568 568 * **Use Case Diagram** - Use case diagrams as defined by the UML. 569 -* **Unconnected Boxes** - Sets of nodes that have no connections and are treated as resizable boxes. This is related to mathematical [[packing problems>>url:http://en.wikipedia.org/wiki/Packing_problem||shape="rect"]]. Example: Regions in [[doc:SCCharts SyncCharts]]. 893 +* **Unconnected Boxes** - Sets of nodes that have no connections and are treated as resizable boxes. This is related to mathematical [[packing problems>>url:http://en.wikipedia.org/wiki/Packing_problem||shape="rect"]]. Example: Regions in [[doc:KIELER.Home.SCCharts.Previous Versions (Deprecated Documentation).SyncCharts.WebHome]]. 570 570 895 +=== === 896 + 897 +{{id name="edgeRouting"/}}Edge RoutingThis option influences the way in which edges are routed between the nodes they connect. The following settings are available: 898 + 899 +* POLYLINE 900 +Edges consist of one or more segments defined by a list of bend points. 901 +* ORTHOGONAL 902 +Edges are routed orthogonally, meaning that each segment of an edge runs either horizontally or vertically. 903 +* SPLINES 904 +Edges are routed as splines (smooth curves). 905 +* UNDEFINED 906 +No particular edge routing style is selected. Usually this value points to the default setting of the selected layout algorithm. 907 + 908 +[[image:attach:edge_routing.png]] 909 + 910 +When used as layout option, the edge routing is set for a whole graph or subgraph, i.e. on a parent node. However, the property is additionally used for the output of the layout algorithm in order to mark individual edges. If the edge routing assigned to an edge is anything other than SPLINES, the bend points of that edge are interpreted with their normal meaning, i.e. straight lines are drawn between consecutive bend points. If, on the other hand, a layout algorithm marks an edge with the value SPLINES, the bend points have to be interpreted as control points for a series of cubic splines following this procedure: 911 + 912 +1. Start at the source point of the edge. 913 +1. As long as there are at least three bend points left: 914 +11. Draw a cubic spline segment to the third bend point with the other two bend points as control points. 915 +11. Use the third bend point as start point for the next segment. 916 +11. Consume the three bend points and proceed to the next segment. 917 +1. Check the number of remaining bend points: 918 +11. Two bend points – draw a cubic spline segment to the target point of the edge. 919 +11. One bend point – draw a quadratic spline segment to the target point of the edge. 920 +11. No bend point – draw a straight line to the target point of the edge. 921 + 571 571 == Other Options == 572 572 573 -* **Layout Hierarchy** ({{code language="none"}}de.cau.cs.kieler.layoutHierarchy{{/code}}) - If this option is supported and active, the layout algorithm is requested to process the full hierarchy contained in the input node. This means that instead of executing another algorithm on each hierarchy level, all levels are arranged in a single algorithm execution. 574 -* **Hypernode** ({{code language="none"}}de.cau.cs.kieler.hypernode{{/code}}) - A node that is marked as hypernode has a special role in the graph structure, since all its incident edges are treated as parts of the same [[hyperedge>>url:http://en.wikipedia.org/wiki/Hypergraph||shape="rect"]]. Example: relation vertices in [[Ptolemy>>url:http://ptolemy.eecs.berkeley.edu/||shape="rect"]] models. 575 -* **Comment Box** ({{code language="none"}}de.cau.cs.kieler.commentBox{{/code}}) - A node that is marked as comment box is treated as a label that needs to be placed somewhere. This is different to normal node labels, which are usually regarded as fixed. 576 -* **No Layout** ({{code language="none"}}de.cau.cs.kieler.noLayout{{/code}}) - Elements that are marked with this option are excluded from layout. This is used to identify diagram objects that should not be regarded as graph elements. 924 +=== === 577 577 578 - =DetailedDocumentation=926 +{{id name="addPortSpace"/}}Additional Port SpaceThis option controls the usable space for ports on each side: 579 579 580 - This section explainsevery layoutoption in more detail.928 +[[image:attach:addPortSpace.png]] 581 581 582 - ==EdgeRouting==930 +If the option is not set, the value of [[Port Spacing>>doc:||anchor="portSpacing"]] is used instead for all four components. 583 583 584 -{{ id name="edgeRouting"/}}932 +This option is only relevant if port constraints are {{code language="none"}}FREE{{/code}}, {{code language="none"}}FIXED_SIDE{{/code}}, or {{code language="none"}}FIXED_ORDER{{/code}}. If size constraints include {{code language="none"}}PORTS{{/code}}, the additional port space, together with the port spacing and the size of ports, determines a lower bound on the node size. 585 585 586 - Thisoptioninfluences the way in which edges are routed between the nodes they connect. The following settings are available:934 +=== === 587 587 588 -* POLYLINE 589 -Edges consist of one or more segments defined by a list of bend points. 590 -* ORTHOGONAL 591 -Edges are routed orthogonally, meaning that each segment of an edge runs either horizontally or vertically, but never at an angle. 592 -* SPLINE 593 -Edges are routed as splines (smooth curves). (% style="color: rgb(153,51,0);" %)**TODO:** Add more documentation on how the returned bend points are to be interpreted. 594 -* UNDEFINED 595 -No particular edge routing style is selected. The result produced by the layout algorithm may be undefined. 936 +{{id name="alignment"/}}AlignmentDetermines the alignment of a node in relation to other nodes of the same row or column. For layer-based algorithms, for instance, this option controls how a node is positioned inside its assigned layer. 596 596 597 - (% style="color:rgb(153,51,0);"%)**TODO:** Add an image illustrating the different routing styles.938 +=== === 598 598 599 -= =PortOffset==940 +{{id name="aspectRatio"/}}Aspect RatioThe aspect ratio of a drawing is the ratio of its total width to its total height. This option gives some control over that ratio, although in most cases it is only interpreted as a hint on how to arrange multiple connected components, hence the actual aspect ratio will probably be different from what has been specified with the option. 600 600 601 - {{idname="portOffset"/}}942 +=== === 602 602 603 - Theportoffsetisused tospecifyhowmuch space alayoutalgorithmshouldleave betweenaportandtheborderof itsnode. Thisis usually zero,but doesn'thavetobe. Iftheoffsetis notdefined foragivenport,alayout algorithmcantrytoinferthe offsetfromtheport'scoordinatesand its node's sizein theinput graph. This ofcourse requires both properties to be set to sensiblevalues.944 +{{id name="commentBox"/}}Comment BoxA node that is marked as comment box is treated as a label that needs to be placed somewhere. In contrast to normal node labels (modeled with a KLabel instance), comment boxes may have connections to other nodes, as in the following example. 604 604 946 +[[image:attach:comment_box.png]] 947 + 948 +=== === 949 + 950 +{{id name="hypernode"/}}HypernodeA node that is marked as hypernode has a special role in the graph structure, since all its incident edges are treated as parts of the same [[hyperedge>>url:http://en.wikipedia.org/wiki/Hypergraph||shape="rect"]]. Example: relation vertices in [[Ptolemy>>url:http://ptolemy.eecs.berkeley.edu/||shape="rect"]] models. 951 + 952 +=== === 953 + 954 +{{id name="layoutHierarchy"/}}Layout HierarchyIf this option is supported and active, the layout algorithm is requested to process the full hierarchy contained in the input node. This means that instead of executing another algorithm on each hierarchy level, all levels are arranged in a single algorithm execution. 955 + 956 +=== === 957 + 958 +{{id name="noLayout"/}}No LayoutElements that are marked with this option are excluded from layout. This is used to identify diagram objects that should not be regarded as graph elements. 959 + 960 +=== === 961 + 962 +{{id name="portAlignment"/}}Port AlignmentThe port alignment controls how ports are distributed over their respective edge. 963 + 964 +This option is only relevant if port constraints are {{code language="none"}}FREE{{/code}}, {{code language="none"}}FIXED_SIDE{{/code}}, or {{code language="none"}}FIXED_ORDER{{/code}}. 965 + 966 +The following settings are possible: 967 + 968 +* {{code language="none"}}UNDEFINED{{/code}} 969 +Defaults to {{code language="none"}}JUSTIFIED{{/code}}. 970 +* {{code language="none"}}JUSTIFIED{{/code}} 971 +Distributes the ports evenly over the whole usable space (for usable space, see [[additional port space>>doc:||anchor="addPortSpace"]]). 972 +* {{code language="none"}}BEGIN{{/code}} 973 +Places the ports at top-/leftmost position with [[port spacing>>doc:||anchor="portSpacing"]] between them. 974 +* {{code language="none"}}CENTER{{/code}} 975 +Places the ports centered in the usable space with port spacing between them. 976 +* {{code language="none"}}END{{/code}} 977 +Places the ports at bottom-/rightmost position with port spacing between them. 978 + 979 +Port alignment can also be set as specialized options {{code language="none"}}portAlignment.{north|south|east|west{{/code}}}. These options overwrite the general policy for the respective side. Setting one of these to {{code language="none"}}UNDEFINED{{/code}} defaults it to the general port alignment. 980 + 981 +=== === 982 + 983 +{{id name="portAnchor"/}}Port Anchor OffsetSince ports have a size, we need a concrete point inside the port that edges should start or end in. In KLay Layered, this is referred to as the //port anchor//. By default, the center of each port is used as its port anchor, but this behavior can be overridden by setting an explicit port anchor. 984 + 985 +In the following example, the port anchor of the left port was moved upwards, while the port anchor of the second port was moved downwards: 986 + 987 +[[image:attach:KIELER.KLay Layered Layout Options@port_anchors.png]] 988 + 989 +=== === 990 + 991 +{{id name="portOffset"/}}Port OffsetThe 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. 992 + 605 605 Set this property if one of the following cases applies: 606 606 607 607 * The port constraints on a node are set to FREE, FIXED_SIDES or FIXED_ORDER. 608 608 * 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.) 997 + 998 +=== === 999 + 1000 +{{id name="portSpacing"/}}Port SpacingThe port spacing determines how much space KLay Layered should leave between the ports of each side. This option is only relevant if the node size depends on the ports, that is, if the size constraints include {{code language="none"}}SizeConstraint.PORTS{{/code}}.
- addPortSpace.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiGuest - Size
-
... ... @@ -1,0 +1,1 @@ 1 +20.2 KB - Content
- comment_box.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiGuest - Size
-
... ... @@ -1,0 +1,1 @@ 1 +5.5 KB - Content
- edge_routing.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiGuest - Size
-
... ... @@ -1,0 +1,1 @@ 1 +57.8 KB - Content
- layout_algorithm.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiGuest - Size
-
... ... @@ -1,0 +1,1 @@ 1 +20.0 KB - Content
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 - 94700061 +7111094 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/ 9470006/KIML Layout Options1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/7111094/KIML Layout Options