documentationfor yFiles for HTML 3.0.0.1

Orthogonal Layout

This chapter describes the major API changes to the OrthogonalLayout introduced with yFiles for HTML 3.0 and how to migrate from the older version.

As with all major layout algorithms, the OrthogonalLayout no longer inherits from MultiStageLayout, but implements ILayoutAlgorithm directly. The layout stages are now managed by a LayoutStageStack, which can be obtained via the layoutStages property; see Layout Stages and Multi-Stage Layouts for more details.

Renamed, Moved, and Removed Classes and Members

The following table lists the renamed, moved, and removed classes and members of the major classes of the OrthogonalLayout. In addition to the changes listed here, the expert API was also streamlined by removing some protected methods of OrthogonalLayout.

Renamed, moved, and removed members of classes related to the OrthogonalLayout (classes are bold)
yFiles for HTML 2.6 yFiles for HTML 3.0 Remarks
OrthogonalLayoutclass name unchanged
Properties in class OrthogonalLayout
chainSizechainSubstructureSize
chainStylechainSubstructureStyle
componentLayoutEnabledcomponentLayout.enabled
crossingReductionremovedCrossing reduction is implicitly controlled by the property qualityTimeRatio.
cycleStylecycleSubstructureStyle
cycleSizecycleSubstructureSize
defaultEdgeLayoutDescriptordefaultEdgeDescriptor
edgeLengthReductionremovedEdge length reduction is implicitly controlled by the property qualityTimeRatio.
faceMaximizationremovedFace maximization is implicitly controlled by the property qualityTimeRatio.
hideGroupsStageremovedThe OrthogonalLayout is able to handle group nodes itself.
hideGroupsStageEnabled
layoutStylelayoutMode
maximumDurationstopDurationThe algorithm tries to stop within the given time, but it is not guaranteed to do so. The property was renamed to better reflect this.
optimizePerceivedBendsremovedPerceived bends are implicitly controlled by the property qualityTimeRatio.
orientationLayoutremovedUse layoutOrientation to set the desired layout orientation.
orientationLayoutEnabled
parallelEdgeRouterremovedThe OrthogonalLayout handles parallel edges itself.
parallelEdgeRouterEnabled
selfLoopRouterremovedThe OrthogonalLayout handles self-loops itself.
selfLoopRouterEnabled
randomizationremovedRandomization is implicitly controlled by the property qualityTimeRatio.
subgraphLayoutremovedIf necessary, the SubgraphLayoutStage can be accessed and enabled via method get<T> of property layoutStages, but this may lead to overlaps.
subgraphLayoutEnabled
treeOrientationtreeSubstructureOrientation
treeSizetreeSubstructureSize
treeStyletreeSubstructureStyle
OrthogonalLayoutDataOrthogonalLayoutData<TNode,TEdge,TNodeLabel,TEdgeLabel>
Properties in class OrthogonalLayoutData
nodeHalosnodeMargins
directedEdgesedgeOrientationItemMapping that assigns to each edge a value from [-1,0,1].
edgeLayoutDescriptorsedgeDescriptors
edgeLabelPreferredPlacementedgeLabelPreferredPlacements
ChainLayoutStyleOrthogonalLayoutChainSubstructureStyle
CompactOrthogonalLayoutremoved
CycleLayoutStyleOrthogonalLayoutCycleSubstructureStyle
OrthogonalLayoutEdgeLayoutDescriptorOrthogonalLayoutEdgeDescriptor
OrthogonalLayoutStyleOrthogonalLayoutMode
TreeLayoutStyleOrthogonalLayoutTreeSubstructureStyle

Changed Default Values and Behavior Changes

Node labels are now considered by default. To revert to the previous behavior, set the nodeLabelPlacement property to the desired value. It is now also easier to place node labels using GenericLabeling by setting the value to GENERIC.

Edge labels are now considered by default. To revert to the previous behavior, set the edgeLabelPlacement property to the desired value. It is now also easier to place edge labels with GenericLabeling by setting the value to GENERIC.

Port placement now takes the specified port candidates into account. The ports are placed in a post-processing step by the PortPlacementStage. Port candidates can be specified via the properties on the sub-data OrthogonalLayoutData.ports. See also the section Ports.