GoDiagram 10.1
New Layered Digraph Layout Option for Better Performance
Version 10.1 adds LayeredDigraphLayout.AlignOption as a potentially faster alternative to LayeredDigraphLayout.PackOption. When using this option, nodes are assigned coordinates within their layers to produce straighter paths of nodes and small edge lengths.
Viewport Layers
There are two new default layers in each Diagram, "ViewportBackground" and "ViewportForeground". These layers have the new property Layer.IsViewportAligned set to true. Parts in viewport aligned layers will not obey the Diagram.Position or Diagram.Scale properties, so as the user scrolls or pans or zooms they will remain fixed in the viewport.
Layers with Layer.IsViewportAligned set to true will automatically position and scale their Parts to be relative to the viewport, based on the Part's GraphObject.Alignment and GraphObject.AlignmentFocus values, not on its Part.Location or GraphObject.Position.
Other New Features
-
Added methods GraphObject.BindModel, GraphObject.BindElement, and GraphObject.BindTwoWay, as convenience functions for adding a Binding to a GraphObject, which additionally call Binding.OfModel, Binding.OfElement, and Binding.MakeTwoWay, respectively.
-
Added static functions Point.StringifyFixed, Size.StringifyFixed, Rect.StringifyFixed, Margin.StringifyFixed, Spot.StringifyFixed, and Geometry.StringifyFixed to produce Binding.BackConverters that reduce the size of the output JSON and to make it easier to read and compare.
-
Added the read-only property Node.IsTreeRoot as a quick way to decide whether a node is a "root" node, while ignoring links that are not Link.IsTreeLink, ignoring reflexive links, and considering Diagram.IsTreePathToChildren.
-
Added the property LinkReshapingTool.ResegmentingDistance, to control the distance from a straight line that two adjacent nearly straight segments should be combined into a single segment.
-
We have fixed the behavior of CommandHandler.SelectAll not to select Parts/Nodes/Links that are not selectable.
-
GoDiagram now targets .NET 8 (and .NET Framework 4.6.2) as .NET 6 is no longer supported.