control-freak-ide/misc/pocs/GoJS/api/symbols/Link.html
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

3572 lines
198 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>GoJS&reg; Link Class</title>
<script src="../../assets/js/jquery.min.js"></script>
<script src="../../assets/js/bootstrap.min.js"></script>
<script src="../../assets/js/highlight.js"></script>
<script src="../../assets/js/api.js"></script>
<link href="../../assets/css/bootstrap.min.css" rel="stylesheet" >
<!-- custom CSS after bootstrap -->
<link href="../../assets/css/main.css" rel="stylesheet" type="text/css"/>
<link href="../../assets/css/api.css" rel="stylesheet" type="text/css"/>
<!--<link rel="stylesheet" href="../../assets/css/api.css" type="text/css" media="all" />-->
<link rel="stylesheet" href="../../assets/css/highlight.css" type="text/css" media="all" />
</head>
<body>
<!-- non-fixed navbar -->
<nav id="non-fixed-nav" class="navbar navbar-inverse navbar-top">
<div class="container-fluid">
<div class="navbar-header">
<div class="navheader-container">
<div class="navheader-collapse" data-toggle="collapse" data-target="#navbar">
<a id="toplogo" class="navbar-brand" href="../../index.html">GoJS</a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
</div>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="../../index.html">Home</a></li>
<li><a href="../../learn/index.html">Learn</a></li>
<li><a href="../../samples/index.html">Samples</a></li>
<li><a href="../../intro/index.html">Intro</a></li>
<li><a href="../../api/index.html">API</a></li>
<li><a href="https://www.nwoods.com/components/evalform.htm">Register</a></li>
<li><a href="../../doc/download.html">Download</a></li>
<li><a href="https://forum.nwoods.com/c/gojs">Forum</a></li>
<li><a href="https://www.nwoods.com/contact.html" onclick="ga('send','event','Outbound Link','click','contact');">Contact</a></li>
<li class="buy"><a href="https://www.nwoods.com/sales/index.html" onclick="ga('send','event','Outbound Link','click','buy');">Buy</a></li>
<li class="activate"><a href="https://www.nwoods.com/app/activate.aspx?sku=gojs">Activate</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="container-fluid">
<!-- ============================== classes index ============================ -->
<div id="navindex" class="col-md-2">
<!-- begin publish.classesIndex -->
<!-- <div><a href="../index.html">GoJS Class Index</a></div> -->
<div class="sidebar-nav">
<div class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<div class="navheader-container">
<div class="navheader-collapse" data-toggle="collapse" data-target="#DiagramNavbar">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#DiagramNavbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<span class="navbar-brand">Diagram Classes</span>
</div>
</div>
<div id="DiagramNavbar" class="navbar-collapse collapse sidebar-navbar-collapse">
<ul class="classList nav navbar-nav">
<li><a href="../symbols/Adornment.html" class="linkConstructor">Adornment</a></li>
<li><a href="../symbols/AnimationManager.html" class="linkConstructor">AnimationManager</a></li>
<li><a href="../symbols/CommandHandler.html" class="linkConstructor">CommandHandler</a></li>
<li><a href="../symbols/Diagram.html" class="linkConstructor">Diagram</a></li>
<li><a href="../symbols/DiagramEvent.html" class="linkConstructor">DiagramEvent</a></li>
<li><a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a></li>
<li><a href="../symbols/Group.html" class="linkConstructor">Group</a></li>
<li><a href="../symbols/InputEvent.html" class="linkConstructor">InputEvent</a></li>
<li><a href="../symbols/Layer.html" class="linkConstructor">Layer</a></li>
<li><a href="../symbols/Link.html" class="linkConstructor">Link</a></li>
<li><a href="../symbols/Node.html" class="linkConstructor">Node</a></li>
<li><a href="../symbols/Overview.html" class="linkConstructor">Overview</a></li>
<li><a href="../symbols/Palette.html" class="linkConstructor">Palette</a></li>
<li><a href="../symbols/Panel.html" class="linkConstructor">Panel</a></li>
<li><a href="../symbols/Part.html" class="linkConstructor">Part</a></li>
<li><a href="../symbols/Picture.html" class="linkConstructor">Picture</a></li>
<li><a href="../symbols/Placeholder.html" class="linkConstructor">Placeholder</a></li>
<li><a href="../symbols/RowColumnDefinition.html" class="linkConstructor">RowColumnDefinition</a></li>
<li><a href="../symbols/Shape.html" class="linkConstructor">Shape</a></li>
<li><a href="../symbols/TextBlock.html" class="linkConstructor">TextBlock</a></li>
</ul>
</div>
</div>
<div class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<div class="navheader-container">
<div class="navheader-collapse" data-toggle="collapse" data-target="#GeometryNavbar">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#GeometryNavbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<span class="navbar-brand">Geometry Classes</span>
</div>
</div>
<div id="GeometryNavbar" class="navbar-collapse collapse sidebar-navbar-collapse">
<ul class="classList nav navbar-nav">
<li><a href="../symbols/Brush.html" class="linkConstructor">Brush</a></li>
<li><a href="../symbols/Geometry.html" class="linkConstructor">Geometry</a></li>
<li><a href="../symbols/Margin.html" class="linkConstructor">Margin</a></li>
<li><a href="../symbols/PathFigure.html" class="linkConstructor">PathFigure</a></li>
<li><a href="../symbols/PathSegment.html" class="linkConstructor">PathSegment</a></li>
<li><a href="../symbols/Point.html" class="linkConstructor">Point</a></li>
<li><a href="../symbols/Rect.html" class="linkConstructor">Rect</a></li>
<li><a href="../symbols/Size.html" class="linkConstructor">Size</a></li>
<li><a href="../symbols/Spot.html" class="linkConstructor">Spot</a></li>
</ul>
</div>
</div>
<div class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<div class="navheader-container">
<div class="navheader-collapse" data-toggle="collapse" data-target="#ModelNavbar">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#ModelNavbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<span class="navbar-brand">Model Classes</span>
</div>
</div>
<div id="ModelNavbar" class="navbar-collapse collapse sidebar-navbar-collapse">
<ul class="classList nav navbar-nav">
<li><a href="../symbols/Binding.html" class="linkConstructor">Binding</a></li>
<li><a href="../symbols/ChangedEvent.html" class="linkConstructor">ChangedEvent</a></li>
<li><a href="../symbols/GraphLinksModel.html" class="linkConstructor">GraphLinksModel</a></li>
<li><a href="../symbols/Model.html" class="linkConstructor">Model</a></li>
<li><a href="../symbols/Transaction.html" class="linkConstructor">Transaction</a></li>
<li><a href="../symbols/TreeModel.html" class="linkConstructor">TreeModel</a></li>
<li><a href="../symbols/UndoManager.html" class="linkConstructor">UndoManager</a></li>
</ul>
</div>
</div>
<div class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<div class="navheader-container">
<div class="navheader-collapse" data-toggle="collapse" data-target="#LayoutNavbar">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#LayoutNavbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<span class="navbar-brand">Layout Classes</span>
</div>
</div>
<div id="LayoutNavbar" class="navbar-collapse collapse sidebar-navbar-collapse">
<ul class="classList nav navbar-nav">
<li><a href="../symbols/CircularLayout.html" class="linkConstructor">CircularLayout</a></li>
<li><a href="../symbols/ForceDirectedLayout.html" class="linkConstructor">ForceDirectedLayout</a></li>
<li><a href="../symbols/GridLayout.html" class="linkConstructor">GridLayout</a></li>
<li><a href="../symbols/LayeredDigraphLayout.html" class="linkConstructor">LayeredDigraphLayout</a></li>
<li><a href="../symbols/Layout.html" class="linkConstructor">Layout</a></li>
<li><a href="../symbols/LayoutNetwork.html" class="linkConstructor">LayoutNetwork</a></li>
<li><a href="../symbols/TreeLayout.html" class="linkConstructor">TreeLayout</a></li>
</ul>
</div>
</div>
<div class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<div class="navheader-container">
<div class="navheader-collapse" data-toggle="collapse" data-target="#ToolNavbar">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#ToolNavbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<span class="navbar-brand">Tool Classes</span>
</div>
</div>
<div id="ToolNavbar" class="navbar-collapse collapse sidebar-navbar-collapse">
<ul class="classList nav navbar-nav">
<li><a href="../symbols/ActionTool.html" class="linkConstructor">ActionTool</a></li>
<li><a href="../symbols/ClickCreatingTool.html" class="linkConstructor">ClickCreatingTool</a></li>
<li><a href="../symbols/ClickSelectingTool.html" class="linkConstructor">ClickSelectingTool</a></li>
<li><a href="../symbols/ContextMenuTool.html" class="linkConstructor">ContextMenuTool</a></li>
<li><a href="../symbols/DraggingTool.html" class="linkConstructor">DraggingTool</a></li>
<li><a href="../symbols/DragSelectingTool.html" class="linkConstructor">DragSelectingTool</a></li>
<li><a href="../symbols/HTMLInfo.html" class="linkConstructor">HTMLInfo</a></li>
<li><a href="../symbols/LinkingBaseTool.html" class="linkConstructor">LinkingBaseTool</a></li>
<li><a href="../symbols/LinkingTool.html" class="linkConstructor">LinkingTool</a></li>
<li><a href="../symbols/LinkReshapingTool.html" class="linkConstructor">LinkReshapingTool</a></li>
<li><a href="../symbols/PanningTool.html" class="linkConstructor">PanningTool</a></li>
<li><a href="../symbols/RelinkingTool.html" class="linkConstructor">RelinkingTool</a></li>
<li><a href="../symbols/ResizingTool.html" class="linkConstructor">ResizingTool</a></li>
<li><a href="../symbols/RotatingTool.html" class="linkConstructor">RotatingTool</a></li>
<li><a href="../symbols/TextEditingTool.html" class="linkConstructor">TextEditingTool</a></li>
<li><a href="../symbols/Tool.html" class="linkConstructor">Tool</a></li>
<li><a href="../symbols/ToolManager.html" class="linkConstructor">ToolManager</a></li>
</ul>
</div>
</div>
<div class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<div class="navheader-container">
<div class="navheader-collapse" data-toggle="collapse" data-target="#CollectionNavbar">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#CollectionNavbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<span class="navbar-brand">Collection Classes</span>
</div>
</div>
<div id="CollectionNavbar" class="navbar-collapse collapse sidebar-navbar-collapse">
<ul class="classList nav navbar-nav">
<li><a href="../symbols/Iterable.html" class="linkConstructor">Iterable</a></li>
<li><a href="../symbols/Iterator.html" class="linkConstructor">Iterator</a></li>
<li><a href="../symbols/List.html" class="linkConstructor">List</a></li>
<li><a href="../symbols/Map.html" class="linkConstructor">Map</a></li>
<li><a href="../symbols/Set.html" class="linkConstructor">Set</a></li>
</ul>
</div>
</div>
</div> <!-- /class="sidebar-nav -->
<!-- end publish.classesIndex -->
</div>
<div id="contentBody" class="col-md-10">
<!-- ============================== header ================================= -->
<div id="header" class="fineprint mt30">
<b>GoJS</b>&reg; Diagramming Components<br/>version 1.8.5 for JavaScript/HTML<br/>by <a href="https://www.nwoods.com/">Northwoods Software&reg;</a>
</div>
<!-- ============================== class title ============================ -->
<h2 class="classTitle mt30">
Class Link
</h2>
<!-- ============================== class summary ========================== -->
<span class="hideshowall">
<span class="nodetails"><button id="buttonShow">Show Details</button></span>
<span class="details"><button id="buttonHide">Show Summaries</button></span>
</span>
<p class="classsummary">
<span class="extends"> Extends
<a href="../symbols/Part.html" class="linkConstructor">Part</a>.</span>
A Link is a <a href="../symbols/Part.html" class="linkConstructor">Part</a> that connects <a href="../symbols/Node.html" class="linkConstructor">Node</a>s.
The link relationship is directional, going from <a href="../symbols/Link.html#fromNode" class="linkProperty">Link.fromNode</a> to <a href="../symbols/Link.html#toNode" class="linkProperty">Link.toNode</a>.
A link can connect to a specific port element in a node, as named by the <a href="../symbols/Link.html#fromPortId" class="linkProperty">Link.fromPortId</a>
and <a href="../symbols/Link.html#toPortId" class="linkProperty">Link.toPortId</a> properties.
<p class="boxread">
For more discussion, see <a href="../../intro/links.html">Introduction to Links</a>.
<p>
To add a Link to a Diagram when using a <a href="../symbols/GraphLinksModel.html" class="linkConstructor">GraphLinksModel</a> you should do something like:
<pre>
myDiagram.startTransaction("make new link");
myDiagram.model.addLinkData({ from: "Alpha", to: "Beta" });
myDiagram.commitTransaction("make new link");
</pre>
<p>
where you would substitute the keys of the actual nodes that you want to connect with a link.
This will cause a Link to be created (copying the template found in <a href="../symbols/Diagram.html#linkTemplateMap" class="linkProperty">Diagram.linkTemplateMap</a>),
added to the Diagram in some <a href="../symbols/Layer.html" class="linkConstructor">Layer</a> (based on <a href="../symbols/Part.html#layerName" class="linkProperty">Part.layerName</a>), and bound to the link data
(resulting in <a href="../symbols/Panel.html#data" class="linkProperty">Panel.data</a> referring to that link data object).
Note that link data objects, unlike <a href="../symbols/Node.html" class="linkConstructor">Node</a> data, do not have their own unique keys or identifiers,
because other Parts do not refer to them.
<p>
If you are using a <a href="../symbols/TreeModel.html" class="linkConstructor">TreeModel</a>, there are no link data objects, so you just need to call
<a href="../symbols/TreeModel.html#setParentKeyForNodeData" class="linkMethod">TreeModel.setParentKeyForNodeData</a> to specify the "parent" node's key for a "child" node data.
<p>
To find a <a href="../symbols/Link.html" class="linkConstructor">Link</a> given a link data object in the <a href="../symbols/GraphLinksModel.html" class="linkConstructor">GraphLinksModel</a>,
call <a href="../symbols/Diagram.html#findLinkForData" class="linkMethod">Diagram.findLinkForData</a>. When using a <a href="../symbols/TreeModel.html" class="linkConstructor">TreeModel</a>, call either <a href="../symbols/Diagram.html#findNodeForData" class="linkMethod">Diagram.findNodeForData</a>
or <a href="../symbols/Diagram.html#findNodeForKey" class="linkMethod">Diagram.findNodeForKey</a> to get a Node, and then call <a href="../symbols/Node.html#findTreeParentLink" class="linkMethod">Node.findTreeParentLink</a> to get the Link, if any exists.
<p>
To find a link that connects two nodes, call <a href="../symbols/Node.html#findLinksTo" class="linkMethod">Node.findLinksTo</a> or <a href="../symbols/Node.html#findLinksBetween" class="linkMethod">Node.findLinksBetween</a>.
With the former method, the direction matters; with the latter method it returns links in either direction.
<p>
A link's position and size are determined by the two nodes that it connects.
Normally there should be a <a href="../symbols/Shape.html" class="linkConstructor">Shape</a> as the main element in this Link.
This shape is what users will see as the "line" or "wire" --
you can set its <a href="../symbols/Shape.html#stroke" class="linkProperty">Shape.stroke</a> and other "stroke..." properties to control its appearance.
<p>
The link will compute a route (a sequence of points) going from the <a href="../symbols/Link.html#fromNode" class="linkProperty">fromNode</a>'s port element
to the <a href="../symbols/Link.html#toNode" class="linkProperty">toNode</a>'s port element.
That route is used to generate the path of the main shape.
Properties that affect the nature of the route and the geometry of the path include:
<ul>
<li><a href="../symbols/Link.html#curve" class="linkProperty">curve</a></li>
<li><a href="../symbols/Link.html#curviness" class="linkProperty">curviness</a></li>
<li><a href="../symbols/Link.html#corner" class="linkProperty">corner</a></li>
<li><a href="../symbols/Link.html#routing" class="linkProperty">routing</a></li>
<li><a href="../symbols/Link.html#smoothness" class="linkProperty">smoothness</a></li>
<li><a href="../symbols/Link.html#adjusting" class="linkProperty">adjusting</a></li>
</ul>
<p class="boxread">
For more discussion and examples, see <a href="../../intro/links.html">Links</a>.
<p>
There are additional properties that affect how the end of the link connects to a port element of a node.
There are duplicate properties, ones for the "to" end and ones for the "from" end:
<ul>
<li><a href="../symbols/Link.html#fromSpot" class="linkProperty">fromSpot</a>, <a href="../symbols/Link.html#toSpot" class="linkProperty">toSpot</a></li>
<li><a href="../symbols/Link.html#fromEndSegmentLength" class="linkProperty">fromEndSegmentLength</a>, <a href="../symbols/Link.html#toEndSegmentLength" class="linkProperty">toEndSegmentLength</a></li>
<li><a href="../symbols/Link.html#fromShortLength" class="linkProperty">fromShortLength</a>, <a href="../symbols/Link.html#toShortLength" class="linkProperty">toShortLength</a></li>
</ul>
<p>
These properties normally have "default" values, causing the link's routing and path-geometry generating
to get the corresponding values from the connected port element.
This scheme permits an individual link to have its own specific connection to a port,
taking precedence over how the port normally expects links to connect to it.
For example, several of the <a href="../symbols/Layout.html" class="linkConstructor">Layout</a> classes sets these properties on each Link
as part of their route computation for links.
<p class="boxread">
For more discussion and examples, see <a href="../../intro/connectionPoints.html">Link Points</a>.
<p>
Elements other than the main <a href="../symbols/Shape.html" class="linkConstructor">Shape</a> in the Link may act as decorations on the link, including arrowheads and labels.
You can control where they are located along the link route and how they are oriented.
Because these decorations may be any <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>, they are all properties of that class.
The properties include:
<ul>
<li><a href="../symbols/GraphObject.html#segmentIndex" class="linkProperty">GraphObject.segmentIndex</a></li>
<li><a href="../symbols/GraphObject.html#segmentFraction" class="linkProperty">GraphObject.segmentFraction</a></li>
<li><a href="../symbols/GraphObject.html#segmentOffset" class="linkProperty">GraphObject.segmentOffset</a></li>
<li><a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a></li>
</ul>
If you do not set the <a href="../symbols/GraphObject.html#segmentIndex" class="linkProperty">GraphObject.segmentIndex</a> property, the object is positioned
to be at the middle of the link.
<p class="boxread">
For more discussion and examples, see <a href="../../intro/linkLabels.html">Link Labels</a>.
<p>
<b>GoJS</b> makes it easy to add arrowheads to your link template.
Just add a <a href="../symbols/Shape.html" class="linkConstructor">Shape</a> with the appearance properties that you want,
and also set the <a href="../symbols/Shape.html#toArrow" class="linkProperty">Shape.toArrow</a> or <a href="../symbols/Shape.html#fromArrow" class="linkProperty">Shape.fromArrow</a> property
to the name of the kind of arrowhead that you want.
Doing so automatically sets the "segment..." properties that are appropriate for the chosen arrowhead.
<p>
More than one shape may automatically get the route geometry.
This is useful when you want to have multiple link shapes with different thicknesses
to create a gradient effect across the path of the link or to produce parallel lines along the path.
Just set <a href="../symbols/GraphObject.html#isPanelMain" class="linkProperty">GraphObject.isPanelMain</a> to true on each such <a href="../symbols/Shape.html" class="linkConstructor">Shape</a>.
<p>
If you want the user to be able to reconnect a link, using the <a href="../symbols/RelinkingTool.html" class="linkConstructor">RelinkingTool</a>,
you need to set one or both of <a href="../symbols/Link.html#relinkableFrom" class="linkProperty">relinkableFrom</a> and <a href="../symbols/Link.html#relinkableTo" class="linkProperty">relinkableTo</a> to true.
The <a href="../symbols/RelinkingTool.html" class="linkConstructor">RelinkingTool</a> shows a <a href="../symbols/RelinkingTool.html#fromHandleArchetype" class="linkProperty">RelinkingTool.fromHandleArchetype</a> and/or a
<a href="../symbols/RelinkingTool.html#toHandleArchetype" class="linkProperty">RelinkingTool.toHandleArchetype</a> when the link is selected.
Such a relink handle can be dragged by the user to start a relinking operation.
<p>
If you want the user to be able to change the path of the link, using the <a href="../symbols/LinkReshapingTool.html" class="linkConstructor">LinkReshapingTool</a>,
set <a href="../symbols/Part.html#reshapable" class="linkProperty">Part.reshapable</a> to true.
The <a href="../symbols/LinkReshapingTool.html" class="linkConstructor">LinkReshapingTool</a> shows reshape handles that the user can drag to shift the position
of a point in the link's route.
The <a href="../symbols/LinkReshapingTool.html#handleArchetype" class="linkProperty">LinkReshapingTool.handleArchetype</a> is copied for each reshape handle.
<p>
Often if a Link is reshapable, you will want to save the route in the model so that it can be restored
upon load. To save the route automatically, add a TwoWay Binding on the <a href="../symbols/Link.html#points" class="linkProperty">points</a> property:
<code>new go.Binding("points").makeTwoWay()</code>. <a href="../symbols/Model.html#toJson" class="linkMethod">Model.toJson</a> will automatically
convert the <a href="../symbols/List.html" class="linkConstructor">List</a> of <a href="../symbols/Point.html" class="linkConstructor">Point</a>s into an Array of numbers in the JSON representation,
if the property is named "points".
<p>
If a Link is <a href="../symbols/Part.html#reshapable" class="linkProperty">Part.reshapable</a>, it is also possible to allow the user to add and remove segments
from the link's route by setting <a href="../symbols/Link.html#resegmentable" class="linkProperty">resegmentable</a> to true.
This causes the <a href="../symbols/LinkReshapingTool.html" class="linkConstructor">LinkReshapingTool</a> to add resegmenting handles at the midpoints of each segment.
The <a href="../symbols/LinkReshapingTool.html#midHandleArchetype" class="linkProperty">LinkReshapingTool.midHandleArchetype</a> is copied for each resegment handle.
When the user drags such a resegmenting handle, a new segment is inserted into the route.
Also, when the user drags a reshape handle such that two adjacent segments end up in a straight line,
a segment is removed from the route.
<p class="boxread">
For more discussion and examples, see <a href="../../intro/links.html">Links</a>,
<a href="../../intro/linkLabels.html">Link Labels</a>, and
<a href="../../intro/connectionPoints.html">Link Points</a>.
<p class="boxread">
To control what links a user may draw or reconnect, please read about
<a href="../../intro/validation.html">Validation</a>.
<p class="boxread">
To customize linking and relinking behavior, please read
<a href="../../intro/tools.html#LinkingToolAndRelinkingTool">Introduction to the Linking Tools</a>
and <a href="../../intro/tools.html#RelinkingTool">Introduction to the RelinkingTool</a>.
For customizing the reshaping of Links,
see <a href="../../intro/tools.html#LinkReshapingTool">Introduction to the LinkReshapingTool</a>.
<p>
Only Links that are in Diagrams can have connections with Nodes.
Templates should not be connected with Nodes, be members of Groups, or have any Adornments.
</p>
<!-- ============================== constructor summary ==================== -->
<h2 id="constructor" class="summaryCaption"> Constructor <span class="nodetails"> Summary</span><span class="details"> Details</span></h2>
<div class="table-responsive">
<table class="summaryTable table table-bordered table-condensed" summary="A summary of the constructor documented in the class Link.">
<thead>
<tr>
<th scope="col" class="name">Name</th>
<th scope="col" class="description">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name" >
<div class="name">
Link()
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Constructs an empty link that does not connect any nodes.<span class="nodetails" id="xconLink"><a class="morelink" onclick="hst('conLink')">More...</a></span> <span class="details" id="conLink">
If you want the link to be seen, you must provide a <a href="../symbols/Shape.html" class="linkConstructor">Shape</a> as an element
to be used as the visual path for the link.</span>
</div>
</td>
</tr>
</tbody>
</table>
</div><!-- class="table-responsive">-->
<!-- ============================== properties summary ===================== -->
<h2 class="summaryCaption">Properties<span class="nodetails"> Summary</span><span class="details"> Details</span></h2>
<div class="table-responsive">
<table class="summaryTable table table-bordered table-condensed" summary="A summary of the properties documented in the class Link.">
<thead>
<tr>
<th scope="col" class="name">Name, Value Type</th>
<th scope="col" class="description">Description</th>
</tr>
</thead>
<tbody>
<tr id="adjusting" >
<td class="name">
<div class="name">
adjusting
</div>
<div class="attributes">
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets how the route is computed, including whether it uses the points of its old route to determine the new route.<span class="nodetails" id="xpropadjusting"><a class="morelink" onclick="hst('propadjusting')">More...</a></span> <span class="details" id="propadjusting">
The value must be one of <a href="../symbols/Link.html#None" class="linkConstant">None</a>, <a href="../symbols/Link.html#End" class="linkConstant">End</a>, <a href="../symbols/Link.html#Scale" class="linkConstant">Scale</a>, or <a href="../symbols/Link.html#Stretch" class="linkConstant">Stretch</a>.
</span><div class="details" id="dpropadjusting"><p>
The default value is <a href="../symbols/Link.html#None" class="linkConstant">None</a> -- the route is completely recalculated each time.</div>
</div>
</td>
</tr>
<tr id="corner" >
<td class="name">
<div class="name">
corner
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets how rounded the corners are for adjacent line segments when the <a href="../symbols/Link.html#curve" class="linkProperty">curve</a>
is <a href="../symbols/Link.html#None" class="linkConstant">None</a>, <a href="../symbols/Link.html#JumpGap" class="linkConstant">JumpGap</a>, or <a href="../symbols/Link.html#JumpOver" class="linkConstant">JumpOver</a> and
the two line segments are orthogonal to each other.<span class="nodetails" id="xpropcorner"><a class="morelink" onclick="hst('propcorner')">More...</a></span> <span class="details" id="propcorner">
</span><div class="details" id="dpropcorner"><p>
The default value is zero -- there is no curve at a corner.</div>
</div>
</td>
</tr>
<tr id="curve" >
<td class="name">
<div class="name">
curve
</div>
<div class="attributes">
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the way the path is generated from the route's points.<span class="nodetails" id="xpropcurve"><a class="morelink" onclick="hst('propcurve')">More...</a></span> <span class="details" id="propcurve">
The value must be one of <a href="../symbols/Link.html#None" class="linkConstant">None</a>, <a href="../symbols/Link.html#Bezier" class="linkConstant">Bezier</a>, <a href="../symbols/Link.html#JumpGap" class="linkConstant">JumpGap</a>, or <a href="../symbols/Link.html#JumpOver" class="linkConstant">JumpOver</a>.
</span><div class="details" id="dpropcurve"><p>
Setting this property to <a href="../symbols/Link.html#JumpOver" class="linkConstant">JumpOver</a> or <a href="../symbols/Link.html#JumpGap" class="linkConstant">JumpGap</a> requires the Diagram to do
considerable computation when calculating Link routes. Consider not using
a Jump... value with Diagrams that contain large numbers of Links
if you are targeting slow devices.
<p>
The default value is <a href="../symbols/Link.html#None" class="linkConstant">None</a> -- each link segment is a straight line.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#computeCurve" class="linkMethod">computeCurve</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="curviness" >
<td class="name">
<div class="name">
curviness
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets how far the control points are offset when the <a href="../symbols/Link.html#curve" class="linkProperty">curve</a> is <a href="../symbols/Link.html#Bezier" class="linkConstant">Bezier</a>
or when there are multiple links between the same two ports.<span class="nodetails" id="xpropcurviness"><a class="morelink" onclick="hst('propcurviness')">More...</a></span> <span class="details" id="propcurviness">
</span><div class="details" id="dpropcurviness"><p>
The default value is NaN -- the actual curviness is computed based on how many links connect the same pair of ports.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#computeCurviness" class="linkMethod">computeCurviness</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="fromEndSegmentLength" >
<td class="name">
<div class="name">
fromEndSegmentLength
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the length of the first segment, when the computed "from spot" at the <a href="../symbols/Link.html#fromPort" class="linkProperty">fromPort</a> is not <a href="../symbols/Spot.html#None" class="linkConstant">Spot.None</a>.<span class="nodetails" id="xpropfromEndSegmentLength"><a class="morelink" onclick="hst('propfromEndSegmentLength')">More...</a></span> <span class="details" id="propfromEndSegmentLength">
The default value is NaN, meaning that the value
actually comes from the <a href="../symbols/GraphObject.html#fromEndSegmentLength" class="linkProperty">GraphObject.fromEndSegmentLength</a> property of the <a href="../symbols/Link.html#fromPort" class="linkProperty">fromPort</a>.
This value also limits how short the <a href="../symbols/Link.html#fromShortLength" class="linkProperty">fromShortLength</a> may be drawn.
</span><div class="details" id="dpropfromEndSegmentLength"><p>
For examples of how to use this property, see <a href="../../intro/connectionPoints.html">Link Connection Points</a>.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#toEndSegmentLength" class="linkProperty">toEndSegmentLength</a></li>
<li><a href="../symbols/Link.html#computeEndSegmentLength" class="linkMethod">computeEndSegmentLength</a></li>
<li><a href="../symbols/GraphObject.html#fromEndSegmentLength" class="linkProperty">GraphObject.fromEndSegmentLength</a></li>
<li><a href="../symbols/Link.html#fromShortLength" class="linkProperty">fromShortLength</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="fromNode" >
<td class="name">
<div class="name">
fromNode
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the <a href="../symbols/Node.html" class="linkConstructor">Node</a> that this link comes from.<span class="nodetails" id="xpropfromNode"><a class="morelink" onclick="hst('propfromNode')">More...</a></span> <span class="details" id="propfromNode">
The <a href="../symbols/Link.html#fromPortId" class="linkProperty">fromPortId</a> specifies which port the link comes from.
The default value is null -- this link is not coming from any node.
</span><div class="details" id="dpropfromNode"><p>
A template should not be connected with any node.</div>
</div>
</td>
</tr>
<tr id="fromPort" >
<td class="name">
<div class="name">
fromPort
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns a <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> that is the "from" port that this link is connected from.<span class="nodetails" id="xpropfromPort"><a class="morelink" onclick="hst('propfromPort')">More...</a></span> <span class="details" id="propfromPort">
The <a href="../symbols/Link.html#fromNode" class="linkProperty">fromNode</a> provides the node that the link is coming from.
The <a href="../symbols/Link.html#fromPortId" class="linkProperty">fromPortId</a> provides the identifier for which port this link is coming from;
you can set that property in order to change the value of this property.
This method may return null.</span>
</div>
</td>
</tr>
<tr id="fromPortChanged" >
<td class="name">
<div class="name">
fromPortChanged
</div>
<div class="attributes">
<span class="light">{function(Link, GraphObject, GraphObject) | null}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the function that is called after this Link changes which Node or port it connects from.<span class="nodetails" id="xpropfromPortChanged"><a class="morelink" onclick="hst('propfromPortChanged')">More...</a></span> <span class="details" id="propfromPortChanged">
The first argument will be this Link.
The second argument will be the old GraphObject port.
The third argument will be the new GraphObject port.
</span><div class="details" id="dpropfromPortChanged"><p>
If the value is a function, that function must not modify which nodes or links this link connects with.
The "from" node and/or port has already been changed -- trying to change it again may produce undefined behavior.
<p>
The default value is null -- no function is called.</div>
</div>
</td>
</tr>
<tr id="fromPortId" >
<td class="name">
<div class="name">
fromPortId
</div>
<div class="attributes">
<span class="light">{string}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the identifier of the port that this link comes from.<span class="nodetails" id="xpropfromPortId"><a class="morelink" onclick="hst('propfromPortId')">More...</a></span> <span class="details" id="propfromPortId">
The default value is the empty string.</span>
</div>
</td>
</tr>
<tr id="fromShortLength" >
<td class="name">
<div class="name">
fromShortLength
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets how far the end segment stops short of the actual port.<span class="nodetails" id="xpropfromShortLength"><a class="morelink" onclick="hst('propfromShortLength')">More...</a></span> <span class="details" id="propfromShortLength">
Positive values are limited by the <a href="../symbols/Link.html#fromEndSegmentLength" class="linkProperty">fromEndSegmentLength</a> or <a href="../symbols/GraphObject.html#fromEndSegmentLength" class="linkProperty">GraphObject.fromEndSegmentLength</a>.
Negative values cause the link to extend into the port.
The default value is NaN -- the value actually comes from the
<a href="../symbols/GraphObject.html#fromShortLength" class="linkProperty">GraphObject.fromShortLength</a> property of the <a href="../symbols/Link.html#fromPort" class="linkProperty">fromPort</a>.
</span><div class="details" id="dpropfromShortLength"><p>
For examples of how to use this property, see <a href="../../intro/connectionPoints.html">Link Connection Points</a>.
If you want to move an arrowhead away from the start of the link route,
set the arrowhead Shape's <a href="../symbols/GraphObject.html#segmentOffset" class="linkProperty">GraphObject.segmentOffset</a>.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#toShortLength" class="linkProperty">toShortLength</a></li>
<li><a href="../symbols/GraphObject.html#fromShortLength" class="linkProperty">GraphObject.fromShortLength</a></li>
<li><a href="../symbols/Link.html#fromEndSegmentLength" class="linkProperty">fromEndSegmentLength</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="fromSpot" >
<td class="name">
<div class="name">
fromSpot
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Spot.html" class="linkConstructor">Spot</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets where this link should connect at the <a href="../symbols/Link.html#fromPort" class="linkProperty">fromPort</a>.<span class="nodetails" id="xpropfromSpot"><a class="morelink" onclick="hst('propfromSpot')">More...</a></span> <span class="details" id="propfromSpot">
The default value is <a href="../symbols/Spot.html#Default" class="linkConstant">Spot.Default</a>, meaning that the value
actually comes from the <a href="../symbols/GraphObject.html#fromSpot" class="linkProperty">GraphObject.fromSpot</a> property of the <a href="../symbols/Link.html#fromPort" class="linkProperty">fromPort</a>.
</span><div class="details" id="dpropfromSpot"><p>
This property is set by some layouts, if <a href="../symbols/ForceDirectedLayout.html#setsPortSpots" class="linkProperty">ForceDirectedLayout.setsPortSpots</a> or
<a href="../symbols/LayeredDigraphLayout.html#setsPortSpots" class="linkProperty">LayeredDigraphLayout.setsPortSpots</a> or <a href="../symbols/TreeLayout.html#setsPortSpot" class="linkProperty">TreeLayout.setsPortSpot</a> or
<a href="../symbols/TreeLayout.html#setsChildPortSpot" class="linkProperty">TreeLayout.setsChildPortSpot</a> is true.
<p>
For examples of how to use this property, see <a href="../../intro/connectionPoints.html">Link Connection Points</a>.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#toSpot" class="linkProperty">toSpot</a></li>
<li><a href="../symbols/GraphObject.html#fromSpot" class="linkProperty">GraphObject.fromSpot</a></li>
<li><a href="../symbols/Link.html#computeSpot" class="linkMethod">computeSpot</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="geometry" >
<td class="name">
<div class="name">
geometry
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Geometry.html" class="linkConstructor">Geometry</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns the <a href="../symbols/Geometry.html" class="linkConstructor">Geometry</a> that is used by the <a href="../symbols/Link.html#path" class="linkProperty">path</a>, the link <a href="../symbols/Shape.html" class="linkConstructor">Shape</a> based on the route points.<span class="nodetails" id="xpropgeometry"><a class="morelink" onclick="hst('propgeometry')">More...</a></span> <span class="details" id="propgeometry">
</span><div class="details" id="dpropgeometry"><p>
This geometry is automatically generated using the route points and other properties
such as the <a href="../symbols/Link.html#curve" class="linkProperty">curve</a>.
The points of the Geometry are in local coordinates, whereas the <a href="../symbols/Link.html#points" class="linkProperty">points</a> of the link route are in document coordinates.
<p>
More than one <a href="../symbols/Shape.html" class="linkConstructor">Shape</a> may share this geometry as its <a href="../symbols/Shape.html#geometry" class="linkProperty">Shape.geometry</a>,
if there is more than one shape element in the Link with <a href="../symbols/GraphObject.html#isPanelMain" class="linkProperty">GraphObject.isPanelMain</a> set to true.</div>
</div>
</td>
</tr>
<tr id="isLabeledLink" >
<td class="name">
<div class="name">
isLabeledLink
</div>
<div class="attributes">
<span class="light">{boolean}</span>
<span class="since" title="since">1.1</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property is true when this Link has any label Nodes, <a href="../symbols/Node.html" class="linkConstructor">Node</a>s that are owned by this Link
and are arranged along its path in the same manner as elements of the Link Panel.<span class="nodetails" id="xpropisLabeledLink"><a class="morelink" onclick="hst('propisLabeledLink')">More...</a></span> <span class="details" id="propisLabeledLink"></span>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#labelNodes" class="linkProperty">labelNodes</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="isOrthogonal" >
<td class="name">
<div class="name">
isOrthogonal
</div>
<div class="attributes">
<span class="light">{boolean}</span>
<span class="since" title="since">1.2</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property is true if <a href="../symbols/Link.html#routing" class="linkProperty">routing</a> is a value that implies that the points
of the route should be orthogonal, such that each point shares a common X or a common Y value
with the immediately previous and next points.<span class="nodetails" id="xpropisOrthogonal"><a class="morelink" onclick="hst('propisOrthogonal')">More...</a></span> <span class="details" id="propisOrthogonal">
This property is completely dependent on the <a href="../symbols/Link.html#routing" class="linkProperty">routing</a> property.
Values of <a href="../symbols/Link.html#Orthogonal" class="linkConstant">Link.Orthogonal</a> and <a href="../symbols/Link.html#AvoidsNodes" class="linkConstant">Link.AvoidsNodes</a> causes this property to be true.
</span><div class="details" id="dpropisOrthogonal"><p>
The points in the route might not actually form an orthogonal route, but when the route is computed
the intent is to maintain orthogonality.</div>
</div>
</td>
</tr>
<tr id="isTreeLink" >
<td class="name">
<div class="name">
isTreeLink
</div>
<div class="attributes">
<span class="light">{boolean}</span>
<span class="since" title="since">1.2</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets whether this Link is part of the tree for tree operations
such as <a href="../symbols/Node.html#findTreeChildrenNodes" class="linkMethod">Node.findTreeChildrenNodes</a> or <a href="../symbols/Node.html#collapseTree" class="linkMethod">Node.collapseTree</a>.<span class="nodetails" id="xpropisTreeLink"><a class="morelink" onclick="hst('propisTreeLink')">More...</a></span> <span class="details" id="propisTreeLink">
</span><div class="details" id="dpropisTreeLink"><p>
The initial value is true.</div>
</div>
</td>
</tr>
<tr id="key" >
<td class="name">
<div class="name">
key
</div>
<div class="attributes">
<span class="light">{string | number | undefined}</span>
<span class="since" title="since">1.8</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns the key of the model data of this Link.
</div>
</td>
</tr>
<tr id="labelNodes" >
<td class="name">
<div class="name">
labelNodes
</div>
<div class="attributes">
<span class="light">{Iterator.<Node>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns an iterator over the <a href="../symbols/Node.html" class="linkConstructor">Node</a>s that act as labels on this Link.<span class="nodetails" id="xproplabelNodes"><a class="morelink" onclick="hst('proplabelNodes')">More...</a></span> <span class="details" id="proplabelNodes">
Setting <a href="../symbols/Node.html#labeledLink" class="linkProperty">Node.labeledLink</a> to refer to this Link
will add that <a href="../symbols/Node.html" class="linkConstructor">Node</a> to this collection.
</span><div class="details" id="dproplabelNodes"><p>
Do not confuse these <a href="../symbols/Node.html" class="linkConstructor">Node</a>s with the <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>s that
are part of this <a href="../symbols/Link.html" class="linkConstructor">Link</a> <a href="../symbols/Panel.html" class="linkConstructor">Panel</a>.
Those objects can also be used as "labels", but not as objects to which
there can be link connections, because those panel elements cannot be <a href="../symbols/Node.html" class="linkConstructor">Node</a>s.
Those panel objects can be used for other purposes too, such as arrowheads.
<p>
A template should not have any label nodes.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#isLabeledLink" class="linkProperty">isLabeledLink</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="midAngle" >
<td class="name">
<div class="name">
midAngle
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns the angle of the path at the <a href="../symbols/Link.html#midPoint" class="linkProperty">midPoint</a>.
</div>
</td>
</tr>
<tr id="midPoint" >
<td class="name">
<div class="name">
midPoint
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns the point at the middle of the path, in document coordinates.
</div>
</td>
</tr>
<tr id="path" >
<td class="name">
<div class="name">
path
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Shape.html" class="linkConstructor">Shape</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns the main <a href="../symbols/Shape.html" class="linkConstructor">Shape</a> representing the path of this Link.<span class="nodetails" id="xproppath"><a class="morelink" onclick="hst('proppath')">More...</a></span> <span class="details" id="proppath">
</span><div class="details" id="dproppath"><p>
The value depends on there being an element in this Link that is
a <a href="../symbols/Shape.html" class="linkConstructor">Shape</a> and that has <a href="../symbols/GraphObject.html#isPanelMain" class="linkProperty">GraphObject.isPanelMain</a> set to true.
This shape is what displays the stroke going from one node to another node.
<p>
This path shape's geometry is automatically generated based on the <a href="../symbols/Link.html#points" class="linkProperty">points</a>
of this link's route, depending on other properties such as <a href="../symbols/Link.html#curve" class="linkProperty">curve</a>.
Note that the points are in document coordinates, but the path's <a href="../symbols/Shape.html#geometry" class="linkProperty">Shape.geometry</a>
will have points that are in local Shape coordinates.
This Shape's <a href="../symbols/GraphObject.html#scale" class="linkProperty">GraphObject.scale</a> should be one and <a href="../symbols/GraphObject.html#angle" class="linkProperty">GraphObject.angle</a> should be zero.
<p>
If there is no Shape with <a href="../symbols/GraphObject.html#isPanelMain" class="linkProperty">GraphObject.isPanelMain</a> set to true,
the Link will use the first Shape for its path.</div>
</div>
</td>
</tr>
<tr id="points" >
<td class="name">
<div class="name">
points
</div>
<div class="attributes">
<span class="light">{List.<Point>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the <a href="../symbols/List.html" class="linkConstructor">List</a> of <a href="../symbols/Point.html" class="linkConstructor">Point</a>s in the route.<span class="nodetails" id="xproppoints"><a class="morelink" onclick="hst('proppoints')">More...</a></span> <span class="details" id="proppoints">
All of the Points must be <a href="../symbols/Point.html#isReal" class="linkMethod">Point.isReal</a> -- no NaN or infinite values --
and all of the points are in document coordinates.
Although this list may be replaced by setting this property,
one must not modify the contents of the List directly.
</span><div class="details" id="dproppoints"><p>
The setter also accepts an Array of alternating X,Y point values [1, 2, 3, 4, 5, 6],
or an Array of Objects each of which has (lowercase) 'x' and 'y' properties that are numbers
[{"x":1,"y":2}, {"x":3,"y":4}, {"x":5,"y":6}].
<p>
Ownership of the <a href="../symbols/List.html" class="linkConstructor">List</a> and all of its <a href="../symbols/Point.html" class="linkConstructor">Point</a>s that is provided to the setter
is transferred to this Link.</div>
</div>
</td>
</tr>
<tr id="pointsCount" >
<td class="name">
<div class="name">
pointsCount
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns the number of points in the route.
</div>
</td>
</tr>
<tr id="relinkableFrom" >
<td class="name">
<div class="name">
relinkableFrom
</div>
<div class="attributes">
<span class="light">{boolean}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets whether the user may reconnect an existing link at the "from" end.<span class="nodetails" id="xproprelinkableFrom"><a class="morelink" onclick="hst('proprelinkableFrom')">More...</a></span> <span class="details" id="proprelinkableFrom">
This affects the behavior of the <a href="../symbols/RelinkingTool.html" class="linkConstructor">RelinkingTool</a>.
</span><div class="details" id="dproprelinkableFrom"><p>
The initial value is false.</div>
</div>
</td>
</tr>
<tr id="relinkableTo" >
<td class="name">
<div class="name">
relinkableTo
</div>
<div class="attributes">
<span class="light">{boolean}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets whether the user may reconnect an existing link at the "to" end.<span class="nodetails" id="xproprelinkableTo"><a class="morelink" onclick="hst('proprelinkableTo')">More...</a></span> <span class="details" id="proprelinkableTo">
This affects the behavior of the <a href="../symbols/RelinkingTool.html" class="linkConstructor">RelinkingTool</a>.
</span><div class="details" id="dproprelinkableTo"><p>
The initial value is false.</div>
</div>
</td>
</tr>
<tr id="resegmentable" >
<td class="name">
<div class="name">
resegmentable
</div>
<div class="attributes">
<span class="light">{boolean}</span>
<span class="since" title="since">1.2</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets whether the user may change the number of segments in this Link,
if the link has straight segments.<span class="nodetails" id="xpropresegmentable"><a class="morelink" onclick="hst('propresegmentable')">More...</a></span> <span class="details" id="propresegmentable">
This affects the behavior of the <a href="../symbols/LinkReshapingTool.html" class="linkConstructor">LinkReshapingTool</a> when <a href="../symbols/Link.html#curve" class="linkProperty">curve</a> is not <a href="../symbols/Link.html#Bezier" class="linkConstant">Link.Bezier</a>.
</span><div class="details" id="dpropresegmentable"><p>
The initial value is false.</div>
</div>
</td>
</tr>
<tr id="routing" >
<td class="name">
<div class="name">
routing
</div>
<div class="attributes">
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets whether the link's path tries to avoid other nodes.<span class="nodetails" id="xproprouting"><a class="morelink" onclick="hst('proprouting')">More...</a></span> <span class="details" id="proprouting">
The value must be one of <a href="../symbols/Link.html#Normal" class="linkConstant">Normal</a>, <a href="../symbols/Link.html#Orthogonal" class="linkConstant">Orthogonal</a>, or <a href="../symbols/Link.html#AvoidsNodes" class="linkConstant">AvoidsNodes</a>.
</span><div class="details" id="dproprouting"><p>
Setting this property to <a href="../symbols/Link.html#AvoidsNodes" class="linkConstant">AvoidsNodes</a> requires the Diagram to do
considerable computation when calculating Link routes. Consider not using
the <a href="../symbols/Link.html#AvoidsNodes" class="linkConstant">AvoidsNodes</a> with Diagrams that contain large numbers of Nodes and Links
if you are targeting slow devices.
<p>
The default value is <a href="../symbols/Link.html#Normal" class="linkConstant">Normal</a> -- the route is primarily a single straight segment,
with possible short end segments when connecting with ports that have a "spot" value
as the <a href="../symbols/Link.html#fromSpot" class="linkProperty">fromSpot</a> or <a href="../symbols/GraphObject.html#fromSpot" class="linkProperty">GraphObject.fromSpot</a> or <a href="../symbols/Link.html#toSpot" class="linkProperty">toSpot</a> or <a href="../symbols/GraphObject.html#toSpot" class="linkProperty">GraphObject.toSpot</a>.</div>
</div>
</td>
</tr>
<tr id="smoothness" >
<td class="name">
<div class="name">
smoothness
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets how far the control points are from the points of the route
when <a href="../symbols/Link.html#routing" class="linkProperty">routing</a> is <a href="../symbols/Link.html#Orthogonal" class="linkConstant">Orthogonal</a> and <a href="../symbols/Link.html#curve" class="linkProperty">curve</a> is <a href="../symbols/Link.html#Bezier" class="linkConstant">Bezier</a>.<span class="nodetails" id="xpropsmoothness"><a class="morelink" onclick="hst('propsmoothness')">More...</a></span> <span class="details" id="propsmoothness">
</span><div class="details" id="dpropsmoothness"><p>
The default value is 0.5.
Values of this property typically fall in the range of 0.0 to 1.0.
A value of 0.0 indicates that the control points of the curve are at the end points,
which will result in straight line segments.
A value of 1.0 indicates that the control points are one-third of the link's
length away from the end point along the direction of the link,
and the same distance away in a perpendicular direction.
The distance scales linearly with the value of this property,
even with negative values and values greater than 1.0.</div>
</div>
</td>
</tr>
<tr id="toEndSegmentLength" >
<td class="name">
<div class="name">
toEndSegmentLength
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the length of the last segment.<span class="nodetails" id="xproptoEndSegmentLength"><a class="morelink" onclick="hst('proptoEndSegmentLength')">More...</a></span> <span class="details" id="proptoEndSegmentLength">
The default value is NaN, meaning that the value
actually comes from the <a href="../symbols/GraphObject.html#toEndSegmentLength" class="linkProperty">GraphObject.toEndSegmentLength</a> property of the <a href="../symbols/Link.html#toPort" class="linkProperty">toPort</a>.
This value also limits how short the <a href="../symbols/Link.html#toShortLength" class="linkProperty">toShortLength</a> may be drawn.
</span><div class="details" id="dproptoEndSegmentLength"><p>
For examples of how to use this property, see <a href="../../intro/connectionPoints.html">Link Connection Points</a>.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#fromEndSegmentLength" class="linkProperty">fromEndSegmentLength</a></li>
<li><a href="../symbols/Link.html#computeEndSegmentLength" class="linkMethod">computeEndSegmentLength</a></li>
<li><a href="../symbols/GraphObject.html#toEndSegmentLength" class="linkProperty">GraphObject.toEndSegmentLength</a></li>
<li><a href="../symbols/Link.html#toShortLength" class="linkProperty">toShortLength</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="toNode" >
<td class="name">
<div class="name">
toNode
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the <a href="../symbols/Node.html" class="linkConstructor">Node</a> that this link goes to.<span class="nodetails" id="xproptoNode"><a class="morelink" onclick="hst('proptoNode')">More...</a></span> <span class="details" id="proptoNode">
The <a href="../symbols/Link.html#toPortId" class="linkProperty">toPortId</a> specifies which port the link goes to.
The default value is null -- this link is not going to any node.
</span><div class="details" id="dproptoNode"><p>
A template should not be connected with any node.</div>
</div>
</td>
</tr>
<tr id="toPort" >
<td class="name">
<div class="name">
toPort
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>This read-only property returns a <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> that is the "to" port that this link is connected to.<span class="nodetails" id="xproptoPort"><a class="morelink" onclick="hst('proptoPort')">More...</a></span> <span class="details" id="proptoPort">
The <a href="../symbols/Link.html#toNode" class="linkProperty">toNode</a> provides the node that the link is going to.
The <a href="../symbols/Link.html#toPortId" class="linkProperty">toPortId</a> provides the identifier for which port this link is going to;
you can set that property in order to change the value of this property.
This method may return null.</span>
</div>
</td>
</tr>
<tr id="toPortChanged" >
<td class="name">
<div class="name">
toPortChanged
</div>
<div class="attributes">
<span class="light">{function(Link, GraphObject, GraphObject) | null}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the function that is called after this Link changes which Node or port it connects to.<span class="nodetails" id="xproptoPortChanged"><a class="morelink" onclick="hst('proptoPortChanged')">More...</a></span> <span class="details" id="proptoPortChanged">
The first argument will be this Link.
The second argument will be the old GraphObject port.
The third argument will be the new GraphObject port.
</span><div class="details" id="dproptoPortChanged"><p>
If the value is a function, that function must not modify which nodes or links this link connects with.
The "to" node and/or port has already been changed -- trying to change it again may produce undefined behavior.
<p>
The default value is null -- no function is called.</div>
</div>
</td>
</tr>
<tr id="toPortId" >
<td class="name">
<div class="name">
toPortId
</div>
<div class="attributes">
<span class="light">{string}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets the identifier of the port that this link goes to.<span class="nodetails" id="xproptoPortId"><a class="morelink" onclick="hst('proptoPortId')">More...</a></span> <span class="details" id="proptoPortId">
The default value is the empty string.</span>
</div>
</td>
</tr>
<tr id="toShortLength" >
<td class="name">
<div class="name">
toShortLength
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets how far the end segment stops short of the actual port.<span class="nodetails" id="xproptoShortLength"><a class="morelink" onclick="hst('proptoShortLength')">More...</a></span> <span class="details" id="proptoShortLength">
Positive values are limited by the <a href="../symbols/Link.html#toEndSegmentLength" class="linkProperty">toEndSegmentLength</a> or <a href="../symbols/GraphObject.html#toEndSegmentLength" class="linkProperty">GraphObject.toEndSegmentLength</a>.
Negative values cause the link to extend into the port.
The default value is NaN -- the value actually comes from the
<a href="../symbols/GraphObject.html#toShortLength" class="linkProperty">GraphObject.toShortLength</a> property of the <a href="../symbols/Link.html#toPort" class="linkProperty">toPort</a>.
</span><div class="details" id="dproptoShortLength"><p>
For examples of how to use this property, see <a href="../../intro/connectionPoints.html">Link Connection Points</a>.
If you want to move an arrowhead away from the end of the link route,
set the arrowhead Shape's <a href="../symbols/GraphObject.html#segmentOffset" class="linkProperty">GraphObject.segmentOffset</a>.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#fromShortLength" class="linkProperty">fromShortLength</a></li>
<li><a href="../symbols/GraphObject.html#toShortLength" class="linkProperty">GraphObject.toShortLength</a></li>
<li><a href="../symbols/Link.html#toEndSegmentLength" class="linkProperty">toEndSegmentLength</a></li>
</ul>
</div>
</div>
</td>
</tr>
<tr id="toSpot" >
<td class="name">
<div class="name">
toSpot
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Spot.html" class="linkConstructor">Spot</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp <p> -->
<p>Gets or sets where this link should connect at the <a href="../symbols/Link.html#toPort" class="linkProperty">toPort</a>.<span class="nodetails" id="xproptoSpot"><a class="morelink" onclick="hst('proptoSpot')">More...</a></span> <span class="details" id="proptoSpot">
The default value is <a href="../symbols/Spot.html#Default" class="linkConstant">Spot.Default</a>, meaning that the value
actually comes from the <a href="../symbols/GraphObject.html#toSpot" class="linkProperty">GraphObject.toSpot</a> property of the <a href="../symbols/Link.html#toPort" class="linkProperty">toPort</a>.
</span><div class="details" id="dproptoSpot"><p>
This property is set by some layouts, if <a href="../symbols/ForceDirectedLayout.html#setsPortSpots" class="linkProperty">ForceDirectedLayout.setsPortSpots</a> or
<a href="../symbols/LayeredDigraphLayout.html#setsPortSpots" class="linkProperty">LayeredDigraphLayout.setsPortSpots</a> or <a href="../symbols/TreeLayout.html#setsPortSpot" class="linkProperty">TreeLayout.setsPortSpot</a> or
<a href="../symbols/TreeLayout.html#setsChildPortSpot" class="linkProperty">TreeLayout.setsChildPortSpot</a> is true.
<p>
For examples of how to use this property, see <a href="../../intro/connectionPoints.html">Link Connection Points</a>.</div>
<div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#fromSpot" class="linkProperty">fromSpot</a></li>
<li><a href="../symbols/GraphObject.html#toSpot" class="linkProperty">GraphObject.toSpot</a></li>
<li><a href="../symbols/Link.html#computeSpot" class="linkMethod">computeSpot</a></li>
</ul>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div><!-- class="table-responsive">-->
<dl class="inheritsList">
<dt>Properties borrowed from class <a href="../symbols/Part.html" class="linkConstructor">Part</a>: </dt><dd><a href="../symbols/Part.html#adornments" class="linkProperty">adornments</a>, <a href="../symbols/Part.html#category" class="linkProperty">category</a>, <a href="../symbols/Part.html#containingGroup" class="linkProperty">containingGroup</a>, <a href="../symbols/Part.html#containingGroupChanged" class="linkProperty">containingGroupChanged</a>, <a href="../symbols/Part.html#copyable" class="linkProperty">copyable</a>, <a href="../symbols/Part.html#deletable" class="linkProperty">deletable</a>, <a href="../symbols/Part.html#diagram" class="linkProperty">diagram</a>, <a href="../symbols/Part.html#dragComputation" class="linkProperty">dragComputation</a>, <a href="../symbols/Part.html#groupable" class="linkProperty">groupable</a>, <a href="../symbols/Part.html#highlightedChanged" class="linkProperty">highlightedChanged</a>, <a href="../symbols/Part.html#isAnimated" class="linkProperty">isAnimated</a>, <a href="../symbols/Part.html#isHighlighted" class="linkProperty">isHighlighted</a>, <a href="../symbols/Part.html#isInDocumentBounds" class="linkProperty">isInDocumentBounds</a>, <a href="../symbols/Part.html#isLayoutPositioned" class="linkProperty">isLayoutPositioned</a>, <a href="../symbols/Part.html#isSelected" class="linkProperty">isSelected</a>, <a href="../symbols/Part.html#isShadowed" class="linkProperty">isShadowed</a>, <a href="../symbols/Part.html#isTopLevel" class="linkProperty">isTopLevel</a>, <a href="../symbols/Part.html#layer" class="linkProperty">layer</a>, <a href="../symbols/Part.html#layerChanged" class="linkProperty">layerChanged</a>, <a href="../symbols/Part.html#layerName" class="linkProperty">layerName</a>, <a href="../symbols/Part.html#LayoutAdded" class="linkConstant">LayoutAdded</a>, <a href="../symbols/Part.html#layoutConditions" class="linkProperty">layoutConditions</a>, <a href="../symbols/Part.html#LayoutGroupLayout" class="linkConstant">LayoutGroupLayout</a>, <a href="../symbols/Part.html#LayoutHidden" class="linkConstant">LayoutHidden</a>, <a href="../symbols/Part.html#LayoutNodeReplaced" class="linkConstant">LayoutNodeReplaced</a>, <a href="../symbols/Part.html#LayoutNodeSized" class="linkConstant">LayoutNodeSized</a>, <a href="../symbols/Part.html#LayoutNone" class="linkConstant">LayoutNone</a>, <a href="../symbols/Part.html#LayoutRemoved" class="linkConstant">LayoutRemoved</a>, <a href="../symbols/Part.html#LayoutShown" class="linkConstant">LayoutShown</a>, <a href="../symbols/Part.html#LayoutStandard" class="linkConstant">LayoutStandard</a>, <a href="../symbols/Part.html#location" class="linkProperty">location</a>, <a href="../symbols/Part.html#locationObject" class="linkProperty">locationObject</a>, <a href="../symbols/Part.html#locationObjectName" class="linkProperty">locationObjectName</a>, <a href="../symbols/Part.html#locationSpot" class="linkProperty">locationSpot</a>, <a href="../symbols/Part.html#maxLocation" class="linkProperty">maxLocation</a>, <a href="../symbols/Part.html#minLocation" class="linkProperty">minLocation</a>, <a href="../symbols/Part.html#movable" class="linkProperty">movable</a>, <a href="../symbols/Part.html#reshapable" class="linkProperty">reshapable</a>, <a href="../symbols/Part.html#resizable" class="linkProperty">resizable</a>, <a href="../symbols/Part.html#resizeAdornmentTemplate" class="linkProperty">resizeAdornmentTemplate</a>, <a href="../symbols/Part.html#resizeCellSize" class="linkProperty">resizeCellSize</a>, <a href="../symbols/Part.html#resizeObject" class="linkProperty">resizeObject</a>, <a href="../symbols/Part.html#resizeObjectName" class="linkProperty">resizeObjectName</a>, <a href="../symbols/Part.html#rotatable" class="linkProperty">rotatable</a>, <a href="../symbols/Part.html#rotateAdornmentTemplate" class="linkProperty">rotateAdornmentTemplate</a>, <a href="../symbols/Part.html#rotateObject" class="linkProperty">rotateObject</a>, <a href="../symbols/Part.html#rotateObjectName" class="linkProperty">rotateObjectName</a>, <a href="../symbols/Part.html#selectable" class="linkProperty">selectable</a>, <a href="../symbols/Part.html#selectionAdorned" class="linkProperty">selectionAdorned</a>, <a href="../symbols/Part.html#selectionAdornmentTemplate" class="linkProperty">selectionAdornmentTemplate</a>, <a href="../symbols/Part.html#selectionChanged" class="linkProperty">selectionChanged</a>, <a href="../symbols/Part.html#selectionObject" class="linkProperty">selectionObject</a>, <a href="../symbols/Part.html#selectionObjectName" class="linkProperty">selectionObjectName</a>, <a href="../symbols/Part.html#shadowBlur" class="linkProperty">shadowBlur</a>, <a href="../symbols/Part.html#shadowColor" class="linkProperty">shadowColor</a>, <a href="../symbols/Part.html#shadowOffset" class="linkProperty">shadowOffset</a>, <a href="../symbols/Part.html#text" class="linkProperty">text</a>, <a href="../symbols/Part.html#textEditable" class="linkProperty">textEditable</a>, <a href="../symbols/Part.html#zOrder" class="linkProperty">zOrder</a></dd><dt>Properties borrowed from class <a href="../symbols/Panel.html" class="linkConstructor">Panel</a>: </dt><dd><a href="../symbols/Panel.html#alignmentFocusName" class="linkProperty">alignmentFocusName</a>, <a href="../symbols/Panel.html#Auto" class="linkConstant">Auto</a>, <a href="../symbols/Panel.html#columnCount" class="linkProperty">columnCount</a>, <a href="../symbols/Panel.html#columnSizing" class="linkProperty">columnSizing</a>, <a href="../symbols/Panel.html#data" class="linkProperty">data</a>, <a href="../symbols/Panel.html#defaultAlignment" class="linkProperty">defaultAlignment</a>, <a href="../symbols/Panel.html#defaultColumnSeparatorDashArray" class="linkProperty">defaultColumnSeparatorDashArray</a>, <a href="../symbols/Panel.html#defaultColumnSeparatorStroke" class="linkProperty">defaultColumnSeparatorStroke</a>, <a href="../symbols/Panel.html#defaultColumnSeparatorStrokeWidth" class="linkProperty">defaultColumnSeparatorStrokeWidth</a>, <a href="../symbols/Panel.html#defaultRowSeparatorDashArray" class="linkProperty">defaultRowSeparatorDashArray</a>, <a href="../symbols/Panel.html#defaultRowSeparatorStroke" class="linkProperty">defaultRowSeparatorStroke</a>, <a href="../symbols/Panel.html#defaultRowSeparatorStrokeWidth" class="linkProperty">defaultRowSeparatorStrokeWidth</a>, <a href="../symbols/Panel.html#defaultSeparatorPadding" class="linkProperty">defaultSeparatorPadding</a>, <a href="../symbols/Panel.html#defaultStretch" class="linkProperty">defaultStretch</a>, <a href="../symbols/Panel.html#elements" class="linkProperty">elements</a>, <a href="../symbols/Panel.html#Graduated" class="linkConstant">Graduated</a>, <a href="../symbols/Panel.html#graduatedMax" class="linkProperty">graduatedMax</a>, <a href="../symbols/Panel.html#graduatedMin" class="linkProperty">graduatedMin</a>, <a href="../symbols/Panel.html#graduatedRange" class="linkProperty">graduatedRange</a>, <a href="../symbols/Panel.html#graduatedTickBase" class="linkProperty">graduatedTickBase</a>, <a href="../symbols/Panel.html#graduatedTickUnit" class="linkProperty">graduatedTickUnit</a>, <a href="../symbols/Panel.html#Grid" class="linkConstant">Grid</a>, <a href="../symbols/Panel.html#gridCellSize" class="linkProperty">gridCellSize</a>, <a href="../symbols/Panel.html#gridOrigin" class="linkProperty">gridOrigin</a>, <a href="../symbols/Panel.html#Horizontal" class="linkConstant">Horizontal</a>, <a href="../symbols/Panel.html#isClipping" class="linkProperty">isClipping</a>, <a href="../symbols/Panel.html#isEnabled" class="linkProperty">isEnabled</a>, <a href="../symbols/Panel.html#isOpposite" class="linkProperty">isOpposite</a>, <a href="../symbols/Panel.html#itemArray" class="linkProperty">itemArray</a>, <a href="../symbols/Panel.html#itemCategoryProperty" class="linkProperty">itemCategoryProperty</a>, <a href="../symbols/Panel.html#itemIndex" class="linkProperty">itemIndex</a>, <a href="../symbols/Panel.html#itemTemplate" class="linkProperty">itemTemplate</a>, <a href="../symbols/Panel.html#itemTemplateMap" class="linkProperty">itemTemplateMap</a>, <a href="../symbols/Panel.html#leftIndex" class="linkProperty">leftIndex</a>, <a href="../symbols/Panel.html#Link" class="linkConstant">Link</a>, <a href="../symbols/Panel.html#padding" class="linkProperty">padding</a>, <a href="../symbols/Panel.html#Position" class="linkConstant">Position</a>, <a href="../symbols/Panel.html#rowCount" class="linkProperty">rowCount</a>, <a href="../symbols/Panel.html#rowSizing" class="linkProperty">rowSizing</a>, <a href="../symbols/Panel.html#Spot" class="linkConstant">Spot</a>, <a href="../symbols/Panel.html#Table" class="linkConstant">Table</a>, <a href="../symbols/Panel.html#TableColumn" class="linkConstant">TableColumn</a>, <a href="../symbols/Panel.html#TableRow" class="linkConstant">TableRow</a>, <a href="../symbols/Panel.html#topIndex" class="linkProperty">topIndex</a>, <a href="../symbols/Panel.html#type" class="linkProperty">type</a>, <a href="../symbols/Panel.html#Vertical" class="linkConstant">Vertical</a>, <a href="../symbols/Panel.html#Viewbox" class="linkConstant">Viewbox</a>, <a href="../symbols/Panel.html#viewboxStretch" class="linkProperty">viewboxStretch</a></dd><dt>Properties borrowed from class <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>: </dt><dd><a href="../symbols/GraphObject.html#actionCancel" class="linkProperty">actionCancel</a>, <a href="../symbols/GraphObject.html#actionDown" class="linkProperty">actionDown</a>, <a href="../symbols/GraphObject.html#actionMove" class="linkProperty">actionMove</a>, <a href="../symbols/GraphObject.html#actionUp" class="linkProperty">actionUp</a>, <a href="../symbols/GraphObject.html#actualBounds" class="linkProperty">actualBounds</a>, <a href="../symbols/GraphObject.html#alignment" class="linkProperty">alignment</a>, <a href="../symbols/GraphObject.html#alignmentFocus" class="linkProperty">alignmentFocus</a>, <a href="../symbols/GraphObject.html#angle" class="linkProperty">angle</a>, <a href="../symbols/GraphObject.html#areaBackground" class="linkProperty">areaBackground</a>, <a href="../symbols/GraphObject.html#background" class="linkProperty">background</a>, <a href="../symbols/GraphObject.html#click" class="linkProperty">click</a>, <a href="../symbols/GraphObject.html#column" class="linkProperty">column</a>, <a href="../symbols/GraphObject.html#columnSpan" class="linkProperty">columnSpan</a>, <a href="../symbols/GraphObject.html#contextClick" class="linkProperty">contextClick</a>, <a href="../symbols/GraphObject.html#contextMenu" class="linkProperty">contextMenu</a>, <a href="../symbols/GraphObject.html#cursor" class="linkProperty">cursor</a>, <a href="../symbols/GraphObject.html#Default" class="linkConstant">Default</a>, <a href="../symbols/GraphObject.html#desiredSize" class="linkProperty">desiredSize</a>, <a href="../symbols/GraphObject.html#doubleClick" class="linkProperty">doubleClick</a>, <a href="../symbols/GraphObject.html#enabledChanged" class="linkProperty">enabledChanged</a>, <a href="../symbols/GraphObject.html#Fill" class="linkConstant">Fill</a>, <a href="../symbols/GraphObject.html#fromLinkable" class="linkProperty">fromLinkable</a>, <a href="../symbols/GraphObject.html#fromLinkableDuplicates" class="linkProperty">fromLinkableDuplicates</a>, <a href="../symbols/GraphObject.html#fromLinkableSelfNode" class="linkProperty">fromLinkableSelfNode</a>, <a href="../symbols/GraphObject.html#fromMaxLinks" class="linkProperty">fromMaxLinks</a>, <a href="../symbols/GraphObject.html#height" class="linkProperty">height</a>, <a href="../symbols/GraphObject.html#isActionable" class="linkProperty">isActionable</a>, <a href="../symbols/GraphObject.html#isPanelMain" class="linkProperty">isPanelMain</a>, <a href="../symbols/GraphObject.html#margin" class="linkProperty">margin</a>, <a href="../symbols/GraphObject.html#maxSize" class="linkProperty">maxSize</a>, <a href="../symbols/GraphObject.html#measuredBounds" class="linkProperty">measuredBounds</a>, <a href="../symbols/GraphObject.html#minSize" class="linkProperty">minSize</a>, <a href="../symbols/GraphObject.html#mouseDragEnter" class="linkProperty">mouseDragEnter</a>, <a href="../symbols/GraphObject.html#mouseDragLeave" class="linkProperty">mouseDragLeave</a>, <a href="../symbols/GraphObject.html#mouseDrop" class="linkProperty">mouseDrop</a>, <a href="../symbols/GraphObject.html#mouseEnter" class="linkProperty">mouseEnter</a>, <a href="../symbols/GraphObject.html#mouseHold" class="linkProperty">mouseHold</a>, <a href="../symbols/GraphObject.html#mouseHover" class="linkProperty">mouseHover</a>, <a href="../symbols/GraphObject.html#mouseLeave" class="linkProperty">mouseLeave</a>, <a href="../symbols/GraphObject.html#mouseOver" class="linkProperty">mouseOver</a>, <a href="../symbols/GraphObject.html#name" class="linkProperty">name</a>, <a href="../symbols/GraphObject.html#naturalBounds" class="linkProperty">naturalBounds</a>, <a href="../symbols/GraphObject.html#opacity" class="linkProperty">opacity</a>, <a href="../symbols/GraphObject.html#panel" class="linkProperty">panel</a>, <a href="../symbols/GraphObject.html#part" class="linkProperty">part</a>, <a href="../symbols/GraphObject.html#pickable" class="linkProperty">pickable</a>, <a href="../symbols/GraphObject.html#portId" class="linkProperty">portId</a>, <a href="../symbols/GraphObject.html#position" class="linkProperty">position</a>, <a href="../symbols/GraphObject.html#row" class="linkProperty">row</a>, <a href="../symbols/GraphObject.html#rowSpan" class="linkProperty">rowSpan</a>, <a href="../symbols/GraphObject.html#scale" class="linkProperty">scale</a>, <a href="../symbols/GraphObject.html#segmentFraction" class="linkProperty">segmentFraction</a>, <a href="../symbols/GraphObject.html#segmentIndex" class="linkProperty">segmentIndex</a>, <a href="../symbols/GraphObject.html#segmentOffset" class="linkProperty">segmentOffset</a>, <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">segmentOrientation</a>, <a href="../symbols/GraphObject.html#shadowVisible" class="linkProperty">shadowVisible</a>, <a href="../symbols/GraphObject.html#stretch" class="linkProperty">stretch</a>, <a href="../symbols/GraphObject.html#toLinkable" class="linkProperty">toLinkable</a>, <a href="../symbols/GraphObject.html#toLinkableDuplicates" class="linkProperty">toLinkableDuplicates</a>, <a href="../symbols/GraphObject.html#toLinkableSelfNode" class="linkProperty">toLinkableSelfNode</a>, <a href="../symbols/GraphObject.html#toMaxLinks" class="linkProperty">toMaxLinks</a>, <a href="../symbols/GraphObject.html#toolTip" class="linkProperty">toolTip</a>, <a href="../symbols/GraphObject.html#Uniform" class="linkConstant">Uniform</a>, <a href="../symbols/GraphObject.html#UniformToFill" class="linkConstant">UniformToFill</a>, <a href="../symbols/GraphObject.html#visible" class="linkProperty">visible</a>, <a href="../symbols/GraphObject.html#width" class="linkProperty">width</a></dd>
</dl>
<!-- ============================== methods summary ======================== -->
<h2 class="summaryCaption">Method <span class="nodetails"> Summary</span><span class="details"> Details</span></h2>
<div class="table-responsive">
<table class="summaryTable table table-bordered table-condensed" summary="A summary of the methods documented in the class Link.">
<thead>
<tr>
<th scope="col" class="name">Name, Return Type</th>
<th scope="col" class="description">Description</th>
</tr>
</thead>
<tbody>
<tr id="addPoint">
<td class="name">
<div class="name">
addPoint(p)
</div>
<div class="attributes">
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Add a point at the end of the route; this may only be called within an override of <a href="../symbols/Link.html#computePoints" class="linkMethod">computePoints</a>.<span class="nodetails" id="xmethaddPoint"><a class="morelink" onclick="hst('methaddPoint')">More...</a></span> <span class="details" id="methaddPoint"></span>
</p><div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#getPoint" class="linkMethod">getPoint</a></li>
<li><a href="../symbols/Link.html#setPoint" class="linkMethod">setPoint</a></li>
<li><a href="../symbols/Link.html#insertPoint" class="linkMethod">insertPoint</a></li>
<li><a href="../symbols/Link.html#removePoint" class="linkMethod">removePoint</a></li>
</ul></div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> <b>p</b>
</dt>
<dd>The new point in document coordinates, which should not have infinite or NaN coordinate values, and which must not be modified afterwards.</dd>
</dl>
</div>
</td>
</tr>
<tr id="canRelinkFrom">
<td class="name">
<div class="name">
canRelinkFrom()
</div>
<div class="attributes">
<span class="light">{boolean}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This predicate returns true if <a href="../symbols/Link.html#relinkableFrom" class="linkProperty">relinkableFrom</a> is true,
if the layer's <a href="../symbols/Layer.html#allowRelink" class="linkProperty">Layer.allowRelink</a> is true, and
if the diagram's <a href="../symbols/Diagram.html#allowRelink" class="linkProperty">Diagram.allowRelink</a> is true.
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{boolean}</span> true if the user may relink the From end of this link.</dt>
</dl>
</div>
</td>
</tr>
<tr id="canRelinkTo">
<td class="name">
<div class="name">
canRelinkTo()
</div>
<div class="attributes">
<span class="light">{boolean}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This predicate returns true if <a href="../symbols/Link.html#relinkableTo" class="linkProperty">relinkableTo</a> is true,
if the layer's <a href="../symbols/Layer.html#allowRelink" class="linkProperty">Layer.allowRelink</a> is true, and
if the diagram's <a href="../symbols/Diagram.html#allowRelink" class="linkProperty">Diagram.allowRelink</a> is true.
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{boolean}</span> true if the user may relink the To end of this link.</dt>
</dl>
</div>
</td>
</tr>
<tr id="clearPoints">
<td class="name">
<div class="name">
clearPoints()
</div>
<div class="attributes">
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Remove all of the points from this link's route; this may only be called within an override of <a href="../symbols/Link.html#computePoints" class="linkMethod">computePoints</a>.<span class="nodetails" id="xmethclearPoints"><a class="morelink" onclick="hst('methclearPoints')">More...</a></span> <span class="details" id="methclearPoints"></span>
</p><div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#getPoint" class="linkMethod">getPoint</a></li>
<li><a href="../symbols/Link.html#setPoint" class="linkMethod">setPoint</a></li>
<li><a href="../symbols/Link.html#insertPoint" class="linkMethod">insertPoint</a></li>
<li><a href="../symbols/Link.html#addPoint" class="linkMethod">addPoint</a></li>
<li><a href="../symbols/Link.html#removePoint" class="linkMethod">removePoint</a></li>
</ul></div>
</div>
</td>
</tr>
<tr id="computeCurve">
<td class="name">
<div class="name">
computeCurve()
</div>
<div class="attributes">
<span class="light">{EnumValue}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Returns the <a href="../symbols/Link.html#curve" class="linkProperty">curve</a>, unless this link is supposed to pretend to be curved, as with reflexive links.<span class="nodetails" id="xmethcomputeCurve"><a class="morelink" onclick="hst('methcomputeCurve')">More...</a></span> <span class="details" id="methcomputeCurve">
</span><div class="details" id="dmethcomputeCurve"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{EnumValue}</span> </dt>
</dl>
</div>
</td>
</tr>
<tr id="computeCurviness">
<td class="name">
<div class="name">
computeCurviness()
</div>
<div class="attributes">
<span class="light">{number}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Returns the <a href="../symbols/Link.html#curviness" class="linkProperty">curviness</a>, if it's a number,
or else a computed value based on how many links connect this pair of nodes/ports,
by calling <a href="../symbols/Link.html#computeSpacing" class="linkMethod">computeSpacing</a> on each link.<span class="nodetails" id="xmethcomputeCurviness"><a class="morelink" onclick="hst('methcomputeCurviness')">More...</a></span> <span class="details" id="methcomputeCurviness">
</span><div class="details" id="dmethcomputeCurviness"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
</p><div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#computeSpacing" class="linkMethod">computeSpacing</a></li>
</ul></div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{number}</span> must be a real number, not NaN or infinity</dt>
</dl>
</div>
</td>
</tr>
<tr id="computeEndSegmentLength">
<td class="name">
<div class="name">
computeEndSegmentLength(node, port, spot, from)
</div>
<div class="attributes">
<span class="light">{number}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Get the length of the end segment in document coordinates, typically a short distance, in document units.<span class="nodetails" id="xmethcomputeEndSegmentLength"><a class="morelink" onclick="hst('methcomputeEndSegmentLength')">More...</a></span> <span class="details" id="methcomputeEndSegmentLength">
For spot values that are <a href="../symbols/Spot.html#isSide" class="linkMethod">Spot.isSide</a>, this returns a computed value.
Depending on the <code>from</code> argument, this will return <a href="../symbols/Link.html#fromEndSegmentLength" class="linkProperty">fromEndSegmentLength</a> or <a href="../symbols/Link.html#toEndSegmentLength" class="linkProperty">toEndSegmentLength</a>.
If the value is <code>NaN</code>, this will return the <a href="../symbols/Link.html#fromPort" class="linkProperty">fromPort</a>'s <a href="../symbols/GraphObject.html#fromEndSegmentLength" class="linkProperty">GraphObject.fromEndSegmentLength</a>
or the <a href="../symbols/Link.html#toPort" class="linkProperty">toPort</a>'s <a href="../symbols/GraphObject.html#toEndSegmentLength" class="linkProperty">GraphObject.toEndSegmentLength</a>.
</span><div class="details" id="dmethcomputeEndSegmentLength"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> <b>node</b>
</dt>
<dd></dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> <b>port</b>
</dt>
<dd>the <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> representing a port on the node.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Spot.html" class="linkConstructor">Spot</a>}</span> <b>spot</b>
</dt>
<dd>a <a href="../symbols/Spot.html" class="linkConstructor">Spot</a> value describing where the link should connect.</dd>
<dt>
<span class="light fixedFont">{boolean}</span> <b>from</b>
</dt>
<dd>true if the link is coming out of the port; false if going to the port.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{number}</span> a distance in document coordinates; must be a real number, not NaN or infinity.</dt>
</dl>
</div>
</td>
</tr>
<tr id="computeOtherPoint">
<td class="name">
<div class="name">
computeOtherPoint(othernode, otherport)
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Find the approximate point of the other end of the link in document coordinates.<span class="nodetails" id="xmethcomputeOtherPoint"><a class="morelink" onclick="hst('methcomputeOtherPoint')">More...</a></span> <span class="details" id="methcomputeOtherPoint">
This is useful when computing the connection point when there is no specific spot, to have an idea of which general direction the link should be going.
By default this will return the center of the other port.
</span><div class="details" id="dmethcomputeOtherPoint"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> <b>othernode</b>
</dt>
<dd></dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> <b>otherport</b>
</dt>
<dd></dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> approximately where the other end of this link might end, in document coordinates</dt>
</dl>
</div>
</td>
</tr>
<tr id="computePoints">
<td class="name">
<div class="name">
computePoints()
</div>
<div class="attributes">
<span class="light">{boolean}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>The code that constructs a new route by modifying the <a href="../symbols/Link.html#points" class="linkProperty">points</a>.<span class="nodetails" id="xmethcomputePoints"><a class="morelink" onclick="hst('methcomputePoints')">More...</a></span> <span class="details" id="methcomputePoints">
It is only called by <a href="../symbols/Link.html#updateRoute" class="linkMethod">updateRoute</a>, when needed.
All route points are always in document coordinates.
</span><div class="details" id="dmethcomputePoints"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.
<p>
Overrides of this method may call a number of "protected" methods in order to build the route:
<a href="../symbols/Link.html#clearPoints" class="linkMethod">clearPoints</a>, <a href="../symbols/Link.html#addPoint" class="linkMethod">addPoint</a>, <a href="../symbols/Link.html#insertPoint" class="linkMethod">insertPoint</a>, <a href="../symbols/Link.html#removePoint" class="linkMethod">removePoint</a>, <a href="../symbols/Link.html#setPoint" class="linkMethod">setPoint</a>.
Overrides of this method must not set <a href="../symbols/Link.html#points" class="linkProperty">points</a>.
<p>
Other methods that are commonly called and may be overridden are:
<a href="../symbols/Link.html#computeEndSegmentLength" class="linkMethod">computeEndSegmentLength</a>, <a href="../symbols/Link.html#computeSpot" class="linkMethod">computeSpot</a>, <a href="../symbols/Link.html#computeOtherPoint" class="linkMethod">computeOtherPoint</a>,
<a href="../symbols/Link.html#computeCurve" class="linkMethod">computeCurve</a>, <a href="../symbols/Link.html#computeCurviness" class="linkMethod">computeCurviness</a>, <a href="../symbols/Link.html#hasCurviness" class="linkMethod">hasCurviness</a>,
<a href="../symbols/Link.html#computeThickness" class="linkMethod">computeThickness</a>,
<a href="../symbols/Link.html#makeGeometry" class="linkMethod">makeGeometry</a>.</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{boolean}</span> true if it computed a route of points</dt>
</dl>
</div>
</td>
</tr>
<tr id="computeSpacing">
<td class="name">
<div class="name">
computeSpacing()
</div>
<div class="attributes">
<span class="light">{number}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Returns the expected spacing between this link and others that connect this link's fromPort and toPort.<span class="nodetails" id="xmethcomputeSpacing"><a class="morelink" onclick="hst('methcomputeSpacing')">More...</a></span> <span class="details" id="methcomputeSpacing">
This calls <a href="../symbols/Link.html#computeThickness" class="linkMethod">computeThickness</a> and also takes any "mid label"'s breadth into account.
</span><div class="details" id="dmethcomputeSpacing"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
</p><div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#computeCurviness" class="linkMethod">computeCurviness</a></li>
</ul></div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{number}</span> must be a real number, not NaN or infinity</dt>
</dl>
</div>
</td>
</tr>
<tr id="computeSpot">
<td class="name">
<div class="name">
computeSpot(from, port)
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Spot.html" class="linkConstructor">Spot</a>}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Get the <a href="../symbols/Spot.html" class="linkConstructor">Spot</a> that describes how the end of the link should connect with the port.<span class="nodetails" id="xmethcomputeSpot"><a class="morelink" onclick="hst('methcomputeSpot')">More...</a></span> <span class="details" id="methcomputeSpot">
Depending on the <code>from</code> argument, this will return <a href="../symbols/Link.html#fromSpot" class="linkProperty">fromSpot</a> or <a href="../symbols/Link.html#toSpot" class="linkProperty">toSpot</a>.
If the value is <a href="../symbols/Spot.html#isDefault" class="linkMethod">Spot.isDefault</a>, this will return the <a href="../symbols/Link.html#fromPort" class="linkProperty">fromPort</a>'s <a href="../symbols/GraphObject.html#fromSpot" class="linkProperty">GraphObject.fromSpot</a>
or the <a href="../symbols/Link.html#toPort" class="linkProperty">toPort</a>'s <a href="../symbols/GraphObject.html#toSpot" class="linkProperty">GraphObject.toSpot</a>.
</span><div class="details" id="dmethcomputeSpot"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{boolean}</span> <b>from</b>
</dt>
<dd></dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>=}</span> <b>port</b>
</dt>
<dd></dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{<a href="../symbols/Spot.html" class="linkConstructor">Spot</a>}</span> must not be <a href="../symbols/Spot.html#Default" class="linkConstant">Spot.Default</a>, but may be <a href="../symbols/Spot.html#None" class="linkConstant">Spot.None</a></dt>
</dl>
</div>
</td>
</tr>
<tr id="computeThickness">
<td class="name">
<div class="name">
computeThickness()
</div>
<div class="attributes">
<span class="light">{number}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Returns the thickness of this link.<span class="nodetails" id="xmethcomputeThickness"><a class="morelink" onclick="hst('methcomputeThickness')">More...</a></span> <span class="details" id="methcomputeThickness">
By default it uses the strokeWidth of the main element, assuming it's a Shape.
This is called by <a href="../symbols/Link.html#computeSpacing" class="linkMethod">computeSpacing</a>.
</span><div class="details" id="dmethcomputeThickness"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{number}</span> a non-negative real number</dt>
</dl>
</div>
</td>
</tr>
<tr id="findClosestSegment">
<td class="name">
<div class="name">
findClosestSegment(p)
</div>
<div class="attributes">
<span class="light">{number}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Find the index of the segment that is closest to a given point.<span class="nodetails" id="xmethfindClosestSegment"><a class="morelink" onclick="hst('methfindClosestSegment')">More...</a></span> <span class="details" id="methfindClosestSegment">
This assume the route only has straight line segments.
It ignores any jump-overs or jump-gaps.</span>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> <b>p</b>
</dt>
<dd>the Point, in document coordinates.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{number}</span> int the index of the segment, from zero to the number of points minus 2.</dt>
</dl>
</div>
</td>
</tr>
<tr id="getLinkDirection">
<td class="name">
<div class="name">
getLinkDirection(node, port, linkpoint, spot, from, ortho, othernode, otherport)
</div>
<div class="attributes">
<span class="light">{number}</span>
<span class="since" title="since">1.2</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Compute the direction in which a link should go from a given connection point.<span class="nodetails" id="xmethgetLinkDirection"><a class="morelink" onclick="hst('methgetLinkDirection')">More...</a></span> <span class="details" id="methgetLinkDirection"></span>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> <b>node</b>
</dt>
<dd></dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> <b>port</b>
</dt>
<dd>the <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> representing a port on the node.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> <b>linkpoint</b>
</dt>
<dd>the connection point, in document coordinates.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Spot.html" class="linkConstructor">Spot</a>}</span> <b>spot</b>
</dt>
<dd>a <a href="../symbols/Spot.html" class="linkConstructor">Spot</a> value describing where the link should connect.</dd>
<dt>
<span class="light fixedFont">{boolean}</span> <b>from</b>
</dt>
<dd>true if the link is coming out of the port; false if going to the port.</dd>
<dt>
<span class="light fixedFont">{boolean}</span> <b>ortho</b>
</dt>
<dd>whether the link should have orthogonal segments.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> <b>othernode</b>
</dt>
<dd>the node at the other end of the link.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> <b>otherport</b>
</dt>
<dd>the <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> port at the other end of the link.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{number}</span> the absolute angle, in degrees.</dt>
</dl>
</div>
</td>
</tr>
<tr id="getLinkPoint">
<td class="name">
<div class="name">
getLinkPoint(node, port, spot, from, ortho, othernode, otherport, result)
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span>
<span class="since" title="since">1.2</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Compute the point on a node/port in document coordinates at which the route of a link should end.<span class="nodetails" id="xmethgetLinkPoint"><a class="morelink" onclick="hst('methgetLinkPoint')">More...</a></span> <span class="details" id="methgetLinkPoint"></span>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> <b>node</b>
</dt>
<dd></dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> <b>port</b>
</dt>
<dd>the <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> representing a port on the node.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Spot.html" class="linkConstructor">Spot</a>}</span> <b>spot</b>
</dt>
<dd>a <a href="../symbols/Spot.html" class="linkConstructor">Spot</a> value describing where the link should connect.</dd>
<dt>
<span class="light fixedFont">{boolean}</span> <b>from</b>
</dt>
<dd>true if the link is coming out of the port; false if going to the port.</dd>
<dt>
<span class="light fixedFont">{boolean}</span> <b>ortho</b>
</dt>
<dd>whether the link should have orthogonal segments.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> <b>othernode</b>
</dt>
<dd>the node at the other end of the link.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> <b>otherport</b>
</dt>
<dd>the <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> port at the other end of the link.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>=}</span> <b>result</b>
</dt>
<dd>an optional Point that is modified and returned; otherwise it allocates and returns a new Point</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> in document coordinates.</dt>
</dl>
</div>
</td>
</tr>
<tr id="getLinkPointFromPoint">
<td class="name">
<div class="name">
getLinkPointFromPoint(node, port, focus, p, from, result)
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span>
<span class="since" title="since">1.2</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Compute the intersection point in document coordinates for the edge of a particular port GraphObject, given a point,
when no particular spot or side has been specified.<span class="nodetails" id="xmethgetLinkPointFromPoint"><a class="morelink" onclick="hst('methgetLinkPointFromPoint')">More...</a></span> <span class="details" id="methgetLinkPointFromPoint"></span>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> <b>node</b>
</dt>
<dd></dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> <b>port</b>
</dt>
<dd>the <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> representing a port on the node.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> <b>focus</b>
</dt>
<dd>the point in document coordinates to/from which the link should point,
normally the center of the port.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> <b>p</b>
</dt>
<dd>often this point is far away from the node, to give a general direction,
particularly an orthogonal one.</dd>
<dt>
<span class="light fixedFont">{boolean}</span> <b>from</b>
</dt>
<dd>true if the link is coming out of the port; false if going to the port.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>=}</span> <b>result</b>
</dt>
<dd>an optional Point that is modified and returned; otherwise it allocates and returns a new Point</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> the point in document coordinates of the intersection point on the edge of the port.</dt>
</dl>
</div>
</td>
</tr>
<tr id="getOtherNode">
<td class="name">
<div class="name">
getOtherNode(node)
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Given a <a href="../symbols/Node.html" class="linkConstructor">Node</a>, return the node at the other end of this link.<span class="nodetails" id="xmethgetOtherNode"><a class="morelink" onclick="hst('methgetOtherNode')">More...</a></span> <span class="details" id="methgetOtherNode"></span>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> <b>node</b>
</dt>
<dd></dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{<a href="../symbols/Node.html" class="linkConstructor">Node</a>}</span> This may return the same node, if the link is reflexive.</dt>
</dl>
</div>
</td>
</tr>
<tr id="getOtherPort">
<td class="name">
<div class="name">
getOtherPort(port)
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Given a <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a> that is a "port", return the port at the other end of this link.<span class="nodetails" id="xmethgetOtherPort"><a class="morelink" onclick="hst('methgetOtherPort')">More...</a></span> <span class="details" id="methgetOtherPort"></span>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> <b>port</b>
</dt>
<dd></dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{<a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>}</span> This may return the same object, if the link is reflexive.</dt>
</dl>
</div>
</td>
</tr>
<tr id="getPoint">
<td class="name">
<div class="name">
getPoint(i)
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Gets a particular point of the route.<span class="nodetails" id="xmethgetPoint"><a class="morelink" onclick="hst('methgetPoint')">More...</a></span> <span class="details" id="methgetPoint"></span>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{number}</span> <b>i</b>
</dt>
<dd>int The zero-based index of the desired point.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> in document coordinates</dt>
</dl>
</div>
</td>
</tr>
<tr id="hasCurviness">
<td class="name">
<div class="name">
hasCurviness()
</div>
<div class="attributes">
<span class="light">{boolean}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Returns true if an extra or a different point is needed based on <a href="../symbols/Link.html#curviness" class="linkProperty">curviness</a>.<span class="nodetails" id="xmethhasCurviness"><a class="morelink" onclick="hst('methhasCurviness')">More...</a></span> <span class="details" id="methhasCurviness">
</span><div class="details" id="dmethhasCurviness"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{boolean}</span> </dt>
</dl>
</div>
</td>
</tr>
<tr id="insertPoint">
<td class="name">
<div class="name">
insertPoint(i, p)
</div>
<div class="attributes">
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Insert a point at a particular position in the route, without replacing an existing point; this may only be called within an override of <a href="../symbols/Link.html#computePoints" class="linkMethod">computePoints</a>.<span class="nodetails" id="xmethinsertPoint"><a class="morelink" onclick="hst('methinsertPoint')">More...</a></span> <span class="details" id="methinsertPoint"></span>
</p><div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#getPoint" class="linkMethod">getPoint</a></li>
<li><a href="../symbols/Link.html#setPoint" class="linkMethod">setPoint</a></li>
<li><a href="../symbols/Link.html#addPoint" class="linkMethod">addPoint</a></li>
<li><a href="../symbols/Link.html#removePoint" class="linkMethod">removePoint</a></li>
</ul></div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{number}</span> <b>i</b>
</dt>
<dd>int The zero-based index of the new point.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> <b>p</b>
</dt>
<dd>The new point in document coordinates, which should not have infinite or NaN coordinate values, and which must not be modified afterwards.</dd>
</dl>
</div>
</td>
</tr>
<tr id="invalidateRoute">
<td class="name">
<div class="name">
invalidateRoute()
</div>
<div class="attributes">
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Declare that the route (the <a href="../symbols/Link.html#points" class="linkProperty">points</a>) of this Link need to be recomputed soon.<span class="nodetails" id="xmethinvalidateRoute"><a class="morelink" onclick="hst('methinvalidateRoute')">More...</a></span> <span class="details" id="methinvalidateRoute">
This causes <a href="../symbols/Link.html#updateRoute" class="linkMethod">updateRoute</a> to be called, which will call <a href="../symbols/Link.html#computePoints" class="linkMethod">computePoints</a>
to perform the actual determination of the route.</span>
</div>
</td>
</tr>
<tr id="makeGeometry">
<td class="name">
<div class="name">
makeGeometry()
</div>
<div class="attributes">
<span class="light">{<a href="../symbols/Geometry.html" class="linkConstructor">Geometry</a>}</span>
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Produce a <a href="../symbols/Geometry.html" class="linkConstructor">Geometry</a> given the points of this route,
depending on the value of <a href="../symbols/Link.html#curve" class="linkProperty">curve</a> and <a href="../symbols/Link.html#corner" class="linkProperty">corner</a> and perhaps other properties.<span class="nodetails" id="xmethmakeGeometry"><a class="morelink" onclick="hst('methmakeGeometry')">More...</a></span> <span class="details" id="methmakeGeometry">
The points of the Geometry are in local coordinates, whereas the <a href="../symbols/Link.html#points" class="linkProperty">points</a> of the link route are in document coordinates.
</span><div class="details" id="dmethmakeGeometry"><p>
This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dt><span class="light fixedFont">{<a href="../symbols/Geometry.html" class="linkConstructor">Geometry</a>}</span> </dt>
</dl>
</div>
</td>
</tr>
<tr id="move">
<td class="name">
<div class="name">
move(newpos)
</div>
<div class="attributes">
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Move this link to a new position.<span class="nodetails" id="xmethmove"><a class="morelink" onclick="hst('methmove')">More...</a></span> <span class="details" id="methmove">
This also shifts all of the Points in the route accordingly.
This also moves any <a href="../symbols/Link.html#labelNodes" class="linkProperty">labelNodes</a>.</span>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> <b>newpos</b>
</dt>
<dd>a new <a href="../symbols/Point.html" class="linkConstructor">Point</a> in document coordinates.</dd>
</dl>
</div>
</td>
</tr>
<tr id="removePoint">
<td class="name">
<div class="name">
removePoint(i)
</div>
<div class="attributes">
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Remove a particular point from the route; this may only be called within an override of <a href="../symbols/Link.html#computePoints" class="linkMethod">computePoints</a>.<span class="nodetails" id="xmethremovePoint"><a class="morelink" onclick="hst('methremovePoint')">More...</a></span> <span class="details" id="methremovePoint"></span>
</p><div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#getPoint" class="linkMethod">getPoint</a></li>
<li><a href="../symbols/Link.html#setPoint" class="linkMethod">setPoint</a></li>
<li><a href="../symbols/Link.html#insertPoint" class="linkMethod">insertPoint</a></li>
<li><a href="../symbols/Link.html#addPoint" class="linkMethod">addPoint</a></li>
<li><a href="../symbols/Link.html#clearPoints" class="linkMethod">clearPoints</a></li>
</ul></div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{number}</span> <b>i</b>
</dt>
<dd>int The zero-based index of the point to extract.</dd>
</dl>
</div>
</td>
</tr>
<tr id="setPoint">
<td class="name">
<div class="name">
setPoint(i, p)
</div>
<div class="attributes">
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Sets a particular point of the route; this may only be called within an override of <a href="../symbols/Link.html#computePoints" class="linkMethod">computePoints</a>.<span class="nodetails" id="xmethsetPoint"><a class="morelink" onclick="hst('methsetPoint')">More...</a></span> <span class="details" id="methsetPoint"></span>
</p><div class="seealso">See also:
<ul class="seealsolist">
<li><a href="../symbols/Link.html#getPoint" class="linkMethod">getPoint</a></li>
<li><a href="../symbols/Link.html#insertPoint" class="linkMethod">insertPoint</a></li>
<li><a href="../symbols/Link.html#addPoint" class="linkMethod">addPoint</a></li>
<li><a href="../symbols/Link.html#removePoint" class="linkMethod">removePoint</a></li>
</ul></div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{number}</span> <b>i</b>
</dt>
<dd>int The zero-based index of the desired point.</dd>
<dt>
<span class="light fixedFont">{<a href="../symbols/Point.html" class="linkConstructor">Point</a>}</span> <b>p</b>
</dt>
<dd>The new point in document coordinates, which should not have infinite or NaN coordinate values, and which must not be modified afterwards.</dd>
</dl>
</div>
</td>
</tr>
<tr id="updateRoute">
<td class="name">
<div class="name">
updateRoute()
</div>
<div class="attributes">
<span class="since" title="since">1.6</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This method recomputes the route if the route is invalid,
to make sure the <a href="../symbols/Link.html#points" class="linkProperty">points</a> are up-to-date.<span class="nodetails" id="xmethupdateRoute"><a class="morelink" onclick="hst('methupdateRoute')">More...</a></span> <span class="details" id="methupdateRoute">
This method calls <a href="../symbols/Link.html#computePoints" class="linkMethod">computePoints</a> in order to calculate a new route.
</span><div class="details" id="dmethupdateRoute"><p>
The route may become invalid if either connected node is moved,
or if various properties are modified, such as <a href="../symbols/Link.html#routing" class="linkProperty">routing</a>.
Such changes will call <a href="../symbols/Link.html#invalidateRoute" class="linkMethod">invalidateRoute</a>.
<p>
It is unusual for you to have to call this method.</div>
</div>
</td>
</tr>
</tbody>
</table>
</div><!-- class="table-responsive">-->
<dl class="inheritsList">
<dt>Methods borrowed from class <a href="../symbols/Part.html" class="linkConstructor">Part</a>: </dt><dd><a href="../symbols/Part.html#addAdornment" class="linkMethod">addAdornment</a>, <a href="../symbols/Part.html#canCopy" class="linkMethod">canCopy</a>, <a href="../symbols/Part.html#canDelete" class="linkMethod">canDelete</a>, <a href="../symbols/Part.html#canEdit" class="linkMethod">canEdit</a>, <a href="../symbols/Part.html#canGroup" class="linkMethod">canGroup</a>, <a href="../symbols/Part.html#canLayout" class="linkMethod">canLayout</a>, <a href="../symbols/Part.html#canMove" class="linkMethod">canMove</a>, <a href="../symbols/Part.html#canReshape" class="linkMethod">canReshape</a>, <a href="../symbols/Part.html#canResize" class="linkMethod">canResize</a>, <a href="../symbols/Part.html#canRotate" class="linkMethod">canRotate</a>, <a href="../symbols/Part.html#canSelect" class="linkMethod">canSelect</a>, <a href="../symbols/Part.html#clearAdornments" class="linkMethod">clearAdornments</a>, <a href="../symbols/Part.html#ensureBounds" class="linkMethod">ensureBounds</a>, <a href="../symbols/Part.html#findAdornment" class="linkMethod">findAdornment</a>, <a href="../symbols/Part.html#findCommonContainingGroup" class="linkMethod">findCommonContainingGroup</a>, <a href="../symbols/Part.html#findSubGraphLevel" class="linkMethod">findSubGraphLevel</a>, <a href="../symbols/Part.html#findTopLevelPart" class="linkMethod">findTopLevelPart</a>, <a href="../symbols/Part.html#invalidateLayout" class="linkMethod">invalidateLayout</a>, <a href="../symbols/Part.html#isMemberOf" class="linkMethod">isMemberOf</a>, <a href="../symbols/Part.html#isVisible" class="linkMethod">isVisible</a>, <a href="../symbols/Part.html#moveTo" class="linkMethod">moveTo</a>, <a href="../symbols/Part.html#removeAdornment" class="linkMethod">removeAdornment</a>, <a href="../symbols/Part.html#updateAdornments" class="linkMethod">updateAdornments</a>, <a href="../symbols/Part.html#updateRelationshipsFromData" class="linkMethod">updateRelationshipsFromData</a>, <a href="../symbols/Part.html#updateTargetBindings" class="linkMethod">updateTargetBindings</a></dd><dt>Methods borrowed from class <a href="../symbols/Panel.html" class="linkConstructor">Panel</a>: </dt><dd><a href="../symbols/Panel.html#add" class="linkMethod">add</a>, <a href="../symbols/Panel.html#copy" class="linkMethod">copy</a>, <a href="../symbols/Panel.html#elt" class="linkMethod">elt</a>, <a href="../symbols/Panel.html#findColumnForLocalX" class="linkMethod">findColumnForLocalX</a>, <a href="../symbols/Panel.html#findItemPanelForData" class="linkMethod">findItemPanelForData</a>, <a href="../symbols/Panel.html#findMainElement" class="linkMethod">findMainElement</a>, <a href="../symbols/Panel.html#findObject" class="linkMethod">findObject</a>, <a href="../symbols/Panel.html#findRowForLocalY" class="linkMethod">findRowForLocalY</a>, <a href="../symbols/Panel.html#getColumnDefinition" class="linkMethod">getColumnDefinition</a>, <a href="../symbols/Panel.html#getRowDefinition" class="linkMethod">getRowDefinition</a>, <a href="../symbols/Panel.html#graduatedPointForValue" class="linkMethod">graduatedPointForValue</a>, <a href="../symbols/Panel.html#graduatedValueForPoint" class="linkMethod">graduatedValueForPoint</a>, <a href="../symbols/Panel.html#insertAt" class="linkMethod">insertAt</a>, <a href="../symbols/Panel.html#rebuildItemElements" class="linkMethod">rebuildItemElements</a>, <a href="../symbols/Panel.html#remove" class="linkMethod">remove</a>, <a href="../symbols/Panel.html#removeAt" class="linkMethod">removeAt</a>, <a href="../symbols/Panel.html#removeColumnDefinition" class="linkMethod">removeColumnDefinition</a>, <a href="../symbols/Panel.html#removeRowDefinition" class="linkMethod">removeRowDefinition</a></dd><dt>Methods borrowed from class <a href="../symbols/GraphObject.html" class="linkConstructor">GraphObject</a>: </dt><dd><a href="../symbols/GraphObject.html#bind" class="linkMethod">bind</a>, <a href="../symbols/GraphObject.html#getDocumentAngle" class="linkMethod">getDocumentAngle</a>, <a href="../symbols/GraphObject.html#getDocumentPoint" class="linkMethod">getDocumentPoint</a>, <a href="../symbols/GraphObject.html#getDocumentScale" class="linkMethod">getDocumentScale</a>, <a href="../symbols/GraphObject.html#getLocalPoint" class="linkMethod">getLocalPoint</a>, <a href="../symbols/GraphObject.html#isContainedBy" class="linkMethod">isContainedBy</a>, <a href="../symbols/GraphObject.html#isEnabledObject" class="linkMethod">isEnabledObject</a>, <a href="../symbols/GraphObject.html#isVisibleObject" class="linkMethod">isVisibleObject</a>, <a href="../symbols/GraphObject.html#setProperties" class="linkMethod">setProperties</a></dd>
</dl>
<!-- ============================== events summary ======================== -->
<!-- ============================== fields summary ===================== -->
<h2 class="summaryCaption">Constants<span class="nodetails"> Summary</span><span class="details"> Details</span></h2>
<div class="table-responsive">
<table class="summaryTable table table-bordered table-condensed" summary="A summary of the properties documented in the class Link.">
<thead>
<tr>
<th scope="col" class="name">Name</th>
<th scope="col" class="description">Description</th>
</tr>
</thead>
<tbody>
<tr id="AvoidsNodes">
<td class="name">
<div class="name">
AvoidsNodes
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as a value for <a href="../symbols/Link.html#routing" class="linkProperty">Link.routing</a>:
each segment is horizontal or vertical, but the route tries to avoid crossing over nodes.
</div>
</td>
</tr>
<tr id="Bezier">
<td class="name">
<div class="name">
Bezier
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as a value for <a href="../symbols/Link.html#curve" class="linkProperty">Link.curve</a>, to indicate that
the link path uses Bezier curve segments.
</div>
</td>
</tr>
<tr id="End">
<td class="name">
<div class="name">
End
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as a value for <a href="../symbols/Link.html#adjusting" class="linkProperty">Link.adjusting</a>,
to indicate that the link route computation should keep the
intermediate points of the previous route, just modifying the first and/or last points;
if the routing is orthogonal, it will only modify the first two and/or last two points.
</div>
</td>
</tr>
<tr id="JumpGap">
<td class="name">
<div class="name">
JumpGap
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as a value for <a href="../symbols/Link.html#curve" class="linkProperty">Link.curve</a>, to indicate that
orthogonal link segments will be discontinuous where they cross over
other orthogonal link segments that have a <a href="../symbols/Link.html#curve" class="linkProperty">Link.curve</a> or JumpOver or JumpGap.
</div>
</td>
</tr>
<tr id="JumpOver">
<td class="name">
<div class="name">
JumpOver
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as a value for <a href="../symbols/Link.html#curve" class="linkProperty">Link.curve</a>, to indicate that
orthogonal link segments will veer around where they cross over
other orthogonal link segments that have a <a href="../symbols/Link.html#curve" class="linkProperty">Link.curve</a> or JumpOver or JumpGap.
</div>
</td>
</tr>
<tr id="None">
<td class="name">
<div class="name">
None
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This is the default value for <a href="../symbols/Link.html#curve" class="linkProperty">Link.curve</a> and <a href="../symbols/Link.html#adjusting" class="linkProperty">Link.adjusting</a>,
to indicate that the path geometry consists of straight line segments and
to indicate that the link route computation does not depend on any previous route points;
this can also be used as a value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a>
to indicate that the object is never rotated along the link route -- its angle is unchanged.
</div>
</td>
</tr>
<tr id="Normal">
<td class="name">
<div class="name">
Normal
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as the default value for <a href="../symbols/Link.html#routing" class="linkProperty">Link.routing</a>:
the route goes fairly straight between ports.
</div>
</td>
</tr>
<tr id="OrientAlong">
<td class="name">
<div class="name">
OrientAlong
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a> results in
the GraphObject turned to have the same angle as the route:
the GraphObject's angle is always the same as the angle of the link's route
at the segment where the GraphObject is attached;
use this orientation for arrow heads.
</div>
</td>
</tr>
<tr id="OrientMinus90">
<td class="name">
<div class="name">
OrientMinus90
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a> results in
the GraphObject being turned counter-clockwise to be perpendicular to the route:
the GraphObject's angle is always 90 degrees less than the angle of the link's route
at the segment where the GraphObject is attached.
</div>
</td>
</tr>
<tr id="OrientMinus90Upright">
<td class="name">
<div class="name">
OrientMinus90Upright
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a> results in
the GraphObject turned counter-clockwise to be perpendicular to the route, just like <a href="../symbols/Link.html#OrientMinus90" class="linkConstant">Link.OrientMinus90</a>, but is never upside down:
the GraphObject's angle always being 90 degrees less than the angle of the link's route
at the segment where the GraphObject is attached;
this is typically only used for <a href="../symbols/TextBlock.html" class="linkConstructor">TextBlock</a>s or <a href="../symbols/Panel.html" class="linkConstructor">Panel</a>s that contain text.
</div>
</td>
</tr>
<tr id="OrientOpposite">
<td class="name">
<div class="name">
OrientOpposite
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a> results in
the GraphObject's angle always being 180 degrees opposite from the angle of the link's route
at the segment where the GraphObject is attached.
</div>
</td>
</tr>
<tr id="OrientPlus90">
<td class="name">
<div class="name">
OrientPlus90
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a> results in
the GraphObject is turned clockwise to be perpendicular to the route:
the GraphObject's angle is always 90 degrees more than the angle of the link's route
at the segment where the GraphObject is attached.
</div>
</td>
</tr>
<tr id="OrientPlus90Upright">
<td class="name">
<div class="name">
OrientPlus90Upright
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a> results in
the GraphObject turned clockwise to be perpendicular to the route, just like <a href="../symbols/Link.html#OrientPlus90" class="linkConstant">Link.OrientPlus90</a>, but is never upside down:
the GraphObject's angle always being 90 degrees more than the angle of the link's route
at the segment where the GraphObject is attached;
this is typically only used for <a href="../symbols/TextBlock.html" class="linkConstructor">TextBlock</a>s or <a href="../symbols/Panel.html" class="linkConstructor">Panel</a>s that contain text.
</div>
</td>
</tr>
<tr id="OrientUpright">
<td class="name">
<div class="name">
OrientUpright
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a> results in
the GraphObject turned to have the same angle as the route, just like <a href="../symbols/Link.html#OrientAlong" class="linkConstant">Link.OrientAlong</a>, but is never upside down:
the GraphObject's angle always following the angle of the link's route
at the segment where the GraphObject is attached;
this is typically only used for <a href="../symbols/TextBlock.html" class="linkConstructor">TextBlock</a>s or <a href="../symbols/Panel.html" class="linkConstructor">Panel</a>s that contain text.
</div>
</td>
</tr>
<tr id="OrientUpright45">
<td class="name">
<div class="name">
OrientUpright45
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>This value for <a href="../symbols/GraphObject.html#segmentOrientation" class="linkProperty">GraphObject.segmentOrientation</a> results in
the GraphObject's angle always following the angle of the link's route
at the segment where the GraphObject is attached, but never upside down
and never angled more than +/- 45 degrees:
when the route's angle is within 45 degrees of vertical (90 or 270 degrees),
the GraphObject's angle is set to zero;
this is typically only used for <a href="../symbols/TextBlock.html" class="linkConstructor">TextBlock</a>s or <a href="../symbols/Panel.html" class="linkConstructor">Panel</a>s that contain text.
</div>
</td>
</tr>
<tr id="Orthogonal">
<td class="name">
<div class="name">
Orthogonal
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as a value for <a href="../symbols/Link.html#routing" class="linkProperty">Link.routing</a>:
each segment is horizontal or vertical.
</div>
</td>
</tr>
<tr id="Scale">
<td class="name">
<div class="name">
Scale
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as a value for <a href="../symbols/Link.html#adjusting" class="linkProperty">Link.adjusting</a>,
to indicate that the link route computation should scale and rotate the intermediate points
so that the link's shape looks approximately the same;
if the routing is orthogonal, this value is treated as if it were <a href="../symbols/Link.html#End" class="linkConstant">Link.End</a>.
</div>
</td>
</tr>
<tr id="Stretch">
<td class="name">
<div class="name">
Stretch
<span class="light">{EnumValue}</span>
</div>
</td>
<td class="description">
<div class="description">
<!--newp--><p><p>Used as a value for <a href="../symbols/Link.html#adjusting" class="linkProperty">Link.adjusting</a>,
to indicate that the link route computation should linearly interpolate the intermediate points
so that the link's shape looks stretched;
if the routing is orthogonal, this value is treated as if it were <a href="../symbols/Link.html#End" class="linkConstant">Link.End</a>.
</div>
</td>
</tr>
</tbody>
</table>
</div><!-- class="table-responsive">-->
<!-- ============================== constructor details ==================== -->
</div> <!-- end contentBody -->
</div> <!-- end container-fluid -->
<!-- ============================== footer ================================= -->
<div id="footer" class="fineprint" style="clear:both">
Copyright &copy; 1998-2017 by <a href="https://www.nwoods.com/">Northwoods Software Corporation.</a>
</div>
</body>
</html>